| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 181 人关注过本帖
标题:从“费用明细”中动态提取费用类型并自动生成字段
只看楼主 加入收藏
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10780
专家分:43354
注 册:2014-5-20
收藏
得分:0 
回复 10楼 王咸美
可以编程取出网页的数据再写入DBF,不用这样转来转去转到头都晕。

[此贴子已经被作者于2025-10-19 17:00编辑过]

昨天 16:59
王咸美
Rank: 1
等 级:新手上路
帖 子:799
专家分:3
注 册:2018-1-4
收藏
得分:0 
原始表是:费用明细帐.dbf
结果表是:费用统计表.dbf,表中字段“车费”、“餐费”、“住宿费”、“快递费”由“费用明细”产生,具体有哪些费用不固定,随着“费用明细帐.dbf”中记录的增加,还可能出现“通讯费”、“交通费”等。
昨天 17:09
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10780
专家分:43354
注 册:2014-5-20
收藏
得分:0 
回复 12楼 王咸美
这些数据的网页我可以打开看看吗?
昨天 18:02
王咸美
Rank: 1
等 级:新手上路
帖 子:799
专家分:3
注 册:2018-1-4
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
昨天 18:14
王咸美
Rank: 1
等 级:新手上路
帖 子:799
专家分:3
注 册:2018-1-4
收藏
得分:0 
具体网页链接未记住,截图发给您看一看。

昨天 18:18
nbwww
Rank: 8Rank: 8
等 级:贵宾
威 望:11
帖 子:375
专家分:897
注 册:2021-1-9
收藏
得分:0 
服了
昨天 18:19
王咸美
Rank: 1
等 级:新手上路
帖 子:799
专家分:3
注 册:2018-1-4
收藏
得分:0 
不知根据提供的“费用明细帐.dbf "能否动态生成“费用统计表.dbf "?盼指点!
昨天 18:39
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:807
专家分:3219
注 册:2018-3-13
收藏
得分:0 
何必自寻烦恼,直接交给ds处理完复制回来得了
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2025-10-19 19:27编辑过]


这家伙很懒,啥也没留下
昨晚 19:20
nbwww
Rank: 8Rank: 8
等 级:贵宾
威 望:11
帖 子:375
专家分:897
注 册:2021-1-9
收藏
得分:0 
今天DS相当给力  竟然完美解决
程序代码:
CLEAR 
* 测试不同的文本格式
LOCAL lcTestText
lcTestText = "快递费8.车费8.36 住宿费180,餐费-60   10月8日  车费8.36 住宿费180元,餐费60.63元"
DO EnhancedRegExpExtract WITH lcTestText

* 增强版正则表达式提取
PROCEDURE EnhancedRegExpExtract(tcString)
    LOCAL loRegEx, laMatches, loMatch
    LOCAL lcPattern
    * 更强大的正则表达式模式
    lcPattern = "(" + ;
                "车费|餐费|住宿费|快递费|交通费|水电费|电话费|网络费|办公费|" + ;
                "材料费|印刷费|差旅费|会议费|培训费|招待费|福利费|其他" + ;
                ")" + ;
                "[::,.、\s]*" + ;  && 各种可能的分隔符
                "(-?\d+(?:\.\d+)?)" + ;  && 金额
                "(?:元)?"          && 可选的单位
    
    loRegEx = CREATEOBJECT("VBScript.RegExp")
    loRegEx.Pattern = lcPattern
    loRegEx.Global = .T.
    CREATE CURSOR 提取结果 (原始文本 C(100), 费用名称 C(10), 金额 N(10,2), 匹配位置 I)
    laMatches = loRegEx.Execute(tcString)
    
    ? "增强版正则表达式提取:" + CHR(13) + CHR(10)
    ? "输入文本: " + tcString + CHR(13) + CHR(10)
    ? "----------------------------------------"
    
    FOR EACH loMatch IN laMatches
        IF loMatch.SubMatches.Count >= 2
            lcExpenseName = loMatch.SubMatches(0)
            lcAmount = loMatch.SubMatches(1)
            
            INSERT INTO 提取结果 VALUES ;
                (loMatch.Value, lcExpenseName, VAL(lcAmount), loMatch.FirstIndex)
            
            ? "匹配文本: " + loMatch.Value
            ? "费用名称: " + lcExpenseName + "  金额: " + lcAmount
            ? "---"
        ENDIF
    ENDFOR
    
    SELECT 提取结果
    BROWSE TITLE "增强版正则表达式提取结果"
    
    * 按费用名称汇总
    SELECT 费用名称, SUM(金额) as 总金额, COUNT(*) as 出现次数 ;
    FROM 提取结果 ;
    GROUP BY 费用名称 ;
    ORDER BY 总金额 DESC
    
    BROWSE TITLE "费用汇总统计"
ENDPROC
昨晚 19:54
nbwww
Rank: 8Rank: 8
等 级:贵宾
威 望:11
帖 子:375
专家分:897
注 册:2021-1-9
收藏
得分:0 
今天心血来潮去试下DS,竟然发现有什么框竟然试图在训练DS了,给出的答案竟然是某框,这样也可以
昨晚 19:58
快速回复:从“费用明细”中动态提取费用类型并自动生成字段
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020096 second(s), 11 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved