| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1337 人关注过本帖
标题:高手帮我看下,这是个怎么变成死循环了?
只看楼主 加入收藏
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
以下是引用lihuibiaozs在2015-4-19 16:11:42的发言:

DO WHILE EOF()
         DO xjqs
         DO ssqs
      LOOP
     ENDDO
 
上述循环体中是对表的遍历,但缺了对表中记录行的动作。如SKIP。。。
没结束可能
2015-04-20 08:08
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
以下是引用hu9jj在2015-4-20 07:43:41的发言:


并没有“为止”,而是无限循环下去。

可以的,不要忘记还有两个过程:
CREATE CURSOR dd (f1 I)
DO WHILE EOF()
    DO ssqs
    DO xjqs
    LOOP
ENDDO
? "出来了"

PROCEDURE ssqs
        *直到有记录并记录指针指向有效记录
    APPEND BLANK
ENDPROC

PROCEDURE xjqs
ENDPROC
2015-04-20 11:06
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
一起手就学SQL查询的,楼主脑中根本没有数据表指针模型及其运动的概念,怎麽可能给他解释得清楚。代劳了吧。

[ 本帖最后由 TonyDeng 于 2015-4-20 11:51 编辑 ]

授人以渔,不授人以鱼。
2015-04-20 11:49
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
以下是引用吹水佬在2015-4-20 11:06:31的发言:

 
可以的,不要忘记还有两个过程:
CREATE CURSOR dd (f1 I)
DO WHILE EOF()
    DO ssqs
    DO xjqs
    LOOP
ENDDO
? "出来了"
 
PROCEDURE ssqs
        *直到有记录并记录指针指向有效记录
    APPEND BLANK
ENDPROC
 
PROCEDURE xjqs
ENDPROC
问题是enddo没有执行的机会吧?

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2015-04-20 13:43
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 14楼 hu9jj
是否退出,是在while处检查的,不是enddo处。问题的关键,是执行那两个do过程表指针被移动到哪里去了!

授人以渔,不授人以鱼。
2015-04-20 13:48
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
EOF(),仅在表记录指针越出最後一条记录时为真,所有不适用skip的指令,都不会让这种情形出现,这就是楼主所询问死循环的原因。换言之,他在那两个过程中,一定是用SQL类指令的,而不是传统的do while !eof()/skip/enddo模式,看1楼代码基本上也能看出来,除了goto top、delete all,估计他也只会total for、sum之类,从没用过skip的。

[ 本帖最后由 TonyDeng 于 2015-4-20 13:57 编辑 ]

授人以渔,不授人以鱼。
2015-04-20 13:55
wangzhiyi
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:366
专家分:684
注 册:2014-4-9
收藏
得分:0 
以下是引用l87233203在2015-4-19 15:22:31的发言:

 
IF FOUND()
   IF s>=k*1.06
      A1=K
      DO ssqs
      DO WHILE EOF()
         DO xjqs
         DO ssqs
      LOOP
     ENDDO
   ELSE  
      A2=K      
      DO xjqs
      DO WHILE EOF()
           
         DO ssqs
         
         DO xjqs
         LOOP
      ENDDO  
   ENDIF  
ELSE
   RETURN
ENDIF  
过程SSQS和 XJQS到底是干什么用的?原程序呢?好好学习下DO循环,什么时候该用LOOP,如何结束循环。
2015-04-20 15:25
lihuibiaozs
Rank: 2
等 级:论坛游民
帖 子:6
专家分:17
注 册:2015-4-7
收藏
得分:5 
DO WHILE EOF() 能遍历表吗?
应是:
DO WHILE !EOF()
    ......
    SKIP
ENDDO

很好! 我也看漏了循环条件 !EOF()
2015-04-20 21:26
bccn201304
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:56
专家分:154
注 册:2013-4-21
收藏
得分:0 
不知道楼主在循环中做了些什么,两个 DO XXX 只有他自己明白干啥了
2015-04-22 12:24
l87233203
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2015-3-8
收藏
得分:0 
回复 19楼 bccn201304
我问的是外面的循环。

没有问DO SSQS
和DO XJQS
2015-04-23 19:24
快速回复:高手帮我看下,这是个怎么变成死循环了?
数据加载中...
 
   



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

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