VBA中的运行时错误“3075”

时间:2018-04-17 08:48:25

标签: sql vba ms-access

我知道有很多帖子都有相同的标题,但我找不到与我的问题类似的东西。

我正在尝试使用VBA中的SQL更新记录。特别是,我的代码转到excel文件,提取一个值,询问用户需要更新的记录的ID,然后应该开始进行更新。事情是我尝试在没有用户输入的情况下运行相同的代码,并且工作正常,所以问题必须与输入的解释。我检查了一切都是字符串,但我不知道如何解决问题。

以下是我正在使用的代码:

Dim query2 as string
Dim myID as string
myID = InputBox("Insert ID:")
query2 = "UPDATE [Info test] " & "SET RESULT = " & var & "WHERE ID =" & myID
DoCmd.RunSQL (query2)

在这种情况下,var是一个字符串,是我从excel文件中获取的值。 从各种测试,我认为问题是与最后的& myID,就像在myID存储的值之前有一个撇号,但我不知道该怎么做,或者这是否真的是问题。

感谢所有可以提供帮助的人

2 个答案:

答案 0 :(得分:1)

在DoCmd之前插入Debug.Print query2,运行代码并在即时窗口中检查输出。此SQl应在查询生成器中工作。我相信你需要将var括在单引号中并在WHERE

之前添加一个空格
query2 = "UPDATE [Info test] SET RESULT = '" & Replace(var, "'", "''") & "' WHERE ID =" & myID

我添加了替换,以避免在var包含单引号时出错。

答案 1 :(得分:0)

如果var是一个字符串,那么你需要使用单引号并在WHERE之前添加空格,如下所示

query2 = "UPDATE [Info test] " & "SET RESULT = '" & var & "' WHERE ID =" & myID