尝试使用 VB 自动执行一些查询。遇到看起来像字符串的问题
Posted
技术标签:
【中文标题】尝试使用 VB 自动执行一些查询。遇到看起来像字符串的问题【英文标题】:Trying to use VB to automate some queries. Running into what looks like a string issue 【发布时间】:2010-05-10 16:11:26 【问题描述】:我正在使用 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的原因。我的代码应该是什么样的?
【问题讨论】:
不要不使用字符串连接来构建这样的查询。 好的,还有其他方法可以构建此查询吗? 还是更像是一种“坏习惯”? @Jeff - newId 和 oldId 是整数吗? 不,它们是字符串。问题已经回答了,我只是还没有注册来标记它 【参考方案1】:使用 (') 字符设置值的开始和结束
sqlStatement = "UPDATE [Clean student
table] SET [HomeDepartment]='" & newID
& "' WHERE [HomeDepartment]='" & oldID
& "';"
【讨论】:
因为文字查询类似于“...SET field = 'abc'...”而不是“...SET field = abc...”。如果您尝试直接在 Access 中运行第二个(不带引号的)查询,您将看到相同的错误。 啊,非常感谢!这回答了我所有的问题(除了 Coehoorn 先生让我现在想知道的问题:P) Joel 的观点是,您可以执行用户为您的变量提供的任意数据。他假设很多,但他有一个观点。有关该问题的详细讨论,请参阅 ***.com/questions/512174/non-web-sql-injection。【参考方案2】:您可能希望在 ID 周围插入引号。
【讨论】:
以上是关于尝试使用 VB 自动执行一些查询。遇到看起来像字符串的问题的主要内容,如果未能解决你的问题,请参考以下文章