我有一个包含10列的表单,其中有5列(Project_Phase,Contract,Design_DPM,AMM / UCC,1_or_2 stat)我想添加连接的下拉列表组合框来过滤记录并显示在组合框。
我知道如何制作多个下拉列表组合框,根据从一列中选择一个值来过滤整个表单。例如,“合同”组合框具有选项:已签名,未签名。如果我选择“已签名”,它将显示所有已“签名”的记录。如果我过滤另一列,它将取消之前的过滤器并显示仅与该列中的选择相关的记录。
但我想要的是能够使用我提到的5列中的任意数量的过滤选项进行过滤。例如,如果我想查看(“签约”在“合同”下)和(“提案”在“Project_Phase”下)和(“Design_DPM”下的“某个DPM”)的记录。过滤后我希望能够清除过滤器并再次查看所有记录,因为我使用此表单显示用户的所有记录。我不希望它被级联,因为我可能只想使用一列或多列或全部过滤。我不希望它是查询或在数据表视图中使用基本过滤。
对于冗长的解释感到抱歉,如果事情不明确,我会进一步解释。谢谢你的努力。
答案 0 :(得分:0)
以下是使用多个组合框实现表单过滤器的一种方法。
为您的组合框创建查询:
SELECT DISTINCT Table1.flda
FROM Table1
ORDER BY Table1.flda
UNION Select wildcard from tblwildcard
将类似以下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]))
在每个组合框的After Update事件中添加以下代码:
Me.Recordsource =" qryFormA"
有时是' Me.Rowsource。'在进行更改时可能无效(奇怪的问题!)。如果是这样,请执行以下操作:
Application.Echo False
Me.RecordSource = vbNullString
Me.RecordSource = "rowVwFilter25"
Application.Echo True
最后,如果是多用户环境,并且人们可能正在添加需要包含在组合框中的记录,请使用组合框更新前事件并添加以下代码:
Me.cboFldA.Requery
答案 1 :(得分:0)
我的问题得到了解答。我在这里找到了我想要的link 感谢大家的帮助