列表框和选项组在 MS Access 2013 的主列表框中过滤 3 个不同的行
List box and Option group filtering 3 different rows in MAIN list box in MS Access 2013
我已经为以下问题苦苦挣扎了一段时间,如果有一些脑力,我会非常高兴;)
我有一个高级过滤器表单,它通过许多不同的过滤器过滤订单,目前我无法使用的过滤器如下:
我在一个表单上有 4 个控件(全部未绑定):
- ogProductType - 允许您从 3 种产品中进行选择的选项组
lbAllProducts - 显示所有产品类型的列表框。它有 2 行,并被 tbSearchProducts 过滤,它按产品名称搜索,但 lb 由第一行(产品代码)绑定。过滤器是通过将条件插入名称行来完成的:
"Like "*" & [tbSearchProducts] & "*"".
tbSearchProducts - 用于按名称搜索产品的文本框。重新查询 lbAllProducts OnChange。
- 主订单列表框 - lbOrders - 有很多行。在这种情况下,我们关心的是 ID;电子产品代码; f产品代码; k产品代码。它应该显示过滤器为真的所有订单的所有 ID(购买类型 1 产品的所有订单)。在查询生成器中,我将以下代码作为每个查询的标准:
In lbOrders:
for eProductCode row
IIf([ogProductType]=1 And Len(Nz([lbAllProducts]))>0;[lbAllProducts];"")
for fProductCode row
IIf([ogProductType]=2 And Len(Nz([lbAllProducts]))>0;[lbAllProducts];"")
for kProductCode row
IIf([ogProductType]=3 And Len(Nz([lbAllProducts]))>0;[lbAllProducts];"")
我希望根据选择的产品类型过滤主列表框(选择 eProductCode 时选项组设置为第一个选项 = 1;fProductCode = 2;kProductCode=3),但忽略其他总共2行。可悲的是,那个错误的陈述说该字段的标准是“”,如果它不是通过选项组选择的,它就不起作用。
我如何堆叠 3 个条件,所有条件都从同一个列表框中取值,但前提是选项组是正确的,并且它们不会相互干扰?
我试过在 false 中使用“*”但它不起作用...
有什么想法吗?
我已经解决了:)
您永远不会使用条件来过滤 3 行...您只需使用字段本身来加载您需要的正确行并放入条件...
这是该字段的代码:
Expr1: IIf([obProducts]=1 And Len(Nz([lbSearchProduct]))>0;[tblOrders]![еProductCode];IIf([obProducts]=2 And Len(Nz([lbSearchProduct]))>0;[tblOrders]![fProductCode];IIf([obProducts]=3 And Len(Nz([lbSearchProduct]))>0;[tblOrders]![kProductCode])))
在该行的条件中,我设置了包含产品代码 lbAllProducts 绑定列的列表框
我已经为以下问题苦苦挣扎了一段时间,如果有一些脑力,我会非常高兴;)
我有一个高级过滤器表单,它通过许多不同的过滤器过滤订单,目前我无法使用的过滤器如下:
我在一个表单上有 4 个控件(全部未绑定):
- ogProductType - 允许您从 3 种产品中进行选择的选项组
lbAllProducts - 显示所有产品类型的列表框。它有 2 行,并被 tbSearchProducts 过滤,它按产品名称搜索,但 lb 由第一行(产品代码)绑定。过滤器是通过将条件插入名称行来完成的:
"Like "*" & [tbSearchProducts] & "*"".
tbSearchProducts - 用于按名称搜索产品的文本框。重新查询 lbAllProducts OnChange。
- 主订单列表框 - lbOrders - 有很多行。在这种情况下,我们关心的是 ID;电子产品代码; f产品代码; k产品代码。它应该显示过滤器为真的所有订单的所有 ID(购买类型 1 产品的所有订单)。在查询生成器中,我将以下代码作为每个查询的标准:
In lbOrders:
for eProductCode row
IIf([ogProductType]=1 And Len(Nz([lbAllProducts]))>0;[lbAllProducts];"")
for fProductCode row
IIf([ogProductType]=2 And Len(Nz([lbAllProducts]))>0;[lbAllProducts];"")
for kProductCode row
IIf([ogProductType]=3 And Len(Nz([lbAllProducts]))>0;[lbAllProducts];"")
我希望根据选择的产品类型过滤主列表框(选择 eProductCode 时选项组设置为第一个选项 = 1;fProductCode = 2;kProductCode=3),但忽略其他总共2行。可悲的是,那个错误的陈述说该字段的标准是“”,如果它不是通过选项组选择的,它就不起作用。
我如何堆叠 3 个条件,所有条件都从同一个列表框中取值,但前提是选项组是正确的,并且它们不会相互干扰?
我试过在 false 中使用“*”但它不起作用...
有什么想法吗?
我已经解决了:)
您永远不会使用条件来过滤 3 行...您只需使用字段本身来加载您需要的正确行并放入条件...
这是该字段的代码:
Expr1: IIf([obProducts]=1 And Len(Nz([lbSearchProduct]))>0;[tblOrders]![еProductCode];IIf([obProducts]=2 And Len(Nz([lbSearchProduct]))>0;[tblOrders]![fProductCode];IIf([obProducts]=3 And Len(Nz([lbSearchProduct]))>0;[tblOrders]![kProductCode])))
在该行的条件中,我设置了包含产品代码 lbAllProducts 绑定列的列表框