2017-04-21 95 views
0

表單上我有一個叫LookUpByStore形式,從一個查詢顯示的記錄。這些記錄是我們在零售商店連鎖店中銷售的產品。我在名爲StoreCombo的表單頂部有一個組合框,將商店編號列爲文本。 ( 「109」, 「111」 等)搜索時過濾與組合框

我有一個名爲txtSearch文本框和被叫SearchBtn按鈕。我編寫了下面的代碼以從StoreCombo中獲取商店編號,然後僅在該商店內搜索產品。所涉及的列有:

StoreNum - 這是選擇在組合框中

,然後我需要尋找在文本框中輸入的任何這三根柱子:

ItemNameWeight - 這是一個文本字段

ItemNum - 這是一個數字

ItemUPCCode - 這是文本

這裏是我的代碼立方米rrently,我明白搜索ItemNameWeight並設置StoreNum,而ItemNum和ItemUPCCode在沒有設置storenum的情況下被搜索。我把這個宏設置爲一個可以工作的宏,但是我需要將StoreNum添加到其他兩個字段中,所以它將超過255個字符的宏限制。

[StoreNum]=[Forms]![LookupByStore]![StoreCombo] And [ItemNameWeight] Like "*" & [Forms]![LookupByStore]![txtSearch] & "*" Or [ItemNum] Like "*" & [Forms]![LookupByStore]![txtSearch] & "*" Or [ItemUPCCode] Like "*" & [Forms]![LookupByStore]![txtSearch] 

我試圖將代碼移動到VBA這樣的:

Private Sub SearchBtn_Click() 
    DoCmd.ApplyFilter , [StoreNum] = [Forms]![LookupByStore]![StoreCombo] And [ItemNameWeight] Like "*" & [Forms]![LookupByStore]![txtSearch] & "*" Or [ItemNum] Like "*" & [Forms]![LookupByStore]![txtSearch] & "*" Or [ItemUPCCode] Like "*" & [Forms]![LookupByStore]![txtSearch] & "*" 
End Sub 

但是這給了我一個錯誤2427「您輸入的是沒有價值的表達式」

A)我是什麼我做錯了

B)什麼是添加StoreNum的最佳實踐VBA中的其他兩列,因爲我知道寫道,「[StoreNum] = [Forms]![LookupByStore]![StoreCombo]和」每次都不是正確的方法。

感謝, 託尼

+0

我建議你添加您的過濾器的「Debug.Print」看看你有什麼。你的語法是錯誤的文本字段 - 你需要的東西,如:ItemNameWeight像「「*」&[表格] [LookupByStore] [txtSearch]&「*!」」 ......另外,你需要讓你與/或邏輯分組正確,如:StoreNum = 'XXX' AND(ItemNameWeight如 「* XX *」 或ItemUPCCode像 「* UUU *」 或ItemNum 1234)你需要修復ItemNum過濾使用NUMERICS] –

回答

0

評論ApplyFilter

你需要使用引號括文字文本與變量串聯。

我從來沒有使用ApplyFilter方法。我設置了表單Filter和FilterOn屬性。回顧Allen Browne Search

而且,你是使用AND和OR運算。正確的圓括號是至關重要的 - This AND THIS OR THIS是不一樣的This AND (This OR This)

如果代碼是被引用的形式背後,可以使用我的別名Me.StoreCombo