Anmelden

View Full Version : AS/400 und Word



Seiten : 1 [2] 3

DKSPROFI
08-07-15, 13:39
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

DKSPROFI
06-06-17, 11:39
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

Fuerchau
06-06-17, 12:18
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

DKSPROFI
06-06-17, 13:17
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

Fuerchau
06-06-17, 13:41
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.

KM
07-06-17, 07:21
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

KM
07-06-17, 07:46
Du hast ja nur die Recordset-Library angehakt. Es fehlt noch die normale ADO-Library.

Gruß,
KM

Fuerchau
07-06-17, 08:26
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