【发布时间】:2016-10-17 19:07:16
【问题描述】:
我在 Access 中有一个列表框,其中显示了季节性员工姓名的列表。它的行源是:
SELECT tblLeaders.LeaderID, tblLeaders.FirstName, tblLeaders.LastName, [LastName] & ", " & [FirstName] AS Expr1, tblLeaders.OnPay
FROM tblLeaders
ORDER BY tblLeaders.LastName;
它显示按姓氏排序的列表中的名称,并显示为:“[LastName], [FirstName]”
在表 [tblLeaders] 上,有一个名为 [OnPay] 的 YesNo 字段。
我的目标是有一个复选框或组合框,可以通过以下任一方式过滤 ListBox 中的名称:
选项 1:ALL(显示所有 OnPay 值(是或否)
选项 2:活动(仅显示设置为“是”的 OnPay 值)
我尝试使用复选框的三重状态,但没有成功。然后,如果组合框设置为全部,我尝试使用 IIF 语句查找“是”和“否”值,但我一直收到错误。
有没有人有任何简单的想法来解决这个问题?
更新 感谢约翰内斯的回答。下面是我添加的工作 vba 代码
Private Sub chkbxShowInactiveLeaders_Click()
Dim sql1 As String
Dim sql2 As String
Dim sql3 As String
sql1 = "SELECT tblLeaders.LeaderID, tblLeaders.FirstName, tblLeaders.LastName, [LastName] & ', ' & [FirstName] AS Expr1, tblLeaders.OnPay FROM tblLeaders "
sql2 = "WHERE tblLeaders.OnPay=TRUE "
sql3 = "ORDER BY tblLeaders.LastName;"
If Me.chkbxShowInactiveLeaders.Value = True Then
Me.lstbxSelectLeader.RowSource = sql1 & sql3
Else
Me.lstbxSelectLeader.RowSource = sql1 & sql2 & sql3
End If
Me!lstbxSelectLeader.Selected(0) = True
End Sub
【问题讨论】:
-
你能把 ListBox 改成多选 ListBox 吗?
-
不,不幸的是,列表框填充了表单上的许多字段,因此需要单选。