如何將HOLD住的程式停止執行 |
尚未結案
|
sangya
一般會員 發表:21 回覆:46 積分:13 註冊:2002-04-15 發送簡訊給我 |
|
ko
資深會員 發表:28 回覆:785 積分:444 註冊:2002-08-14 發送簡訊給我 |
sangya 你好:
一般來說 要執行預存程序的方式有2 種
1.Query1.ExecSQL;
2.Query1.OPEN;
第一種程式只需去觸發,不管結果如何怎樣
第二種是會取得回傳值
但是前提是不論如何在執行預存程序的時候,預存程序無法由外部取得終止
只能對程式取回焦點,就是說中斷資料庫連線
所以我只能給你取回焦點的code Application.ProcessMessages; 若有不足,還請其他大大指教
------
====================== 昏睡~ 不昏睡~ 不由昏睡~ |
change.jian
版主 發表:29 回覆:620 積分:439 註冊:2003-06-02 發送簡訊給我 |
我想到兩個解法: 1.如果store procedure的執行是會因為輸入的參數不同,而有不同的執行時間的話,建議你在Delphi端以一個迴圈來處理,讓store procedure每次執行的時間不會太長.例如,本來的程式是要處理一個月份資料,store procedure一次執行就處理該月的資料;把store procedure 改成一次執行僅處理一天的資料,然後在Delphi端以一個迴圈來處理,變成呼叫store procedure30次.每次呼叫完畢後都呼叫Application.ProcessMessages,以判斷form上的停止按鈕是否被按下(這表示你的form上要有個"停止"的button,當button被按下時,會有個全域變數被設定,然後在Application.ProcessMessages之後去判斷該全域變數是否被設定) 2.把呼叫store procedure的動作直接獨立成一個thread來執行.程式一但建立該thread執行後,就進入一個迴圈.迴圈僅檢查兩個部份:1是該thread是否執行完畢,2是呼叫Application.ProcessMessages之後檢查"停止"的功能按鈕是否被按下.這兩個條件有任何一個成立就跳出迴圈.
|
sangya
一般會員 發表:21 回覆:46 積分:13 註冊:2002-04-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |