2015-03-02 75 views
0

我有一个名为test的表,其中包含一个类型数字(长整数)的列和名称CHANGEME。该列的值从空到大整数。我试图选择所有空值并将它们更新为0.我在VBA代码中执行此操作。MS Access 2013 SQL类型不匹配错误

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

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

但是,如果我在用户界面中创建一个查询并复制并粘贴SQL语句并添加一个;在结束和删除“的它完美

任何想法

回答

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作为一种方法有利于你的代码。它会不会在每次运行时都提示您确认您的操作。

希望这会有所帮助。

+0

你钉了它!我将从现在开始使用该方法。非常感谢你 – mkmitchell 2015-03-02 21:34:09