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

複製被Filter過的ClientDateset的資料到另一個ClinetDataset

答題得分者是:Justmade
nekocat
一般會員


發表:8
回覆:7
積分:3
註冊:2002-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-19 21:11:54 IP:203.66.xxx.xxx 未訂閱
請問各位前輩: 利用ClinetDateset1.Data := ClientDataset2.Data; 可以將ClinetDataSet2的資料複製到ClientDataset1中。 但若利用ClientDataset.Filter屬性, 將ClientDataset2的資料由100筆過濾至10筆, 再利用ClinetDateset1.Data := ClientDataset2.Data; 卻發現被複製的ClinetDateset1資料仍為100筆。 想請問是否我有地方寫錯,或是觀念不正確? 要如何複製過濾過的資料呢!? 難道必須一筆筆複製嗎? 謝謝大家的幫忙與指點...
Justmade
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-19 22:25:07 IP:218.16.xxx.xxx 未訂閱
引言: 難道必須一筆筆複製嗎?
很不幸的,應該是這樣沒錯,因為 Filter 只設定那個記錄會跳過那個會正常處理,內裡的DataSet 是完全沒變的。 當然,若你的 Filter 可轉他成 SQL, 另一 CDS 也可直接到Application Server 提取,但想信你要用 Filter 應不能以SQL 提取罷?
nekocat
一般會員


發表:8
回覆:7
積分:3
註冊:2002-03-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-19 22:47:39 IP:61.56.xxx.xxx 未訂閱
謝謝Justmade兄! 因為不想用SQL抓太多重複的資料, 所以才想用Filter和資料的複製。 再者, 想再請問一下, 用ClientDataSet-DataSource-DBGrid時 (我用tdxDBGrid) 為什麼對ClientDataSet做Filter的濾選, 而DBGird資料沒被濾掉呢!? ps.就是因為Grid資料沒被濾掉,所以才想從ClientDataset下手.... 謝謝大家...
Justmade
版主


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-19 23:45:07 IP:218.16.xxx.xxx 未訂閱
我沒用 tdxDBGrid 但用普通 dbGrid 試 Filter 有作用丫 你可否先試試普通 dbGrid 有沒問題,先找出問題到底是 CDS 的還是 tdxDBGrid 的,這樣比較不會浪費時間去猜
danny
版主


發表:100
回覆:522
積分:595
註冊:2002-03-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-20 09:50:53 IP:211.76.xxx.xxx 未訂閱
引言: 請問各位前輩: 利用ClinetDateset1.Data := ClientDataset2.Data; 可以將ClinetDataSet2的資料複製到ClientDataset1中。 但若利用ClientDataset.Filter屬性, 將ClientDataset2的資料由100筆過濾至10筆, 再利用ClinetDateset1.Data := ClientDataset2.Data; 卻發現被複製的ClinetDateset1資料仍為100筆。 想請問是否我有地方寫錯,或是觀念不正確? 要如何複製過濾過的資料呢!? 難道必須一筆筆複製嗎? 謝謝大家的幫忙與指點...
您試試 ClinetDateset.CloneCursor 應該是您要的.
------
將問題盡快結案也是一種禮貌!
Justmade
版主


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-20 10:12:48 IP:218.16.xxx.xxx 未訂閱
如我理解沒錯,CloneCursor 一樣是將整個 Data 抄到新的 DataSet, 只 CloneCursor 可選擇一次過連 Filter / index / master detail / ...等資料一次過也轉移過新 CDS。所以新的 CDS 的情況應還是跟舊的一樣,若舊的與 Grid 連接有問題,新的也一樣。 不知我的理解有沒有錯,所以試試也是好的,也能學一學這個強大的功能。
bundur
一般會員


發表:16
回覆:44
積分:22
註冊:2002-11-30

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-05-31 02:20:59 IP:218.5.xxx.xxx 未訂閱
引言: 請問各位前輩: 利用ClinetDateset1.Data := ClientDataset2.Data; 可以將ClinetDataSet2的資料複製到ClientDataset1中。 但若利用ClientDataset.Filter屬性, 將ClientDataset2的資料由100筆過濾至10筆, 再利用ClinetDateset1.Data := ClientDataset2.Data; 卻發現被複製的ClinetDateset1資料仍為100筆。 想請問是否我有地方寫錯,或是觀念不正確? 要如何複製過濾過的資料呢!? 難道必須一筆筆複製嗎? 謝謝大家的幫忙與指點...
之前,我也研究过这个问题,但我是因为用户要从DBGRID中选几笔做处理。 我也试过很多方法,都做不到,不得已,只好一笔一笔地写到XML文件中去, 难后再用ClinetDateset1.LoadFromFile方法複製。 自己写入到XML文件中,在资料少于5000笔时还是很有效率的。 發表人 - bundur 於 2003/05/31 02:22:21
系統時間:2024-04-26 20:22:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!