簡體   English   中英

SQL Access VBA UPDATE 表與另一個表? 參數太少

[英]SQL Access VBA UPDATE table with another table? Too Few Parameters

我希望根據字段條件用另一個表更新我的一個表。 我想知道這樣做的正確方法是什么。 我嘗試對 2 個表執行 UPDATE 語句,但每次出現此錯誤時:參數太少,預期為 2

我的目標:如果 SOURCING 字段 = O,我希望郵政編碼為原產地郵政編碼 如果 SOURCING 字段 = D,我希望郵政編碼為目的地郵政編碼

所以到目前為止,我只是在做一個有條件的 LEFT JOIN 。 這是最好的方法嗎? 或者我應該以某種方式使用原始 INSERT 語句完成此操作?

CurrentDb.Execute "UPDATE Processing" & _
" LEFT JOIN tblImport" & _
" ON Processing.[BATCH_NO] = tblImport.[BATCH_NO]" & _
" SET Processing.[Zip Code] = tblImport.[Origin Postal Code]" & _
" WHERE tblImport.[Sourcing] = O;"

CurrentDb.Execute "UPDATE Processing" & _
" LEFT JOIN tblImport" & _
" ON Processing.[BATCH_NO] = tblImport.[BATCH_NO]" & _
" SET Processing.[Zip Code] = tblImport.[Dest Postal Code]" & _
" WHERE tblImport.[Sourcing] = D;"

我曾嘗試更改 WHERE 語句,因為我不確定它是否應該用引號、單引號、不在引號等……但我在那里出現了空白。 其他一切在我看來都是正確的。

這就是我所做的,你可能會發現這很有幫助; 設置一個等於您的 SQL 字符串的變量,然后 CurrentDB.Execute 變量。 為什么這有幫助? 因為你可以在設置完變量之后把代碼打斷,然后把SQL復制到一個新的查詢中,看看它在抱怨什么。 :o)

Dim tmpUpdate as string

tmpUpdate = "UPDATE Processing" & _
" LEFT JOIN tblImport" & _
" ON Processing.[BATCH_NO] = tblImport.[BATCH_NO]" & _
" SET Processing.[Zip Code] = tblImport.[Origin Postal Code]" & _
" WHERE tblImport.[Sourcing] = O;"

CurrentDB.Execute tmpUpdate

在“tmpUpdate =”行上設置斷點,然后運行代碼。 當它遇到斷點時,按 F8 跳到下一行。 在立即窗口中,鍵入“?tmpUpdate”(不帶引號)並查看它認為變量等於什么。 然后,轉到數據庫,創建一個新查詢並轉到查詢的 SQL。 從“立即”窗口復制並粘貼 SQL,然后嘗試運行查詢。 如果它嘔吐,請轉到“設計”視圖,看看是否可以看到任何看起來不正確的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM