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

在3-Tier,更新Detail時,為何ClientDataSet指定的FileName檔不會更新?

答題得分者是:Chance36
tangkh
一般會員


發表:26
回覆:28
積分:10
註冊:2002-09-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-13 08:41:28 IP:202.39.xxx.xxx 未訂閱
請問在3-Tier及Master-Detail架構下,當更新Detail時,為何ClientDataSet指定的FileName檔案(.cds或.xml)不會更新? User如果只更新Detail時,可以看到Master及Detail的ClientDataSet都有更新的Delta,此時如果不執行ClientDataSet.ApplyUpdate而離開程式,為何ClientDataSet指定的FileName不會更新? 此動作好像只有在Master資料異動時,才能正常工作,是否須指定其他參數,Detail在異動時才會做紀錄,敬請指教!感謝! 發表人 - tangkh 於 2004/02/13 08:44:30
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-13 13:49:24 IP:211.20.xxx.xxx 未訂閱
只有ClientDataSet.Active 變更時才會自動存取(請參考Delphi Help) ClientDataset.open時自動讀出來 ClientDataset.Close時自動存檔 否則你須自行用SaveToFile或LoadFromFile來存取 ps:在3-Tier 架構下,設定FileName屬性 當ClientDataSet.Open時你會看到之前儲存的資料內容而不是從後端取出來的資料唷,請注意!是不是你需要的功能。
tangkh
一般會員


發表:26
回覆:28
積分:10
註冊:2002-09-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-13 14:48:31 IP:202.39.xxx.xxx 未訂閱
Chance36 兄:感謝您的指導! 您的意思我了解,因為在BriefCase的狀況下,User離線進入,資料會由(.cds或.xml)載入,User在僅修改Detail資料後作Post再離開,這時ClientDataset一定會做Close的動作,應該會寫入(.cds或.xml)檔案,但我測試結果卻沒有執行,只有在User在修改Master資料後才會寫入(.cds或.xml)檔案. 是否你們在此狀況下,不會產生相同的情形 < >< >
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-13 16:41:53 IP:211.20.xxx.xxx 未訂閱
Changes are not merged into the data when it is saved to the file. This allows an application that employs the “briefcase” model to set FileName without losing updates that are destined for an application server. However, single-tiered applications should explicitly merge changes before closing the dataset and saving the data to disk. [截錄自Delphi Help的片斷] 看樣子在BriefCase的狀況下,你必須在Close之前自行SaveToFile
tangkh
一般會員


發表:26
回覆:28
積分:10
註冊:2002-09-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-02-16 08:29:55 IP:202.39.xxx.xxx 未訂閱
Chance36 兄:您好! 在提問之前,我也曾研讀過這一段Help但與我目前的狀況不太相同,仍要感謝您的幫助. 目前我在briefcase模式下暫時使用下面的方式解決:當AP結束後,作一次CDS的Save動作,但一定要將CDS.FILENAME的名稱改為.cds才不會發生錯誤.
引言: Changes are not merged into the data when it is saved to the file. This allows an application that employs the “briefcase” model to set FileName without losing updates that are destined for an application server. However, single-tiered applications should explicitly merge changes before closing the dataset and saving the data to disk. [截錄自Delphi Help的片斷] 看樣子在BriefCase的狀況下,你必須在Close之前自行SaveToFile
發表人 - tangkh 於 2004/02/16 08:31:19
系統時間:2024-05-08 8:14:42
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!