Domino 9 und frühere Versionen > ND8: Entwicklung

Bearbeitung eines einzelnen Feldes festhalten à la "last edited by"

(1/3) > >>

Grinsekatze:
Hallo liebe Mitglieder des Notes-Forums,

ich programmiere seit 2 Wochen an einer Notes-Datenbank herum und das Forum hier hat mir schon wahnsinnig gute Dienste geleistet und viele Fragen beantwortet. Zu meinem aktuellsten Problem konnte ich jedoch keine Antwort finden, deshalb bin ich nun selbst aktiv geworden ;)
Ich kenn mich mittlerweile mit den Grundlagen glaub ich ganz gut aus und hab auch schon ein bisschen LotusScript programmiert (aber nur wenige Zeilen!).


Mein Problem ist folgendes:

Ich habe verschiedene Felder in meinem Dokument, deren Aktualität gewährleistet sein muss. Deshalb möchte ich nun zu jedem dieser Textfelder eine Art "last edited by"- Feld zu erstellen, das automatisch abspeichert, von wem und wann dieses eine Feld zuletzt bearbeitet wurde.
Ich dachte daran, Name und Zeit in zwei Hidden Fields abzuspeichern und als Computed Value unter den Informationsfeldern anzeigen zu lassen.

Mir ist bereits bekannt, dass ich über die @Funktionen @Now und @UserName Zeitpunkt und User herausbekomme, aber ich habe es bis jetzt nur geschafft das für das gesamte Dokument zu nutzen und eben anzeigen zu lassen, wer wann das ganze Dokument zuletzt bearbeitet hat.

Kann mir also irgendjemand auf die Sprünge helfen, wie ich dies für ein einzelnes Feld festhalten kann?


Schonmal herzlichen Dank im Voraus für eure Hilfe!
Liebe Grüße,
Sarah

Tode:
Es gibt hier im Forum eine Best Practices für eine Feld- Historie, und ich glaube sogar eine fertige LotusScript- Library... evtl. auch unter dem Stichwort "Audit Trail"...
Einfach mal suchen, das wirst Du sicher finden...

Grinsekatze:
Bei den Best Practices habe ich leider nichts gefunden  :-:

Nach weiterer Suche bin ich allerdings hierauf gestoßen: http://sw-guide.de/lotus-notes-domino/lotusscript-history/

Mein Problem ist jedoch, dass mir das ganze etwas zu "mächtig" erscheint und außerdem will ich ja keine komplette Dokumenthistorie, sondern ein einzelner Zeitstempel für ca. 10 Felder ist ja alles, was ich hauptsächlich brauch.

Ich bin jetzt auf die Idee verfallen den Feldinhalt der betreffendem Inhaltsfelder einfach beim Öffnen des Dokumentes in ein Hidden Field zu übertragen und beim Schließen des Docs auf Gleichheit zu prüfen. Wenn der Inhalt geändert wurde wird die aktuelle Zeit gespeichert.

Geht das prinzipiell?
Und ist diese Lösung halbwegs praktikabel oder schlägt jetzt jeder der das liest und sich auskennt die Hände über dem Kopf zusammen?

koehlerbv:
Hallo Sarah,

um das Dir Mögliche abzuprüfen: Programmierst Du (nur) in Formelsprache oder geht auch LotusScript?
Weiters: Können wir das prinzipielle Procedere an einem Deiner zu überwachenden Felder fix machen (damit wir dann die gleiche Sprache sprechen)?
Was hast Du schon als Code?

Weitere Frage:
Mit wie vielen Repliken dieser Datenbank arbeitet Ihr? Hintergrund: Wenn (auch nur) ein Feld bei jeder Dokumentänderung einen neuen Wert bekommt (wie jetzt Deine document history), dann kannst Du im Fall der Fälle keine Replizierkonflikte mehr mischen, sondern erzeugst immer Conflicts. In der Regel ist dieses Vorgehen also alles andere als eine gute Idee.

Auf jeden Fall: Dir kann hier geholfen werden!

Bernhard

Peter Klett:
Ich denke, das Problem mit den Replizierkonflikten entfällt, wenn zu jedem Feld separate Historienfelder erstellt werden. Ändert sich Feld A, ändert sich auch Historie A, gleiches bei B usw.. Das sieht strukturell schon ganz gut aus.

Willst Du Script verwenden, ist es wohl am einfachsten, die Historienfelder über das onChange-Event des jeweiligen Textfeldes zu setzen.

In Formelsprache halte ich folgenden Ansatz für denkbar. Wichtig ist die exakte Reihenfolge der Felder in der Maske:

Textfeld (bearbeitbar)
HistorienfeldDatum (berechnet) Formel: @If (Textfeld != Vergleichsfeld; @Now; @ThisValue)
HistorienfeldUser (berechnet) Formel: @If (Textfeld != Vergleichsfeld; @Username; @ThisValue)
Vergleichsfeld (berechnet) Formel: Textfeld

Beim Speichern oder beim Aktualisieren werden die Felder von links nach rechts, und von oben nach unten gerechnet. Wurde das Textfeld geändert, werden erst die Historienfelder aktualisiert, bevor das Vergleichsfeld den neuen Wert des Textfeldes erhält (nicht getestet, sollte aber klappen). Einziger Nachteil: Du hast zusätzliche Vergleichsfelder im Dokument. Leider kannst Du das Vergleichsfeld nicht berechnet zur Anzeige machen, da dann beim Berechnen nach dem Öffnen immer eine Historie geschrieben wird, falls das Textfeld nicht leer ist.

Das Vergleichsfeld entfällt bei einer Lösung in Script.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln