2013-01-12 137 views
2

用Delphi 7和ClientDataSet的提供商,AdoQuery框架之前如何關閉/取消ClientDataSet的,反正是有檢索所有記錄之前取消查詢。我希望用戶有取消查詢的選項,如果它需要太多的時間,並更改參數,然後再試一次....檢索所有記錄

+0

它看起來像這個問題以前有人問(也許不是在這裏),如果我谷歌「德爾福(中斷或取消)查詢」。也許這有助於 –

+0

我花了幾個小時來搜索它。這是問了很多次,但我無法找到工作的答案...我只是想知道是否有任何方法或東西,我可以打電話取消查詢... – ssnkh

+0

也許解僱你的查詢關在單獨的線程?然後,用戶中止將忽略線程結果。您的查詢必須能夠併發運行(不應該成爲大多數數據庫的問題),並且數據庫性能會受到影響,因爲在執行修改的查詢時,被放棄的查詢仍在運行。 –

回答

0

你應該首先決定什麼是「太長」爲您服務。例如,假設它是120秒。設置TADOQuery.CommandTimeout(或者你用什麼),以120。現在,如果執行命令(可能你的情況選擇)將花費超過120秒,那麼你得到具體的異常,你可以做你想做的(顯示信息給用戶,更改查詢的參數,...)。 如果連接到服務器可能需要很長時間,則可以對TADOConnection.ConnectionTimeout屬性進行相同操作。