ClientDataset 經過 Filter 後,編輯的問題 |
答題得分者是:wscken
|
Charlies Chang
一般會員 發表:3 回覆:9 積分:7 註冊:2003-05-09 發送簡訊給我 |
描述:
有一個Dataset 經DatasetProvider 取至一個 ClientDataset1 再經 DatasetProvider 並濾掉部份資料 得到 ClientDataset2 在編輯時發生了一個問題: Dataset 本有資料 1,AAA,, 2,BBB,, 3,CCC,, 到ClientDataset1 時,還是3筆 1,AAA,, 2,BBB,, 3,CCC,, 到ClientDataset2 時,因過濾後只留1筆 3,CCC,, 編輯 CCC 後的空欄位為CC3 經ClientDataset2.Applyupdate後 ClientDataset1 以為應為 1,AAA,, 2,BBB,, 3,CCC,CC3, 但是得到的確是 1,AAA,CC3, 2,BBB,, 3,CCC,, CC3的值被對應到第一個record,而不是原來的 [3,ccc,,] 是不是要定義什麼 Key,以維持記錄間的對應? 或是不應這麼用? 謝謝各位熱心的先進 編輯記錄
Charlies Chang 重新編輯於 2008-11-24 02:18:49, 註解 無‧
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
wscken
初階會員 發表:28 回覆:75 積分:45 註冊:2003-08-05 發送簡訊給我 |
|
Charlies Chang
一般會員 發表:3 回覆:9 積分:7 註冊:2003-05-09 發送簡訊給我 |
謝謝各位
後來找到答案了,是因為 DatasetProvider中的updateMode設錯了, 我誤解了它的意思,將它設為updatewherechange, 後來在"Delphi/Kylix Database Development"一書找到一份淺白的說明, 節錄一下 ========================================================================= WhenUpdateMode=upWhereAll,the SQL statement would be " UPDATE EMPLOYEES SET SALARY TO 45000 WHERE (ID = 1) AND (NAME = ‘John Smith’) AND (BIRTHDAY = ‘5/1/1958’) AND (SALARY = 40000) " WhenUpdateMode=upWhereChanged,the SQL statement would be " UPDATE EMPLOYEES SET SALARY TO 45000 WHERE (ID = 1) AND (SALARY = 40000) " Finally, when UpdateMode=upWhereKeyOnly,the SQL statement would be " UPDATE EMPLOYEES SET SALARY TO 45000 WHERE ID = 1 " ========================================================================= wscken 說的 CloneCursor 的方法好像也是正解,但兩個cds就好像必須相同, 不能做到cds1 有10 個recoed , cds2經過Filter 只有兩個record,作業就針對這兩個record 編輯. 不過我會再試試看Clonecursor的方法,若有心得,再和大家分享. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |