PDA

View Full Version : DB2 /AS400 Datei in Excel einlesen



Zotty
23-10-08, 16:36
Hallo,

ich möchte aus einer Datei von der AS400 die Daten direkt auslesen. Bisher habe ich es über ein Query und dann per Datenübertragung in eine Exeldatei übertragen. Diesen Schritt möchte ich umgehen. Habe auch schon was probiert bekomme aber leider einen Fehler.

CODE:
Sub test()
Dim db As DAO.Database
Dim rs As Recordset
Dim sql$
sql = (" SELECT BIMSCH.ASMKSN, BIMSCH.EELIME01, BIMSCH.TEXT FROM S44F1576.RUDQRYR710.BIMSCH BIMSCH")
Dim sConn As String
sConn = "ODBC;DSN=RUDQRYR710"
Set db = DBEngine.OpenDatabase(sConn & ";Data Source=RUDQRYR710.Bimsch", dbDriverNoPrompt, False, sConn)
' hier kommt der Fehler 3078
Set rs = db.OpenRecordset(Bimsch)
Tabelle1.Range("A1").CopyFromRecordset rs
rs.Close
db.Close
End Sub

Welcher Eintrag ist hier falsch.
Mit dem Überwachungsfenster sehe ich die Datei (inhalt der Feldern)

Habe es auch mit ADODB und DAO probiert. Leider kein Erfolg Fehlermeldung.:confused:

Wäre über eine Hilfe sehr dankbar
;)
Zotty

Fuerchau
23-10-08, 17:17
Dein Problem ist wohl dbDriverNoPrompt!
Du musst eine Anmeldung "User Id" und "Password" mitgeben.

ADODB funktioniert auf jeden Fall besser, da der DAO-Overhead nicht mitgeschleppt wird.

Suche mal hier im Forum.

Allerdings ist MS-Query besser geeignet, da du dich um Spaltenzuordnungen nicht kümmern musst.

Ausserdem können Parameter in Zellen mitgegeben werden und der Refresh ist nur ein Click.

Zotty
23-10-08, 19:09
Hallo,

vielen Dank für die schnelle Antwort. Der Fehler kommt erst beim OpenRecordset.
Als ich es mit ADO probiert habe kam der Fehler beim Öffnen der Datenbank ( liegt glaub ich am Provider usw.oder es fehlen irgendwelche DLL's) . habe auch schon im Forum zwei tage gesucht und nichts gefunden (was den fehlercode betrifft). Das Query wird über die AS 400 abgefragt und daraus wird eine Datei generiert. Ich möchte aber nun direkt auf die Datei gehen ( wird dann in einen Array geladen und weiter verarbeitet).

Zotty

Fuerchau
24-10-08, 08:38
Der Unterschied bei ADO und DAO ist eben der, dass ADO beim Connect die Verbindung aufbaut und DAO eben erst beim ersten Zugriff (ODBC-Workspace).

Nimm auf jeden Fall ADO, Treiber von ADO sind immer vorhanden und können auch eben ODBC verwenden.
Durch DSN= wird der richtige ODBC-Provider automatisch gezogen.

Ergänze auf jeden Fall mal:
MyCon.Properties("Prompt")=adPromptComplete