全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1547
推到 Plurk!
推到 Facebook!

SQL 重覆Select大量資料的問題

缺席
taihao
一般會員


發表:1
回覆:13
積分:2
註冊:2005-11-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-11-02 01:47:27 IP:61.221.xxx.xxx 未訂閱
我使用Query1 查尋SQL2000 的Table, Query1.SQL.text=Select * from a114base Where cust_no like '042%' 有4萬筆符合(Query.RecordCount=40000) Query1不關閉狀態下,再開啟Query2,等候時間超久.約5分鐘. Query2.SQL.text:='Select * from a114base Where cust_no='0421234567' 當我先將Query1 close ,再 open Query2 則OK. 使用 SQLmonitor 查看,delay時間為傳輸Query1的Result.WHY? Query2 加上UpdateSQL機制也一樣無法改善. 還請先進指點.謝謝 題示: 1.Delphi 5.0 2.Use BDE 5.12 3.a114base約有140萬筆Record
christie
資深會員


發表:30
回覆:299
積分:475
註冊:2005-03-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-11-02 23:52:37 IP:218.171.xxx.xxx 未訂閱
Hi taihao,      請問您 Query1不要close的用意?    
------
What do we live for if not to make life less difficult for each other?
taihao
一般會員


發表:1
回覆:13
積分:2
註冊:2005-11-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-11-03 00:59:39 IP:61.221.xxx.xxx 未訂閱
引言: Hi taihao, 請問您 Query1不要close的用意? < face="Verdana, Arial, Helvetica"> 當Query1 Select 出客戶清單時, 移動DBGrid內容到焦點客戶時, 按Function KEY 開啟(ShowModal)另一視窗,顯示客戶詳細資料或修改之. ESC 關閉 POPUP 視窗,Focus回到原DBGrid. 必要時,可開起該客戶歷史購買記錄.....等用途. 感謝你的回應.
christie
資深會員


發表:30
回覆:299
積分:475
註冊:2005-03-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-11-04 14:11:25 IP:61.59.xxx.xxx 未訂閱
Hi taihao,
   您的 Query 如果
   Query1.RequestLive:=True;
/*
|| 可以用DataSet(Query1) ShowModal顯示客戶詳細資料
*/
   參考看看:
   Query1.Edit;
   Query1.Fields[2].AsString:='test';//即可修改之.
   Query1.Post;
   無須另外一個Query. 
------
What do we live for if not to make life less difficult for each other?
taihao
一般會員


發表:1
回覆:13
積分:2
註冊:2005-11-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-11-04 15:35:27 IP:211.21.xxx.xxx 未訂閱
引言:
Hi taihao,
   您的 Query 如果
   Query1.RequestLive:=True;
/*
|| 可以用DataSet(Query1) ShowModal顯示客戶詳細資料
*/
   參考看看:
   Query1.Edit;
   Query1.Fields[2].AsString:='test';//即可修改之.
   Query1.Post;
   無須另外一個Query. 
< face="Verdana, Arial, Helvetica"> 感謝你的再次回應 開版文中已提到應用UpdateSQL,所以 Request:=True 已試過. 利用 DataSource.DataSet 去指定始祖表單的 DataSet 對於編修同一個DataSet可以如此解決. 但 如果必須 Select 其它 Table 就完蛋了 我開本版主要問題在於: 如果開啟大量Result的dataset後,在同一Session, 不關閉原dataset狀態下,再去Select其它Table. 則系統會將原dataset的Result全部回傳後,才會執行 我們要的Select程序. 看官可以去Select一個約有4萬Result的Query1. 不要關閉Query1,然後再Select另一個很小Result的Query2, 此問題就會發生(等到 USER以為當機). 使用 SQLmonitor 監看,可以發現一直在回傳Query1的Result.
Arlung Miao
初階會員


發表:9
回覆:44
積分:25
註冊:2004-08-25

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-11-05 13:46:36 IP:218.18.xxx.xxx 未訂閱
我記得之前我發過類似的貼子。但是好像被刪除了。    我的處理方式是重寫Open方法:    
TMyAdoQuery = class(TAdoQuery)
...    procedure TMyAdoQuery.Open(cSql: string);
begin
  RecordSet := Connection.Execute(cSql);
end;
系統時間:2024-06-26 23:58:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!