【发布时间】:2014-01-17 19:18:26
【问题描述】:
我在 Access 中使用拆分表单,并且我有三 (3) 个下拉组合框: ReportedLOB(在此示例中使用) 帐户 立场类别
每个组合框都与所选的特定业务部门相关联,因此它限制了组合框中的项目数量。我正在为 ReportedLOB 使用以下代码:
Private Sub Combo_Reported_LOB_Selection_Change()
' If the combo box is cleared, clear the form filter.
If Nz(Me.Combo_Reported_LOB_Selection.Text) = "" Then
Me.Form.Filter = ""
Me.FilterOn = False
' If a combo box item is selected, filter for an exact match.
' Use the ListIndex property to check if the value is an item in the list.
ElseIf Me.Combo_Reported_LOB_Selection.ListIndex <> -1 Then
Me.Form.Filter = "[ReportedLOB] = '" & _
Replace(Me.Combo_Reported_LOB_Selection.Text, "'", "''") & "'"
Me.FilterOn = True
End If
End Sub
假设下拉列表中有 4 个项目:MCD、Comp、GRD、DRR 当我选择 MCD 时,它会正确过滤 MCD 结果。但是,在与团队一起审查后,他们希望删除 MCD 的过滤器以再次获得所有结果,因此我创建了一个额外的表并将其加入,以便将 ALL 下拉项添加到列表中。
SELECT DISTINCT dbo_ztblGAAP_Splits_TableA.ReportedLOB FROM
dbo_ztblGAAP_Splits_TableA WHERE (((dbo_ztblGAAP_Splits_TableA.BU)=[Forms]![Frm_Main]!
[Frm_Main_TextBox_Display_BU_Number_HIDDEN]))
ORDER BY dbo_ztblGAAP_Splits_TableA.ReportedLOB
UNION ALL
SELECT Top 10, "**ALL**" FROM
dbo_tTbl_ADMIN_ForFiltering
ORDER BY ReportedLOB;
现在,百万美元的问题......当我从下拉列表中选择 ALL 时,它会将我的所有记录更改为 All 而不是给我所有报告的 LOB 的原始结果。有没有人处理过这个?我到处搜索,试图将这段代码拼凑在一起。
【问题讨论】:
-
UNION ALL查询是Combo_Reported_LOB的行源,对吗?如果是这样,当您在 Access 查询设计器中单独测试它作为新查询时,它是否返回正确的结果?一个问题……SELECT Top 10, "**ALL**"……我觉得不合适。 -
@HansUp,正确,并回答您的第二个问题 - 现在我的结果不起作用。我知道您曾就类似的问题发表过评论,我感谢您的指导。我创建了一个包含两列的表:ID 和 ReportedLOB,ID=1 和 ReportedLOB = ALL,我必须把我的连接都搞砸了,因为它失败了。正在努力
-
我尝试按照 Microsoft 的示例 [LINK](support.microsoft.com/kb/210290) 了解如何在 Microsoft Access 中向 ComboBox 添加“全部”选项,但他们的文章在提供指导方面做得不够,除了指定代码。
-
好的,您已经将目光投向了
UNION查询方法而不是回调函数,对吧?这是更好的选择,因为回调更具挑战性。以下评论中的查询是否为您提供了组合行源所需的内容。使用任何返回单行的表或查询来代替Dual或 make your own Dual table。 -
@HansUp,是的,回调函数根本不起作用。因此,我将代码放在上面并且查询有效。当我转到表格并从列表中选择 ALL 时,我的表格空白。就像一切都消失了,白屏。我猜我的 Private Sub Combo_Reported_LOB_Selection_Change() 现在需要修改吗?