2016-01-21 46 views
0

我有一个10列的表格,其中5个(Project_Phase,Contract,Design_DPM,AMM/UCC,1_or_2 stat)我想添加连接的拖放列表组合框来筛选记录并显示组合框中选定的数据框。如何创建多个连接的搜索组合框来过滤表单?

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

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

对不起,冗长的解释,如果有什么不清楚,我会进一步解释。感谢你付出的努力。

+0

听起来像你需要的是:(a)每个组合框都有一个'*'或'全部'排序到顶部;然后(b)为每个组合框执行事件代码,它将检查所有组合框,并通过组合所有组合框生成正确的窗体过滤器(或创建一个新的行源)。这听起来不错吗? –

+0

对不起,我不明白你提到的一些技术术语,因为我基本上是VBA编码的新手。但我相信你是对的。尽管如此,请允许我再次阐述一下,以确保我们处于同一页面上。 –

+0

我需要的是: a)对于每个组合框有一个唯一列表中的“无重复”列中的值,这个组合框将过滤(我知道如何做到这一点)b)是,实现一个AfterUpdate事件代码,当我从一个或多个组合框中选择一个值时,它将相应地过滤表单。所以我可以使用一个或多个组合过滤我的表单。 c)清除所有过滤器并再次查看完整表格数据的能力。 –

回答

0

我的问题回答。我找到了我想要的东西link 感谢大家的帮助

0

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

  1. 创建一个名为'tblWildcard'的表;一个名为'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. 在更新事件的每个组合框后添加以下代码:

    Me.Recordsource =“qryFormA”

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

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

    Me.cboFldA.Requery 
    
+0

谢谢您的宝贵意见。我在这里找到了我想要的东西[链接](http://allenbrowne.com/ser-62.html) 但是我从你的解释中受益,因为它让我更加了解VBA和编码。我感谢您的帮助 –

相关问题