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
作为一种方法非常有用,因为它不会在您每次 运行 时提示您确认您的操作。
希望对您有所帮助。
我有一个名为 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
作为一种方法非常有用,因为它不会在您每次 运行 时提示您确认您的操作。
希望对您有所帮助。