ich eine SQL-Abfrage in Access 2010 mit Tabellen zu einem Pervasive Client von ODBC verknüpft zu schreiben. Wenn ich die Tabellen öffne, funktioniert die ODBC-Verbindung gut und zeigt mir die Werte in der Tabelle an. Die Abfrage besteht aus einer Reihe von Abfragen, die UNION ALL verwenden, um sie zusammenzuführen. Vor kurzem habe ich einen anderen UNION ALL-Abfrage und diese Störung erhalte:Warum erhalte ich eine ODBC-Verbindung Fehler fehlgeschlagen, wenn UNION ALL in Access?
Wenn ich jeden Teil der Abfrage separat laufen, es läuft gut. Die Abfrage, die ich über UNION ALL verbinde, hat genau die gleiche Anzahl von Feldern. Tatsächlich ist die neue Abfrage bis auf einen Teil der where-Klausel nahezu identisch. Kann jemand erklären, warum das nicht funktioniert?
Hier ist die Abfrage, die nicht funktioniert:
SELECT SUM(PR_INP.Futa_5) + SUM(PR_SUTA.Amt_10) AS AMT, '67360' AS DEPT, CDATE(PaidOn) AS PayDate, 'ER Tax Exp: FUTA/SUTA - Dept 10, 11, 12' AS Memo FROM PR_INP INNER JOIN PR_SUTA ON PR_SUTA.Loc_No = PR_INP.Loc_No AND PR_SUTA.Div_No = PR_INP.Div_No AND PR_SUTA.Emp_No = PR_INP.Emp_No AND PR_SUTA.Pay_Date = PR_INP.Pay_Date WHERE PR_INP.Loc_No = 2170 AND PR_INP.Div_No = 100 AND PR_INP.Pay_Date = CDATE(PaidOn) AND Def_Dept IN ('010', '011', '012')
UNION ALL
SELECT SUM(PR_INP.Futa_5) + SUM(PR_SUTA.Amt_10) AS AMT, '66360' AS DEPT, CDATE(PaidOn) AS PayDate, 'ER Tax Exp: FUTA/SUTA - Dept 13' AS Memo FROM PR_INP INNER JOIN PR_SUTA ON PR_SUTA.Loc_No = PR_INP.Loc_No AND PR_SUTA.Div_No = PR_INP.Div_No AND PR_SUTA.Emp_No = PR_INP.Emp_No AND PR_SUTA.Pay_Date = PR_INP.Pay_Date WHERE PR_INP.Loc_No = 2170 AND PR_INP.Div_No = 100 AND PR_INP.Pay_Date = CDATE(PaidOn) AND Def_Dept IN ('013')
Wenn ich sie laufen getrennt, gibt es keinen Fehler:
SELECT SUM(PR_INP.Futa_5) + SUM(PR_SUTA.Amt_10) AS AMT, '67360' AS DEPT, CDATE(PaidOn) AS PayDate, 'ER Tax Exp: FUTA/SUTA - Dept 10, 11, 12' AS Memo FROM PR_INP INNER JOIN PR_SUTA ON PR_SUTA.Loc_No = PR_INP.Loc_No AND PR_SUTA.Div_No = PR_INP.Div_No AND PR_SUTA.Emp_No = PR_INP.Emp_No AND PR_SUTA.Pay_Date = PR_INP.Pay_Date WHERE PR_INP.Loc_No = 2170 AND PR_INP.Div_No = 100 AND PR_INP.Pay_Date = CDATE(PaidOn) AND Def_Dept IN ('010', '011', '012')
SELECT SUM(PR_INP.Futa_5) + SUM(PR_SUTA.Amt_10) AS AMT, '66360' AS DEPT, CDATE(PaidOn) AS PayDate, 'ER Tax Exp: FUTA/SUTA - Dept 13' AS Memo FROM PR_INP INNER JOIN PR_SUTA ON PR_SUTA.Loc_No = PR_INP.Loc_No AND PR_SUTA.Div_No = PR_INP.Div_No AND PR_SUTA.Emp_No = PR_INP.Emp_No AND PR_SUTA.Pay_Date = PR_INP.Pay_Date WHERE PR_INP.Loc_No = 2170 AND PR_INP.Div_No = 100 AND PR_INP.Pay_Date = CDATE(PaidOn) AND Def_Dept IN ('013')
Ich habe UNION ALL zu anderen Abfragen verwendet und sie funktionieren auch:
SELECT SUM(PR_INP.Futa_5) + SUM(PR_SUTA.Amt_10) AS AMT, '67360' AS DEPT, CDATE(PaidOn) AS PayDate, 'ER Tax Exp: FUTA/SUTA - Dept 10, 11, 12' AS Memo FROM PR_INP INNER JOIN PR_SUTA ON PR_SUTA.Loc_No = PR_INP.Loc_No AND PR_SUTA.Div_No = PR_INP.Div_No AND PR_SUTA.Emp_No = PR_INP.Emp_No AND PR_SUTA.Pay_Date = PR_INP.Pay_Date WHERE PR_INP.Loc_No = 2170 AND PR_INP.Div_No = 100 AND PR_INP.Pay_Date = CDATE(PaidOn) AND Def_Dept IN ('010', '011', '012')
UNION ALL
SELECT SUM(Fica_5 + IIF(PR_MAST.Gross_Yr >= 200000.00, Medc_6, Medc_5)), '63330', CDATE(PaidOn), 'ER Tax Exp: Federal, SS, Medicare- Dept 5, 6' FROM PR_INP INNER JOIN PR_MAST ON PR_MAST.Loc_No = PR_INP.Loc_No AND PR_Mast.Emp_No = PR_INP.Emp_No WHERE PR_INP.Loc_No = 2170 AND PR_INP.Div_No = 100 AND Pay_Date = CDATE(PaidOn) AND PR_INP.Def_Dept IN ('005', '006')
Ich habe versucht, auch die Art der Abfrage zu einer Pass-Through-Abfrage zu ändern, aber ich habe noch erhalten die ODBC - Anruf fehlgeschlagen Nachricht.
Was geht hier vor? Warum würden zu separate Abfragen, die separat ausgeführt werden, einen ODBC-Fehler generieren, wenn sie nicht gemeinsam verwendet werden? Und wie kann ich das beheben, damit es läuft?
können relevant sein: http://stackoverflow.com/questions/13177354/union-query-access-on-an-interbase-db –
Dank. Ich habe das selbst gefunden. Ich habe alles versucht, aber ich kann nicht herausfinden, warum meins nicht funktioniert, da jeder Teil der Abfrage separat funktioniert. – boilers222
Haben Sie die UNION ALL-Abfrage über das Pervasive Control Center oder ein anderes ODBC-Tool ausgeführt? Funktioniert es oder gibt es einen Fehler? – mirtheil