Sql 用vba实现msaccess2003中的参数化查询
嗯。我希望使用参数化查询来避免处理数据中嵌入的双引号或单引号(“or”) 作为一个简单的例子,对于这个参数化的verion,VBA代码是什么样子的Sql 用vba实现msaccess2003中的参数化查询,sql,ms-access,vba,parameterized,Sql,Ms Access,Vba,Parameterized,嗯。我希望使用参数化查询来避免处理数据中嵌入的双引号或单引号(“or”) 作为一个简单的例子,对于这个参数化的verion,VBA代码是什么样子的 Dim qstr as String Dim possiblyDangerousString as String qstr = "SELECT MyTable.LastName from MyTable WHERE MyTable.LastName = '" & possiblyDangerousString & "';" 我没
Dim qstr as String
Dim possiblyDangerousString as String
qstr = "SELECT MyTable.LastName from MyTable WHERE MyTable.LastName = '" & possiblyDangerousString & "';"
我没有从我的代码中剪切并粘贴这个(现在在另一个框中),所以可能有输入错误
一旦我理解了这个简单的例子,我就需要转到更复杂的语句(多个参数和连接)。
感谢您在VBA中提供的任何建议,您可以使用以下方法:
Dim db作为DAO.Database
将qdf设置为QueryDef
作为字符串的Dim strSQL
Set db=CurrentDb
strSQL=“参数txtLastName Text(150);" _
&“从MyTable中选择LastName”_
&“其中LastName=txtLastName”
''创建一个临时查询
设置qdf=db.CreateQueryDef(“,strSQL)
qdf.Parameters!txtLastName=Trim(可能是DangerString)
这个示例没有多大用处,因为您现在将如何处理查询?
请注意,您可以在VBA中存储参数查询并分配参数。还请注意,备注字段会成为一个问题,因为参数只能接受255个字符。使用Replace函数的唯一问题是,只要有“”,它就会替换为“”即使您已经用另一个单引号对单引号进行了限定:“''”变为“''”(依此类推) 您可以创建一个过程或函数来检查“[!]”字符串,并使用类似的方法替换这些字符串: 公共函数QualifySingleQuote(myStr作为字符串)作为字符串
If myStr Like "*'[!']*" Then
QualifySingleQuote = Replace(myStr, "'", "''")
Else
QualifySingleQuote = myStr
EndIf
端函数