当前位置: 代码迷 >> PB >> PB9运行到游标关闭的地方总是自动关闭程序,不知咋回事,请哥哥姐姐们指点迷津!万分感谢
  详细解决方案

PB9运行到游标关闭的地方总是自动关闭程序,不知咋回事,请哥哥姐姐们指点迷津!万分感谢

热度:114   发布时间:2016-04-29 09:53:21.0
PB9运行到游标关闭的地方总是自动关闭程序,不知怎么回事,请哥哥姐姐们指点迷津!万分感谢~
string wellname_temp
string temp_table_wellname,temp_table_order,temp_table_style,temp_table_depth,temp_table_formation,temp_table_rock
string temp_table_begintime,temp_table_finishtime,temp_table_losstime,temp_table_bha,temp_table_complex,temp_table_doing,temp_table_reason,temp_table_knowing

integer check_n1,i,check_n
check_n1=0
if rb_1.checked=true then
cb_1.enabled=false
temp1[]=otemp1[]
temp2[]=otemp2[]
temp3[]=otemp3[]
temp4[]=otemp4[]
temp5[]=otemp5[]
temp6[]=otemp6[]
temp7[]=otemp7[]
temp8[]=otemp8[]
temp9[]=otemp9[]
temp10[]=otemp10[]
temp11[]=otemp11[]
temp12[]=otemp12[]
temp13[]=otemp13[]
temp14[]=otemp14[]

wellname_temp=trim(sle_1.text)
 dw_1.settransobject(sqlca)
  declare cn_check1 cursor for select 井名,复杂序号,复杂类型,复杂井深,发生地层,岩性,发生时间,解除时间,损失时间,钻具组合,情况描述,处理过程,原因,认识 from complex_info where 井名=:wellname_temp ;  
open cn_check1;//打开游标
  check_n1 = 0
  do while true
  fetch cn_check1  
 into :temp_table_wellname,:temp_table_order,:temp_table_style,:temp_table_depth,:temp_table_formation,:temp_table_rock,:temp_table_begintime,:temp_table_finishtime,:temp_table_losstime,:temp_table_bha,:temp_table_complex,:temp_table_doing,:temp_table_reason,:temp_table_knowing;
 if sqlca.sqlcode=100 then
messagebox("查询提示","查询完毕!")
exit
 end if
check_n1++
temp1[check_n1]=temp_table_wellname
temp2[check_n1]=temp_table_order
temp3[check_n1]=temp_table_style
temp4[check_n1]=temp_table_depth
temp5[check_n1]=temp_table_formation
temp6[check_n1]=temp_table_rock
temp7[check_n1]=temp_table_begintime
temp8[check_n1]=temp_table_finishtime
temp9[check_n1]=temp_table_losstime
temp10[check_n1]=temp_table_bha
temp11[check_n1]=temp_table_complex
temp12[check_n1]=temp_table_doing
temp13[check_n1]=temp_table_reason
temp14[check_n1]=temp_table_knowing
loop

close cn_check1;//关闭游标,运行到此,老是关闭程序,不知为何?
dw_1.settransobject(sqlca)
for i =1 to check_n1
insert into temp_table2(井名,复杂序号,复杂类型,复杂井深,发生地层,岩性,发生时间,解除时间,损失时间,钻具组合,情况描述,处理过程,原因,认识) 
values(:temp1[i],:temp2[i],:temp3[i],:temp4[i],:temp5[i],:temp6[i],:temp7[i],:temp8[i],:temp9[i],:temp10[i],:temp11[i],:temp12[i],:temp13[i],:temp14[i]);
if sqlca.sqlcode=0 and i= check_n1 then
messagebox("提示","插入数据完毕!")
end if
if sqlca.sqlcode=-1 then
messagebox("提示","插入数据失败!"+sqlca.sqlerrtext,exclamation!)
exit
end if

next 

dw_1.update( )
dw_1.retrieve( )
cb_3.text='该井共发生'+string(check_n1)+'次复杂情况'
temp_checknum=string(check_n1)
end if

------解决方案--------------------
改用datastore 来处理吧。
------解决方案--------------------
把以下语句屏蔽后,还会不会关闭

C/C++ code
temp1[check_n1]=temp_table_wellname        temp2[check_n1]=temp_table_order        temp3[check_n1]=temp_table_style        temp4[check_n1]=temp_table_depth        temp5[check_n1]=temp_table_formation        temp6[check_n1]=temp_table_rock        temp7[check_n1]=temp_table_begintime        temp8[check_n1]=temp_table_finishtime        temp9[check_n1]=temp_table_losstime        temp10[check_n1]=temp_table_bha        temp11[check_n1]=temp_table_complex        temp12[check_n1]=temp_table_doing        temp13[check_n1]=temp_table_reason        temp14[check_n1]=temp_table_knowing