Domino 9 und frühere Versionen > ND8: Entwicklung

Maskenänderung in History schreiben

(1/2) > >>

seal:
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

Peter Klett:
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.

Thomas Schulte:
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/

Christian Weiß:
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.

Peter Klett:
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ß.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln