PDA

View Full Version : STRQM und update funktioniert nicht



padawan
18-08-10, 14:33
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

padawan
18-08-10, 14:42
...achso, in der Tabelle ist nur eine Spalte und ein Feld:

Spalte: WVLDAT
Satz: 100821

andreaspr@aon.at
18-08-10, 15:13
Hi,
gibt es eine Fehlermeldung oder wo ist das Problem?

padawan
18-08-10, 15:32
das update der Tabelle wird nicht ausgeführt und ich finde den Fehler nicht.

cbe
18-08-10, 22:41
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

padawan
19-08-10, 06:59
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...

cbe
19-08-10, 07:51
hast Du hinter dem STRQMQRY den Befehl: DSPJOBLOG *PRINT schon probiert?

Was kommt denn da für ein Fehler?

B.Hauser
19-08-10, 08:13
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.


update trumpfh/ttrwlsvspp set wvldat = &VAR1 WITH NC

Birgitta

padawan
19-08-10, 08:38
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...