| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 332 人关注过本帖
标题:遇到难题了,日期之间如何改用-连接?求大侠帮助
只看楼主 加入收藏
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
等 级:版主
威 望:169
帖 子:6388
专家分:28007
注 册: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
等 级:版主
威 望:169
帖 子:6388
专家分:28007
注 册: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
等 级:版主
威 望:173
帖 子:7426
专家分:17586
注 册:2012-2-5
  得分:10 
上传相关数据表

坚守VFP最后的阵地
2018-10-10 20:01
wjw666
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-9-12
  得分:0 
回复 5楼 sdta
附件: 您没有浏览附件的权限,请 登录注册
2018-10-10 21:28
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:173
帖 子:7426
专家分:17586
注 册: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
等 级:版主
威 望:169
帖 子:6388
专家分:28007
注 册: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







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

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