MS Access 2010 VBA SQL 错误 3122

MS Access 2010 VBA SQL error 3122

我的 SQL 遇到了问题,我似乎想不出解决办法。我已经隔离了导致错误的代码部分,但我似乎无法修复它。问题出在我的 SQLHaving 语句的 (TimeValue([tblDeptTime]![DeptTime]) BETWEEN (TimeValue([tblAllSchedules]![MX Out Date/Time]) - [tblDeptWindowsLeadTimes]![NBLT]) AND TimeValue([tblAllSchedules]![MX Out Date/Time]) 部分。

错误指出我正在尝试执行不包含指定表达式的查询 [Schedule Name])=[Forms]![frmStationReports]![cbxSchedName]) AND (([tblAllSchedules]![Arvl Sta])=[Forms]![frmStationReports]![cbxArvlSta]) AND DateValue([tblAllSchedules]![MX Out Date/Time]) >= #" & FMon & "# AND DateValue([tblAllSchedules]![MX Out Date/Time]) <= #" & LSun & "#) AND ((tblAllSchedules.Type)='NB'这是我的 SQLHaving 语句的第一部分。

这是完整的 SQL 代码。感谢您的帮助。

SQLInsert = "INSERT INTO tblDeptWindowNB ( [Schedule Name], [Arvl Sta], [Day], [Date], Metal, Type, [Key ID], [LAA NB], [LUS NB], [Sub Fleet], CompSchedName, CompSchedDay, DeptTime ) "
    SQLSelect = "SELECT [Schedule Name], [Arvl Sta], Format(DateValue([tblAllSchedules]![MX Out Date/Time]),'ddd') AS [Day], DateValue([tblAllSchedules]![MX Out Date/Time]) AS [Date], Metal, Type, [Key ID], [LAA NB], [LUS NB], [Sub Fleet], '" & csName & "', Sum(DateDiff('d', '" & FMon & "' ,  [tblAllSchedules]![MX In Date/Time])+ 1) AS CompSchedDay, [tblDeptTime]![DeptTime] "
    SQLFrom = "FROM tblDeptTime, tblAllSchedules, tblDeptWindowsLeadTimes "
    SQLGroup = "GROUP BY [Schedule Name], [Arvl Sta], DateValue([tblAllSchedules]![MX Out Date/Time]), [tblDeptTime]![DeptTime], Metal, Type, [Key ID], [LAA NB], [LUS NB], [Sub Fleet] "
    SQLHaving = "HAVING ((([tblAllSchedules]![Schedule Name])=[Forms]![frmStationReports]![cbxSchedName]) AND (([tblAllSchedules]![Arvl Sta])=[Forms]![frmStationReports]![cbxArvlSta]) AND DateValue([tblAllSchedules]![MX Out Date/Time]) >= #" & FMon & "# AND DateValue([tblAllSchedules]![MX Out Date/Time]) <= #" & LSun & "#) AND ((tblAllSchedules.Type)='NB') AND (TimeValue([tblDeptTime]![DeptTime]) BETWEEN (TimeValue([tblAllSchedules]![MX Out Date/Time]) - [tblDeptWindowsLeadTimes]![NBLT]) AND TimeValue([tblAllSchedules]![MX Out Date/Time]))"
    SQLOrderBy = "ORDER BY [Schedule Name], [Arvl Sta], DateValue([tblAllSchedules]![MX Out Date/Time])"

    SQLStatement = SQLInsert & SQLSelect & SQLFrom & SQLGroup & SQLHaving & SQLOrderBy & ";"

    DoCmd.RunSQL SQLStatement

我明白了。我需要将 (TimeValue([tblDeptTime]![DeptTime]) BETWEEN (TimeValue([tblAllSchedules]![MX Out Date/Time]) - [tblDeptWindowsLeadTimes]![NBLT]) AND TimeValue([tblAllSchedules]![MX Out Date/Time]) 语句移动到 Where 语句中,现在它可以完美运行。谢谢大家。