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

Tupdatesql 問題

尚未結案
vivi666666
初階會員


發表:83
回覆:94
積分:35
註冊:2003-03-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-05-26 10:09:42 IP:203.69.xxx.xxx 未訂閱
1:Tupdatesql properties的 deletesql,insertsql,moditysql是在什麼時候會執行 2:DBgrid的readonly已設false但還是不能key不曉為什麼?
yachanga
資深會員


發表:24
回覆:335
積分:296
註冊:2003-09-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-05-26 10:32:27 IP:210.68.xxx.xxx 未訂閱
Hi vivi666666您好:    1.簡單說在ApplyUpdate時候執行 (TQuery.CachedUpdates 必須為true)    可參考Delphi Help    TUpdateSQL.ModifySQL Specifies the SQL UPDATE statement to use  when applying an update to a record and cached updates is enabled.    TUpdateSQL.InsertSQL Specifies the SQL INSERT statement to use when applying a cached insertion of a record.    TUpdateSQL.DeleteSQL Specifies the SQL DELETE statement to use when applying a cached deletion of a record.    2.  原因很多, 請參考本站之前大大的討論 簡單說原因在SQL... 請確認SQL 盡量為單一Table, 沒有特殊的欄位型態.. 若用TUpdateSQL元件, 請確定ModifySQL 是正確的    建議把code po上來比較快解決問題    ~悠遊法國號~
vivi666666
初階會員


發表:83
回覆:94
積分:35
註冊:2003-03-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-05-29 11:45:28 IP:203.69.xxx.xxx 未訂閱
引言: Hi vivi666666您好: 1.簡單說在ApplyUpdate時候執行 (TQuery.CachedUpdates 必須為true) 可參考Delphi Help TUpdateSQL.ModifySQL Specifies the SQL UPDATE statement to use when applying an update to a record and cached updates is enabled. TUpdateSQL.InsertSQL Specifies the SQL INSERT statement to use when applying a cached insertion of a record. TUpdateSQL.DeleteSQL Specifies the SQL DELETE statement to use when applying a cached deletion of a record. 2. 原因很多, 請參考本站之前大大的討論 簡單說原因在SQL... 請確認SQL 盡量為單一Table, 沒有特殊的欄位型態.. 若用TUpdateSQL元件, 請確定ModifySQL 是正確的 建議把code po上來比較快解決問題 ~悠遊法國號~
1:為什麼不把UPDATE寫在程式中,而用TUpdateSQL, 什麼情況用TUpdateSQL元件來UPDATE資料?什麼時候在UPDATE寫在程式中? 2:TQUERY的REQUESTLIVE要設TRUE
seaturn99
版主


發表:69
回覆:427
積分:214
註冊:2003-08-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-05-29 13:46:50 IP:211.76.xxx.xxx 未訂閱
引言: 1:為什麼不把UPDATE寫在程式中,而用TUpdateSQL, 什麼情況用TUpdateSQL元件來UPDATE資料?什麼時候在UPDATE寫在程式中? 2:TQUERY的REQUESTLIVE要設TRUE
vivi666666 您好 : 請參考 : http://delphi.ktop.com.tw/topic.php?topic_id=37665 使用 TUpdateSQL 元件要先將 TQuery 的 RequestLive 設為 True 外, 還要將CachedUpdates 設為 True 1. 當您使用 TQuery 下了 SQL Command join 一堆 Table,又想要直接在資料感知元件內直接編輯資料後回存資料庫,就會用到 TUpdateSQL,當然您也可以對感知元件寫 Code 對於相對應的資料分別下 SQL 執行 Insert/Update/Delete 資料的動作... 而 TUpdateSQL 就是將這段工作萃取出來,讓您只需要在 InsertSQL/UpdateSQL/DeleteSQL 中填入您所需要動作的 SQL Command,在更動資料後自動處理相對應的動作 .. 2. 參考上述連結的文章,正確的設定參數後就可以修改資料了,詳細原因可以參考該篇文章 ---- 我只會兩件事,這也不會,那也不會 眼見不一定為真 ----
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-05-29 15:56:43 IP:61.62.xxx.xxx 未訂閱
Hi, All,    關於這篇文章: http://delphi.ktop.com.tw/topic.php?topic_id=37665 裡面提及到使用 RequestLive 和 CachedUpdates 的屬性使用方式是有問題的, 請注意, 此二者屬性是獨立的, 並非使用 CachedUpdates 時就得要將 RequestLive 設為 true. 基本上會使用到 CachedUpdates 的原因很單純, 就是因為 RequestLive 設為 true 時也無法達到修改資料表內容時會使用的方法, 通常 RequestLive 的功能為應用在單一資料表, 而且可以直接利用 select 出來的資料回傳異動給資料庫處理時, 可以使用 RequestLive 的方式來進行資料表的異動. 但在某些條件下, 如資料庫不支援回傳異動資料集, 或是你的 sql command 中含有 order by 或是含有複合資料表查詢時, 就無法使用 RequestLive 的方式來異動 dataset 了(也就是 BDE 認定為 readonly 的 dataset), 如此一來, 要進行修改就一定得使用 CachedUpdates 來進行了, 使用的方式很單純, 就是將 CachedUpdates 設為 true, 再加上一個 TUpdateSQL 元件(此元件的目的也就是把要異動的 sql command 寫入即可), 如此一來便可以自行處理異動的行為了. 除了解決上述所謂 readonly dataset 不能異動的原因外, 使用 cachedupdates 更還有一些好處, 以下節錄自 help, 1. Fewer transactions and shorter transaction times. 2. Minimization of network traffic. 但是仍有一些缺點, 1. Other applications can access and change the actual data on the server while users are editing local copies of the data, resulting in an update conflict when cached updates are applied to the database. 2. Other applications cannot access data changes made by an application until its cached updates are applied to the database. 但基本上是相當好用而方便的, 更重要的可以更直接地管理好本地異動及回寫至資料庫的批次作業行為, 至於要異動多少, 多久才要回寫資料庫, 時機的掌握及規劃, 就得看實際的應用了! 其實 delphi 的 help 中寫得相當詳細, 仔細閱讀, 相當有幫助!! 我想對於使用 BDE 習慣的人, 使用 CachedUpdates 應該是覺得相當方便而好用的!
seaturn99
版主


發表:69
回覆:427
積分:214
註冊:2003-08-25

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-05-30 04:47:08 IP:211.76.xxx.xxx 未訂閱
timhuang Sir :    感謝指正,抱歉貼了一篇不純熟的文章... 下次回答真是要謹慎些,不然誤導了原發問人,真是罪過罪過... ---- 我只會兩件事,這也不會,那也不會 眼見不一定為真 ----
yachanga
資深會員


發表:24
回覆:335
積分:296
註冊:2003-09-27

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-05-31 10:23:56 IP:210.68.xxx.xxx 未訂閱
引言: Hi, All, 關於這篇文章: http://delphi.ktop.com.tw/topic.php?topic_id=37665 裡面提及到使用 RequestLive 和 CachedUpdates 的屬性使用方式是有問題的, 請注意, 此二者屬性是獨立的, 並非使用 CachedUpdates 時就得要將 RequestLive 設為 true.
Hi timhuang大大: 之前對於RequestLive 和 CachedUpdates搭配使用仍然有些疑惑, 看到您此篇文章 真是茅塞頓開..豁然開朗啊~~ Hi vivi666666: 看了timhuang大大的文章, 您應該了解TupdateSql的使用方法了吧?? 您提到的問題: 1. 為什麼不把UPDATE寫在程式中,而用TUpdateSQL.. 我的想法是看您自己..為什麼呢?? 當初我不知道使用TUpdateSQL元件時, 我都是update寫在程式中, 很有彈性但是程式碼很長..後來知道這個元件後, 就很喜歡用, 程式碼不用寫,只要元件拉伊拉屬性設一下就能用..但是後來又發覺元件在使用上會有稍許限制,就如同timhuang大大所說一般... 所以要用程式碼寫或是用TUpdateSQL元件, 應該是考量您程式需求而定... 就好比您問說從台北到台中為什麼要坐飛機而不坐火車的問題,不知道這樣比喻是否失當... > <>~悠遊法國號~
系統時間:2024-07-04 8:17:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!