【问题标题】:Multi-Select Listbox in Access 2010Access 2010 中的多选列表框
【发布时间】: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


    【解决方案1】:

    最简单的方法是,当您打开表单时,您需要通过以下选择标准(只需确保您的 'strCriteria' 是有效的语法(即“ProjectActivity.Area Like '*'”):

    DoCmd.OpenForm "ReportForm", acNormal, ,  strCriteria
    

    【讨论】:

      猜你喜欢
      • 2021-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-19
      • 2017-12-12
      • 2023-03-26
      相关资源
      最近更新 更多