我有一个表单记录源设置为精心设计的SQL select语句。这工作正常。如果有帮助知道,表单布局是表格式。以下是数据示例:
order carrier billto employee
1 smgd horm chrnic
2 axxm sele chrnic
3 smgd horm redned
4 mcta cron greand
5 mcta cron greand
基本上未开单的订单条目。我想要一个组合框,根据显示的当前记录显示不同的员工姓名(chrnic,redned,greand)。我将编码它来过滤表格。看似简单,但我遇到了麻烦
我尝试过的事情:
答案 0 :(得分:1)
“我有一个表单记录源设置为精心设计的SQL select语句。”
将该查询保存为命名QueryDef
。我会假装您选择 qryRecordSource 作为名称。
“我想要一个组合框来显示不同的员工姓名......基于当前记录”
对于组合框行源使用...
SELECT DISTINCT employee
FROM qryRecordSource
ORDER BY 1;
然后根据组合选择过滤表单,添加一个命令按钮 cmdApplyFilter ,并在其点击事件过程中使用它...
Me.Filter = "[employee] = '" & Me.YourComboName.Value & "'"
Me.FilterOn = True
如果员工姓名可以包含撇号,请将其用于Filter
表达式...
Me.Filter = "[employee] = '" & _
Replace(Me.YourComboName.Value, "'", "''") & "'"
如果要包含组合行以清除过滤器,请使用UNION
查询作为组合行源...
SELECT "*** ALL ***" AS employee
FROM Dual
UNION
SELECT employee
FROM qryRecordSource
ORDER BY 1;
...其中 Dual 是任何只返回一行的表或查询。然后在命令按钮单击事件中,您可以执行...
If Me.YourComboName.Value = "*** ALL ***" Or _
IsNull(Me.YourComboName.Value) Then
Me.Filter = vbNullString
Me.FilterOn = False
Else
Me.Filter = "[employee] = '" & Me.YourComboName.Value & "'"
Me.FilterOn = True
End If
实际上你根本不需要命令按钮。您可以从组合的Filter
事件中设置AfterUpdate
。