【问题标题】:How to create multiple connected search combo boxes to filter a form?如何创建多个连接的搜索组合框来过滤表单?
【发布时间】:2016-04-27 09:07:19
【问题描述】:

我有一个包含 10 列的表单,其中 5 列(Project_Phase、Contract、Design_DPM、AMM/UCC、1_or_2 stat)我想添加连接的下拉列表组合框来过滤记录并显示在组合框。

我知道如何制作多个下拉列表组合框,根据从一列中选择一个值来过滤整个表单。例如,“合同”组合框有选项:已签名、未签名。如果我选择“签名”,它将显示所有已“签名”的记录。如果我过滤另一列,它将取消先前的过滤器并显示仅与该列中的选择相关的记录。

但我想要的是能够使用我提到的 5 列中的任意数量的过滤选项进行过滤。例如,如果我想查看(“Contract”下的“signed”)和(“Project_Phase”下的“proposal”)和(“Design_DPM”下的“a certain DPM”)中的记录。过滤后,我希望能够清除过滤器并再次查看所有记录,因为我正在使用此表单为用户显示我的所有记录。我不希望它被级联,因为我可能只想使用一列或更多或全部进行过滤。而且我不希望它成为查询或在数据表视图中使用基本过滤。

很抱歉解释冗长,如果有不清楚的地方我会进一步解释。感谢您的努力。

【问题讨论】:

  • 听起来你需要的是:(a)让每个组合框都有一个'*'或'All'排序到顶部;然后 (b) 为每个组合框实现事件代码,该代码将审查所有组合并通过组合所有组合框生成正确的表单过滤器(或创建新的行源)。这听起来好吗?
  • 对不起,我不明白你提到的一些技术术语,因为我基本上是 VBA 编码的新手。但我相信你做对了。不过,请允许我再次详细说明,以确保我们在同一页面上。
  • 我需要的是:a)对于每个组合框,该组合框将过滤列中的值的唯一列表“不重复”(我知道如何执行此操作)b)是的,实现更新后事件代码,当我从一个或多个组合框中选择一个值时,它将相应地过滤表单。所以我可以使用一个或多个组合过滤我的表单。 c) 能够清除所有过滤器并再次查看完整的表单数据。

标签: vba database ms-access filter combobox


【解决方案1】:

这是使用多个组合框实现表单过滤器的一种方法。

  1. 创建一个名为“tblWildcard”的表;一个名为“通配符”的字段,保存表格。
  2. 输入一条以星号为值的记录
  3. 为您的组合框创建查询,例如:

    SELECT DISTINCT Table1.flda
    FROM Table1
    ORDER BY Table1.flda
    UNION Select wildcard from tblwildcard
    
  4. 保存类似于以下 SQL 的查询作为表单的行源(即 qryFormA):

    SELECT Table1.Flda, Table1.Fldb, Table1.Fldb 
    FROM Table1
    WHERE (((Table1.Flda) Like [Forms]![frmForm1]![cboFlda]) 
    AND ((Table1.Fldb) Like [Forms]![frmForm1]![cboFldb]) 
    AND ((Table1.Fldc) Like [Forms]![frmForm1]![cboFldc]))                          
    
  5. 在每个组合框的更新后事件中添加以下代码:

    Me.Recordsource = "qryFormA"

  6. 有时是“Me.Rowsource”。进行更改时可能无法正常工作(奇怪的问题!)。如果是这样,请执行以下操作:

    Application.Echo False
    Me.RecordSource = vbNullString                    
    Me.RecordSource = "rowVwFilter25"
    Application.Echo True
    
  7. 最后,如果是多用户环境,并且人们可能会添加需要包含在组合框中的记录,请使用更新前组合框事件并添加以下代码:

    Me.cboFldA.Requery
    

【讨论】:

  • 感谢您的宝贵意见。我在这里找到了我想要的东西link 但是我从你的解释中受益,因为它让我对 VBA 和编码有了更多的理解。感谢您的帮助
【解决方案2】:

我的问题得到了解答。我在这里找到了我想要的东西link 谢谢大家的帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 2019-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多