1

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

我的目标:如果 SOURCING 字段 = O,我希望 Zip Code 是 Origin Postal Code 如果 SOURCING 字段 = D,我希望 Zip Code 是 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 语句,因为我不确定它是否应该在引号中,单引号中,而不是在引号中,等等......但我在那里空无一物。其他一切对我来说都是正确的。

4

1 回答 1

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 并尝试运行查询。如果它呕吐,请转到设计视图,看看您是否可以看到任何看起来不正确的东西。

于 2013-05-28T21:09:46.623 回答