列表框和选项组在MS Access 2013的MAIN列表框中筛选3个不同的行

时间:2015-02-15 14:20:51

标签: ms-access filter ms-access-2013 query-builder iif

一段时间以来,我一直在努力解决以下问题,并且对于某些脑力非常高兴;)

我有一个高级过滤器表单,它通过许多不同的过滤器过滤订单,目前我无法生成的功能如下:

我在表单上有4个控件(全部未绑定):

  1. ogProductType - 允许您从3种类型的产品中挑选的选项组
  2. lbAllProducts - 显示所有类型产品的列表框。它有2行,并由tbSearchProducts过滤,tbSearchProducts按产品名称搜索,但lb由第一行绑定,即产品代码。通过将标准插入名称行来完成过滤:

    "Like "*" & [tbSearchProducts] & "*"".

  3. tbSearchProducts - 用于按名称搜索产品的文本框。已经重新查询lbAllProducts OnChange。

  4. 主要订单列表框 - lbOrders - 有很多行。我们在这种情况下关心的是ID; eProductCode; fProductCode; kProductCode。它应该显示过滤器为真的所有订单的所有ID(购买类型1产品的所有订单)。在查询构建器中,我将以下代码作为每个代码的条件:
  5. 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时,选项组设置在First option = 1; fProductCode = 2; kProductCode = 3),但忽略其他2行完全。可悲的是,这个虚假的陈述说该字段的标准是“”,如果没有通过选项组选择它,它就不起作用。

    如何堆叠3个条件,所有条件都取自同一个列表框中的值,但只有在选项组正确的情况下,它们才会相互干扰?

    我在“*”中尝试使用false,但它不起作用...

    有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我已经解决了它:)

您根本不会使用条件来过滤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的绑定列的列表框