Ms access 访问运行时错误3075
我有这个函数,其中我得到一个3075运行时错误。它就在这一行代码中,我将在后面发布rest。 我有一个子表单,其中有3个框可供选择,以获取表单上的数据(品牌、通用、制造商)。我认为用IF语句返回数据是有问题的,但不知道如何重新表述 错误行是调试模式下的-Me.tbl\u Drug\u Master\u Date\u subform.Form.RecordSource=task 错误消息状态:查询表达式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
'[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语句中都试过了。这就是你说的吗?约翰尼·博恩斯-谢谢你的帮助。它部分起作用。错误消失了,但现在当我选择其中一个框来选择数据时,我在选择品牌时无法获得数据。我使用通用或制造商获取数据。奇怪,现在工作正常。我必须使用我创建的“清除”按钮来选择要显示的品牌、通用、制造商的新字段。又奇怪了。谢谢你对我丢失的单引号间距的帮助。