使用 Microsoft Access 表单过滤来自多个列表框、文本框和组合框的数据
Using Microsoft Access form to filter data from Multiple Listboxes, Textboxes and a ComboBox
如果没有 运行 错误,我仍然无法做到这一点。
对于我正在做的一个项目,我正在使用 Microsoft Access 创建一个数据库,该数据库将用于根据从 Multiple multi 输入的信息从一个 table 中过滤出一份报告的数据-select 个列表框、多个文本框和一个组合框。
我知道如何处理一个 Multi-Select 列表框,但我在添加我的其他 multi-select 列表框时遇到问题。是否可以只从一个来源完成所有工作,还是我将不得不使用多个 tables?
如果我能够从一个 table(作为来源)做到这一点,我将如何去做并添加文本框和组合框?如果需要,我可以提供我目前拥有的代码。
https://access-programmers.co.uk/forums/showthread.php?t=286294&page=2
代码:
私人订阅 Command62_Click()
Dim db As DAO.Database
将 qdf 变暗为 DAO.QueryDef
将 varItem 变暗为变体
将 strCriteria 变暗为字符串
将 strCriteria1 变暗为字符串
将 strCriteria2 变暗为字符串
将 strSQL 变暗为字符串
设置 db = CurrentDb()
设置 qdf = db.QueryDefs("qryMultiselect")
对于我中的每个 varItem!District.ItemsSelected
strCriteria = strCriteria & ",'" & Me!District.ItemData(varItem) & "'"
下一个变量
如果 Len(strCriteria) = 0 那么
MsgBox "You did not select anything in the Contract field." _
, vbExclamation, "Nothing to find!"
Exit Sub
如果
结束
strCriteria = Right(strCriteria, Len(strCriteria) - 1)
对于我中的每个 varItem!MOPointofEntry.ItemsSelected
strCriteria1 = strCriteria1 & ",'" & Me!MOPointofEntry.ItemData(varItem) & "'"
下一个变量
如果 Len(strCriteria1) = 0 那么
MsgBox "You did not select anything in the Name field." _
, vbExclamation, "Nothing to find!"
Exit Sub
如果
结束
strCriteria1 = Right(strCriteria1, Len(strCriteria1) - 1)
对于我中的每个 varItem!MOMethodofEntry.ItemsSelected
strCriteria2 = strCriteria2 & ",'" & Me!MOMethodofEntry.ItemData(varItem) & "'"
下一个变量
如果 Len(strCriteria2) = 0 那么
MsgBox "You did not select anything in the Type field." _
, vbExclamation, "Nothing to find!"
Exit Sub
如果
结束
strCriteria2 = Right(strCriteria2, Len(strCriteria2) - 1)
strSQL = "SELECT * from TblDataEntry" & _
"WHERE TblDataEntry.District IN(" & strCriteria & ") AND TblDataEntry.MOPointofEntry IN(" & strCriteria1 & ") AND TblDataEntry.MOMethodofEntry IN(" & strCriteria2 & ");"
qdf.SQL = strSQL
DoCmd.OpenQuery "qryMultiselect"
multi select 列表框不适合作为查询条件的来源。这是一个您可以查找并查看其他 Q/A 的主题,了解尝试使用它们的原因和复杂性。
如果可能,建议更改为多个单个列表框。
另一种方法是在多列表记录的table中添加一个复选框字段。然后使用复选框设置子表单作为标记多条记录的方法。
如果没有 运行 错误,我仍然无法做到这一点。
对于我正在做的一个项目,我正在使用 Microsoft Access 创建一个数据库,该数据库将用于根据从 Multiple multi 输入的信息从一个 table 中过滤出一份报告的数据-select 个列表框、多个文本框和一个组合框。
我知道如何处理一个 Multi-Select 列表框,但我在添加我的其他 multi-select 列表框时遇到问题。是否可以只从一个来源完成所有工作,还是我将不得不使用多个 tables?
如果我能够从一个 table(作为来源)做到这一点,我将如何去做并添加文本框和组合框?如果需要,我可以提供我目前拥有的代码。
https://access-programmers.co.uk/forums/showthread.php?t=286294&page=2
代码:
私人订阅 Command62_Click()
Dim db As DAO.Database
将 qdf 变暗为 DAO.QueryDef
将 varItem 变暗为变体
将 strCriteria 变暗为字符串
将 strCriteria1 变暗为字符串
将 strCriteria2 变暗为字符串
将 strSQL 变暗为字符串
设置 db = CurrentDb()
设置 qdf = db.QueryDefs("qryMultiselect")
对于我中的每个 varItem!District.ItemsSelected
strCriteria = strCriteria & ",'" & Me!District.ItemData(varItem) & "'"
下一个变量
如果 Len(strCriteria) = 0 那么
MsgBox "You did not select anything in the Contract field." _
, vbExclamation, "Nothing to find!"
Exit Sub
如果
结束strCriteria = Right(strCriteria, Len(strCriteria) - 1)
对于我中的每个 varItem!MOPointofEntry.ItemsSelected
strCriteria1 = strCriteria1 & ",'" & Me!MOPointofEntry.ItemData(varItem) & "'"
下一个变量
如果 Len(strCriteria1) = 0 那么
MsgBox "You did not select anything in the Name field." _
, vbExclamation, "Nothing to find!"
Exit Sub
如果
结束strCriteria1 = Right(strCriteria1, Len(strCriteria1) - 1)
对于我中的每个 varItem!MOMethodofEntry.ItemsSelected
strCriteria2 = strCriteria2 & ",'" & Me!MOMethodofEntry.ItemData(varItem) & "'"
下一个变量
如果 Len(strCriteria2) = 0 那么
MsgBox "You did not select anything in the Type field." _
, vbExclamation, "Nothing to find!"
Exit Sub
如果
结束strCriteria2 = Right(strCriteria2, Len(strCriteria2) - 1)
strSQL = "SELECT * from TblDataEntry" & _
"WHERE TblDataEntry.District IN(" & strCriteria & ") AND TblDataEntry.MOPointofEntry IN(" & strCriteria1 & ") AND TblDataEntry.MOMethodofEntry IN(" & strCriteria2 & ");"
qdf.SQL = strSQL
DoCmd.OpenQuery "qryMultiselect"
multi select 列表框不适合作为查询条件的来源。这是一个您可以查找并查看其他 Q/A 的主题,了解尝试使用它们的原因和复杂性。
如果可能,建议更改为多个单个列表框。
另一种方法是在多列表记录的table中添加一个复选框字段。然后使用复选框设置子表单作为标记多条记录的方法。