PDA

View Full Version : Before-Insert-Trigger



tinewww
27-02-07, 13:07
Hallo,

ich habe auf einer Datei x einen Before-Insert-Trigger (RPGLE), der ein Feld in derselben Datei automatisch hochzählen soll!

Wenn ich mir bei Programmende über den Debugger die Parametervariablen ansehe, sind auch die richtigen Werte drin, aber in der Datei x kommen diese anscheinend nicht an!

Das Triggerprogramm läuft aber ohne Fehlermeldung durch!

Kann es sein, dass bei Before-Insert-Triggern generell keine Feldupdates gemacht werden dürfen?

:o :o :o

Vielen Dank im Voraus für Eure Antworten!

Fuerchau
27-02-07, 14:20
Bist du sicher, dass du das richtige Immage verwendest ?
Du kannst Inhalte verändern indem du die Variable im Immage-Puffer (in diesem Fall After-Immage) veränderst.

tinewww
27-02-07, 14:54
Ja, bin ich! Ich verwende dieselbe Datenstruktur in einem anderen Trigger, der beide verwendet! Ich hab's auch nochmal geprüft! Bei einem Inserttrigger muß doch die Variable für das Before-Image leer sein, oder?

Soll heißen, das ist beim Update doch der Satz vor dem Update, oder?

Fuerchau
27-02-07, 15:20
So genau weiß ich das jetzt nicht.
Aber in der Trigger-Struktur gibt es ja zwei wesentliche Felder:

Offset zum Before-Immage
Offset zum After-Immage

Fehlt eines dieser Immage, ist der Inhalt leer.

Du solltest in deinem programm auch nicht mit festen Strukturen arbeiten, ich mache da immer folgendes:

D OrigRec S *
DBIAFP1 E DS based(OrigRec)
D extname(AFP1)
D prefix(BI)

* Initialisierungen der Basiszeiger
C eval OrigRec = %addr(TrgBuff) + OrigOffset

dadurch erhalte ich auf jeden Fall gültige Puffer und Zeiger.

tinewww
27-02-07, 15:25
So arbeite ich auch! Und ich habe den Offset zum After-Immage gesetzt und bekomme so den hinzuzufügenden Satz. Und das ist auch der, den ich ändern will!

Fuerchau
27-02-07, 15:35
Vielleicht liegts an der Art der Triggerinstallation:

ADDPFTRG ... ALWREPCHG(*YES).

Ggf. könnte hier der Unterschied liegen, ob Änderungen am Puffer erlaubt sind.
Probiere es einfach mal aus.

tinewww
27-02-07, 15:41
DAS WAR'S!!!!! :D :D :D

Vielen Dank! War schon ganz verzweifelt...