| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 587 人关注过本帖
标题:请VFP高手帮我解决这个问题。
取消只看楼主 加入收藏
liqiao1680
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2011-5-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
请VFP高手帮我解决这个问题。
编了个记考勤的程序,可是程序总是进入了死循环,请各位高手帮我看看,指点迷津。程序如下:

week=ALLTRIM(thisform.text4.value)
IF EMPTY(thisform.text4.value)
MESSAGEBOX("请填写第几周",16,"出错提示")
RETURN
ENDIF
USE temptab;记载有考勤的一个通用的模板表
COPY TO &week;将表复制成第N周的考勤表

cc=MESSAGEbox("是否将本周加入汇总",36,"提示")
IF cc=6
    sele 0
    USE &week
        DO while not EOF()
           SCATTER fields a课时,b课时,早自习,午自习,晚自习1,晚自习2,晚自习3,病假,私假,旷工 to kq(10) "取出第一个记录中的数据放入kq(10)
           SKIP
           sele 1
           USE kqhz ;"kqhz"是已经建立的考勤汇总表
           SCATTER fields a课时,b课时,早自习,午自习,晚自习1,晚自习2,晚自习3,病假,私假,旷工 to hz(10)
             FOR i=1 to 10
             hz(i)=hz(i)+kq(i)
             endfor
           GATHER from hz fields a课时,b课时,早自习,午自习,晚自习1,晚自习2,晚自习3,病假,私假,旷工 ;"将汇总后的数据读入kqhz表中。"
             SKIP
          ENDDO
ENDIF
OPEN DATABASE 考勤管理
ADD TABLE &week
thisform.text4.Value=""
USE temptab
REPLACE all a课时 with 0,b课时 with 0,早自习 with 0,午自习 with 0,晚自习1 with 0,;
晚自习2 with 0,晚自习3 with 0,病假 with 0,私假 with 0,旷工 with 0
CLOSE TABLES
thisform.Release
RETURN

搜索更多相关主题的帖子: 通用 晚自习 
2011-05-22 17:55
liqiao1680
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2011-5-22
收藏
得分:0 
回复 楼主 liqiao1680
我改成了这样,程序能执行,可是汇总的表总是不改变。还是请您不吝赐教:
cc=MESSAGEbox("是否将本周加入汇总",36,"提示")
IF cc=6
        DO while not EOF()
           SELECT 1
           USE &week
           SCATTER fields a课时,b课时,早自习,午自习,晚自习1,晚自习2,晚自习3,病假,私假,旷工 to kq(10)
           SKIP
           SELECT 2
           USE kqhz
           SCATTER fields a课时,b课时,早自习,午自习,晚自习1,晚自习2,晚自习3,病假,私假,旷工 to hz(10)
             FOR i=1 to 10
             hz(i)=hz(i)+kq(i)
             endfor
           GATHER from hz fields a课时,b课时,早自习,午自习,晚自习1,晚自习2,晚自习3,病假,私假,旷工
             SKIP
          ENDDO
ENDIF
2011-05-24 20:20
liqiao1680
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2011-5-22
收藏
得分:0 
非常感谢您的指点。现在程序已能正常运行,根据您的指点,我的完整的设计是这样的:
week=ALLTRIM(thisform.text4.value)  &&填入第几周,用于记载、汇总和查询,第几周的数字作为当周考勤的表名。
IF EMPTY(thisform.text4.value)      &&第几周必填。
MESSAGEBOX("请填写第几周",16,"出错提示")
RETURN
ENDIF
USE temptab      &&temptab是一个含有本学期所有教师姓名和考勤项的模板表,当中只有教师姓名,其它各项都是零。;
                   设计了一个表单,将temptab表作为数据源,输入当周的考勤记载。完成后按“确定”按钮,执行下列程序:
COPY TO &week    &&将已记入考勤的模板表复制成第几周的考勤表,即&week.
cc=MESSAGEbox("是否将本周加入汇总",36,"提示")
IF cc=6
        SELECT 1
           USE &week   &&week是当周考勤
        SELECT 2
           USE kqhz     &&kqhz是各周的考勤汇总。
           SELECT 1
        scan             &&开始循环
           SCATTER fields a课时,b课时,早自习,午自习,晚自习1,晚自习2,晚自习3,病假,私假,旷工 to kq   &&收集第一个记录的各考勤项,放入kq中。
           SELECT 2
           SCATTER fields a课时,b课时,早自习,午自习,晚自习1,晚自习2,晚自习3,病假,私假,旷工 to hz(10)  &&收集考勤汇总表中的考勤项,放入hz中。
             FOR i=1 to 10
             hz(i)=hz(i)+kq(i)  &&将&week表中的考勤项加入到汇总表中,进行汇总。
             endfor
           GATHER from hz fields a课时,b课时,早自习,午自习,晚自习1,晚自习2,晚自习3,病假,私假,旷工       &&将汇总后的数据读入汇总表中。
          ENDscan
ENDIF
use  &&关闭表
OPEN DATABASE 考勤管理
ADD TABLE &week          &&将&week表加入到考勤数据库中,作为以后每周查询的用表。
thisform.text4.Value=""  &&清空表单中的文本框。
USE temptab              &&打开模板表,将模板表中记载的本周考勤的数据清空,以备下周复制后记入考勤。
REPLACE all a课时 with 0,b课时 with 0,早自习 with 0,午自习 with 0,晚自习1 with 0,;
晚自习2 with 0,晚自习3 with 0,病假 with 0,私假 with 0,旷工 with 0
CLOSE TABLES
thisform.Release
RETURN


非常感谢您不吝赐教,不胜感激。
2011-05-25 22:46
liqiao1680
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2011-5-22
收藏
得分:0 
回复 4楼 xzyu1968
上次的修改还不行,改成下面的程序,经反复检验是可用的。
week=ALLTRIM(thisform.text4.value)  &&填入第几周,用于记载、汇总和查询,第几周的数字作为当周考勤的表名。
IF EMPTY(thisform.text4.value)      &&第几周必填。
MESSAGEBOX("请填写第几周",16,"出错提示")
RETURN
ENDIF
USE temptab      &&temptab是一个含有本学期所有教师姓名和考勤项的模板表,当中只有教师姓名,其它各项都是零。;
                   设计了一个表单,将temptab表作为数据源,输入当周的考勤记载。完成后按“确定”按钮,执行下列程序:
COPY TO &week    &&将已记入考勤的模板表复制成第几周的考勤表,即&week.
cc=MESSAGEbox("是否将本周加入汇总",36,"提示")
IF cc=6
        SELECT 1
           USE &week   &&week是当周考勤
        SELECT 2
           USE kqhz     &&kqhz是各周的考勤汇总。
           SELECT 1
        scan             &&开始循环
           SCATTER fields a课时,b课时,早自习,午自习,晚自习1,晚自习2,晚自习3,病假,私假,旷工 to kq   &&收集第一个记录的各考勤项,放入kq中。
           SELECT 2
           SCATTER fields a课时,b课时,早自习,午自习,晚自习1,晚自习2,晚自习3,病假,私假,旷工 to hz(10)  &&收集考勤汇总表中的考勤项,放入hz中。
             FOR i=1 to 10
             hz(i)=hz(i)+kq(i)  &&将&week表中的考勤项加入到汇总表中,进行汇总。
             endfor
           GATHER from hz fields a课时,b课时,早自习,午自习,晚自习1,晚自习2,晚自习3,病假,私假,旷工       &&将汇总后的数据读入汇总表中。
           skip  &kqhz表移至下一个记录(上次就是没有这个,总是把考勤加到了第一个教师里)
           sele 1   &&将当前工作区转到1
 ENDscan
ENDIF
use  &&关闭表
OPEN DATABASE 考勤管理
ADD TABLE &week          &&将&week表加入到考勤数据库中,作为以后每周查询的用表。
thisform.text4.Value=""  &&清空表单中的文本框。
USE temptab              &&打开模板表,将模板表中记载的本周考勤的数据清空,以备下周复制后记入考勤。
REPLACE all a课时 with 0,b课时 with 0,早自习 with 0,午自习 with 0,晚自习1 with 0,;
晚自习2 with 0,晚自习3 with 0,病假 with 0,私假 with 0,旷工 with 0
CLOSE TABLES
thisform.Release
RETURN
再次感谢各位的帮助。
2011-05-27 18:04
liqiao1680
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2011-5-22
收藏
得分:0 
回复 4楼 xzyu1968
4楼的xzyu1968,我们能不能交个朋友。我QQ号:292753928。
2011-05-27 18:06
快速回复:请VFP高手帮我解决这个问题。
数据加载中...
 
   



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

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