DJ_XMXX中有兩條測驗資料 XM_DM XM_MC ZL_DM
001 1 01
002 2 02
有這樣一個專案,自動獲取后臺(DJ_XMXX)的專案,在根據ZL_DM自動執行程式。我用游標控制:
STRING ZL_DM
DECLARE PB_CUR CURSOR FOR
select ZL_DM from DJ_XMXX
USING dxptlj;
OPEN PB_CUR;
Do While dxptlj.sqlcode = 0
Fetch PB_CUR into :ZL_DM;
if dxptlj.sqlcode = 0 then
IF ZL_DM='01' THEN
ZDYX=1
st_3.text=string(2)+':'+STRING(TODAY())+' '+STRING(NOW())
OPEN(W_YHYECX)
END IF
IF ZL_DM='02' THEN
messagebox('','')
st_4.text=string(3)+':'+STRING(TODAY())+' '+STRING(NOW())
ZDYX=1
OPEN(W_TYCX)
END IF
elseif dxptlj.sqlcode < 0 then
return -1
else
exit
end if
Loop
CLOSE PB_CUR;
ST_2.TEXT=string(4)+':'+STRING(TODAY())+' '+STRING(NOW())
可能由于自動執行W_YHYECX這個視窗中的程式所用的時間比較久,導致
IF ZL_DM='02' THEN
messagebox('','')
st_4.text=string(3)+':'+STRING(TODAY())+' '+STRING(NOW())
ZDYX=1
OPEN(W_TYCX)
END IF
這段總是沒有執行,不知道要怎么處理(DJ_XMXX中的專案需要添加,所以不能做成定死的,只能是回圈獲取然后執行)
請大俠們指教!!
uj5u.com熱心網友回復:
有大俠嗎??uj5u.com熱心網友回復:
W_YHYECX、W_TYCX視窗是干嘛的?最好不要在游標里打開視窗操作uj5u.com熱心網友回復:
那有什么其他的辦法呢???
W_YHYECX,W_TYCX里面有檢索和插入資料庫的陳述句。
uj5u.com熱心網友回復:
你這一段不就是把兩個視窗都打開了嗎,那還要用游標干嘛呢。如果不是需要互動操作的,直接寫SQL,或者用datawindow,datastore操作,不需要開視窗
uj5u.com熱心網友回復:
我把原程式給你,你看看,有沒有其他辦法!!
uj5u.com熱心網友回復:
用資料視窗執行回圈能實作,但是就是不知道pb是不是單執行緒的還是多執行緒的。就是說是W_YHYECX的先執行好,再執行W_TYCX的。還是說兩個同時執行的
因為for next執行很快的,但是W_YHYECX,W_TYCX執行的時間比較多!!
uj5u.com熱心網友回復:
這樣的設計思想有問題,換個思路!uj5u.com熱心網友回復:
W_YHYECX視窗關閉之后,代碼難道執行不到IF ZL_DM='02' THEN
messagebox('','')
st_4.text=string(3)+':'+STRING(TODAY())+' '+STRING(NOW())
ZDYX=1
OPEN(W_TYCX)
END IF
uj5u.com熱心網友回復:
怎么樣的設計思路呢,正因為想不出來了,所以在請教啊!!
uj5u.com熱心網友回復:
1.不確定這兩個視窗W_YHYECX,W_TYCX是什么型別的.你的業務邏輯上的話,是當zl_dm 為01或02時,它的處理方式不一樣嗎?2.根據你的思路,估計由于你在這兩個視窗W_YHYECX,W_TYCX中會用到 dxptlj ,當然,也就有可能改變其 sqlcode, 這么著的話,就有可能在第二次取 02 前的 Do While dxptlj.sqlcode = 0 代碼出問題.
3.建議改游標為datastore 或 把游標資料存入一陣列,如zl_dm[] 后再處理.
4.由于剛睡了午覺,頭有點暈,上面云云,不知道是不是你要的.
uj5u.com熱心網友回復:
另外,在游標或存盤程序沒有關閉的情況又執行嵌入式SQL陳述句或什么的,有可能會出問題的.前兩天有個朋友不也在此提了相關的問題嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/96441.html
標籤:腳本語言
上一篇:各位高手,請教!
