[Gelöst] Aktualisierungen im Form

11. März 2010 15:23

Ich muss beim verlassen des Datensatzes ein feld prüfen und gegebenenefalls ändern.
Jetzt kann ich das nicht im "OnNextStep" machen, weil ich dann ja nimma blättern kann. wo mache ich das am besten?
Zuletzt geändert von TinaK am 11. März 2010 16:39, insgesamt 1-mal geändert.

Re: Aktualisierungen im Form

11. März 2010 15:25

Wenn ich das richtig verstehe willst du das die Änderung in einem Feld eingetragen wird wenn sich der Datensatz ändert?
Das würde Navision von alleine machen.
Es sei den dein Feld ist kein Tabellenfeld.
Da sollte es aber über den OnValidate-Trigger des Feldes auf der Form gehen.

Re: Aktualisierungen im Form

11. März 2010 15:46

also wenn ich den Datensatz verlasse, dann muss ich ein Feld prüfen - und das weiß ich nciht wo ich machen soll!
Ich machs auf jedenfall beim OnQueryClose

Re: Aktualisierungen im Form

11. März 2010 15:52

Kannst du das mal konkretisieren?

Beispiel wie ichs jetzt verstehe:
Artikelkarte geht auf Tabelle Item.
Ändert jemand auf der Karte das Feld Beschreibung, willst du diese Änderung prüfen.

Das ginge dann z.B. im OnMOdifyRecord der Form.
Code:
IF Rec.Description <> xRec.Description THEN BEGIN
... Datenprüfung ...
... Datenänderung ...
END

Das gilt dann immer wenn jemand das Feld über die Form ändert.

Soll diese Logik hingegen immer gelten, also nicht nur bei dieser Form, dann empfiehlt es sich den Code in den OnMOdifyRecord der Tabelle zu schreiben.

Re: Aktualisierungen im Form

11. März 2010 16:00

Ich verstehe das so, dass beim Verlassen des DS geprüft werden soll, ob Feld Sowieso gefüllt ist (?)

Re: Aktualisierungen im Form

11. März 2010 16:03

McClane hat geschrieben:Ich verstehe das so, dass beim Verlassen des DS geprüft werden soll, ob Feld Sowieso gefüllt ist (?)


Ja genauso ist es auch gemeint!

beim verlassen des DS muss ich das Feld "status" prüfen - wenn der status "in vorbereitung" ist, dann muss ich fragen - soll der status geändert werden und den status evt. ändern

Re: Aktualisierungen im Form

11. März 2010 16:15

Das Thema hatten wir schon ein paar Mal. Meist klappt das nicht narrensicher. Mit On(Query)CloseForm funktioniert das halt nur, wenn der Anwender die Maske schließt. Geht er einen Datensatz weiter, passiert nichts.

Ich nehme mal an, dass die Nachfrage, ob sich der Status ändern soll, von der Änderung von Werten abhängt. Sollten das nicht allzu viele sein, kannst du das vielleicht hinkriegen, wenn du in den OnValidates dieser Felder jeweils prüfst, ob eine Statusänderung nun in Frage kommt.
Zuletzt geändert von McClane am 11. März 2010 16:22, insgesamt 1-mal geändert.

Re: Aktualisierungen im Form

11. März 2010 16:17

McClane hat geschrieben:Das Thema hatten wir schon ein paar Mal. Meist klappt das nicht narrensicher. Mit On(Query)CloseForm funktioniert das halt nur, wenn der Anwender die Maske schließt. Geht er einen Datensatz weiter, passiert nichts.

Ich nehme mal an, dass die Nachfrage, ob sich der Status ändern soll, von der Änderung von Werten abhängt. Sollten das allzu viele sein, kannst du das vielleicht hinkriegen, wenn du in den OnValidates dieser Felder jeweils prüfst, ob eine Statusänderung nun in Frage kommt.


nein leider hängt das ganze nicht an anderen Feldern bzw. Werten, das ist ja das Problem. es muss wirklich immer beim verlassen des Datensatzes der Status geprüft werden

Re: Aktualisierungen im Form

11. März 2010 16:20

Muss der Status auch dann geprüft werden wenn sich an dem Datensatz gar nichts geändert hat?

Wenn nein, bleibe ich dabei das diese Abfrage in den OnModifyRecord der Form passt.
Ansonsten müsstest du wohl eine neue Funktion in der Form anlegen, die du in mehreren Triggern der Form aufrufst.
Das gefällt mir nicht, weil es nach einer möglichen Dauerschleife klingt.

Re: Aktualisierungen im Form

11. März 2010 16:24

Danjo hat geschrieben:Muss der Status auch dann geprüft werden wenn sich an dem Datensatz gar nichts geändert hat?

Wenn nein, bleibe ich dabei das diese Abfrage in den OnModifyRecord der Form passt.
Ansonsten müsstest du wohl eine neue Funktion in der Form anlegen, die du in mehreren Triggern der Form aufrufst.
Das gefällt mir nicht, weil es nach einer möglichen Dauerschleife klingt.


ich werds einfach so machen, dass es nur bei einer änderung des DS gemacht wird. Geht halt net anders!

dankeschön

edit: allerdings müßte ich da ja alle felder prüfen, das geht ja auch net! :-?

Re: Aktualisierungen im Form

11. März 2010 16:32

Hmm man kann den OnNextRecord ja auch ausprogrammieren. Hab ich aber noch nie versucht. Schau doch mal, ob sowas weiter hilft:
Code:
if  StatusÄndern then begin
  if  confirm('Soll ich?')then begin
    Status:=Status::.....
    CurrForm.SaveRecord;
  end;
  exit(Rec.NEXT(Steps));
end else
  EXIT(Rec.NEXT(Steps));

Re: Aktualisierungen im Form

11. März 2010 16:37

TinaK hat geschrieben:edit: allerdings müßte ich da ja alle felder prüfen, das geht ja auch net! :-?

Ich dachte du willst einfach nur eine CONFIRM-Abfrage öffnen wenn dein Statusfeld in Vorbereitung ist.

Der OnModifyRecord der Form wird immer dann durchlaufen wenn irgendein Feld des Datensatzes geändert wird.
Welches Feld das war ist hierbei prinzipiell egal.

Code:
IF Status = Status::"in vorbereitung" THEN BEGIN
  IF CONFIRM(Const1) THEN
    Status := Status::freigegeben;
END;

Const1 wäre deine Frage in einer Konstante gespeichert.

Oder verstehe ich deine Anforderung immer noch nicht wirklich? :?:

Re: Aktualisierungen im Form

11. März 2010 16:38

McClane hat geschrieben:Hmm man kann den OnNextRecord ja auch ausprogrammieren. Hab ich aber noch nie versucht. Schau doch mal, ob sowas weiter hilft:
Code:
if  StatusÄndern then begin
  if  confirm('Soll ich?')then begin
    Status:=Status::.....
    CurrForm.SaveRecord;
  end;
  exit(Rec.NEXT(Steps));
end else
  EXIT(Rec.NEXT(Steps));


Ja das klappt!! DANKE!!!

Re: Aktualisierungen im Form

11. März 2010 16:39

Danjo hat geschrieben:
TinaK hat geschrieben:edit: allerdings müßte ich da ja alle felder prüfen, das geht ja auch net! :-?

Ich dachte du willst einfach nur eine CONFIRM-Abfrage öffnen wenn dein Statusfeld in Vorbereitung ist.

Der OnModifyRecord der Form wird immer dann durchlaufen wenn irgendein Feld des Datensatzes geändert wird.
Welches Feld das war ist hierbei prinzipiell egal.

Code:
IF Status = Status::"in vorbereitung" THEN BEGIN
  IF CONFIRM(Const1) THEN
    Status := Status::freigegeben;
END;

Const1 wäre deine Frage in einer Konstante gespeichert.

Oder verstehe ich deine Anforderung immer noch nicht wirklich? :?:


ja aber wenn ich die Form durchblättere ohne was zu ändern, dann kommt er nie ins OnModify!

Re: [Gelöst] Aktualisierungen im Form

11. März 2010 17:47

TinaK hat geschrieben:Ja das klappt!! DANKE!!!

Keine Ursache, das ist nicht auf meinem Mist gewachsen :wink: