Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
700to704
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
700to704
700to704
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Abfrage auf AS/400 per VBA die 2.

Abfrage auf AS/400 per VBA die 2.
28.11.2005 09:50:26
Röse
Hallo,
ich habe am Wochenende noch etwas rumgebastelt!
Ich versuche also per VBA eine Abfrage auf die AS/400 zu setzen, den Filter
dabei aber Variabel zu halten. Rus gekommen ist dabei bisher folgendes:

Sub AS400()
Dim i
i = Tabelle1.Cells(1, 1)
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DRIVER={Client Access ODBC Driver (32-bit)};UID=TR142ROESE;SYSTEM=UNNASPED;DBQ=QGPL CTRL_HI05;DFTPKGLIB=QGPL;XLATEDLL=;LANGUAGE" _
), Array( _
"ID=ENU;SORTTABLE=;TRACEFILENAME=C:\Dokumente und Einstellungen\Gellermann\Eigene Dateien\IBM\Client Access\Service\Trace-Dateie" _
), Array( _
"n;PKG=QGPL/DEFAULT(IBM),2,0,1,0,512;QAQQINILIB=;DESC=Client Access Express ODBC-Datenquelle;TRANSLATE=1;" _
)), Destination:=Range("A6"))
.CommandText = Array( _
"SELECT SD_STAT06.NDL, SD_STAT06.KZ, SD_STAT06.REL, SD_STAT06.REL_BEZ, SD_STAT06.A_NAME, SD_STAT06.A_ORT, SD_STAT06.E_NAME, SD_STAT06.E_ORT, SD_STAT06.F_NAME, SD_STAT06.MMX, SD_STAT06.KW, SD_STAT06.SDG" _
, _
", SD_STAT06.KG_TATS, SD_STAT06.KG_FRPF, SD_STAT06.UMSATZ" & Chr(13) & "" & Chr(10) & "FROM DAIDALOS.CTRL_HI05.SD_STAT06 SD_STAT06" & Chr(13) & "" & Chr(10) & "WHERE (SD_STAT06.NDL='142') AND (SD_STAT06.MMX= '05') AND (SD_STAT06.REL =" & i & ")")
.Name = "Abfrage von Test2"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
End Sub

Der relevante Punkt ist glaube ich folgender:
"WHERE (SD_STAT06.NDL='142') AND (SD_STAT06.MMX= '05') AND (SD_STAT06.REL =" & i & ")")
Das "i" habe ich oben ja als Tebelle1.cells(1,1).value definiert, in dieser besagten Zelle steht nun 1388!!
Lasse ich den Code so laufen, wird eine Verbindung aufgebaut und der Statusleiste ist zu enthemen, dass 10 Datensätze eingelesen wurden ( die aber nicht in der Tabelle erscheinen)! Danach bricht das Makro ab mit dem Hinweis auf eine "allgemeinen ODBC Fehler", der Debugger steht dann der Zeile:
.Refresh BackgroundQuery:=False
wenn ich das i manuell im Code durch 1388 ersetze : (SD_STAT06.REL = '1388')
läuft der Code sauber durch!
Hat jemand eine Idee, was hier falsch ist!
Vielen Dank für Anregungen,
TR

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Abfrage auf AS/400 per VBA die 2.
28.11.2005 10:55:37
Luschi
Hallo TR,
wenn das Ergebnis so aussehen soll: (SD_STAT06.REL = '1388')
dann muß man den SQL-String so schreiben: (SD_STAT06.REL ='" & i & "')").
'1388' bedeutet, das die Variable i mit dem einfachen Hochkomma vorn und hinten maskiert
werden muß.
Da die Änderung auf dem Bildschirm im I-Explorer kaum sichtbar sind (bei mir jedenfalls), kopiere den gesammten Text in den Texteditor von Windows (Notepad) und schau es Dir dort mal an.
Gruß von Luschi
aus klein-Paris
Danke
28.11.2005 11:00:59
Röse
Vielen Dank!!!
Ich werd verrückt, das ist es!!!!
Da wäre ich nie drauf gekommem!
Danke
Thorsten
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige