在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))
答案 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。