gpt4 book ai didi

forms - 根据表单中的多个列表框过滤查询

转载 作者:行者123 更新时间:2023-12-02 00:04:01 24 4
gpt4 key购买 nike

我有一个包含两个表的 Access 数据库:“联系人”和“国家/地区”其中每个包含多个字段。

我有一个查询,“过滤器”,将这两个表放在一起。

我想创建一个表单,其中的列表框数量与查询中的字段数量一样多。用户可以打开表单并从每个列表框中选择多个数据——行源与上面的两个表相关联。然后单击按钮将显示查询,并根据用户在列表框中的选择应用过滤器。如果未选择任何内容,则查询将不带筛选器显示。同样,用户不需要从所有列表框中进行选择。

任何帮助将不胜感激。我从其他网站提取了一些代码,这些代码允许我为单个列表框应用过滤器。困难在于扩展多个列表框。这是一个荒谬的要求吗??

PS 我可以发布我现有的代码,但我相信这现在是一个“红鲱鱼”,最好重新开始。

最佳答案

我的理解是您有一个带有未绑定(bind)的多选列表框的表单,并且您想要在数据 TableView 中打开一个查询并根据列表框选择进行该查询。

这意味着您必须检查每个列表框的 ItemsSelected 集合并相应地更新查询的 SQL 属性。

在我的测试表单中,其中包含一个名为 lstFname 的多选列表框,在列表框中选择姓名 Jack、Dave 和 Tim,然后单击命令按钮 (cmdOpenQuery),创建此 SELECT 语句。

SELECT c.*
FROM Contacts AS c
WHERE c.fname IN ('Dave','Jack','Tim')

然后该语句将保存为名为 qrySearchForm 的查询的 SQL 属性。最后,该查询在数据 TableView 中打开。

但是我的例子只包含一个列表框,而你有多个。因此,您需要做更多的工作来扩展这个简单的示例。

这是我的表单的代码模块......

Option Compare Database
Option Explicit ' <- include this in ALL modules!

Private Sub cmdOpenQuery_Click()
Const cstrQuery As String = "qrySearchForm"
Dim strNames As String
Dim strSelect As String
Dim varItm As Variant

strSelect = "SELECT c.*" & vbCrLf & "FROM Contacts AS c"

For Each varItm In Me.lstFname.ItemsSelected
strNames = strNames & ",'" & _
Me.lstFname.ItemData(varItm) & "'"
Next varItm
If Len(strNames) > 0 Then
strNames = Mid(strNames, 2) ' discard leading comma
strSelect = strSelect & vbCrLf & _
"WHERE c.fname IN (" & strNames & ")"
End If

Debug.Print strSelect
CurrentDb.QueryDefs(cstrQuery).Sql = strSelect
DoCmd.OpenQuery cstrQuery
End Sub

关于forms - 根据表单中的多个列表框过滤查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19564501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com