我知道有很多帖子都有相同的标题,但我找不到与我的问题类似的东西。
我正在尝试使用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存储的值之前有一个撇号,但我不知道该怎么做,或者这是否真的是问题。
感谢所有可以提供帮助的人
答案 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