11. März 2010 15:23
11. März 2010 15:25
11. März 2010 15:46
11. März 2010 15:52
IF Rec.Description <> xRec.Description THEN BEGIN
... Datenprüfung ...
... Datenänderung ...
END
11. März 2010 16:00
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 (?)
11. März 2010 16:15
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.
11. März 2010 16:20
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.
11. März 2010 16:32
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));
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!
IF Status = Status::"in vorbereitung" THEN BEGIN
IF CONFIRM(Const1) THEN
Status := Status::freigegeben;
END;
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));
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?
11. März 2010 17:47
TinaK hat geschrieben:Ja das klappt!! DANKE!!!