線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1393
推到 Plurk!
推到 Facebook!

這個FilterRecord的寫法還有加速的可能嗎?

尚未結案
Sanyuan
一般會員


發表:24
回覆:32
積分:11
註冊:2002-06-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-12 11:24:39 IP:211.75.xxx.xxx 未訂閱
小弟的需求是將select後的query,使用filterrecord的event比對存在 a,b兩個欄位中的字串是否有使用者keyin的字串,使用者每keyin一個字元就filter一次 所以在 query 中的 FilterRecord 裡寫了下面的程式 ---------------------------------------------------- procedure TFormB.HintQFilterRecord(DataSet: TDataSet; var Accept: Boolean); Var QStr:String; begin QStr:= UpperCase(Query.FieldByName('A').asString Query.FieldByName('B').asString); Accept:=Pos(UpperCase(Trim(Grid1.Cells[Grid1.Col,Grid1.Row])),QStr)>0 ; end; ------------------------------------------------------------- 這程式在P4的機器上跑沒問題,完全不會delay,但在PIII上跑. 每keyin一個字元,就要等一秒鐘,推測是資料量(大概一兩千筆)與CPU速度的問題 請問各位是否有更有效率的解決方式
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-12 12:16:05 IP:218.16.xxx.xxx 未訂閱
你可試用個 TTimer Interval 設 500 (半秒,或你喜歡的值) onTimer 時 SetFilter 在 Edit 的 onChange : Timer1.Enabled := false; Timer1.Enabled := true; 重新計時 這樣做若使用者 Key 一串字時中間不會浪費時間 filter 記錄,只有最後一宇元停半秒後才 filter 對只輸入一個字元或輸入很慢每一下超過半秒的人來說,這樣做會更慢(因多等半秒) 但對一般人輸入一串字來說這會加快速度 若半秒太多也可減少數字
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-12 21:07:24 IP:218.32.xxx.xxx 未訂閱
1. 拿來過濾的 DataSet 改用 ClientDataSet
   DataSet -> DataSetProvider -> ClientDataSet (但記憶體需求會變大).    2. 盡量減少不必要的 function 使用, 如 Trim.    3. 用 不分大小寫的字串比對 Function
   如 AnsiContainsText(const AText, ASubText: string): Boolean;
發表人 - Mickey 於 2003/06/12 21:17:30
Sanyuan
一般會員


發表:24
回覆:32
積分:11
註冊:2002-06-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-06-14 00:04:08 IP:61.56.xxx.xxx 未訂閱
Justmade版主定時query的方式之前真的完全每想過 真是不錯的idea,會實作看看. 對於Mickey版主 1. 拿來過濾的 DataSet 改用 ClientDataSet 的部分,小弟不太懂這有什麼差別耶 寫了快一年的delphi 還都沒用過clientdataset 跟query有啥不同,書上好像也都沒提到過 能否請mickey版主提示一下 謝謝
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-06-14 11:32:05 IP:218.32.xxx.xxx 未訂閱
引言: 寫了快一年的delphi 還都沒用過clientdataset 跟query有啥不同,書上好像也都沒提到過
書上好像也都沒提到過?不會吧..... ClientDataSet 大部分應用在 多層式資料系統, 大致上其具有特性 : 1.不需存取資料時, 與資料庫是處於離線狀態. 2.讓 Application 可輕易的'完全'控制. 3.存於記憶體. ... 如果書上都沒提, 運用本站搜尋, 應該會有所收穫.
系統時間:2024-06-26 13:43:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!