求助:嵌套循环如何跳转?
本帖最后由 czw8819 于 2013-10-21 16:49:57 编辑 一段代码用到了 两个 SCAN......ENDSCAN,CASE....ENDCASE,FOR....ENDFOR
设计的意愿是:当isOK =1 时,能跳出类别表的循环,返回到产品表继续处理下一条记录
但经测试,用 EXIT 好象不能退出当前的循环,无法回到第一层(即产品表)
求热心人解惑帮助,谢谢!
代码如下(代码已作删减,仅作思路表述):
SELECT 产品表
GO TOP
SCAN
this_cpmc = ALLTRIM(cpmc)
SELECT 类别表
GO TOP
SCAN
this_lbmc= ALLTRIM(pzlbmc)
this_tag = ALLTRIM(lb_tag)
DO CASE
CASE OCCURS(";",this_tag) >0
fuHao_tally = OCCURS(";",this_tag) &&获得 “;”号的个数
tag_count = 0
*--开始截取关键字
FOR tag_sum = 1 TO fuHao_tally
isok = 0
isok = thisForm.截取关键字(lo_tag,this_cpmc)
IF isok = 1
EXIT &&跳出截取关键字
ENDIF
ENDFOR
*--- 结束截取关键字------------------------
IF isok = 1
MESSAGEBOX("找到关键字")
*---退出类别表的循环,跳到产品表继续处理下一条产品记录
EXIT
ENDIF
CASE OCCURS("_",this_tag) >0 AND OCCURS(";",this_tag) =0
isOK = 0
isOK = ThisForm.截取关键字(this_tag,this_cpmc)
IF isOK = 1
EXIT &&退出类别表的循环,跳到产品表继续处理下一条记录
ELSE
LOOP &&返回类别表跳到下条类别记录
ENDIF
OTHERWISE
IF OCCURS(this_tag,this_cpmc)=1
EXIT
ELSE
Loop
ENDIF
ENDCASE
SELECT 类别表
ENDSCAN
SELECT 产品表
ENDSCAN
[解决办法]
示例:
Clear
Create Cursor 产品表 (a1 i)
For lnI=1 To 10
Insert Into 产品表 Values (lnI)
Endfor
Create Cursor 类别表 (b1 i)
For lnI=100 To 105
Insert Into 类别表 Values (lnI)
Endfor
Select 产品表
Scan
?a1
Select 类别表
Scan
For lnI=1 To 10
isok = 0
isok=b1
If isok=102
Exit
Endif
Endfor
If isok=102
Exit
Endif
Endscan
??b1
Endscan