标题:遇到难题了,日期之间如何改用-连接?求大侠帮助
只看楼主
wjw666
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-9-12
结帖率:100%
已结贴  问题点数:20 回复次数:7 
遇到难题了,日期之间如何改用-连接?求大侠帮助
怎么把“3号休假,4号休假,5号休假,6号休假,10号休假”变成“3-6号休假,10号休假”。
每月日期不固定,把连续的天数用“-”连接。
谢谢!!
搜索更多相关主题的帖子: 难题 日期 连接 固定 天数 
2018-10-10 15:47
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:10 
先说说“3号休假,4号休假,5号休假,6号休假,10号休假”这串是怎样产生的
2018-10-10 16:24
wjw666
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-9-12
得分:0 
回复 2楼 吹水佬
一个每月休假情况表,字段:姓名,A1,A2......A31(月天数)

姓名  A1    A2    A3    A4      A5   ......
张三             休假   休假     休假

已处理成:张三  3号休假,4号休假,5号休假,6号休假,10号休假

现想直接打印成:张三: 3-6号休假,10号休假

谢谢关注!!
2018-10-10 19:11
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
直接从“休假情况表”生成就可以,不用转来转去。
如:A2、A3、A4字段值为休假则是:2-4号休假,A6、A8字段值为休假则是:6号休假,8号休假
2018-10-10 19:51
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:10 
上传相关数据表

坚守VFP最后的阵地
2018-10-10 20:01
wjw666
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-9-12
得分:0 
回复 5楼 sdta
jia.rar (641 Bytes)
2018-10-10 21:28
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
VFP9环境下运行:
程序代码:
CLOSE DATABASES 
CREATE CURSOR Temp (nValue N(2))
USE Jia IN 0
SELECT Jia
SCAN 
    ZAP IN Temp
    FOR i = 3 TO FCOUNT()
        IF NOT EMPTY(EVALUATE(FIELD(i)))
            INSERT INTO Temp VALUES (VAL(SUBSTR(FIELD(i, "Jia"), 2)))
        ENDIF 
    ENDFOR
    SELECT MIN(nValue) nMin, ;
        MAX(nValue) nMax, nId, ;
        IIF(MIN(nValue) = MAX(nValue), ;
        TRANSFORM(MIN(nValue)), ;
        TRANSFORM(MIN(nValue)) + "-" + TRANSFORM(MAX(nValue))) + "号休假" + SPACE(10) 结果 ;
        FROM (SELECT nValue, nValue - RECNO() nId FROM Temp) cA GROUP BY nId
ENDSCAN
USE IN Temp


坚守VFP最后的阵地
2018-10-10 23:30
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
jia表好象少了一个a11字段,先补上测试

USE jia
SCAN
    SCATTER TO arr
    ? arr[1], arr[2], " "
    n开始 = 0
    n结束 = 0
    FOR i=3 TO ALEN(arr)
        IF !EMPTY(arr[i])
            IF n开始 > 0
                IF i > n结束+1
                    ?? TRANSFORM(n开始-2)+IIF(n开始<n结束,"-"+TRANSFORM(n结束-2),"")+"号休假", " "
                    n开始 = i
                    n结束 = i
                ELSE
                    n结束 = i
                ENDIF
            ELSE
                n开始 = i
                n结束 = i
            ENDIF
        ENDIF
    ENDFOR
    IF n开始 > 0
        ?? TRANSFORM(n开始-2)+IIF(n开始<n结束,"-"+TRANSFORM(n结束-2),"")+"号休假", " "
    ENDIF
ENDSCAN


[此贴子已经被作者于2018-10-11 08:29编辑过]

2018-10-11 08:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-490285-1-1.html




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

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.260748 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved