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

請問如何做到有效率的資料異動處理?

答題得分者是:mustapha.wang
s9054469
一般會員


發表:21
回覆:35
積分:11
註冊:2003-04-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-15 15:40:20 IP:210.243.xxx.xxx 未訂閱
因為我有些資料在展示時.. 需要經過一些處理後才能秀出, 所以我都在DataSource1的DataChange事件處理 例如 ==================== procedure Tset_TForm1.DataSource1DataChange(Sender: TObject; Field: TField); begin if not (SimpleDataSet1.state in [dsInsert,dsEdit]) then edit1.text := SimpleDataSet1.FieldValues['name']; end; ==================== 因為DataSource1的DataChange事件是只要SimpleDataSet1有任何異動, 包括上下移動及Insert,edit..等動作時,都會啟動這事件, 所以未避免insert時會出錯才加上判斷state的狀態, 雖然這樣能達到我的需求,但這樣效能總是很差, 所以想請教各位先進,你們遇到類似的情況時, 都是如何處理的呢?謝謝各位!!
------
corn
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-16 08:43:06 IP:210.202.xxx.xxx 未訂閱
引言: 因為我有些資料在展示時.. 需要經過一些處理後才能秀出, 所以我都在DataSource1的DataChange事件處理 例如 ==================== procedure Tset_TForm1.DataSource1DataChange(Sender: TObject; Field: TField); begin if not (SimpleDataSet1.state in [dsInsert,dsEdit]) then edit1.text := SimpleDataSet1.FieldValues['name']; end; ==================== 因為DataSource1的DataChange事件是只要SimpleDataSet1有任何異動, 包括上下移動及Insert,edit..等動作時,都會啟動這事件, 所以未避免insert時會出錯才加上判斷state的狀態, 雖然這樣能達到我的需求,但這樣效能總是很差, 所以想請教各位先進,你們遇到類似的情況時, 都是如何處理的呢?謝謝各位!!
為何不直接使用dbedit? ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
s9054469
一般會員


發表:21
回覆:35
積分:11
註冊:2003-04-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-16 09:29:31 IP:210.243.xxx.xxx 未訂閱
因為有時會需要在資料集指標做移動時 做一些其它的處理,像是當我使用 CheckListBox時,因為我是將其勾選的值 組合成一個欄位,所以在資料讀出時, 需要將此欄位裡有對應到CheckListBox選項中的打勾, =================================== procedure Tform1.SimpleDataSet1DataChange(Sender: TObject; Field: TField); Var i:Integer; begin if SimpleDataSet1.State <> dsInsert then begin if not SimpleDataSet1.Eof then begin get_vc_concern(Simple_tb_admission.FieldValues['vc_certificate'] ); for i:=0 to CheckListBox_vc_concern.Count-1 do if Pos(CheckListBox_vc_concern.Items.Strings[i],SimpleDataSet1.FieldValues['vc_certificate'])>0 then CheckListBox_vc_concern.Checked[i] := true else CheckListBox_vc_concern.Checked[i] := false; end; end; end; =================================== 所以當遇到類似像這樣的情形時,除了在DataChange事件處理外, 是不是還有其它更好的事件來處理這種需求嗎?謝謝!! 發表人 - s9054469 於 2003/07/16 09:31:20 發表人 - s9054469 於 2003/07/16 09:32:26
------
corn
mustapha.wang
資深會員


發表:89
回覆:409
積分:274
註冊:2002-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-07-16 09:46:58 IP:218.1.xxx.xxx 未訂閱
TDataSet.onAfterScroll     久病成良医--多试 千人之诺诺,不如一士之谔谔--兼听
------
江上何人初见月,江月何年初照人
s9054469
一般會員


發表:21
回覆:35
積分:11
註冊:2003-04-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-07-16 11:18:05 IP:210.243.xxx.xxx 未訂閱
mustapha.wang兄,感謝你的回答, 放在TDataSet.onAfterScroll事件中, 的確是比放在DataChange事件好多了, 不過還是要加上判斷式, 避免state是Insert狀態還去讀資料, 感謝你的回答,謝謝你!!
------
corn
系統時間:2024-06-29 15:55:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!