SQL Access VBA UPDATE表与另一个表?参数太少

时间:2013-05-28 16:24:31

标签: sql vba access-vba

我希望根据字段条件使用另一个表更新我的一个表。我想知道这样做的正确方法是什么。我尝试用2个表做UPDATE语句,但每次出现此错误时:参数太少,预期2

我的目标: 如果SOURCING字段= O,我希望邮政编码是原始邮政编码 如果SOURCING字段= D,我希望邮政编码为Dest Postal Code

就目前而言,我只是在做一个有条件的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语句,因为我不确定它是否应该是引号,单引号,而不是引号等等......但我在那里空了。其他一切对我来说都是正确的。

1 个答案:

答案 0 :(得分:1)

这是我的工作,你可能会觉得这很有帮助;设置一个等于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并尝试运行查询。如果它呕吐,请转到设计视图,看看是否可以看到任何看起来不正确的东西。