注册 登录
编程论坛 VFP论坛

IF else语句疑问

meboy88 发布于 2023-09-08 16:17, 431 次点击
程序代码:
SET TALK OFF
CLEAR
count to Tj for bpdfxz="W1"
IF (TJ=0)
=MESSAGEBOX("今日无含W1标志数据",64)
ELSE
USE E:\test\&NYR\BJ.dbf
LOCATE ALL for left(BPDFDM,1)="E" or  left(BPDFDM,2)="06"
CONTINUE
   IF found()
SCAN FOR left(BPDFDM,1)="E" or  left(BPDFDM,2)="06"
replace  bpdfxz with " "
ENDSCAN
=MESSAGEBOX("含有W1标志情况,请检查BJ后,再报送!",64)
    ELSE
=MESSAGEBOX("今日无需要数据",64)  
   ENDIF
ENDIF
CLOSE ALL
CLEAR EVENTS
QUIT


请帮看下 我这条语句“    ELSE
=MESSAGEBOX("今日无需要数据",64)”,结果出不来,我的想法是,账户开头不是E和06且标志是w1,提示"今日无需要数据",但是执行下来,不会有提示。仍然按提示“含有W1标志情况,请检查BJSBP后,再报送!",64”执行
8 回复
#2
sam_jiang2023-09-08 16:37
你的continue的位置是不是不对啊。。。
#3
csyx2023-09-08 17:34
CONTINUE 惹的祸把
#4
hu9jj2023-09-09 06:53
将代码按缩进格式调整,这样会更容易看出代码的逻辑关系。

SET TALK OFF
CLEAR
count to Tj for bpdfxz="W1"
IF (TJ=0)
    =MESSAGEBOX("今日无含W1标志数据",64)
ELSE
    USE E:\test\&NYR\BJ.dbf
    LOCATE ALL for left(BPDFDM,1)="E" or  left(BPDFDM,2)="06"
    CONTINUE
    IF found()
        SCAN FOR left(BPDFDM,1)="E" or  left(BPDFDM,2)="06"
            replace  bpdfxz with " "
        ENDSCAN
        =MESSAGEBOX("含有W1标志情况,请检查BJ后,再报送!",64)
    ELSE
        =MESSAGEBOX("今日无需要数据",64)  
    ENDIF
ENDIF
CLOSE ALL
CLEAR EVENTS
QUIT


#5
laowan0012023-09-09 08:02
LOCATE ALL for left(BPDFDM,1)="E" or  left(BPDFDM,2)="06"
* 这里可能找到一条,此时eof()=.F.
CONTINUE
* 这是找了下一条,也许就找不到了,此时eof()=.T.
把CONTINUE去掉试试
#6
sam_jiang2023-09-09 13:56
以下是引用hu9jj在2023-9-9 06:53:57的发言:

将代码按缩进格式调整,这样会更容易看出代码的逻辑关系。

SET TALK OFF
CLEAR
count to Tj for bpdfxz="W1"
IF (TJ=0)
    =MESSAGEBOX("今日无含W1标志数据",64)
ELSE
    USE E:\test\&NYR\BJ.dbf
    LOCATE ALL for left(BPDFDM,1)="E" or  left(BPDFDM,2)="06"
*!*    CONTINUE
    IF found()
        SCAN FOR left(BPDFDM,1)="E" or  left(BPDFDM,2)="06"
            replace  bpdfxz with " "
        ENDSCAN
        =MESSAGEBOX("含有W1标志情况,请检查BJ后,再报送!",64)
    ELSE
        =MESSAGEBOX("今日无需要数据",64)  
    ENDIF
    continue &&放这里。。。
ENDIF
CLOSE ALL
CLEAR EVENTS
QUIT

#7
meboy882023-09-11 09:22
变了continue的位置,还是不行。。。。
#8
csyx2023-09-11 09:49
有那么麻烦吗?这样试试

...
USE E:\test\&NYR\BJ.dbf
LOCATE ALL For (left(BPDFDM,1) <> "E" and left(BPDFDM,2) <> "06" and bpdfxz = 'W1'
If found()
    =MESSAGEBOX("今日无需要数据",64)  
ELSE
    =MESSAGEBOX("含有W1标志情况,请检查BJ后,再报送!",64)
ENDIF
...

[此贴子已经被作者于2023-9-11 09:53编辑过]

#9
meboy882023-09-11 10:37
以下是引用csyx在2023-9-11 09:49:17的发言:

有那么麻烦吗?这样试试

...
USE E:\test\&NYR\BJ.dbf
LOCATE ALL For (left(BPDFDM,1) <> "E" and left(BPDFDM,2) <> "06" and bpdfxz = 'W1'
If found()
    =MESSAGEBOX("今日无需要数据",64)  
ELSE
    =MESSAGEBOX("含有W1标志情况,请检查BJ后,再报送!",64)
ENDIF
...

已解决,谢谢。
1