Domino 9 und frühere Versionen > Entwicklung

Dokumentenhistorie

<< < (2/3) > >>

Axel:
Hi,

ich hab vor einiger Zeit im Web was gefunden, welches eine vollständige Änderungshistorie für eine Dokument ermöglicht. Ich habs allerdings noch nicht getestet.


--- Zitat ---
Tracking Complete Edit History
This code will track the complete edit history of a document. For any field value change, the date, user, fieldname, previous value, and new value
will be stored in the EditHistory field.

Step 1:
Create a Field on your form called EditHistory. Set it to a multi-value text field, computed (formula = EditHistory), separate multiple values when user enters ?;?,
display separate values with New Line.

Step 2:
Declare a dynamic array in the Form (Declarations) section-

Form (Declarations)
Dim FieldValues() As String

Step 3:
Add the following code to PostModeChange. The code is placed in PostModeChange because there is no reason to build the array of field values if the document
is not being edited. *If documents open in edit mode, place this code in PostOpen instead of PostModeChange.

The field values are taken from the Form, not the uidocument in order to avoid tracking hidden notes fields, such as $UpdatedBy.

Sub Postmodechange(Source As Notesuidocument)
'build array of current values
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim form As NotesForm
Dim fieldnum As Integer
Dim counter As Integer

Set db = session.CurrentDatabase
Set doc = Source.Document
Set form = db.GetForm(doc.Form(0))
fieldnum = Ubound(form.fields)

Redim FieldValues(fieldnum,1)

counter = 0
Forall field In form.fields
FieldValues(counter,0) = field
FieldValues(counter,1) = source.fieldgettext(field)
counter = counter + 1
End Forall
End Sub

Step 4:
Add the following code to the end of QuerySave (after all edit checking is complete).

Sub Querysave(Source As Notesuidocument, Continue As Variant)
If Not Source.IsNewDoc Then
Call EditHistory
End If
End Sub

Step 5:
Create the EditHistory sub -You can copy this code into the Form (Declarations) section. This code adds a line to the EditHistory field for each modified field value.
The line consists of the date, user name, fieldname, prior value, and new value (tab separated).

Sub EditHistory
Dim session As New NotesSession
Dim workspace As New NotesUIWorkspace
Dim source As NotesUIDocument
Dim fieldnum As Integer
Dim entry As String

Set source = workspace.CurrentDocument

For fieldnum = 0 To Ubound(FieldValues)
If FieldValues(fieldnum,1) <>source.fieldgettext(FieldValues(fieldnum,0)) Then
entry = Date$+Chr(9)+session.CommonUserName+Chr(9) + FieldValues(fieldnum,0)+Chr(9)+ FieldValues(fieldnum,1)+Chr(9)+_
   source.fieldgettext(FieldValues(fieldnum,0))

Call source.FieldAppendText("EditHistory",";"+entry)
End If
Next

End Sub

--- Ende Zitat ---


Axel

luna:
hallo ulrich,

ich hab das hergenommen, aber ich krieg gleich viele komische fehlermeldungen beim versuch, die maske im designer zu speichern. alles ist rot.

hallo axel,

habe genau das gemacht, was da steht, aber ab step 4 krieg ich auch fehlermeldungen.

ich hab doch keine ahnung von script, aber ich hab im juli eine schulung. waere vielleicht von vorteil, wenn man ein bisschen versteht, was man da tut. ich mach jetzt erstmal die schulung, und danach probier ich das alles nochmal. hoffe, ich versteh es dann besser.

ich denke, es wuerde zu weit fuehren, wenn ich jetzt hier immer wieder alle fehlermeldungen reinposte.

nach der schulung, wenn's immer noch nicht klappt, kann ich das ja immer noch machen  ;D

ich nehme inzwischen in der einen DB einfach das script, das ich schon hab (wo man die action selber ausfuellen muss) und fuer die andere DB einfach ein feld "status", in das per append immer reingeschrieben wird, wenn jemand auf einen knopf gedrueckt hat.

vielen dank einstweilen schon mal fuer die tips.

gruss,
daniela

Christopher:
Das Beispiel ist auch nict schlecht :

http://www.kressnerconsulting.de/phistorie.htm

Gallier:
Hallo *.*!

Whoooow. Das habe ich - ehrlich geschrieben - so nicht erwartet. Die Menge der Tipps hat mich doch überrascht. Und gleichzeitig habe ich gelernt, wie sehr ich noch am Anfang stehe. Naja. Gigt eben immer ne Gelegenheit, was zu lernen.

Eure Hinweise, Anregungen und Tipps werde ich Montag mal ausprobieren und wenn' s klappt, bitte ich um Eure Erlaubnis diese Quelle nennen zu dürfen.

Und vor allem: Danke!!!

Schönes Wochenende!

may notes be with you

G.

luna:

--- Zitat ---Das Beispiel ist auch nict schlecht :

http://www.kressnerconsulting.de/phistorie.htm
--- Ende Zitat ---


hallo christopher,

ich hab das auch getestet, es funzt schon, in der DB. aber leider schreibt er in das fenster der history immer nur die allerletzte aenderung rein, dann sieht man aber alle die davor nicht mehr. und das ist aber eigentlich das, was eine history koennen sollte. besonders bei uns.

wenn 20 editoren immer wieder in einer DB rumarbeiten, muesste der chef eine komplette history haben, wer wann was geaendert hat, und nicht immer nur vom letzten.

ausserdem ist das nur eine demo version, die rich text felder nicht kann, und die vollversion kostet wahrscheinlich wieder, und ich darf hier kein geld ausgeben.

gruss,
daniela

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln