ich versuche mich seit einigen Tagen, eine Datenbankabfrage aus eiem externen System (AS 400) in Excel zu integrieren. Hierbei soll die Auswahl der Datensätze über eine vorherige Eingabe von Daten erfolgen (Eingabe der Daten in Tabelle "Abfrage" D7 und D8, Ausgabe der Daten ind Tabelle "Datentabelle").
Jedoch erhalte ich bei dem Befehl ".Refresh BackgroundQuery:=False" immer die Fehlermeldung "Laufzeitfehler '1004': SQL-Syntaxfehler". Ich vermute, das ich bei dem Integrieren der Variablen im SQL-Strin einen Fehler habe, finde den aber nicht. Anbei der Komplette Sub:
Sub data_query()
Dim command_sql, host, host_user, PW, library, conection As String, von, bis As Integer
von = Range("D7").Value
bis = Range("D8").Value
command_sql = "SELECT TPKUSR, TPDTKE, Sum(PTPKMEN) as [Menge], Sum(tptdau/3600) as [Stunden], Sum(tpkmen)/Sum(tptdau)*3600 as DS " & _
"FROM xxx.xxx.PHISTTP PHISTTP " & _
"WHERE (TPKONZ='WGL') AND (TPFIRM='001') AND TPDTE>= " & bis & " And TPDTE "group by tpkusr, tpdtke " & _
"order by tpkusr, tpdtke, Menge, Stunden, DS "
host = "xxx"
host_user = "xxx"
PW = "xxx"
library = "xxx"
conection = "ODBC;DRIVER={iSeries Access ODBC Driver};UID=" & host_user & _
";PWD=" & PW & ";SYSTEM=" & host & ";DBQ=" & library & ";DFTPKGLIB=QGPL;" & _
"LANGUAGEID=ENU;PKG=QGPL/DEFAULT(IBM)," & _
"2,0,1,0,512;SIGNON=1"
With Sheets("Datentabelle").QueryTables.Add(Connection:=conection, Destination:=Sheets("Datentabelle").Range("A3"))
.CommandText = command_sql
.Refresh BackgroundQuery:=False
End With
Danke.
Gruss Andy