使用多选列表框后出现错误 3075-运行查询

Posted

技术标签:

【中文标题】使用多选列表框后出现错误 3075-运行查询【英文标题】:Error 3075-Run Query after multi select listbox is utilized 【发布时间】:2016-06-08 12:48:52 【问题描述】:

在 Access 2010 中有一个搜索表单,可根据特定条件过滤 FY 和 Quarters,并在查询中打开它们。其中一个条件是未绑定的多选列表框,SelectTime(例如,一个人选择“FY15-Q1 和 FY15 Q2”。数据存储在查询中,z_Basis_QSReport5_Proposal Details。我一直收到错误 3075。有人可以帮我写代码?

Private Sub Command56_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("z_Basis_QSReport5_Proposal Details_For_Report")
For Each varItem In Me!SelectTime.ItemsSelected
  strCriteria = strCriteria & ",'" & Me!SelectTime.ItemData(varItem) & "'"
Next varItem
If Len(strCriteria) = 0 Then
  MsgBox "You did not select anything from the list" _
         , vbExclamation, "Nothing to find!"
  Exit Sub
   End If
   strCriteria = Right(strCriteria, Len(strCriteria) - 1)
   strSQL = "SELECT * FROM z_Basis_QSReport5_Proposal Details " & _
            "WHERE z_Basis_QSReport5_Proposal Details.CriteriaFY IN(" &           strCriteria & ");"
   qdf.SQL = strSQL
   DoCmd.OpenQuery "z_Basis_QSReport5_Proposal Details_For_Report"
   Set db = Nothing
   Set qdf = Nothing
End Sub

【问题讨论】:

【参考方案1】:

我同意 @LiamH 的观点,即您需要用方括号将查询名称括起来。

此外,您似乎正在尝试动态更改查询的 SQL - 然后在保存更改之前调用查询

   qdf.SQL = strSQL
   **qdf.close**
   DoCmd.OpenQuery "z_Basis_QSReport5_Proposal Details_For_Report"

话虽如此,我认为您应该查看参数查询或直接打开 SQL。

【讨论】:

【参考方案2】:

创建查询、表和字段名称时;最好的做法是避免使用空格。但是,有一个解决方案。

当您使用 SQL 并且您有一个带有空格的表名时,您需要将其封装在方括号中。像这样:

"SELECT * FROM [z_Basis_QSReport5_Proposal Details] & _
        "WHERE [z_Basis_QSReport5_Proposal Details].CriteriaFY .....

编辑

之前,我提到您可能应该在查询名称周围加上方括号,但是如果您查看示例here,您会发现在这种情况下空格是可以接受的。

如果我们返回到您的查询,strcriteria 是一个字符串,因此您需要将单引号括起来:

 strSQL = "SELECT * FROM [z_Basis_QSReport5_Proposal Details] " & _
          "WHERE [z_Basis_QSReport5_Proposal Details].CriteriaFY IN('" & strCriteria & "');"

此外,您需要先关闭查询,然后才能运行它。所以qdf.close必须在docmd.openquery()之前。

【讨论】:

非常感谢利亚姆!但现在有一个运行时错误 7874 说它找不到 z_Basis_QSReport5_Proposal Details_For_Report

以上是关于使用多选列表框后出现错误 3075-运行查询的主要内容,如果未能解决你的问题,请参考以下文章

Access - 使用多选列表框 VBA 从表单值更新查询

运行查询时出现运行时错误 3075 MS Access VBA

在列表中创建 Spark 数据框后如何使用它们?

谁有多选下拉列表含模糊搜索功能的js组件,谢谢

访问运行时错误 3075

带有子查询的 SQL 查询上的 MS Access VBA 运行时错误 3075