Sql 尝试使用VB自动执行一些查询。遇到了一个字符串问题
我使用的是MS Access 2003,我试图使用VB一次执行几个查询。当我用SQL写查询时,它工作得很好,但当我尝试用VB写查询时,它要求我输入DEPA的参数值,然后输入DND,这是我拥有的两个字符串的前几个字母。代码如下: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
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的观点是,您可以执行用户为您的变量提供的任意数据。他做了很多假设,但有道理。有关该问题的详细讨论,请参阅。