View Full Version : AS/400 und Word
Moin,
vielen Dank an Dieter so etwas schwebte mir vor. Probiere ich mal aus.
MFG
DKSPROFI
KingofKning
09-07-15, 07:41
Hallo,es gibt bei den Jungs ein News Letter " SmartTools Access Weekly vom 9.7.2015" die bringen immer wieder Tipps wie man was in Word / Excel etc. besser machen kann. Ab und zu auch Makros und so. Habe leider nicht immer die Zeit das jeden Tag zu lesen und auszuprobieren, aber vielleicht suchst Du ja ma bei den auf der Hompage. __GG
Moin *all,
ich hole die Frag noch einmal aus der Versenkung. Nachdem ich das Thema erfolgreich ignorieren konnte, habe ich den Ball wieder bekommen und stehe jetzt wie damals völlig auf dem Schlauch.
Kann mit jemand ein Beispiel Code für eine VBA-Verbindung zu der AS/400 aus WORD helfen?
Das habe ich zur Zeit, googeln tue ich schon seit ein paar Tagen, brachte mich aber nicht wirklich weiter.
Dim Connection
Set OBBCString = CreateObject("ADODB.Connection")
Connection = "ODBC;Driver={Client Access ODBC Driver (32-bit)};" & _
"DSN=DSNName;" & _
"SYSTEM=IP;" & _
"Library=Bibliothek" & _
"UID=" & UserId & ";" & _
"PWD=" & UserPw & ";"
Set ODBCRecord = CreateObject("ADODB.Recordset")
OBBCString.Open Connection
ODBCRecord.Open ("Select Feld1 Feld2, Feld3" & _
" From Bibliothek.Datei " & " Where Key_1 = " & Variable1 & _
" And Key2 = " & Variable2 & _
" And Key3 = " &Variable3), Connection
Textfeld1 = Feld1
usw.
Da das kein Fehler bringt, gehe ich davon aus, dass die AS/400 Verbindung OK ist.
mfg
DKSPROFI
Da du aber doch Programmierer bist, denke ich doch dass du es richtig machen willst.
Hierzu gehst du am Besten in der VBA-IDE in die Verweise und setzt das Häkchen vor "Microsoft ActiveX Data Object Library". Die Version ist je nach Windows dann 2.8, 6, oder ggf. 10.
Letztlich ist es aber egal.
Die Variablen können dann gezielt als ADODB.Connection, ADODB.Command, ADODB.Recordset definiert werden, CreateObject entfällt, stattdessen nimmt man New.
Korrekt wäre dann:
dim MyConnect as ADODB.Connection
set MyConnect = new ADODB.Connection
Für wiederkehrende Selects sollte man ein Command verwenden:
dim MyCmd as ADODB.Command
set MyCmd = new ADODB.Command
MyCmd.CommandText = "Select Feld1 from MyLib.MyFile where Key1 = ? and Key2 = ? and Key3 = ?"
set MyCmd.ActiveConnection = MyConnect
Zur Ausführung dann einfach:
MyCmd(0) = Var1
MyCmd(1) = Var2
MyCmd(2) = Var3
Dim MyRecordset as adodb.Recordset
Set MyRecordset = MyCmd.Execute
do while MyRecordset.EOF = false
TextFeld = MyRecordset!Feld1
MyRecordset.MoveNext
loop
MyRecordset.Close
MyConnect.Close
Moin,
vielen Dank, es scheiter bei mir aber schon an der Syntax. Das spielchen mach ich ja nur, wil ichn es muss, und Du weißt "Schulung kosten Geld"
Dein Code eingefügt, dann gibt schon Fehler bei der Definition.
"Fehler beim Kompilieren"
Benutzerdfinierter Typ nicht definiert
dim MyConnect as ADODB.Connection
mfg
DKSPROFI
Ich sagte ja, in der VBA-IDE den "Verweis" hinzufügen:
Menü "Extras" => "Verweise" => runterblättern bis "Microsoft ActiveX Data Objects" und bei der letzten Version (bei mir ist es 6.1) das Flag setzen.
Hallo,
liegen evtl. auch ein paar Java-Skills vor? Dann wäre vielleicht Apache POI (XWPF) etwas für Dich.
Ich hatte vor einigen Jahren mal ein paar Tests mit dem Vorgängerprojekt HWPF gemacht. Allerdings wurde das Tool nicht weiterentwickelt. Jetzt gibt es aber XWPF (für DOCX-Dokumente). Damit könnte man mittels Java einfache Word-Dokumente erstellen und über JDBC entsprechende AS/400-Daten einfügen.
Das wäre wahrscheinlich sinnvoller als umständlich über VB oder VBA und Makros da irgendwas hinzubiegen.
Schau Dir halt mal folgende Links an:
http://www.programcreek.com/java-api-examples/index.php?api=org.apache.poi.xwpf.usermodel.XWPFDo cument
https://poi.apache.org/document/quick-guide-xwpf.html
Gruß,
KM
KingofKning
07-06-17, 07:31
Hallo,
wollte das gerade auch mal ausprobieren, aber trotz gesetzen Flag bei Microsoft ActiveX Data Objects Version 6.0 kann er das nicht kompilieren.
382
GG 4742
Du hast ja nur die Recordset-Library angehakt. Es fehlt noch die normale ADO-Library.
Gruß,
KM
Die Recordset-Library wird überhaupt nicht benötigt.
Nimm die 6.1 ohne Recordset.
Wenn du in der IDE dann die F2 drückst, findest du in der Dropdownliste die Lib ADODB und dann in den Listen darunter die Objekte und Konstanten dieser Lib.
Dokumentation und Beispiele:
https://msdn.microsoft.com/de-de/library/ms677497(v=vs.85).aspx