Gelöst: CC: MODIFY Trigger in Tab. nicht ausf. nach Formänd.

12. Oktober 2010 16:18

Hallo zusammen:

gibt es eine Möglichkeit, dass nach Ändern eines Feldwertes in einer x- beliebigen Form
nicht automatisch der MODIFY Trigger der zugehörigen Tabelle ausgeführt wird?

Stattdessen soll nur der Wert geändert und danach mit MODIFY(FALSE) geschrieben werden.

Klingt einfach, bringt mich aber fast zum verzweifeln.

kurzer nachtrag:
klar, über Menü kann man eine Funktion bauen, die etwas daran vorbei geht.
ist aber eher umständlich

Danke

Gruß
Gollum
Zuletzt geändert von Gollum83 am 13. Oktober 2010 11:33, insgesamt 1-mal geändert.

Re: CC: MODIFY Trigger in Tabelle nicht ausführen nach Formä

12. Oktober 2010 17:04

hallo,

ich habe es nicht ausprobiert, aber kannst du nicht mit CurrFieldNo arbeiten? Das könntest du zentral in der CU1 in "OnGlobalModify" oder individuell auf der Tabelle im OnModify-Trigger einbauen.

Code:
IF CurrFieldNo <> 0 THEN
  MODIFY(FALSE)
ELSE
  MODIFY(TRUE);


Gruß
chris

Re: CC: MODIFY Trigger in Tabelle nicht ausführen nach Formä

12. Oktober 2010 17:26

Hallo Chris,

das klingt interessant.
Werde ich testen und morgen Resultat posten

Danke
Gruß
Gollum

Re: CC: MODIFY Trigger in Tabelle nicht ausführen nach Formä

12. Oktober 2010 19:59

Hallo Martin,

da ich einfach mal fest davon ausgehe, dass diese Art der Daten-Manipulation einen Ausnahmezustand darstellen, kannst du dir mal den Download Tabellendaten aktualisieren/löschen ansehen.
Mit diesem Tool ist es möglich, beliebige Felder in einer beliebigen Tabelle zu verändern.
Für nähere Infos bitte dem Link folgen.

Re: CC: MODIFY Trigger in Tabelle nicht ausführen nach Formä

13. Oktober 2010 09:04

Hallo Chris:
Problem in der Tabelle: wenn ich schon im Modify Trigger der Tabelle bin ist es zu spät.
Dann wird der Trigger ja bereits ausgeführt.

Hallo Timo
danke auch Dir für den Tip.
Dein Tool ist genial, ist aber eher für größere Einmal-Datenänderungen gedacht.
Das was ich bräuchte ist ja nur auf ein bestimmtes Feld und den Datensatz in dem der User gerade ist, bezogen.
Wie gesagt über eine Funktion , die ich über einen Menübutton aufrufe kann ich schon eine Datenänderung ohne Modify Trigger der Tabelle
anstoßen.
Was ich bräuchte ist also generell: wie kann man erreichen, dass ein einem Feld einer Form ein Wert geändert wird ohne dass automatisch
der Modify Trigger der Tabelle anläuft.
Habs auch schon in dem Validate Trigger des Feldes mit:

Code:
MODIFY(FALSE);
EXIT;


probiert. Nützt leider auch nix
Wahrscheinlich ist es ganz einfach, aber ich komm nicht drauf

Re: CC: MODIFY Trigger in Tabelle nicht ausführen nach Formä

13. Oktober 2010 09:37

Geht das: du ersetzt das Control des Feldes durch eines mit einer Variable, in die du im OnAfterGetRecord einfach den Feldwert kopierst. Und im OnAfterValidate machst du bei einer Wertänderung ein modify auf einer Record-Variable, die auf den angezeigten Datensatz zeigt, mit einem anschließenden CurrForm.Update.

Re: CC: MODIFY Trigger in Tabelle nicht ausführen nach Formä

13. Oktober 2010 11:04

Hallo McClane,

danke für den Tip.
Das geht.

Habe, weil das Feld eine Refernz zu einer anderen Tabelle bildet,
einen Lookup selbst programmiert.
Wird entweder per Lookup oder per User Eingabe etwas geändert,
findet eine Prüfung statt, ob die Referenz passt.
ist dies der Fall wird mit einer Rec Variable auf die Zieltabelle der Wert geschrieben (ohne Modify Trigger)
Im OnAfterGetRecord und OnAfterGetCurrRecord Trigger wird dann immer die Variable mit
dem Feldwert gefüllt.

In meinem Fall, wo es wirklich nur um ein paar Felder in dieser Form geht ist dies echt eine geniale Lösung.

Danke McClane

Gruß
Gollum

Re: Gelöst: CC: MODIFY Trigger in Tab. nicht ausf. nach Form

13. Oktober 2010 22:36

Danke für die Blumen, aber ich fand trotzdem den Vorschlag von Chris besser, anhand der CurrFieldNo notfalls den kompletten Inhalt des OnModify auszulassen. Was ist dann daran so schlimm, dass in den Trigger gesprungen wird, wenn dort nichts passiert?

Re: Gelöst: CC: MODIFY Trigger in Tab. nicht ausf. nach Form

18. Oktober 2010 10:10

das mit CurrFieldNo und das
MODIFY(FALSE) funktioniert nicht.
Bei einer Eingabe in einer TextBox eines Forms mit SoureExpr irgendein Feld wird immer der Modify Trigger
der Tabelle angestoßen

Re: Gelöst: CC: MODIFY Trigger in Tab. nicht ausf. nach Form

18. Oktober 2010 10:19

Ist CurrFieldNo im OnModify schon wieder Null? Mist :evil:

Re: Gelöst: CC: MODIFY Trigger in Tab. nicht ausf. nach Form

18. Oktober 2010 12:12

Das Problem ist, dass ich ich OnModify Trigger ja nicht weiß, von wo aus
dieser angestoßen wurde, bzw. wo ein Wert geändert wurde.
Nur bei Feld XY darf der Trigger nicht ausgeführt werden.

Re: Gelöst: CC: MODIFY Trigger in Tab. nicht ausf. nach Form

18. Oktober 2010 12:41

Das hätte ja mit der CurrFieldNo geklappt, wenn der Wert nicht Null würde. Ok, man könnte in den betroffenen Feldern im OnValidate noch eine andere Variable setzen, die man im OnModify abfragt, aber dann ist der Aufwand wohl ähnlich groß wie jetzt auch schon.
Zuletzt geändert von McClane am 18. Oktober 2010 13:52, insgesamt 1-mal geändert.

Re: Gelöst: CC: MODIFY Trigger in Tab. nicht ausf. nach Form

18. Oktober 2010 13:35

stimmt, das wäre auch denkbar