2017-04-21 147 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