Ms access 访问运行时错误3075

Ms access 访问运行时错误3075,ms-access,vba,Ms Access,Vba,我有这个函数,其中我得到一个3075运行时错误。它就在这一行代码中,我将在后面发布rest。 我有一个子表单,其中有3个框可供选择,以获取表单上的数据(品牌、通用、制造商)。我认为用IF语句返回数据是有问题的,但不知道如何重新表述 错误行是调试模式下的-Me.tbl\u Drug\u Master\u Date\u subform.Form.RecordSource=task 错误消息状态:查询表达式'[Brand]=Idaloprine'和[Generic]如'*'和[Manufacturer

我有这个函数,其中我得到一个3075运行时错误。它就在这一行代码中,我将在后面发布rest。 我有一个子表单,其中有3个框可供选择,以获取表单上的数据(品牌、通用、制造商)。我认为用IF语句返回数据是有问题的,但不知道如何重新表述

错误行是调试模式下的-Me.tbl\u Drug\u Master\u Date\u subform.Form.RecordSource=task

错误消息状态:查询表达式
'[Brand]=Idaloprine'和[Generic]如'*'和[Manufacturer]如'*'中的语法错误(缺少运算符)

完整代码:

Function SearchCriteria()
Dim Brandtype, strGeneric, strManufacturer
Dim task, strCriteria As String

If IsNull(Me.cboBrand) Then
    Brandtype = "[BRAND] like '*'"
Else
    Brandtype = "[BRAND] = " & Me.cboBrand & "'"
End If

If IsNull(Me.cboGeneric) Then
    strGeneric = "[Generic] like '*'"
Else
    strGeneric = "[Generic] = " & Me.cboGeneric & "'"
End If

If IsNull(Me.cboManufacturer) Then
    strManufacturer = "[MANUFACTURER] like '*'"
Else
    strManufacturer = "[MANUFACTURER] = " & Me.cboManufacturer & "'"
End If

strCriteria = Brandtype & "And" & strGeneric & "And" & strManufacturer

    task = "Select GENERIC, BRAND,   MASTER_ID, PRODUCT_CATEGORY, MANUFACTURER, HTP_MODEL_QTR, HTP_SELECTION_REASON1, LU.ID, LU.Date_YYYYQX  from [tbl_Drug_Master] DM left outer join tbl_YYYYQX_LU LU on LU.ID = DM.HTP_MODEL_QTR Where " & strCriteria
    Me.tbl_Drug_Master_Date_subform.Form.RecordSource = task
    Me.tbl_Drug_Master_Date_subform.Form.Requery

End Function
错误消息状态:查询表达式
'[Brand]=Idaloprine'和[Generic]如'*'和[Manufacturer]如'*'中的语法错误(缺少运算符)

正如消息所说,您的查询表达式已损坏。单引号
用于括起字符串文本。因此,
'[Brand]=Idaloprine'
是字符串文字,而不是比较。你可能想写的是
[Brand]='Idaloprine'
。这是字段(
[Brand]
)和字符串文本(
'Idaloprine'
)之间的比较(
=

因此,您的目标是修改代码,使查询表达式能够读取

[Brand] = 'Idaloprine' And [Generic] Like '*' And [Manufacturer] Like '*'

修改代码以实现这一目标只是一个练习。

两个问题。首先,您的报价不匹配:

Brandtype = "[BRAND] = " & Me.cboBrand & "'"
您在cboBrand开头缺少一个报价。因此,如果cboBrand=“Coke”,您所拥有的将产生:

Brandtype = "[BRAND] = Coke'"
注意到缺少开头的单引号了吗?将它们替换为以下内容:

Brandtype = "[BRAND] = '" & Me.cboBrand & "'"
第二个问题;间距。这是您的代码:

strCriteria = Brandtype & "And" & strGeneric & "And" & strManufacturer
你需要空格,否则它会被解释成一个长单词。试试这个:

strCriteria = Brandtype & " And " & strGeneric & " And " & strManufacturer

请确保在发布代码时检查预览中的格式和缩进,以便代码的格式正确且缩进可读(您的代码格式不正确)。Heinzi-我不确定您的意思。品牌、通用和制造商是我可以选择的领域。因此,如果我选择其中一个,其他的将被清除。爱达洛普林是可从组合框中选择的品牌之一。我确实尝试过这个代码,但也遇到了同样的错误。Brandtype=“[BRAND]like''和[Generic]like''以及[Manufacturer]like'*'”。我在所有3个If语句中都试过了。这就是你说的吗?约翰尼·博恩斯-谢谢你的帮助。它部分起作用。错误消失了,但现在当我选择其中一个框来选择数据时,我在选择品牌时无法获得数据。我使用通用或制造商获取数据。奇怪,现在工作正常。我必须使用我创建的“清除”按钮来选择要显示的品牌、通用、制造商的新字段。又奇怪了。谢谢你对我丢失的单引号间距的帮助。