【问题标题】:MS Access : Add Select All to combo boxMS Access:将全选添加到组合框
【发布时间】:2015-10-12 23:45:30
【问题描述】:

我试过这个: 要将(全部)项目添加到列表中,请返回到设计视图并选择组合框控件。然后,将 Row Source 属性替换为以下 SQL 语句:

SELECT City FROM Employees 
UNION SELECT "(All)" FROM Employees;

从这里:https://msdn.microsoft.com/en-us/library/aa140084%28v=office.10%29.aspx

我的 Sql 语句如下所示:

SELECT LastName FROM Employee  
UNION SELECT "(All)" FROM Employee;

我可以在下拉菜单中看到(全部),问题是当我选择选项(全部)时,我收到一个空白页。

我错过了什么吗?我需要一些 VBA 代码吗?这是我当前的代码:

Private Sub cboFilter2_AfterUpdate()
Dim myFilter As String
myFilter = "Select * from Employee_Filter_Query where ([LastName] = '" & cboFilter2 & "')"
Me.Employee_Filter_subform.Form.RecordSource = myFilter
Me.Employee_Filter_subform.Form.Requery
End Sub

兄弟,

【问题讨论】:

    标签: vba ms-access ms-access-2010 ms-access-2007


    【解决方案1】:

    您可能没有姓氏“(全部)”,当您从组合框中选择“(全部)”时,SQL 不会自动知道选择所有内容。您需要调整您的查询:

    "Select * from Employee_Filter_Query where ([LastName] = iif('" & cboFilter2 & "'='(All)',[LastName],'" & cboFilter2 & "'))"
    

    这会做的是寻找组合框说“(全部)”,如果它匹配[LastName] = [LastName],这将始终为真并返回所有记录,否则它将匹配[LastName]与您的过滤器并采取行动像平常一样。

    另一种方法是这样设置:

    If cboFinter2 = "(All)" Then
        myFilter = "Select * from Employee_Filter_Query"
    Else
        myFilter = "Select * from Employee_Filter_Query where ([LastName] = '" & cboFilter2 & "')"
    End If
    

    【讨论】:

    • 有效!非常感谢:) 我还有一个打印按钮,它可以打开一个基于过滤器的打印预览表单。你对如何将(全部)添加到我的表达式有任何想法吗?当前表达式:[LastName]=[TempVars]![TempLastNameType]
    • 或者如果 cboFilter2 = "(ALL)",你不能包含 WHERE 子句
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多