【发布时间】:2012-11-05 09:31:29
【问题描述】:
我在组合字段的 onchange 事件中使用 vba 代码。代码如下
Dim db As Database
Dim rs As DAO.Recordset
Dim qrystr As String
Dim cond As String
Dim qrystr_CID As String
'cond = [Forms]![PharmDrug].[Commercial drugs subform2].Form.DrugCompanyName & vbNullString
cond = Me.DrugCompany & vbNullString
'MsgBox cond
Set db = CurrentDb
If cond = vbNullString Then
' do nothing
Else
qrystr = "SELECT DrugCompanyID FROM [Drug Company] WHERE Name ='" & cond & "';"
Set rs = db.openrecordset(qrystr)
qrystr_CID = rs!DrugCompanyID
Me.DrugCompanyID = qrystr_CID
rs.Close
Set rs = Nothing
End If
这工作正常,但它在查询表达式 'Name='Dr. 中给出错误 3075 语法错误(缺少运算符)。雷迪的实验室。';'
如果名称字段中的值包含撇号等特殊字符,我该如何摆脱这个错误?
请帮我解决这个问题。
【问题讨论】:
-
请参阅stackoverflow.com/q/199889/603855 并考虑使用参数化查询,而不是将“'”(单引号)替换为“''”(两个单引号)。
-
参数只有一个小问题,那就是长度超过 255 个字符的数据(备忘录数据类型)。但是,在这种情况下不会有问题。
标签: vba ms-access ms-access-2000