2016-02-12 113 views
-1

我有这个函数,我得到3075运行时错误。正是在这一行代码中,我会在之后发布。 我有一个子表单,有3个框可以选择任何选项以获取表单上的数据(品牌,通用,制造商)。我认为使用IF语句获取数据以形成问题有些问题,但不知道如何重新编写它。访问运行时错误3075

错误线是这在调试模式下 - Me.tbl_Drug_Master_Date_subform.Form.RecordSource =任务

错误消息指出:在查询表达式语法错误(缺少运营商)'[Brand]=Idaloprine'And[Generic] like '*'And[Manufacturer] like '*'

全码:

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 
+1

确保当您发布的代码检查格式和缩进在预览,这样的代码格式正确,具有可读压痕(你的格式不正确)。 – crashmstr

回答

1

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

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

因此,你的目标是修改代码,使得查询表达式读取

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

修改代码以实现留作练习。

+0

Heinzi - 我不确定你的意思。品牌,通用和制造商是我可以选择的领域。所以,如果我选择其中的一个,其他人将被取消。 Idaloprine是从组合框中选择的品牌之一。我没有尝试这个代码,并得到相同的错误。 Brandtype =“[BRAND] like'*'和[Generic] like'*'And [Manufacturer] like'*'”。我在所有3 If语句中都尝试过。那是你在说什么? – vbnewbie

1

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

Brandtype = "[BRAND] = " & Me.cboBrand & "'" 

您错过了cboBrand开头的单引号。所以,如果cboBrand =“可乐”,你会产生什么:

Brandtype = "[BRAND] = Coke'" 

请注意缺少的开盘单引号?将它们替换为这样的东西:

Brandtype = "[BRAND] = '" & Me.cboBrand & "'" 

第二个问题;间距。这是你的代码:

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

你需要空间,否则都将被解释为一个长字。试试这个:

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

Johnny Bones - 感谢您的帮助。它部分工作。错误消失了,但现在当我选择其中一个框来从我选择数据时,我没有获得数据,当我选择品牌。我使用Generic或制造商获取数据。奇怪的。 – vbnewbie

+0

它现在工作正常。我不得不使用我创建的“清除”按钮来选择要显示品牌,通用,制造商的新字段。又奇怪了。感谢您对单引号间距的帮助,我错过了。 – vbnewbie