我有一个名为test的表,其类型为number(Long Integer),名称为CHANGEME。此列的值范围从null到大整数。我正在尝试选择所有空值并将它们更新为0.我在VBA代码中执行此操作。
SQL = "UPDATE test SET test.CHANGEME = 0 WHERE test.CHANGEME Is Null"
DoCmd.RunCommand SQL
这会产生类型不匹配错误。
但是如果我在用户界面中创建一个查询并复制并粘贴SQL语句并添加一个;在最后,删除“它的工作完美。
有什么想法吗?
答案 0 :(得分:2)
我不确定您使用DoCmd.RunCommand
的方式;它可能需要一个常量,而不是一个字符串。
相反,我更喜欢使用类似的东西:
Dim strSQL as String
strSQL = "UPDATE test SET test.CHANGEME = 0 WHERE test.CHANGEME Is Null"
With CurrentDb
.Execute strSQL, dbFailOnError
Msgbox .RecordsAffected & " records were updated"
End With
dbFailOnError
很重要;如果省略它并且存在语法错误等,则不会收到警报。使用.Execute
作为一种方法适用于您的代码,因为它不会在您每次运行时提示您确认操作。
希望这有帮助。