[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte

Hybrid View

  1. #1
    Registriert seit
    Jan 2012
    Beiträge
    1.199
    Ich glaube, DKSPROFI sucht einen Beispiel-Quellcode in VBA, wie man die Verbindung zur iSeries aufbaut. Da ich kein VB-Programmierer bin, weiß ich nicht genau, wie es geht.

    Kann es sein, dass man zunächst in den ODBC Einstellungen des PCs eine ODBC Verbindung einrichten muss? Wenn man IBM Client Access (oder wie es inzwischen auch immer heißen mag) auf dem PC hat, sollte das kein Problem sein. Dann sind die korrekten dlls bereits auf dem PC vorhanden.

    Ich habe auf jeden Fall eben mal folgenden Code mit google gefunden. Da machen die es im VBA für Excel. Vielleicht sind da ja ein paar Stichworte drin, an denen du dich weiterhangeln kannst.

    Dieter

    Sub transfer()
    Dim varState As String
    Set CS = CreateObject(“ADODB.Connection”)
    Set RS = CreateObject(“ADODB.Recordset”)

    ‘Retrieve values from Cells on the sheet to use as selections in the query below
    varState = ActiveSheet.Range(“C2″).Value
    varFrom_Date = ActiveSheet.Range(“B3″).Value
    varTo_Date = ActiveSheet.Range(“B4″).Value

    ‘ ISeries connection String
    ‘ConnectString = “Driver={ISeries Access ODBC Driver};System=10.1.4.1;Uid=xxxxx;Pwd=xxxxx;Librar y=PWRDTA41;QueryTimeout=0″
    ConnectString = “Driver={ISeries Access ODBC Driver};System=10.1.4.1;Library=PWRDTA41;QueryTime out=0″

    CS.Open (ConnectString)
    SqlString = “SELECT hhicusn , C.FFDCNMB, C.FFDSTEB, hhiclsn, SUM(hhiqysa), SUM(hhiexsn), SUM(hhiexac) ” & _
    ” FROM pwrdta41.hhiorddp ” & _
    ” left outer join PWRDTA41.FFDCSTBP c” & _
    ” ON hhicusn = c.ffdcusn and” & _
    ” hhidivn = c.ffddivn and” & _
    ” c.ffdcmpn = hhicmpn and” & _
    ” c.ffddptn = hhidptn” & _
    ” WHERE hhidtei between ” & varFrom_Date & ” and ” & varTo_Date & _
    ” and hhiclsn = ‘105’ and c.ffdsteb = ‘” & varState & “‘” & _
    ” GROUP BY hhicusn, c.ffdcnmb, c.ffdsteb, hhiclsn” & _
    ” ORDER BY hhicusn”
    ‘Message box can be used for debugging the SQL statement
    ‘MsgBox (SqlString)

    RS.Open SqlString, CS
    ‘Clear Previous contents of Cells
    Cells.Select
    ActiveSheet.Range(“A7:Z65535″).ClearContents

    ‘copy the Recordset to excel sheet starting at A7
    ActiveSheet.Range(“A7″).CopyFromRecordset RS

    ‘Close Connection and RecordSet
    RS.Close
    CS.Close

    ‘Reset cell back to A1
    ActiveSheet.Range(“A1″).Select

    End Sub

  2. #2
    Registriert seit
    Jun 2001
    Beiträge
    2.044
    Ich glaube, DKSPROFI sucht einen Beispiel-Quellcode in VBA, wie man die Verbindung zur iSeries aufbaut.
    Kann sein, aber das ist NICHT unser weg!
    Wir erzeugen von der iSeries eine PC Datei, die, mit immer gleichem Namen als Serienbrief Input gilt.
    Da kommt schon mal Chaos raus, aber wir machen das auch nur dort, wo es unumgänglich ist, das der Anwender 'seinen' individuellen Text in Word erfasst und dort auch formatiert.
    Alles was sich aus festen Texten zusammensetzt, oder wo die Formatierung nicht 'das aller aller wichtigste' ist, verwenden wir Lösung1
    (die keine Fehler erzeugt und Optisch locker mit den Word Briefen mithält. Auch durch das automatische Speichern, an' s DMS übergeben oder mailen, ist die Lösung mittlerweile auch von den Anwendern akzeptiert und bevorzugt. Einige Fällen sind schon umgestellt worden da der Anwender nur auf einer Plattform arbeitet (iseries) )
    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  3. #3
    Registriert seit
    Nov 2004
    Beiträge
    331
    Moin,

    vielen Dank an Dieter so etwas schwebte mir vor. Probiere ich mal aus.

    MFG


    DKSPROFI

  4. #4
    Registriert seit
    Aug 2006
    Beiträge
    2.114
    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

  5. #5
    Registriert seit
    Nov 2004
    Beiträge
    331
    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

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    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
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  7. #7
    Registriert seit
    Nov 2004
    Beiträge
    331
    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

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  9. #9
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.012
    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...l.XWPFDocument

    https://poi.apache.org/document/quick-guide-xwpf.html

    Gruß,
    KM

  10. #10
    Registriert seit
    Aug 2006
    Beiträge
    2.114
    Hallo,

    wollte das gerade auch mal ausprobieren, aber trotz gesetzen Flag bei Microsoft ActiveX Data Objects Version 6.0 kann er das nicht kompilieren.

    Click image for larger version. 

Name:	Unbenannt.jpg 
Views:	11 
Size:	210,2 KB 
ID:	382

    GG 4742

  11. #11
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.012
    Du hast ja nur die Recordset-Library angehakt. Es fehlt noch die normale ADO-Library.

    Gruß,
    KM

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    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/lib...(v=vs.85).aspx
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. AS400 Dokumente in Word
    By Mario in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 30-10-06, 11:39
  2. mit word-makro daten aus as/400 holen
    By karin-vogelmann in forum NEWSboard Windows
    Antworten: 0
    Letzter Beitrag: 06-06-03, 15:26
  3. Word/Excel Daten übernehmen auf AS400
    By Bosch in forum NEWSboard Windows
    Antworten: 3
    Letzter Beitrag: 19-05-03, 09:06
  4. CRM, Kalender, Word, Fax, Mail, SMS, Telefon
    By molter in forum NEWSboard load'n'go
    Antworten: 0
    Letzter Beitrag: 05-04-01, 11:17
  5. Antworten: 1
    Letzter Beitrag: 19-12-00, 06:43

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •