[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Jan 2010
    Beiträge
    83
    genauso umgesetzt,
    wenn ich aber das jetzt absetze:

    Dim cnn As ADODB.Connection
    Dim CallCmd As String
    cnn = New ADODB.Connection

    cnn.Open("Provider=IBMDA400;" & _
    "Data Source=SERVERNAME;" & _
    "User ID=USER;" & _
    "Password=PW;")
    CallCmd = "CALL PGM(TRUMPFH/THYS00CWEB)"
    cnn.Execute("CALL QSYS.QCMDEXC ('" & CallCmd & "', " & Format(Len(CallCmd), "0000000000.00000") & ")")
    cnn.Close()

    werden die Daten nicht in die PF-Datei geschrieben.

  2. #2
    Registriert seit
    May 2007
    Beiträge
    295
    Wie schauts aus wenn du das CL-Programm direkt auf der Befehlszeile der AS/400 aufrufst?
    Wird dann deine PF gefüllt oder auch nicht?
    Greets
    Christian
    Anwendungsentwickler und ein bissal Systemoperator
    https://github.com/prsbrc
    LinkedIn

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Wenn du den IBMDA400 verwendest, gibt es unterscheidungen in der CALL-Syntax.
    Wobei ich i.M. nicht weiß, welche IBMDA400 wann verwendet (muss man mal nachlesen).

    CALL ohne Klammern entspricht meines Wissens dem Call einer SQL-Prozedur.

    Ansonsten
    {CALL ...}
    oder
    {{CALL ...}}

    das bleibt auszuprobieren.

    Ausserdem kannst du dir den Aufruf des QCMDEXC sparen, du kannst dein programm auch direkt aufrufen:

    {CALL MYLIB.MYPGM}

    Hatten wir das nicht schon mal ?

    Was gibt denn der Execute für eine Fehlermeldung zurück ?
    Wie siehts mit der Bibliotheksliste aus, braucht da dein CLP noch was in *LIBL ?
    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

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    In folgendem Beitrag siehst du die Lösung (ganz am Ende), dass der IBMDA400 mit den CALL's sehr spezifisch umgeht.
    Man sollte in diesem Fall doch besser den ODBC-Treiber verwenden, wie das gemacht wird, steht auch in dem Beitrag.

    Suche mal nach "IBMDA400 CALL".
    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

  5. #5
    Registriert seit
    Jan 2010
    Beiträge
    83
    bibliothek ist in libl vorhanden.
    auch der copy befehl scheint nicht zu funktionieren
    nichts funktioniert, bin am verzweifeln...

    vielleicht seht Ihr einen Fehler:

    CLP (TRUMPFH/THYS00CWEB):
    PGM
    /* */
    /* */
    /* WRKLNK QNTC FÜR VERBINDUNG */
    /* */
    MKDIR DIR('/QNTC/WEB1')
    MONMSG MSGID(CPF0000)
    /* */
    CPYFRMIMPF FROMSTMF('QNTC/WEB1/THYSSENEIN/hoericht') +
    TOFILE(SWDTA/THYS00H) MBROPT(*REPLACE) +
    RCDDLM(*CRLF) STRDLM(*NONE) FLDDLM('#')

    Visual Basic:

    Dim cnn As ADODB.Connection
    Dim CallCmd AsString
    cnn = New ADODB.Connection
    cnn.Open("Provider=IBMDA400;" & _
    "Data Source=SERVER;" & _
    "User ID=USER;" & _
    "Password=PWD;")


    CallCmd = "{CALL TRUMPFH.THYS00CWEB}"
    cnn.Execute(CallCmd)
    cnn.Close()

    Arbeite hier mit strpdm, also auf /400 Basis
    Auch doppelte geschweifte Klammern beim Call blieb ohne Erfolg...

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Gibt der execute einen Fehler zurück (Err-Objekt)?
    Wenn nicht, wird dein Programm wohl ausgeführt.
    Funktioniert dein CLP denn beim Aufruf auf der AS/400 ?
    Verwendest du auf der AS/400 den selben User wie per ODBC ?
    Ist der User auf dem Server WEB1 mit dem selben Kennwort als lokaler User registriert ?
    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
    May 2007
    Beiträge
    295
    Wenn der Copy schon nicht funktioniert sollte der JobLog was dazu sagen (DSPJOBLOG ... wenn du das CL direkt auf der Befehlszeile aufgerufen hast).
    Greets
    Christian
    Anwendungsentwickler und ein bissal Systemoperator
    https://github.com/prsbrc
    LinkedIn

  8. #8
    Registriert seit
    Jan 2010
    Beiträge
    83
    --> kein Error, VBA-Programm wird ausgeführt.

    Funktioniert dein CLP denn beim Aufruf auf der AS/400 ?

    -->Getestet - einwandfrei -->
    auf der AS400 per: CALL THYS00CWEB

    Verwendest du auf der AS/400 den selben User wie per ODBC ?

    --> ja (auf der AS400, WEB1 und ODBC alle gleich)

    Ist der User auf dem Server WEB1 mit dem selben Kennwort als lokaler User registriert ?

    -->Ja

    es kann nur noch an diesen Befehlen liegen:

    CallCmd = "{{CALL PGM(TRUMPFH/THYS00CTTR)}}"
    'cnn.Execute("{{CALL QSYS.QCMDEXC PARM('" & CallCmd & "', " & Format(Len(CallCmd), "0000000000.00000") & ")}}")
    cnn.Execute(CallCmd)
    cnn.Close()

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Dann würde ich dir doch lieber den ODBC-Treiber empfehlen. Der IBMDA400 arbeitet da wohl irgendwo nicht ganz sauber.

    Per ODBC kannst du dann ganz einfach
    "CALL MYLIB.MYPGM" ausführen und in der ODBC-Konfig ggf. auch noch ein Joblog erzeugen lassen.

    Ich persönlich mochte den IBMDA400 noch nie.
    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

  10. #10
    Registriert seit
    Jan 2010
    Beiträge
    83
    wie sieht es denn mit diesem Treiber aus:

    con_str = "Driver={iSeries Access ODBC Driver};System=my_system_name;Uid=myUsername;Pwd=m yPassword;"
    cnn.Open(con_str)

    Ist es dann die selbe Syntax:

    Dim cnn As ADODB.Connection
    Dim con_str AsString
    Dim CallCmd As ADODB.Command
    'Dim VAR1 As String
    cnn = New ADODB.Connection

    con_str = "Driver={iSeries Access ODBC Driver};System=SERVERNAME;Uid=USER;Pwd=PW;"
    cnn.Open(con_str)

    CallCmd = New ADODB.Command
    CallCmd.CommandText = "CALL TRUMPFH.THYS00CTTR"
    CallCmd.Execute(cnn)
    cnn.Close()

  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Für direkte Aufrufe benötigst du kein Command-Objekt, "cnn.execue" reicht da auch.
    Ansonsten hast du Recht, "{}" kennt der ODBC-Treiber nicht.

    Beim CallCmd fehlt noch
    set CallCmd.ActiveConnection=cnn
    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

  12. #12
    Registriert seit
    Jan 2010
    Beiträge
    83
    ...bedanke mich für die Hilfe und die Geduld.

    ***Jetzt funktionierts***
    Tausend Dank - an ALLE.

Similar Threads

  1. Tape von einer AS400 von anderer AS400 aus nutzen?
    By hs in forum IBM i Hauptforum
    Antworten: 15
    Letzter Beitrag: 07-11-06, 19:28
  2. AS400 als webserver
    By cc in forum NEWSboard Linux
    Antworten: 5
    Letzter Beitrag: 09-08-06, 11:37
  3. Druckereinrichtung auf AS400?
    By stephanr1 in forum NEWSboard Drucker
    Antworten: 7
    Letzter Beitrag: 20-07-06, 14:00
  4. Textdatei per FTP in AS400 Datei
    By hs in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 25-10-05, 08:33
  5. AS400 Operatorin sucht Stelle im Raum Frankfurt
    By NixWisserin in forum NEWSboard Server Job
    Antworten: 0
    Letzter Beitrag: 15-02-05, 17:51

Berechtigungen

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