【问题标题】:MS Access query to toggle between records with true and all recordsMS Access 查询在真实记录和所有记录之间切换
【发布时间】:2013-07-21 20:54:29
【问题描述】:

我有一个查询,除其他外,它返回一个 Active 标志:true 表示 Active,false 表示非 Active。表单上有一个活动复选框控件。默认为选中。当复选框被选中时,我需要查询只返回 Active = true 的记录。当未选中复选框时,我需要返回所有记录。

我一直在尝试在查询中的 Active 字段上设置一个条件,如下所示:

IIf([Forms]![myForm]![chkActive]=True,True,)
IIf([Forms]![myForm]![chkActive]=True,True, True or False)
IIf([Forms]![myForm]![chkActive]=True,True,([MyQuery]![Active])=True Or ([MyQuery]![Active])=False)

原因是如果检查了 chkActive,则 IIf 返回 True,否则返回一些我想要所有记录的指示。 Checked 部分似乎工作正常。如果我使用类似的东西:

IIf([Forms]![myForm]![chkActive]=True,True,False)

我可以在查看真记录和假记录之间切换。我想在查看真实记录和所有记录之间切换。

另一件事是当表单打开时查询没有返回任何内容。我认为[Forms]![myForm]![chkActive] 的值在需要查询来填充表单时不存在。但是,当从 chkActive 的OnClick 事件调用该查询时,它似乎可以访问[Forms]![myForm]![chkActive]。它被调用:

DoCmd.Requery

感谢任何有用的见解。

【问题讨论】:

    标签: ms-access


    【解决方案1】:

    将控件的值添加为查询中的列:

    FilterControl1: [Forms]![myForm]![chkActive]
    

    然后将此列的条件设置为In ([Active], false)
    如果控件和列匹配或选择 false,则表达式为真。 false 用作 all 选择器。
    这可能看起来有点神秘,但它也适用于其他数据类型。假设您有一个带有 ID 的组合框,并在查询中添加了 ID = -1, Text ='' 和 UNION。
    然后ColumnN: [ControlName], Criteria: IN ([column], -1) 可以过滤选择或-1。

    我还可以确认过滤器在加载时不起作用。我猜这只是Access。 Form_Load 中的 Me.Requery 似乎可以正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-09
      • 1970-01-01
      • 1970-01-01
      • 2014-02-24
      • 2020-07-07
      相关资源
      最近更新 更多