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

时间:2016-06-08 12:48:53

标签: listbox access-vba access

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

DATEDIFF(year,CAST(YYYYMMDD as date), CAST(RIGHT(MMYYYY,4)+LEFT(MMYYYY,2)+'01' as date)) 

2 个答案:

答案 0 :(得分:0)

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

当您使用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()

答案 1 :(得分:0)

我同意@LiamH您需要用方括号括起查询名称。

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

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

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