全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1815
推到 Plurk!
推到 Facebook!

ADOQuery 選取兩個Table , ApplyUpdates(-1)不成功 .

尚未結案
stillalive
初階會員


發表:7
回覆:148
積分:41
註冊:2004-04-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-21 22:09:20 IP:211.75.xxx.xxx 未訂閱
在下用ADOQuery->ProviderDataSet->ClientDataSet->DataSource->DBGrid 元件 , ADOQuery SQL 為 SELECT * FROM TABLEA,TABLEB WHERE FLDA=FLDB , 當下達ClientDataSet.ApplyUpdates(-1) 時 , 有Error Message "Invalid column name FLDB " , 請問該如何解決 , 謝謝 .
yachanga
資深會員


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-21 22:19:48 IP:61.230.xxx.xxx 未訂閱
Hi 這個訊息表示欄位名稱錯誤 請確認 FLDB 欄位確實存在 <>~悠遊法國號~
seaturn99
版主


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-21 22:21:14 IP:211.76.xxx.xxx 未訂閱
引言: 在下用ADOQuery->ProviderDataSet->ClientDataSet->DataSource->DBGrid 元件 , ADOQuery SQL 為 SELECT * FROM TABLEA,TABLEB WHERE FLDA=FLDB , 當下達ClientDataSet.ApplyUpdates(-1) 時 , 有Error Message "Invalid column name FLDB " , 請問該如何解決 , 謝謝 .
stillalive 您好 : 看起來您好像是要做 join 的樣子,改成下面的 SQL String SELECT * FROM TABLEA,TABLEB WHERE TABLEA.FLDA=TABLEB.FLDB [我用猜的,姑且一試] ---- 我只會兩件事,這也不會,那也不會 眼見不一定為真 ----
James
高階會員


發表:10
回覆:290
積分:220
註冊:2002-07-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-21 22:32:58 IP:218.170.xxx.xxx 未訂閱
基本上這是 ADO 的限制, 當你有需要 Join 到其他 Table 的時候 如果又需要 Update ,基本上有兩類的方式可以解決 1.配合 TClientDataset & TDadasetProvider & UpdateFlag 的屬性來做資料 異動 2.參考 Platform SDK 的作法, 但工程浩大 ,不如去網路上找一個 TBetterAdoDataset 元件來用
stillalive
初階會員


發表:7
回覆:148
積分:41
註冊:2004-04-07

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-21 22:45:39 IP:211.75.xxx.xxx 未訂閱
TO SOUTHWIND 試過你作法 , 還是無解 . TO JAMES 基本上這是 ADO 的限制, 當你有需要 Join 到其他 Table 的時候 如果又需要 Update ,基本上有兩類的方式可以解決 1.配合 TClientDataset & TDadasetProvider & UpdateFlag 的屬性來做資料 異動 2.參考 Platform SDK 的作法, 但工程浩大 ,不如去網路上找一個 TBetterAdoDataset 元件來用 =================================================================== 看起來好像很復雜 , 昏 .......
Chance36
版主


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-21 23:44:58 IP:203.204.xxx.xxx 未訂閱
stillalive 你好     請檢查DataSetProvider.ResolveToDataSet是不是設為True,因為Ado資料集可以處理關聯資料的更新,所以更新時交由DataSetProvider所連結的資料集即可。
stillalive
初階會員


發表:7
回覆:148
積分:41
註冊:2004-04-07

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-22 00:28:51 IP:211.75.xxx.xxx 未訂閱
Chance36 兄你好 請檢查DataSetProvider.ResolveToDataSet是不是設為True,因為Ado資料集可以處理關聯資料的更新,所以更新時交由DataSetProvider所連結的資料集即可。 ===================================================================== 在下試過 , Error Message 是沒有了 . 不過資料沒更改成功 .
Chance36
版主


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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-04-22 01:07:55 IP:203.204.xxx.xxx 未訂閱
引言: 在下試過 , Error Message 是沒有了 . 不過資料沒更改成功 .
stillalive 你好 忘了一件事AdoQuery.CursorLocation設為clUseServer,不然還要找時機呼叫ADoquery.UpdateBatch(好像是這個)
seaturn99
版主


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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-04-22 09:32:17 IP:203.66.xxx.xxx 未訂閱
引言: TO SOUTHWIND 試過你作法 , 還是無解 .
哈哈,就說我是用猜的.... 您可以參考看看 Chance36 Sir 的解法,我想應該是對的... ---- 我只會兩件事,這也不會,那也不會 眼見不一定為真 ----
James
高階會員


發表:10
回覆:290
積分:220
註冊:2002-07-25

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-04-22 10:27:19 IP:61.218.xxx.xxx 未訂閱
那兩個方法應該都很簡單啊... 用 ClientDataset 似乎已經是目前 用 Delphi 開發資料庫系統的常用方式 ,不論你是要用 BDE , ADO or DBExpress , 都蠻建議採用的 ;至於採用 TBetterADODataset , 就 只要把你的 ADODataset 元件換成那一個就好了 , 原始網站好像沒有 付錢被關閉了 ,但你仍然可以去 Torry.net http://www.torry.net/authorsmore.php?id=2999&SID=057ae35f59633ca387949455686cc29a 去下載
stillalive
初階會員


發表:7
回覆:148
積分:41
註冊:2004-04-07

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-04-23 00:51:02 IP:211.75.xxx.xxx 未訂閱
TO James 那兩個方法應該都很簡單啊... 用 ClientDataset 似乎已經是目前 用 Delphi 開發資料庫系統的常用方式 ,不論你是要用 BDE , ADO or DBExpress , 都蠻建議採用的 ;至於採用 TBetterADODataset , 就 只要把你的 ADODataset 元件換成那一個就好了 , 原始網站好像沒有 付錢被關閉了 ,但你仍然可以去 Torry.net http://www.torry.net/authorsmore.php?id=2999&SID=057ae35f59633ca387949455686cc29a 去下載 =============================================================== 我下載完後 , INSTALL 出問題 . 不知道是不是跟我 Delphi 7 衝突 ? (Download D6 version) Anyway , 感謝各位大大幫忙回答 .
系統時間:2024-05-19 15:56:36
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!