Sql 尝试使用VB自动执行一些查询。遇到了一个字符串问题

Sql 尝试使用VB自动执行一些查询。遇到了一个字符串问题,sql,ms-access,vba,ms-access-2003,Sql,Ms Access,Vba,Ms Access 2003,我使用的是MS Access 2003,我试图使用VB一次执行几个查询。当我用SQL写查询时,它工作得很好,但当我尝试用VB写查询时,它要求我输入DEPA的参数值,然后输入DND,这是我拥有的两个字符串的前几个字母。代码如下: Option Compare Database Public Sub RemoveDupelicateDepartments() Dim oldID As String Dim newID As String Dim sqlStatement As String

我使用的是MS Access 2003,我试图使用VB一次执行几个查询。当我用SQL写查询时,它工作得很好,但当我尝试用VB写查询时,它要求我输入DEPA的参数值,然后输入DND,这是我拥有的两个字符串的前几个字母。代码如下:

Option Compare Database

Public Sub RemoveDupelicateDepartments()

Dim oldID As String
Dim newID As String
Dim sqlStatement As String


oldID = "DND-01"
newID = "DEPA-04"

sqlStatement = "UPDATE [Clean student table] SET [HomeDepartment]=" & newID & " WHERE [HomeDepartment]=" & oldID & ";"

DoCmd.RunSQL sqlStatement & ""

End Sub

在我看来,它好像把绳子收起来了——然后就什么都没有了。我不知道,这就是我问lol的原因。我的代码应该是什么样子?

您可能希望在ID周围插入引号。

使用“字符”设置值的开始和结束

sqlStatement = "UPDATE [Clean student
table] SET [HomeDepartment]='" & newID
& "' WHERE [HomeDepartment]='" & oldID
& "';"

不要使用字符串连接来生成这样的查询。好的,有没有其他方法可以生成此查询?或者这是一种更糟糕的做法?@Jeff-newId和oldId是整数?不,它们是字符串。问题得到了回答,我只是还没有注册来标记它,因为文字查询类似于…SET field='abc'。。。而不是…设置字段=abc。。。。如果您尝试直接在Access中运行第二个无引号的查询,您将看到相同的错误。啊,非常感谢!这回答了我所有的问题,除了Coehoorn先生现在让我疑惑的一个问题:P Joel的观点是,您可以执行用户为您的变量提供的任意数据。他做了很多假设,但有道理。有关该问题的详细讨论,请参阅。