Modify in Tabelle

16. März 2006 13:13

Hallo zusammen,

gibt es eine Möglichkeit festzustellen von welchem Feld aus der OnModify-Trigger aufgerufen wurde? Also sprich in welchem Feld der Datensatz geändert wurde?

Gruß Jan

16. März 2006 13:35

Also meiner Meinung nach geht das nicht, da der ModifyTrigger erst ausgelöst wird, wenn der Datensatz verlassen wird (durch blättern oder schliesser der Form)

16. März 2006 15:41

Mit einer Version ab 3.xx geht das
Beispiel findet man in der CodeUnit 423 "Change Log Management".
In der Tabelle 404 Change Log Setup (Field) werden ja auch alle Änderungen in der Art Feld alterWert NeuerWert gespeichert.

Gruss

16. März 2006 16:05

Ok, danke für die Antworten, das mit der CU wäre ein Ansatz gewesen, aber da die Zeit drückt haben wir uns eine andere Lösung für unser Problem überlegt.

16. März 2006 16:13

Welche? Lass mich nicht dumm sterben ;-)

16. März 2006 16:17

Also die Anforderung welche gegeben war ist folgende:

In einer Tabelle darf sobald ein bestimmtes Feld TRUE (gebucht) ist keine Änderung mehr vorgenommen werden (dies wird im OnModify-Trigger abgefragt). Für ein best. Feld haben wir dies aber dennoch benötigt.

Ansatz war im OnModify-Trigger abzufragen ob die Änderung durch das neue Feld ausgelöst wurde und dies dann entsprechend zuzulassen.

Gelöst haben wir die Geschichte nun in dem wir im OnValidate-Trigger des neuen Feldes einfach sagen Modify(FALSE). Erschreckend einfach nicht? Ich hab 2 Stunden daran rumgefummelt und dann kam der Kollege und hat das eingebaut *aaarghh* :-D

16. März 2006 16:22

>>Ich hab 2 Stunden daran rumgefummelt und dann kam der Kollege >>und hat das eingebaut
Geht einem halt meisten so ;-)
Danke für die Info

16. März 2006 16:23

Ja das muss so ein kosmisches Gesetzt sein oder sowas :-)

16. März 2006 21:24

JanV hat geschrieben:Gelöst haben wir die Geschichte nun in dem wir im OnValidate-Trigger des neuen Feldes einfach sagen Modify(FALSE). Erschreckend einfach nicht? Ich hab 2 Stunden daran rumgefummelt und dann kam der Kollege und hat das eingebaut *aaarghh* :-D


Dies kann aber dann zu Problemen führen, wenn der Anwender vor der Eingabe auf dem zulässigem Feld noch ein anders Feld ändert, das nicht zulässig ist. Auch diese Änderung wird dann mit dem Modify(FALSE) in die DB gespeichert.

Mögliche Behebung: ein CurrForm.SAVERECORD im "OnBeforeInput"-Trigger des zulässigen Feldes. Dies führt zu einem Modify(TRUE), falls vorher ein anderes Feld geändert wurde, und somit zum Fehler, falls die gemachten Änderungen nicht zulässig sind.

MfG
Josef Metz