【发布时间】:2014-10-06 00:54:21
【问题描述】:
在 Access 2010 中有一个搜索表单,可以根据特定条件过滤项目并以另一种表单打开它们。条件之一是未绑定的多选列表框 txtArea。数据存储在表 ProjectActivity 中。还有一个名为 LookupArea 的表,它将 ProjectActivity 按区域划分为 North、South 或 Both(即,在北部和南部区域都有部分)。
我还有一个查询,qrySelectArea:
SELECT DISTINCT Area FROM LookupArea;
这是我正在尝试使用的代码:
Private Sub OpenReport_Click()
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Dim varItem As Variant
Dim strCriteria As String
Dim strSQL As String
Set db = CurrentDb()
Set qdf = db.QueryDefs("qryLookupArea")
If Me!txtArea.ItemsSelected.Count > 0 Then
For Each varItem In Me!txtArea.ItemsSelected
strCriteria = strCriteria & "ProjectActivity.Area = " & Chr(34) _
& Me!.ItemData(varItem) & Chr(34) & "OR "
Next varItem
strCriteria = Left(strCriteria, Len(strCriteria) - 3)
Else
strCriteria = "ProjectActivity.Area Like '*'"
End If
strSQL = "SELECT * FROM ProjectActivity " & _
"WHERE " & strCriteria & ";"
qdf.SQL = strSQL
DoCmd.OpenQuery "qryLookupArea"
DoCmd.Close acForm, "Search Form"
DoCmd.Open "ReportForm", acNormal
DoCmd.Close acQuery, "qryLookupArea"
End Sub
当我单击 OpenReport 按钮时,查询会运行(我可以在报告表单打开时在后台看到它),但无论我如何过滤它,报告表单都会显示所有项目。我在 VBA 中不是超级大,所以我非常感谢任何建议。
【问题讨论】:
标签: ms-access listbox vba ms-access-2010