搞不懂CachedUpdates與TUpdateSQL的運用~>_<~ |
答題得分者是:peipei36
|
Ethan
版主 發表:101 回覆:170 積分:78 註冊:2006-07-05 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
peipei36
一般會員 發表:8 回覆:51 積分:16 註冊:2002-03-13 發送簡訊給我 |
看了說明..我也一直試不出來..
我的做法(資料庫master,detail兩table)是TQuery,TDataSource,TUpdateSQL各兩組..分別設給master,detail,(命名為: qryM,dsM,usqlM,qryD,dsD,usqlD),主要屬性設定它的..
1.CachedUpdates := true
2.DatabaseName由TDatabase管理
3.UpdateObject分別指到master,detail的TUpdateSQL
4.SQL,直接select * .. (dtail 的部份設定 where key =:key
且其DataSource 屬性設到dsM )
5.Query的Field全部自動產生、TUpdateSQL直接採用GenerateSQL產生
Insert,Delete,Modify的SQL字串 舉例我在「修改」(qryM.Edit;qryD.Edit;)後,存檔採交易如下..
db1.StartTransaction; try qryM.ApplyUpdates; qryD.ApplyUpdates; db1.Commit; except db1.Rollback; raise; end; qryM.CommitUpdates; qryD.CommitUpdates;結果僅master成功..detail不成功..(似乎qryD.ApplyUpdates無效果..) 我也試著讓qryD不直接與qryM連結(改為qryM.AfterScroll時再開啟qryD取資料) 結果執行到..qryD.ApplyUpdates; 資料表被被鎖住(需重新關閉/開啟伺服器)... 實在沒有頭緒...不知各位先進們,TUpdateSQL與關聯式Table如何搭配使用? 或者有什麼其他較好方式處理這樣的問題?! 我主要的目的在於希望透過 Query操作關聯式資料表,且希望在它的OnUpdateRecord事件處理其他需變更的資料表... 謝謝大家!! |
Wesly
中階會員 發表:14 回覆:103 積分:53 註冊:2002-05-31 發送簡訊給我 |
首先我們先區分CachedUpdates與TUpdateSQL的差異
CachedUpdates的主要目的如下
1.把異動交易異動的次數減到最少。
2.把網路傳輸量減到最少。 TUpdateSQL
1.可依使用者去更新部份的欄位。
2.或可依使用者去更新指定Table的欄位。
所以在TUpdateSQL,若不是關連多表格或是只想異動部份的欄位,其實沒有必要使用它。
尤其是Paradox的資料,我記得BDE 5.11版有支援更新多表格的功能,若是MS SQL也可使用Ado,所以實在話,現在我幾乎很少用它。
使用使用關連多表格雖然有速度快的優點,但在新增尚未存到後端時,關聯欄位並不會顯示,不如用LookupField來的即時,但在LookupField的資料筆數過多時又有較慢的困擾,這就要依個人的取捨了。
在主從檔時,大部份都是獨立各表格去維護,實在話實在沒有必要去用TUpdateSQL,但要維持主從檔的資料一致性倒是要用CachedUpdates。
至於TUpdateSQL的使用範例可以去參考
陳燦煌/陳周造的Delphi 5.0徹底研究 或 Delphi 4.0徹底研究,有範例可以參考。
|
peipei36
一般會員 發表:8 回覆:51 積分:16 註冊:2002-03-13 發送簡訊給我 |
引言: ...在主從檔時,大部份都是獨立各表格去維護,實在話實在沒有必要去用TUpdateSQL,但要維持主從檔的資料一致性倒是要用CachedUpdates。 至於TUpdateSQL的使用範例可以去參考 陳燦煌/陳周造的Delphi 5.0徹底研究 或 Delphi 4.0徹底研究,有範例可以參考。感謝Wesly兄.. 不知您說的「主從檔 / 獨立各表格去維護」指的是否是「未設關聯的master/detail」或針對非關聯式資料檔... 因我一直有一個問題困擾..倒不在於寫入一致性的問題.. 而是各資料表相同欄位一致性的問題.. 舉例來說..我有一個基本資料的table欄位..可能同時會用於其他6-7個table.. 資料庫我用sql server或access等關聯式的.. 我很希望可以直接設更新關聯..因為這樣我在刪除那筆基本資料時, dbms會自動為我檢查它是否允許刪除...不然程式一一檢查覺得好麻煩.. 不知我是否想偏了?! 還是您或大家可以給我建議.. 謝謝!! ps.另外..謝謝提供TUpdateSQL的使用範例資訊..我去找找.. 他的範例似乎與Help提的差不多..是對select兩table處理的部份.. 蠻詳細的..可惜不是我要的...謝! ☆另外...我剛在access設關聯測沒問題..是不是sql server(與一般dbms)鎖定比較嚴格...實不知從何著手.. 發表人 - peipei36 於 2002/10/02 10:43:07 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |