Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Jérôme am 21.07.03 - 11:06:46
-
Hallihallo!
Ich habe folgendes Problem, und ich hoffe, Ihr könnt mir helfen...
In meinem Dokument ist es notwendig, dass das Feld SaveOptions beim Öffnen des Dokuments auf 0 gesetzt ist.
Wie kann ich es hier anstellen, dass dieses Feld, sobald im Dokument ein Feld geändert wird, auf 1 gesetzt wird?
Vielen Dank und viele Grüße
- Jérôme
-
Hi,
Du könntest im QuerySave mittels Script prüfen, ob sich Werte geändert haben. Falls ja, setze das Feld = "". Ausserdem würde ich
Im PostSave dann das Feld wieder = "0" setzen und das Backenddokument nochmals speichern.
Andreas
-
Hui, das ging ja schnell! ;D
Wie prüfe ich denn, ob Felder geändert sind?
-
Hallo,
warum machst Du das so? Ich sehe den Sinn nicht. Wenn Du die SaveOptions auf "0" setz, dann wird nicht gespeichert. Wenn Du ein Feld änderst, dann soll doch gespeichert werden. Warum setzt du das Flag denn dann?
Zu Deiner Frage:
Du musst im PostOpen alle Feldinhalte in ein Array einlesen. Im QuerySave überprüfst Du dann, ob die Feldinhalte mit denen im Array übereinstimmen. Wenn das nicht der Fall ist, dann hat sich was geändert. Das ganze ist allerdings nicht sehr einfach zu bauen. Ich habe es erst verstanden, nachdem unser Externer das programmiert hat. ;)
Gruß
Markus
-
Danke für den Tipp!
Zur Erklärung:
Es handelt sich um Dokumente in einer Arbeitszeitverwaltung. Das bedeutet: Mitglieder der Personalverwaltung (Rolle [PV]) dürfen Dokumente editieren, "normale" Benutzer dürfen dies nicht.
Damit Benutzer aber ihre aktuelle geleistete Arbeitszeit betrachten können (Arbeitszeitbeginn bis jetzt), muss ich das Dokument editierbar lassen - die Arbeitszeitende-Felder werden dann mit der aktuellen Uhrzeit gefüllt und die Arbeitszeiten werden temporär berechnet (als hätte der Mitarbeiter gerade auf "Gehen" geklickt). Damit diese Werte aber nicht gespeichert werden, setze ich die SaveOptions auf 0.
Wenn ein "normaler" Benutzer diese Werte ändert, ist das auch kein Problem - er darf das ja eh nicht, und durch die SaveOptions=0 wird nichts gespeichert.
Ändert aber ein Personalverwalter das Dokument, dann sollen die Änderungen ggf. schon gespeichert werden können. Hat er das Dokument aber nur zur Ansicht der aktuellen Arbeitszeit geöffnet, so stört die Abfrage am Ende, ob er das Dokument speichern möchte.
Deswegen soll es ungefähr so funktionieren:
Wenn ( User = PV) Dann
{
Wenn (Dokument geändert) Dann
{
SaveOptions = 1
Dokument Speichern
}
Ansonsten
{
SaveOptions = 0
}
}
Ansonsten
{
SaveOptions = 0
}
Ich kann mich nicht so sehr gut ausdrücken... Ich hoffe, es war trotzdem halbwegs verständlich. Da mich das Thema so interessiert, würde ich es aber noch differenzierter darlegen ;)
-
Wenn ( User = PV) Dann
{
Wenn (Dokument geändert) Dann
{
SaveOptions = 1
Dokument Speichern
}
Ansonsten
{
SaveOptions = 0
}
}
Ansonsten
{
SaveOptions = 0
}
Hallo,
warum baust Du das nicht so ins QuerySave, dann brauchst Du keine SaveOptions. Das speichern kannst Du dann ggf. mit Continue = False verhindern. Probiers mal so, dann musst Du auch nicht abfragen, ob Dokumente geändert wurden. Das Dokument soll nur gespeichert werden, wenn einer von der PV speichert.
Gruß
Markus
-
Hi Jerome,
das würde ich aber so nicht machen: Besser sind dann Felder, die Berechnet zur Anzeige sind.
Wenn die temporären Berechnungen in der Formelsprache (in anderen Feldern gemacht werden), ist das alles kein Problem.
Andreas
-
Das stimmt. Daran habe ich nicht gedacht. Das ist in der Tat besser. ;)
Gruß
Markus
-
Ich hoffe ich habe dich richtig verstanden..
Warum prüfst du im QuerymodeChange nicht einfach, ob der User die Rolle PV hat, ansonsten verhinderst du den QuerymodeChange..
Dann kann der nicht-berechtigte User lesen, aber nichts ändern..er bleibt halt im Lese-Modus..
Gruß
MisterDa
Ups! ;D
Ich hab am Anfang überlesen, dass es editierbar sein muss...-> also Kommando zurück.. 8)