MS Access 2013 SQL 类型不匹配错误

MS Access 2013 SQL Type mismatch error

我有一个名为 test 的 table,其中有一列类型为数字(长整型),名称为 CHANGEME。此列的值范围从空值到大整数。我正在尝试 select 所有空值并将它们更新为 0。我在 VBA 代码中这样做。

SQL = "UPDATE test SET test.CHANGEME = 0 WHERE test.CHANGEME Is Null"
DoCmd.RunCommand SQL

这会产生类型不匹配错误。

但是,如果我在用户界面中创建查询并复制并粘贴 SQL 语句并添加一个 ;最后并删除 "'s 它完美地工作。

有什么想法吗?

我不确定你是这样使用的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 作为一种方法非常有用,因为它不会在您每次 运行 时提示您确认您的操作。

希望对您有所帮助。