在使用组合框过滤的表单上搜索

时间:2017-04-21 17:09:10

标签: vba ms-access

我有一个名为LookUpByStore的表单,它显示查询中的记录。这些记录是我们在零售连锁店中携带的产品。我在名为StoreCombo的表单顶部有一个组合框,它将商店编号列为文本。 (" 109"," 111"等)

我有一个名为txtSearch的文本框和一个名为SearchBtn的按钮。我编写了下面的代码,从StoreCombo中获取商店编号,然后仅搜索该商店中的商品。涉及的栏目是:

StoreNum - 在组合框中选择

然后我需要在文本框中输入的内容中搜索这三列:

ItemNameWeight - 这是一个文本字段

ItemNum - 这是一个数字

ItemUPCCode - 文本

这是我目前的代码,据我所知,搜索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]和"每次都不是正确的方法。

谢谢,  贝

1 个答案:

答案 0 :(得分:0)

审核ApplyFilter

您需要在引号中包含文字文本并与变量连接。文本字段需要撇号分隔符。在这种情况下,所有那些[]都不是真正需要的,因为没有名字有空格或标点符号/特殊字符,也不是保留字。

我从未使用过ApplyFilter方法。我设置了表单Filter和FilterOn属性。查看Allen Browne Search

此外,您正在使用AND和OR运算符。正确的括号是至关重要的 - This AND THIS OR THISThis AND (This OR This)不同。由于您使用的是通配符,我认为您应该只使用AND运算符。通配符实际上只适用于文本类型字段。

如果代码在引用的表单后面,可以使用Me别名。

DoCmd.ApplyFilter , "StoreNum = " & Me.StoreCombo & " AND ItemNameWeight Like '*" & Me.txtSearch & "*' AND ItemNum Like '*" & Me.txtSearch & "*' AND ItemUPCCode Like '*" & Me.xtSearch & "*'"