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

資料表JOIN與POST

答題得分者是:TWY
lasterliu
一般會員


發表:38
回覆:57
積分:19
註冊:2007-11-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-09-09 14:35:42 IP:60.251.xxx.xxx 訂閱
請問各位大大一些問題:
當我使用多表JOIN時,若再DBGrid進行更改,請問應如何做才能讓其可以POST回DB中呢?
舉例說明:
select A.訂單單號,A.品名,A.品號,A.業務員編號,B.業務員姓名 from A JOIN B on A.業務員編號=B.業務員編號
其實可以修改的欄位只有A資料表,B資料表只是顯示資料讓輸入者參考(如:顯示員工中文名稱)
若是大大們,請問會如何做呢?

TWY
高階會員


發表:2
回覆:133
積分:152
註冊:2009-09-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-09-09 15:36:59 IP:211.21.xxx.xxx 訂閱
1. 使用 TTable or TQuery 僅 Select 出 A Table 資料,另新增 Lookup Field 帶出 B Table 資料
Table.Post; or TQuery.ApplyUpdates; 即可立即更新回 DB (ps: TQuery 必須設定 RequestLive=True UpdateCache=True,也須再配合 TUpdateSQL 元件)

2. 使用 SQL Join Table A and B,那就一定要用 TQuery 啦。我記得就算 SQL 是 Join 出來的,只要搭配 UpdateSQL 元件設定正確的話,
還是可以正確區分寫回 DB。

3. 欲寫回 DB ,自己用 SQL 去 Execute 吧。 (insert into or update A set...)

結論,大部分情形我會用 3. 自己用 SQL 去更新資料庫,因為掌握度較高(事實上透過Post等元件Method去做,只是換成BDE端幫你翻譯成SQL再與後端DB溝通罷了,但實務經驗資料量大時效能不好,且日期欄位有時候會有問題)。 若是簡單工具程式,就可用 1 or 2 的方法比較簡單。
以上提供參考。

編輯記錄
TWY 重新編輯於 2009-09-09 16:11:17, 註解 無‧
lasterliu
一般會員


發表:38
回覆:57
積分:19
註冊:2007-11-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-09-10 15:34:45 IP:60.251.xxx.xxx 訂閱
謝謝TWY大大。
1、小弟最後是採用第三個方法。
2、若用直接用SQL去執行,執行過程依然會碰到相同問題。所以小弟是先將SELECT出來的結果暫存至一個暫存資料表中,就不再有錯誤發生了。
系統時間:2024-11-26 9:42:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!