Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Silke am 20.06.05 - 11:34:43
-
Gibt es eine (Nicht mit LS) Möglichkeit zu überprüfen ob ein Feld geändert wurde.
Hintergrund nur wenn ein bestimmtes Feld geändert wird soll
@Command([FileSaveNewVersion]) kommen
sonst @Command([FileSave]).
:-\
-
Ja, ein verstecktes Feld als Referenzfeld, dieses mit dem editierbaren Vergleichen und die entsprechende Aktion auslösen.
Beim Speichern muss man das Referenzfeld dann natürlich auf den aktuellen Wert bringen.
-
Hi,
es geht auch ohne zusätzliches Feld.
Du brauchst nur eine maskenglobale Variable. Die füllst du im PostOpen-Event und im QuerySave - Event vergleichst du diese Variable mit dem Feldinhalt. Sie sie unterschiedlich, wurde das Feld geändert.
Axel
-
Axel, wie willst Du das ohne LS (war Bedingung im Originalposting) machen?
-
Hehe. Das wollte ich auch grad fragen. Man kann zwar im Queryopen auf Formelsprache wechseln, aber wie setzt man dann eine maskenglobale Variable? :-:
-
Ups,
wer lesen kann ist klar im Vorteil, wer dazu nocht richtig liest hat mehr vom Leben. :o
Ihr habt natürlich recht. Das "Nicht mit LS" hab ich überlesen.
Dann geht's eigentlich nur über ein Zusatzfeld.
Axel
-
Als jemand der z. Zt. viel mit Datenbanken mit einer ausgiebigen prä-Notes R4 Geschichte arbeitet, will ich nur mal kurz anmerken, dass es für eine Menge Aufgabenstellungen wenig Sinn macht, sich auf Formelsprache zu beschränken.
Das heisst nicht, dass ich Formelsprache grundsätzlich für übel halte.
Es ist eben so das für bestimmte Aufgaben Formelsprache sehr sinnvoll sein kann. Für andere muß man aber wahre Code-Monster zum Leben erwecken, um Aufgaben in Formelsprache zu lösen, die in Skript vielleicht in 2 Stunden einfach und übersichtlich für die Nachwelt zu coden sind.
Für andere Dinge ist Formelsprache dagegen völlig in Ordnung.
Ich find zur Zeit die vielen unterschiedlichen Sprach-Ansätze, die man in LotusNotes zur Verfügung hat einen interessanten Aspekt jener Plattform.
Bei oficial J2EE/rebel_frameworks_J2EE steht man auch des öfteren vor so Fragen wie: Soll ich diese Funktionalität jetzt mit eleganten SQL/Stored Procedures oder in den Objekten nach Object Relational Mapping lösen. Oder: Welches der 5 ernsthaften Webframeworks nehm ich jetzt.
Dabei ist der Grad der persönliche Ahnung in diesen Dingen eben nur ein Aspekt, obwohl ein wichtiger, wenns um Geld geht.
Lotus Script zu beherrschen lohnt sich aber und so schwierig ist das einfach nicht.
Axel
-
tja nach 3 jähriger Abstinenz und auch vorher war ich weit davon entfernt eine "Conferse" zu sein beschränke ich mich, erstmal, auf das was geht (ich leidlich kann und begreife).
Bei Script benötige ich erst noch Kurse und bis dahin wird es noch dauern.
???
-
Lotus Script zu beherrschen lohnt sich aber und so schwierig ist das einfach nicht.
Dein Wort in Gottes Ohr
-
@m3,
das mit dem Referenzfeld ist gar nicht so einfach, weil ein Dokument i. A. im Lese-Modus geöffnet wird, so dass man den PostOpen-Event dafür eigentlich nicht nehmen kann, weil man das Dokument ja noch nicht verändern darf.
Wenn das Feld jetzt "Computed" oder "Comuted for Display" ist, dann wirds bei jedem Refresh neu berechnet und Du hast im Prinzip immer den gleichen Wert dadrin stehen.
Wenn's dagegen "Computed when composed" oder "Editable" ist, dann wird's nur einmal geschrieben und die nächste Änderung beim nächsten Öffnen des Dokuments wird nicht mehr erkannt.
Egal wie, ist alles irgendwie unschön. Mit reinen @Formeln wird das wiklich nicht ganz einfach.
Wenn's denn aber unbedingt @Formel sein muss, dann würde ich halt die Notes.ini verwenden und im Postopen die relevanten Felder irgend wie in die Notes.ini schreiben und vor dem Speichern diese wieder mit den aktuellen Werten vergleichen.
Hat aber auch einen Nachteil, wenn der Benutzer nämlich mehrere Dokumente gleichzeitig öffnet, muss man sich genaue Environmentvariablen überlegen (z. B. sFeldname + @Text(@DocumentUniqueID) oder so etwas ähnliches)...
*brrrr* sieht bestimmt furchbar aus... :-[
Die letzte Möglichkeit wäre dann ein Profildokument, hat aber auch den nachteil wenn mehrere Dokumente gleichzeitig geöffnet werden.
Mehr fällt mir dazu nicht ein.
Gruß
Joachim
P.S.
Einmal eine allgemeine Teilmaske mit LS erstellt, die diese Aufgabe übernimmt, die kann man dann in alle Masken übernehmen... (sorry, jetzt taucht das böse Wort LS doch noch auf ;))
-
Es gibt auch noch den PostModeChange, um die Felder anzulegen, aber einverstanden, einfach ist es in Formelland tatsächlich nicht. Unschön hier, alles, was man in PostModeChange macht, muss im Postopen dupliziert werden, falls der User das Dokument direkt im Editmodus öffnet.
-
... und noch einmal wenn man das Dokument zwischendurch speichert im Query oder PostSave.
Ist wirklich 'ne echte Plackerei.
Joachim
-
Genau
-
Hat sich erledigt
-
Hallo Silke
Es fällt auf, dass Du allüberall einfach "erledigt" hinschreibst. Es gehört zum guten Ton hier im Forum, dass man nicht einfach nur sagt "Schluss", sondern auch angibt, wie man die Sache abgeschlossen hat. Sei es, dass man sagt, man habe es jetzt sein lassen, oder dass man den Lösungsweg skizziert. Nur so ist auch gewährleistet, dass spätere Nutzer des Forums Nutzen ziehen können.
-
das tue ich wenn ich eine Lösung bezüglich der Frage gefunden habe aber wenn es sich einfach nur "erledigt" hat dann fand ich es fair zu sagen erledigt und die Frage nicht offen zu lassen ;)
-
Da bin ich mit Dir einverstanden, dann schreib aber bitte dazu, dass es zwar nicht gelöst ist, aber Du das im Moment nicht weiterverfolgen kannst/willst oder was immer. Dem Wort "erledigt" sieht man nicht an, ob es gelöst wurde oder eben einfach auf die Seite gelegt wurde.