hur.cn - 华软网

 热门搜索

读取游标时老是多了一行全部为空的纪录!

  作者:未知    来源:网络    更新时间:2018/1/1
Rt!

------华软网友回答------
又測試了一下,是最後一行重復了!
------华软网友回复------
可能你数据库里面本来就多一行。
------华软网友回复------
设置主键,再仔细查看你的代码
------华软网友回复------
可能是代码有问题吧

------华软网友回复------
表vendor内容:
vend_num    vend_name
  1         dhl
  2         ups
  3         tnt
代碼如下:
string b
int a
 DECLARE aa CURSOR FOR  
  SELECT "VENDOR"."VEND_NUM",   
         "VENDOR"."VEND_NAME"  
    FROM "VENDOR"  ;
open aa;
fetch aa into :a,:b;
do while sqlca.sqlcode=0 
   fetch aa into :a,:b;
loop
close aa;
檢測時硬是多了一行:
  1         dhl
  2         ups
  3         tnt
  3         tnt

真是奇怪!
------华软网友回复------
取值的时候再判断一下sqlcode就可以了。
do while sqlca.sqlcode=0 
   fetch aa into :a,:b;
   if sqlca.sqlcode =0 then
     messagebox("",b)
   end if
loop
是这个循环造成的,具体方法你再研究一下就可以了。
------华软网友回复------
再加一個
   if sqlca.sqlcode =0 then
     messagebox("",b)
   end if
是可以!不過這是什麽邏輯?
我靠,PB玩了幾年,還真不明白,臉紅啊!
以前從來不用cursor。
------华软网友回复------
数据窗口多好,为什么要用游标
------华软网友回复------
周杰伦版卫生巾广告:快使用卫生巾哼哼哈兮,快使用卫生巾哼哼哈兮,月经之人要切记侧漏无敌,是谁的流量大风生水起!我用夜晚特长防御!哼~ 

 笑死哦了~~~~~~~~~~~
------华软网友回复------
回复人: qianfl(毛毛熊) ( ) 信誉:100  2005-04-30 09:15:00  得分: 0   
 
   用数据窗口多好,为什么要用游标

沒錯,但是遊標也有它存在的價值的!
  
 

------华软网友回复------
string b
int a
 DECLARE aa CURSOR FOR  
  SELECT "test"."b"
    FROM "test";
open aa;
//fetch aa into :b;
do while sqlca.sqlcode=0 
   fetch aa into :b;
loop
close aa;

这样就对了,只是在我的机器上:)
------华软网友回复------
你能不能再多贴一点代码,还有,你确实数据库里面只有三行数据?没有空行了吗?
------华软网友回复------
string a,b
 DECLARE aa CURSOR FOR  
  SELECT "VENDOR"."VEND_NUM",   
         "VENDOR"."VEND_NAME"  
    FROM "VENDOR"  ;
open aa;
do while sqlca.sqlcode=0 
   fetch aa into :a,:b;
   messagebox(a,b) 
loop
close aa;

messagebox()總是比我表裏的數據行數多一次!
------华软网友回复------
string b
int a
 DECLARE aa CURSOR FOR  
  SELECT VENDOR.vend_num,   
         VENDOR.VEND_NAME
    FROM VENDOR;
open aa;
fetch aa into :a,:b;
do while sqlca.sqlcode=0 
   messagebox("",a)
fetch aa into :a,:b;
loop
close aa;

这样没有错,对了我的是PB8.0。
------华软网友回复------
我在编译的过程中,如果像你那样在字段中加引号会有语法错误报告。
------华软网友回复------
我可一直都用引号  从来没错过哟 ~~
------华软网友回复------
我的游标没次只能读去最后一条数据!!!
有没有大哥知道会是那方面的原因啊!!
------华软网友回复------
取最后一行记录时sqlca.sqlcode=0,所以多循环了一次.
------华软网友回复------
string b
int a
 DECLARE aa CURSOR FOR  
  SELECT VENDOR.vend_num,   
         VENDOR.VEND_NAME
    FROM VENDOR;
open aa;
fetch aa into :a,:b;
do while sqlca.sqlcode=0 
   messagebox("",a)
fetch aa into :a,:b;
loop
close aa;


肯定不会错的,我认为那个版本都一样
------华软网友回复------
應該這樣:
do while sqlca.sqlcode=0 
   fetch aa into :a,:b;
   messagebox("",a)
loop


do while sqlca.sqlcode=0 
   messagebox("",a)
   fetch aa into :a,:b;   
loop             //messagebox當然會少一個。
------华软网友回复------
Do
Fetch ....
If SQLCA.SQLCode = 100 Then
Exit
End If
If SQLCA.SQLCode <> 0 Then
MessageBox("提示","游标取值出错!")
Rollback Using SQLCA;
Return
End If

Loop Until 1 <> 1
------华软网友回复------
string a,b
 DECLARE aa CURSOR FOR  
  SELECT "VENDOR"."VEND_NUM",   
         "VENDOR"."VEND_NAME"  
    FROM "VENDOR"  ;
open aa;
do while sqlca.sqlcode=0 
   fetch aa into :a,:b;
   messagebox(a,b) //messagebox()總是比我表裏的數據行數多一次!
loop
close aa;

請大家先分析一下我的代碼哪裏有錯?
     
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。