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

    STRQM und update funktioniert nicht

    Hallo
    V5R4

    folgendes führe ich aus -

    in VBA wird gestartet:
    ...
    CallCmd = New ADODB.Command
    OnErrorResumeNext
    CallCmd3 = "CALL TRUMPFH.TTAUEBFAC2(" & " " & VAR1 & " " & ")"
    CallCmd.CommandText = CallCmd3
    CallCmd.ActiveConnection = cnn
    CallCmd.Execute(cnn)

    Im CL --> TRUMPFH.TTAUEBFAC2 :
    ...
    PGM PARM(&VAR1)
    DCL VAR(&VAR1) TYPE(*DEC) LEN(6 0)
    DCL VAR(&VAR1_A) TYPE(*CHAR) LEN(6)
    CHGVAR VAR(&VAR1_A) VALUE(&VAR1)
    */
    AUSFÜHREN *********************************************/
    */
    DMPCLPGM
    STRQMQRY QMQRY(TRUMPFH/TTRINSERT) ALWQRYDFN(*YES) +
    SETVAR((VAR1 &VAR1_A))
    MONMSG MSGID(CPF0000)

    hier die Query (in STRQM):
    update trumpfh/ttrwlsvspp set wvldat = &VAR1

    VBA übergibt korrekt die Variable an das CL und dann hörts auch schon auf.

    5722SS1 V5R4M0 060210 CL-Programmspeicherauszug ICHAS 18.08.10 15:02:50 Seite
    Jobname . . . . . . . . . : QZDASOINIT Benutzername . . . . . . : TRUMPFH Jobnummer . . . . . . . . : 023105
    Programmname. . . . . . . : TTAUEBFAC Bibliothek . . . . . . . : TRUMPFH Anweisung . . . . . . . . : 2200
    Nachrichten
    Nachrichten- Nachrichten- Von Bis
    Uhrzeit ID Bewertg. Art Text Programm Befehl Programm Befehl
    (In Programmnachrichtenwarteschlange keine Nachrichten gefunden)
    Variablen
    Variable Art Länge Wert Hexadezimalwert
    *...+....1....+....2....+ * . . . + . . . . 1 . . . . + . . . . 2 . . . .
    &VAR1 *DEC 6 0 100821
    &VAR1_A *CHAR 6 '100821' F1F0F0F8F2F1
    &VAR2_A *CHAR 6 '100821' F1F0F0F8F2F1
    &VAR3_A *CHAR 6 '100821' F1F0F0F8F2F1
    * * E N D E D E S S P E I C H E R A U S Z U G S * *

    Ist evt bei der SQL-Syntax des Updates etwas falsch oder bei STRQMQRY ???

    Vielen Dank.
    Gruss
    Tobias

  2. #2
    Registriert seit
    Jan 2010
    Beiträge
    83
    ...achso, in der Tabelle ist nur eine Spalte und ein Feld:

    Spalte: WVLDAT
    Satz: 100821

  3. #3
    Registriert seit
    Aug 2003
    Beiträge
    1.508

  4. #4
    Registriert seit
    Jan 2010
    Beiträge
    83
    das update der Tabelle wird nicht ausgeführt und ich finde den Fehler nicht.

  5. #5
    cbe is offline [professional_User]
    Registriert seit
    May 2005
    Beiträge
    392
    Hallo Tobias,

    ehrlich gesagt staune ich etwas:
    Bist Du sicher, dass das CL den richtigen Dezimalwert hat?
    Ich dachte immer, dass man nur Zeichenketten, Hex-Werte oder 15,5-stellige Dezimalwerte ohne Probleme im CALL übergeben kann?

    Also CALL TRUMPFH/TTAUEBFAC2(x'0100821F')
    anstatt CALL TRUMPFH/TTAUEBFAC2(100821)

    ---
    Vielleicht kann man auch gar keinen UPDATE im QMQRY machen?

    Was kommt denn als Fehler, hast Du ein Joblog?
    Du könntest hinter dem QMQRY den Befehl: DSPJOBLOG *PRINT ausgeben.

    ---
    Naja, und mittlerweile hätte man schon ein RPG schreiben können, was den UPDATE problemlos macht


    Gruß, Christian

  6. #6
    Registriert seit
    Jan 2010
    Beiträge
    83
    Hallo Christian,

    ich übergebe aus VBA der Variablen einen Hex-Wert:
    CallCmd3 = "CALL TRUMPFH.TTAUEBFAC2(" & " " & VAR1 & " " & ")"
    Wert von CallCmd3:
    CallCmd3 "CALL TRUMPFH.TTAUEBFAC2( X'0100821C' )"

    das funktioniert, wie Du aus dem Speicherauzug (Dump) an den Variablen erkennen kannst. Das Feld WVLDAT aus der Tabelle hat den Datentyp Dec(6 0).

    Ich habe den Befehl STRQMQRY auf der AS400 vorher getestet und der Befehl macht das was er soll. Auch mein Profil habe ich überprüft und habe alle Berichtigungen auf INSERT, UPDATE, DELETE etc..
    Ich bin im Moment irgendwo im Niemandsland und weiß nicht welches Schräubchen ich noch drehen kann...

  7. #7
    cbe is offline [professional_User]
    Registriert seit
    May 2005
    Beiträge
    392
    hast Du hinter dem STRQMQRY den Befehl: DSPJOBLOG *PRINT schon probiert?

    Was kommt denn da für ein Fehler?

  8. #8
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Versuch' mal spasseshalber am Ende des Update-Statements WITH NC hinzuzufügen.

    SQL versucht normalerweise mit Commitment Control zu arbeiten. Dazu müssen die Dateien journalisiert werden. Dies könnte ein Problem verursachen, wenn ihr ohne Journaling arbeitet.

    WITH NC besagt, dass bei diesem Statement OHNE Commitment Control gearbeitet wird.

    Code:
    update trumpfh/ttrwlsvspp set wvldat = &VAR1 WITH NC
    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  9. #9
    Registriert seit
    Jan 2010
    Beiträge
    83
    na toll, ich weiß nicht wo ich jetzt gedreht haben soll, aber jetzt funktioniert es plötzlich. Komisch, aber yipiii es geht...

    Nochmals, danke an alle...

Similar Threads

  1. SQL Update aus zwei Dateien mit 3 Schlüsselfeldern
    By mk in forum NEWSboard Programmierung
    Antworten: 13
    Letzter Beitrag: 13-07-12, 08:53
  2. ODBC update
    By synus in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 06-10-06, 15:38
  3. Update Syntax SQL
    By wuwu in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 18-07-06, 15:31
  4. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43
  5. Update via ODBC
    By mdhl in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 18-05-06, 13:27

Berechtigungen

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