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

搞不懂CachedUpdates與TUpdateSQL的運用~>_<~

答題得分者是:peipei36
Ethan
版主


發表:101
回覆:170
積分:78
註冊:2006-07-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-09-20 17:15:31 IP:61.218.xxx.xxx 未訂閱
奇怪!!都找不到教學文件 CachedUpdates與TUpdateSQL的運用~>_<~ 求助前輩指導教學,感恩~~
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-09-21 22:56:33 IP:210.85.xxx.xxx 未訂閱
引言: 奇怪!!都找不到教學文件 CachedUpdates與TUpdateSQL的運用~>_<~ 求助前輩指導教學,感恩~~
我的最簡單的經驗說法是 CacheUpdates 是如果不設定True, 將無法修改Client的data, 也就是當使用Query時, 資料下載到Client時是否能Edit UpdateSQL. 將資料送回主機, 也就是將資料實際存回檔案 以上純屬個人意見, 如果有誤請指教! 發表人 - P.D. 於 2002/09/21 22:57:14
peipei36
一般會員


發表:8
回覆:51
積分:16
註冊:2002-03-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-09-30 17:49:42 IP:61.59.xxx.xxx 未訂閱
看了說明..我也一直試不出來.. 我的做法(資料庫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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-10-01 19:41:44 IP:211.22.xxx.xxx 未訂閱
首先我們先區分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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-10-02 00:23:11 IP:61.59.xxx.xxx 未訂閱
引言: ...在主從檔時,大部份都是獨立各表格去維護,實在話實在沒有必要去用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
系統時間:2024-05-07 19:43:47
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!