TADOQuery更新資料錯誤? |
尚未結案
|
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
請教各位前輩 使用TADOQuery 更新Access資料庫,SQL字串如下: UPDATE PurchaseMaster SET PurchaseMaster.Paid = (SELECT Sum(AccountPayableDetail.Balance) AS Balance之總計 FROM AccountPayableDetail GROUP BY AccountPayableDetail.PurchaseID, AccountPayableDetail.PurchaseType HAVING (((AccountPayableDetail.PurchaseID)=[PurchaseMaster].[PurchaseID]) AND ((AccountPayableDetail.PurchaseType)=[PurchaseMaster].[PurchaseType])) ); 會出現錯誤:[運算式必須使用更新查詢]的訊息,請問那錯了嗎?? 非常非常的謝謝你,因為有你這世界變的更美好 ☆ ^_^ ☆
°∴°﹒☆°.﹒‧°∴°﹒°.﹒‧°∴°﹒
﹒‧°∴°﹒☆°.﹒‧°∴°﹒°.﹒‧°∴°﹒﹒‧°∴°﹒☆°.
|
pgdennis
資深會員 發表:41 回覆:526 積分:443 註冊:2002-05-23 發送簡訊給我 |
引言: 請教各位前輩 使用TADOQuery 更新Access資料庫,SQL字串如下: UPDATE PurchaseMaster SET PurchaseMaster.Paid = (SELECT Sum(AccountPayableDetail.Balance) AS Balance之總計 FROM AccountPayableDetail GROUP BY AccountPayableDetail.PurchaseID, AccountPayableDetail.PurchaseType HAVING (((AccountPayableDetail.PurchaseID)=[PurchaseMaster].[PurchaseID]) AND ((AccountPayableDetail.PurchaseType)=[PurchaseMaster].[PurchaseType])) ); 會出現錯誤:[運算式必須使用更新查詢]的訊息,請問那錯了嗎?? 非常非常的謝謝你,因為有你這世界變的更美好 ☆ ^_^ ☆ °∴°﹒☆°.﹒‧°∴°﹒°.﹒‧°∴°﹒ ﹒‧°∴°﹒☆°.﹒‧°∴°﹒°.﹒‧°∴°﹒﹒‧°∴°﹒☆°.group by後面出現的欄位,也要出現在update set 後面... 永遠追不上技術更新的速度
------
星期一,二...無窮迴圈@@ |
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
引言: group by後面出現的欄位,也要出現在update set 後面... 永遠追不上技術更新的速度謝謝pgdennis的回覆,但小弟功力太差還是試不出,請前輩再教導一下 我又有修改為如下,但還是不行?? UPDATE PurchaseMaster SET PurchaseMaster.Paid = (SELECT Sum([Balance]) AS BalanceSum FROM AccountPayableDetail WHERE (((AccountPayableDetail.PurchaseID)=[PurchaseMaster].[PurchaseID]) AND ((AccountPayableDetail.PurchaseType)=[PurchaseMaster].[PurchaseType])); ); |
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
|
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
|
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
引言: 您好! 小弟好像記得在Update...Set語法中, 有用到的資料表名稱都應該出現在Update之后, 如下: UPDATE PurchaseMaster, AccountPayableDetail SET PurchaseMaster.Paid = ...... 參考看看! ===================== 努力,相信會獲得美麗! 忻晟謝謝前輩回覆,小弟修改為如下,還是一樣的錯誤?? UPDATE PurchaseMaster,AccountPayableDetail SET PurchaseMaster.Paid = (SELECT Sum([Balance]) AS BalanceSum FROM AccountPayableDetail ); < >< > |
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好! UPDATE PurchaseMaster A, AccountPayableDetail B Set A.Paid = (SELECT Sum(B.Balance) AS Balance之總計 From B GROUP BY B.PurchaseID, B.PurchaseType Having (B.PurchaseID=A.PurchaseID And B.PurchaseType=A.PurchaseType)) 參考看看! =====================
努力,相信會獲得美麗!
忻晟
------
忻晟 |
wuabc
初階會員 發表:6 回覆:60 積分:33 註冊:2002-10-28 發送簡訊給我 |
試試這個
UPDATE PurchaseMaster SET PurchaseMaster.Paid = BalanceSum FROM (SELECT PurchaseID,PurchaseType,Sum(Balance) AS BalanceSum FROM AccountPayableDetail GROUP BY PurchaseID,PurchaseType) a WHERE PurchaseMaster.PurchaseID = a.PurchaseID AND PurchaseMaster.PurchaseType = a.PurchaseType |
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好! 請用您上述在SQL Server2000中可以正常執行的SQL語法在Access資料庫中再試一下, 如果同樣的語法在Access中無法執行的話, 那應該就是Access資料庫沒有支援這種語法了. (請將原句中的'[]'符號去除); 從您第一篇所貼的語法上來看, Group By語句中用了兩個欄位名, 小弟不知道您要做到的目的為何, 但單單從語法上來看, 使用兩個欄位名做Group By并不是個好的方法, 甚至會影響查詢的效率, 所以是否將您的欄位名解釋和目的貼出來, 再看一下是否有更好的解決方法. 參考看看! =====================
努力,相信會獲得美麗!
忻晟
------
忻晟 |
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好! 小弟剛才試了一下, Access資料庫不支援Update...Set...=(Select Sum(欄位名)...的SQL語法. 所以根据您的需要, 可以考慮先使用Select Sum(欄位名) As 新欄位名 Into 暫存資料表名 From 資料表名來做一個暫存資料表, 再用以上的Update語法配合這個暫存檔來做更新, 完成后再用Drop Table 暫存資料表名將此暫存資料表刪除. 參考看看! =====================
努力,相信會獲得美麗!
忻晟
------
忻晟 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |