在我的数据库中,我有一个有几个yes/no列的表。
现在,我有一个未绑定表单,其中包含一些未绑定复选框,还有一个列表框,它绑定到一个特殊的查询中。
我希望使用表单上的复选框筛选列表框,并在列表中显示具有匹配值的项。
例如,
窗体上的每个控件都使用单击事件过程使列表请求。
现在,这不适合我。只有当所有值匹配复选框时,我的列表框才会显示项。因此,如果我检查box1和box2,我只能从只有field1和field2的项中获得结果。如果这个项目也有field3,它就不会显示-这是我的问题。
到目前为止,我的查询是这样的:
SELECT MyQuery.title, field1, MyQuery.field2, MyQuery.field3
FROM MyQuery
WHERE (
(
(MyQuery.field1) like [Forms]![Ability Finder]![box1]
)AND(
(MyQuery.field2) like [Forms]![Ability Finder]![box2]
)AND(
(MyQuery.field2) like [Forms]![Ability Finder]![box3]
)
);也许我走错路了。此外,我有大约20个复选框,我需要这样做。
SELECT MyQuery.cat, MyQuery.nickname, MyQuery.title, MyQuery.level, MyQuery.field1, MyQuery.field2, MyQuery.field3
FROM MyQuery
WHERE (
((MyQuery.field1)=[Forms]![Ability Finder]![box1] Or [Forms]![Ability Finder]![box1] Is Null)
AND ((MyQuery.field2)=[Forms]![Ability Finder]![box2] Or [Forms]![Ability Finder]![box2] Is Null)
AND ((MyQuery.field3)=[Forms]![Ability Finder]![box3] Or [Forms]![Ability Finder]![box3] Is Null)
);发布于 2018-06-19 16:36:58
不确定您是否想在VBA中编写事件处理,但这将使这项任务更加容易。每次单击复选框时,您都可以动态构造SQL查询,如果只通过调整For循环将其添加到行中,则它可以处理任何附加复选框。为每个复选框的Click事件调用Sql构造函数,然后在构造函数中设置列表框的行源。
Private Sub Check1_Click()
ConstructSqlQuery
End Sub
Private Sub Check2_Click()
ConstructSqlQuery
End Sub
Private Sub Check3_Click()
ConstructSqlQuery
End Sub
...
Private Sub ConstructSqlQuery()
Dim sql As String
Dim numChecked As Integer
Dim checkboxName As String
Dim criteriaBoxName As String
numChecked = 0
'the 1=1 is a dummy value that always returns true. It makes it easier to append additional "and" clauses.
sql = "select field1, field2, field3, ... from MyQuery where 1=1"
For x = 1 To 15
checkboxName = "Check" & x
criteriaBoxName = "Text" & x
If Me.Controls(checkboxName).Value = -1 Then
sql = sql & " and field" & x & " like '*" & Me.Controls(criteriaBoxName).Value & "*'"
numChecked = numChecked + 1
End If
Next
If numChecked = 0 Then
'if nothing is checked, don't show anything.
Me.List0.RowSource = ""
Else
Me.List0.RowSource = sql
End If
Me.List0.Requery
End Subhttps://stackoverflow.com/questions/50919043
复制相似问题