首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > VFP >

嵌套循环怎么跳转

2013-10-23 
求助:嵌套循环如何跳转?本帖最后由 czw8819 于 2013-10-21 16:49:57 编辑一段代码用到了 两个 SCAN......E

求助:嵌套循环如何跳转?
本帖最后由 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

热点排行