使用Microsoft Access表单从多个列表框,文本框和组合框过滤数据

时间:2019-01-14 18:23:05

标签: combobox textbox multi-select

我仍然无法做到这一点而不会出错。

对于我正在做的项目,我正在使用Microsoft访问权限创建一个数据库,该数据库将根据从多个多选列表框,多个文本框输入的信息来过滤ONE表中的报表数据和一个组合框。

我知道如何对一个“多选”列表框进行操作,但是在添加其他我的多选列表框时遇到了问题。是否可以仅从一个来源完成所有操作,还是我将不得不使用多个表?

如果我能够从一个表(作为源)中执行此操作,我将如何执行该操作并添加文本框和组合框?如有必要,我可以提供我的代码。

https://access-programmers.co.uk/forums/showthread.php?t=286294&page=2

代码:

私人子Command62_Click()

将Dim db作为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) & "'"

下一个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) & "'"

下一个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) & "'"

下一个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”&_

“在哪里TblDataEntry.District IN(”&strCriteria&“)和TblDataEntry.MOPointofEntry IN(”&strCriteria1&“)和TblDataEntry.MOMethodofEntry IN(”&strCriteria2&“);”

qdf.SQL = strSQL

DoCmd.OpenQuery“ qryMultiselect”

1 个答案:

答案 0 :(得分:0)

多重选择列表框不适合作为查询条件的来源。这是一个主题,您可以查询其他问题,以了解尝试使用它们的原因和复杂性。

如果可能,建议更改为多个单个列表框。

另一种方法是将复选框字段添加到多列表记录的表中。然后使用复选框作为标记多个记录的方法来设置子表单。