Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: seal am 27.12.11 - 12:14:19
-
Hallo zusammen,
ich hab jetzt hier im Forum schon eine ganze weile gesucht und konnte leider nichts zu meinem Problem finden, deswegen habe ich jetzt einen neuen Thread geöffnet, obwohl ich mir eigentlich nicht vorstellen kann, das nicht ein anderer das Problem schon mal hatte.
Also ich möchte eigentlich folgendes: Ich will beim Speichern eines Dokumentes schauen, ob ein Feld bzw. Item in meinen Dokument geändert wurde und dann den Namen des Feldes in meine History schreiben. Also Auf die Art 16.12.2011 Hans Maulwurf: Änderung der Felder Prozent_1, Prozent_4, etc.
Jetzt ist meine Frage, wie frag ich ab, ob ein Item geändert wurde? Kann ich einfach durch die Items des Dokuments durch iterieren und gibt es dann sowas wie eine Funktion oder parameter changed, updated oder modified? Oder muss ich mir beim Öffnen des Dokumentes alle Itemvalues merken und beim Speichern dann mit dehnen vergleichen? Und wenn ja wie mach ich das?
Kann mir hier jemand ein Best Practise Tipp geben?
Vielen Dank im Vorraus,
Seal
-
Ich würde mir global in der Maske ein Notesdokument deklarieren und das im Postopen als neues Dokument der Datenbank initialisieren. Anschließend alle Items des aktuellen Dokuments hineinkopieren, dann hast Du im Querysave ein Referenzdokument, mit dem Du das aktuelle Dokument vergleichen kannst (Item für Item). Natürlich speicherst Du niemals das Referenzdokument.
-
So richtig gesucht kannst du nicht haben ...
http://atnotes.de/index.php/topic,16422.msg102326.html#msg102326
http://sw-guide.de/lotus-notes-domino/lotusscript-history/
-
Ich würde vielleicht in der Maske ein Multivalue Textfeld anlegen. In diesem Multivalue-Feld werden die Namen der Felder angegeben, die überwacht werden sollen und zusätzlich noch die Information zu dem Feld selber. Das kann dann z. B. so aussehen: "numCostCenter~~~Kostenstelle":"nmeEditor~~~Bearbeiter"
Im Postopen-Event der Maske wird dann auf das Feld zugegriffen und der Wert des Feldes wird dann in ein weiteres Multivalue-Feld der Maske geschrieben.
Im QuerySave-Event werden die Felder dann erneut geprüft und die Werte werden dann dort mit den alten Werten verglichen. Wenn es dann einen Unterschied gibt, dann kannst Du das dann in die Historie schreiben, wobei dann der zweite Teil des Multivalue-Feldes zum Einsatz kommt (im Beispiel z. B. dann Kostenstelle).
Du kannst dann übrigens auch den alten Wert und den neuen Wert angegeben.
-
Also ich würde auf keinen Fall die Vergleichswerte im Dokument speichern, dazu gibt es auch keinen Grund. Die Dokumente werden dadurch unnötig groß, das muss alles durch die Leitung transportiert werden. Ausserdem verwaltet Notes diese Felder auch noch intern in den Ansichtsindizes. Bei Dokumenten mit großen Textfeldern erreichst Du viel schneller die 32 k-Grenze, und dann hast Du richtig Spaß.
-
Hallo zusammen,
vielen Dank für die Tips. Ich hab jetzt einfach das Script von sw-guide.de angepasst und eingebunden.
Sollte es tun. Hoffe nicht, das ich in die Probleme komme, das es zu viele Änderungen kommt und das Textfeld überläuft.
Viele Grüße,
seal
-
Assono hat sein Framework zur verfügung gestellt.
Das kann History, Validation,....
Und vorallem haben die im Framework eine saubere Trennung zwischen Frontend und Backend.
http://www.openntf.org/internal/home.nsf/project.xsp?action=openDocument&documentId=FDE3F70E2544D822862576550038F0BA