如何创建多个连接的搜索组合框来过滤表单?

时间:2016-01-21 08:06:47

标签: database vba filter combobox access-vba

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

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

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

对于冗长的解释感到抱歉,如果事情不明确,我会进一步解释。谢谢你的努力。

2 个答案:

答案 0 :(得分:0)

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

  1. 创建一个名为' tblWildcard&#39 ;;一个名为' Wildcard'的字段,保存表格。
  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. 在每个组合框的After Update事件中添加以下代码:

    Me.Recordsource =" qryFormA"

  6. 有时是' Me.Rowsource。'在进行更改时可能无效(奇怪的问题!)。如果是这样,请执行以下操作:

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

    Me.cboFldA.Requery
    

答案 1 :(得分:0)

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