Access 2000中缺少操作员错误



我在组合字段的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.雷迪的实验室。';'

那是名称字段中的值包含postrophe等特殊字符等。如何摆脱此错误?

请帮助我解决此问题。

使用querydef进行参数查询。

Dim qdf As DAO.QueryDef
qrystr = "PARAMETERS which_name TEXT(255);" & vbCrLf & _
    "SELECT DrugCompanyID FROM [Drug Company] WHERE [Name] = [which_name];"
Set qdf = db.CreateQueryDef(vbNullString, qrystr)
qdf.Parameters("which_name") = cond
Set rs = qdf.OpenRecordset

您不需要在Select语句中包含参数周围的引号,也不需要您为参数值提供的文本中包含的任何引号。DB Engine希望收到文本,并将其对待。

我还使用了[Name]周围的方括号,因为它是一个保留的单词。在这种情况下,这似乎不是问题。我通常将这样的名字作为预防措施。

相关内容

  • 没有找到相关文章

最新更新