2016-02-12 162 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