[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2010
    Beiträge
    83

    ADO: Call mit Parametern

    Hallo,
    V5R4 und VBA (dotnet)

    Dieser Call-Befehl funktioniert auf der AS400, wenn ich dieses in der Befehlszeile eingebe:

    CALL PGM(TTR/TTRENOMAC) PARM('W' X'012062010C' X'019062010C')

    Genau diesen Call möchte ich per VBA starten, läuft aber auf Fehler:
    [IBM][iSeries Access ODBC-Treiber][DB2 UDB]SQL0104 - Token X'012062010C' ungültig. Gültige Token: ) ,.


    cnn.Open(con_str)
    CallCmd = New ADODB.Command
    CallCmd.CommandText = "CALL TTR.TTRENOMAC('W' X'012062010C' X'019062010C')"
    CallCmd.ActiveConnection = cnn
    CallCmd.Execute(cnn)
    cnn.Close()

    Auch diese zwei Aufrufe laufen auf Fehler:

    'CallCmd.CommandText = "CALL TTR.TTRENOMAC('W' datv datb)"
    'CallCmd.CommandText = "CALL TTR.TTRENOMAC('W' 'X'012062010C'' 'X'019062010C'')"

    Das CL, das ich damit starte, erwartet drei Parameter und der zweite und dritte Parameter muss hexadecimal übergeben werden.

    Wie formuliere ich das richtig?

    Danke.
    Gruss
    Tobias

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.245
    Bei SQL müssen die Parameter mit Komma getrennt werden:

    call XXX ('X', x'0001')
    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

  3. #3
    Registriert seit
    Jan 2010
    Beiträge
    83
    danke, hat geklappt.

  4. #4
    Registriert seit
    Jan 2010
    Beiträge
    83
    Hallo Herr Fuerchau,

    wie muss ich das machen, damit die zwei Parameter die in Hexadecimal übergeben werden müssen, als Variable übergeben kann:

    CallCmd.CommandText = "CALL TTR.TTRENOMAC('W' datv datb)"

    anstatt

    'CallCmd.CommandText = "CALL TTR.TTRENOMAC('W', X'012062010C' 'X'019062010C'')"


    Die Variablen datv und datb sind im CL als:

    PGM PARM(&OPTION &DATV &DATB)
    DCL VAR(&OPTION) TYPE(*CHAR) LEN(1)
    DCL VAR(&DATV) TYPE(*DEC) LEN(8 0)
    DCL VAR(&DATB) TYPE(*DEC) LEN(8 0)

    deklariert.

    Danke und Gruss
    Tobias

  5. #5
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Wenn du im CL Dec(8, 0) definiert hast, warum musst du dann Hex übergeben?

    In Sql gibts auch die Hex()-Funktion, falls dir das weiter hilft. Wobei ich fürcht, dass dies erst ab V7R1 geht.
    Zitat Zitat von padawan Beitrag anzeigen
    CallCmd.CommandText = "CALL TTR.TTRENOMAC('W', hex(datv), hex(datb))"

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.245
    Die Hexfunktion liefert die den expandierten Hexcode als Zeichenkette, was dir hierbei allerdings nicht hilft, da der Call Parameter in Hexform mit X'....' dann selber umwandelt.
    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. "remote" - call
    By hh-mi in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 15-11-06, 12:23
  2. MS ado und Prepared Command
    By Asti in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 26-10-06, 09:39
  3. Keine Probleme mit Parametern
    By harkne in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 01-06-06, 12:42
  4. CALL PGM schlägt fehl
    By alexander may in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 18-05-06, 20:16
  5. Länge von Parametern bei CALL
    By cbe in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-08-05, 15:12

Berechtigungen

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