| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 943 人关注过本帖
标题:最大“尾页号”和页号连续性的检测
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
现在开始动手做你这个。

三个问题需要分开做。不要做在一起。


分开做是什么意思?为什么要分开?

授人以渔,不授人以鱼。
2014-11-03 12:38
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
哦,明白了。

授人以渔,不授人以鱼。
2014-11-03 13:03
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9808
专家分:26987
注 册:2012-2-5
收藏
得分:0 
楼主是来布置作业的

坚守VFP最后的阵地
2014-11-03 13:24
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
不符合第2点要求的记录数是不是86条?

授人以渔,不授人以鱼。
2014-11-03 16:06
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你的要求:
1.需要显示每卷最大“尾页号”。不要用“SELECT * FROM (表文件名)GROUP BY” 这个命令,好像不太适用。
2.检测每卷的“页号”和“尾页号”,规则是如果第一条记录的“页号”为1,“尾页号”为3,那第二条记录的“页号”必须为4,两者之间的关系为“页号”必须比上一条记录的“尾页号”大“1”,就是当前记录的“尾页号”+1=上一条记录的“页号。显示不符合这一条件的记录。(“尾页号”是空的记录不在检测范围,可以在检测的时候过滤掉,但这些记录不能删除)
3.检测每卷第一条的“首页号”,规则是只有每卷的第一条的“首页号”有记录,且必须为“1”,显示“首页号”记录里不符合这一条件的记录

三个问题需要分开做。不要做在一起。另外所有的命令中可不可以不带“表文件名”。这样不管在哪个表都可以用了。

第一问题再加一项,就是查询到最大“尾页号”后,能不能再计算出总数,就是所有最大“尾页号”的总和


其余的都已做出,你先确认14楼的数字是否正确,我再把完成的程序给你。逛街去~

授人以渔,不授人以鱼。
2014-11-03 16:20
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
结果输出到3个数据表中,完事后分别打开就看到了:

程序代码:
CLEAR ALL

SET SAFETY OFF        && 关闭文件覆盖保护

CLEAR

* 创建输出数据表
* 由于这是新建文件,所以后面不需再初始化
CREATE TABLE "Output1" FREE (卷号 C(5), 最大尾页 I)
CREATE TABLE "Output2" FREE (记录号 I)
CREATE TABLE "Output3" FREE (记录号 I)
CLOSE TABLES ALL

SELECT 0
USE "试验用" ALIAS "testDBF"
INDEX ON 卷号+页号 TO "testDBF"

USE "Output1" EXCLUSIVE IN 0
USE "Output2" EXCLUSIVE IN 0
USE "Output3" EXCLUSIVE IN 0

* 为回避后续处理不涉及表文件名的要求,在这里切换当前工作区到指定表空间
* 后续所有处理动作均对当前工作区进行
SELECT "testDBF"
Process("Output1", "Output2", "Output3")

CLOSE TABLES ALL
CLEAR ALL
RETURN

*------------------------------
* 数据的处理过程
*------------------------------
PROCEDURE Process(tcOutput1, tcOutput2, tcOutput3)
    LOCAL lcAlias         && 当前工作区
    LOCAL lcCaseID        && 当前处理的卷号
    LOCAL llFirstRecord   && 每卷的第一条记录标志
    LOCAL lnLastPage      && 尾页号
    LOCAL lnPages         && 总页数
   
    * 记忆当前工作区
    lcAlias = ALIAS()
   
    SELECT "&lcAlias"
    lcCaseID = ""
    llFirstRecord = .F.
    lnPages = 0
    * 扫描所有尾页号非空的记录
    GOTO TOP
    DO WHILE !EOF()
   
        IF lcCaseID != 卷号
            lcCaseID = 卷号
            llFirstRecord = .T.
        ENDIF
       
        DO WHILE lcCaseID == 卷号
            IF llFirstRecord
                * 检查要求第3点:每卷的第一条记录首页号是否为1
                IF ALLTRIM(首页号) != "1"
                    * 把检查结果输出到对应的输出表中
                    SELECT "&tcOutput3"
                    APPEND BLANK
                    REPLACE 记录号 WITH RECNO(lcAlias)
                    SELECT "&lcAlias"
                ENDIF
                lnLastPage = VAL(尾页号)
            ELSE
                IF VAL(页号) != lnLastPage + 1
                    * 把要求第2点的记录输出到对应的输出表中
                    SELECT "&tcOutput2"
                    APPEND BLANK
                    REPLACE 记录号 WITH RECNO(lcAlias)
                    SELECT "&lcAlias"
                ELSE
                    lnLastPage = VAL(尾页号)
                ENDIF
            ENDIF
            SKIP IN "&lcAlias"
            llFirstRecord = .F.
        ENDDO
       
        * 把要求第1点的记录输出到对应的输出表中
        SELECT "&tcOutput1"
        APPEND BLANK
        REPLACE 卷号 WITH lcCaseID, 最大尾页 WITH lnLastPage
        lnPages = lnPages + 最大尾页
        SELECT "&lcAlias"
       
    ENDDO
   
    * 输出总页数
    SELECT "&tcOutput1"
    APPEND BLANK
    REPLACE 卷号 WITH "总计", 最大尾页 WITH lnPages
    BROWSE
   
    * 返回进来时所处的工作区
    SELECT "&lcAlias"
   
ENDPROC

*------------------------------
* 显示记录
*------------------------------
PROCEDURE Show_Record(tcAlias)
    LOCAL lcAlias
   
    lcAlias = ALIAS()
    SELECT "&tcAlias"
    ?? 卷号,首页号,页号,尾页号
    ?
    SELECT "&lcAlias"
   
ENDPROC


授人以渔,不授人以鱼。
2014-11-03 20:16
快速回复:最大“尾页号”和页号连续性的检测
数据加载中...
 
   



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

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