2017-05-11 2 views
0

Ich bin ein Haken in meinem SQL und ich kann nicht scheinen, die Lösung herauszufinden. Ich habe den Teil des Codes isoliert, der den Fehler verursacht, aber ich kann es nicht beheben. Das Problem ist im (TimeValue([tblDeptTime]![DeptTime]) BETWEEN (TimeValue([tblAllSchedules]![MX Out Date/Time]) - [tblDeptWindowsLeadTimes]![NBLT]) AND TimeValue([tblAllSchedules]![MX Out Date/Time]) Teil meiner SQLHaving Aussage. Der Fehler besagt, dass ich versuche, eine Abfrage auszuführen, die den angegebenen Ausdruck nicht enthält [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' Dies ist der erste Teil meiner SQLHaving Anweisung.MS Access 2010 VBA SQL-Fehler 3122

Hier ist der gesamte SQL-Code. Danke für deine Hilfe.

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 
+0

Benötigen Sie einfach ein Leerzeichen am Ende Ihrer HAVING-Zeile? –

+0

lol, ich wünschte. Ich muss gelöscht haben, als ich meine letzte Bearbeitung gemacht habe, aber es ist jetzt da und hat immer noch den gleichen Fehler. –

+0

Haben Sie versucht, es direkt in SQL auszuführen? Normalerweise, wenn ich auf ein Problem wie dieses stoße, liegt es daran, dass ich vergessen habe, eine Spalte in meine Auswahlliste aufzunehmen. –

Antwort

0

Ich fand es heraus. Ich musste die (TimeValue([tblDeptTime]![DeptTime]) BETWEEN (TimeValue([tblAllSchedules]![MX Out Date/Time]) - [tblDeptWindowsLeadTimes]![NBLT]) AND TimeValue([tblAllSchedules]![MX Out Date/Time]) Anweisung in eine Where Anweisung verschieben und jetzt funktioniert es perfekt. Danke Leute.