回 帖 发 新 帖 刷新版面

主题:程序不能向下执行

敬请多多指点,不胜感激!
我建立了“基本信息库”,创建了表单文件,添加了“今日保养”按钮。按钮中的命令如下:
use d:\我的文档\保养程序\jbxx.dbf 
do case
   case date()-购机日期=1
    repl 保养 with "换机油"
     case date()-购机日期=2
      repl 保养 with "轮胎"
       case date()-购机日期=3
         repl 保养 with "三滤"
endcase
browse
[color=FF0000]运行表单后为什么打开的"jbxx.dbf"中“保养”字段下的内容只对第一条记录有效?怎样向下执行所有记录?[/color]

回复列表 (共10个回复)

沙发

当然只对第一条记录生效,因为你没有指定替换条件,仅对当前记录操作。而打开表后第一条记录是当前记录

板凳

use d:\我的文档\保养程序\jbxx.dbf 
SCAN FOR RECNO()>0 
  do case
     case date()-购机日期=1
       repl 保养 with "换机油"
     case date()-购机日期=2
       repl 保养 with "轮胎"
     case date()-购机日期=3
       repl 保养 with "三滤"
  endcase
  IF EOF()=.T.
     EXIT
  ENDIF
  LOOP
ENDSCAN
browse

3 楼

谢谢foxdb老师!
但又有新问题出现:点击“今日保养”后程序能向下执行,但保养字段下内容不能更新。比如购机天数为1天时,保养字段显示“换机油”,购机天数为不是程序中的1、2、3天数时仍旧显示“换机油”而不为空。这样就失去了“今日保养”按钮的作用。还望老师再次指导!

4 楼

就事论事,

USE d:\我的文档\保养程序\jbxx.dbf 
SCAN 
  DO CASE
     CASE DATE()-购机日期=1
       REPLACE 保养 WITH "换机油"
     CASE DATE()-购机日期=2
       REPLACE 保养 WITH "轮胎"
     CASE DATE()-购机日期=3
       REPLACE 保养 WITH "三滤"
     OTHERWISE
       REPLACE 保养 WITH ""
  ENDCASE
ENDSCAN
BROWSE

5 楼

repl 保养 with ICASE(DATE()-购机日期=1, "换机油", DATE()-购机日期=2,"轮胎", DATE()-购机日期=3,"三滤")

6 楼

购机后第二天就换机油?第三天就保养轮胎?......

7 楼

[quote]repl 保养 with ICASE(DATE()-购机日期=1, "换机油", DATE()-购机日期=2,"轮胎", DATE()-购机日期=3,"三滤")[/quote]


只给了10分,不识货啊!

8 楼

5楼知足啦,我是解决"怎样向下执行所有记录"得了20分,可没有想到并及时解决"不为空"问题,人家4楼补全了得30分也无可厚非,你缩成一句表面上是效率高了可也有局限性,如果楼主不是用VFP9.0的话,可能一分也不给你了!

9 楼

别吵了,分数重要吗?

10 楼

[quote]5楼知足啦,我是解决"怎样向下执行所有记录"得了20分,可没有想到并及时解决"不为空"问题,人家4楼补全了得30分也无可厚非,你缩成一句表面上是效率高了可也有局限性,如果楼主不是用VFP9.0的话,可能一分也不给你了![/quote]

2楼的写得很不好,如果不用VFP9.0,实际上很好解决:

repl 保养 with  "" all  in jbxx
repl 保养 with "换机油" for  date()-购机日期=1 in jbxx
repl 保养 with "轮胎" for date()-购机日期=2 in jbxx
repl 保养 with "三滤" for date()-购机日期=3 in jbxx
 

我来回复

您尚未登录,请登录后再回复。点此登录或注册