Autor Thema: Dokumentenhistorie  (Gelesen 3706 mal)

Offline Gallier

  • Frischling
  • *
  • Beiträge: 2
  • I love YaBB 1G - SP1!
Dokumentenhistorie
« am: 13.06.02 - 20:53:18 »
Hallo @All!

Bin neu hier und fast genauso frisch in Notes. Nach dem Motto "mach mal eben" habe ich den Auftrag gewonnen in einer gegebenen Maske Felder unterzubringen, die die Historie des Dokuments wiedergeben.

Ziel: Wer, hat was, wann geändert?

Dieses soll laufend fortgeschrieben werden.

Wer weiß Rat!

Die spinnen die Römer!

Gruss
Gallier
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline Christopher

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.060
  • Geschlecht: Männlich
  • Dumm ist der, der dummes tut.
Re: Dokumentenhistorie
« Antwort #1 am: 13.06.02 - 23:01:40 »
Möchtest Du wissen welches Feld bearbeitet worden ist oder genügt es wer das Dokument bearbeitet hat?

Erstelle ein Feld "sÄnderungshistorie" Text Berechnet mit folgender Formel:

@If(@IsDocBeingSaved & !@IsNewDoc;
                   "Geändert durch "+@Name([CN];@UserName)+ " am "+@Text(@Now)+@NewLine+sÄnderungshistorie;"")
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Client & Server R 5.011
Principal Certified Lotus Professional R5 System Administration
Microsoft Certified Systems Engineer 2000
Microsoft Certified Systems Administrator 2000
Microsoft Certified Systems Administrator 2003
Microsoft Certified Systems Engineer 2003

Offline Christopher

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.060
  • Geschlecht: Männlich
  • Dumm ist der, der dummes tut.
Re: Dokumentenhistorie
« Antwort #2 am: 13.06.02 - 23:05:58 »
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Client & Server R 5.011
Principal Certified Lotus Professional R5 System Administration
Microsoft Certified Systems Engineer 2000
Microsoft Certified Systems Administrator 2000
Microsoft Certified Systems Administrator 2003
Microsoft Certified Systems Engineer 2003

Offline luna

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.362
  • Geschlecht: Weiblich
  • mein name ist hase...
    • sixtnix homepage
Re: Dokumentenhistorie
« Antwort #3 am: 14.06.02 - 07:50:22 »
hallo christopher,

ich hab mir das jetzt mal alles vorgenommen, und ich brauche das auch oft. ich hab in einer DB auch schon eine history, die das erfasst, mit script allerdings. jedoch ist da ein mussfeld drin, da muss derjenige welche auch reinschreiben, was er getan hat. das ist fuer die user aber immer ziemlich laestig, weil oben klicken sie an und unten muessen sie im prinzip nochmal reinschreiben, was sie oben getan haben.

gibt es zu der history formel noch die moeglichkeit, festzustellen, welches feld der user in was geaendert hat?

gruss,
daniela
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
im moment in mutterschutz

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re: Dokumentenhistorie
« Antwort #4 am: 14.06.02 - 08:12:18 »
Moin,

hab hier was gefunden:

Here is a Lotusscript method for determining if a change has been made on a document. The basic concept is that at specific points (Open, Edit, Save, etc.) the values of all items on a document are captured into a global list. Then when saving the document a comparison of the previously captured items and values can be made with the current document items and values in order to determine what has changed. Originally I had implemented this using dynamic arrays to hold the item names and values... then I discovered that Lists were much more efficient and reduced the amount of code and processing time significantly.
      
'Add the following line to the forms Global (Declarations)
Public ItemValues List as string

'The next step is to add code to record the initial item values.
'(1) When the form is first opened in the forms PostOpen event...
Call RecordItemValues(Source)
'(2) When the form is switched from Read to Edit in the QueryModeChange event...
Call RecordItemValues(Source)
'(3) And when the form is saved at the end of the QuerySave event...
if DocHasChanged(Source) then
' further change handling
end if
Call RecordItemValues(Source)

Sub RecordItemValues(Source As NotesUIDocument)

' Record the current values of all items on the document.
Dim doc As NotesDocument
Set doc = source.Document

Forall i In doc.items
itemValues(Ucase(i.Name)) = i.Text
End Forall

End Sub

'Here is the code that makes the comparison and determination that anything has changed...

Function DocHasChanged(Source As NotesUIDocument) As Integer

Dim doc As NotesDocument
Set doc = Source.Document

DocHasChanged = False

' Catch the 'List Item Does Not Exist' Error (In case a new item was added to the document)
On Error 120 Goto newitem

If Not source.IsNewDoc Then ' Don't check new documents
' Step through each item on the document
Forall i In doc.items
nm$ = Ucase(i.name)
If nm$ <> "$REVISIONS" And nm$ <> "$UPDATEDBY" And nm$ <> "SAVEOPTIONS" Then ' Filter out specific fields
vl$ = itemValues(nm$)
If vl$ <> i.Text Then
' We have a change.
DocHasChanged = True
' In this case we want to report the change and stop... you could just as easily replace the two ' lines below with other processing code such as recording the changes to a history field, etc.
Msgbox "Change.... Field: " & nm$ & " From:" & vl$ & " To: " & i.Text & "."
Exit Forall
End If
End If
End Forall
End If

Exit Function

newitem:
' This item is new
vl$ = ""
Resume Next

End Function
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Dokumentenhistorie
« Antwort #5 am: 14.06.02 - 08:15:02 »
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


Axel
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline luna

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.362
  • Geschlecht: Weiblich
  • mein name ist hase...
    • sixtnix homepage
Re: Dokumentenhistorie
« Antwort #6 am: 14.06.02 - 08:51:33 »
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
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
im moment in mutterschutz

Offline Christopher

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.060
  • Geschlecht: Männlich
  • Dumm ist der, der dummes tut.
Re: Dokumentenhistorie
« Antwort #7 am: 14.06.02 - 15:43:38 »
Das Beispiel ist auch nict schlecht :

http://www.kressnerconsulting.de/phistorie.htm
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Client & Server R 5.011
Principal Certified Lotus Professional R5 System Administration
Microsoft Certified Systems Engineer 2000
Microsoft Certified Systems Administrator 2000
Microsoft Certified Systems Administrator 2003
Microsoft Certified Systems Engineer 2003

Offline Gallier

  • Frischling
  • *
  • Beiträge: 2
  • I love YaBB 1G - SP1!
Re: Dokumentenhistorie
« Antwort #8 am: 15.06.02 - 17:30:04 »
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.
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline luna

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.362
  • Geschlecht: Weiblich
  • mein name ist hase...
    • sixtnix homepage
Re: Dokumentenhistorie
« Antwort #9 am: 17.06.02 - 09:03:45 »
Zitat
Das Beispiel ist auch nict schlecht :

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


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
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
im moment in mutterschutz

Offline deepsee3

  • Senior Mitglied
  • ****
  • Beiträge: 426
  • Geschlecht: Männlich
  • Notes ... be back on track ;)
    • Baustelle
Re: Dokumentenhistorie
« Antwort #10 am: 17.06.02 - 10:46:13 »
Hallo

Eknori hatte da doch schon mal so ein Klasse Rechte Tool gebaut , da kannste auch die zugriffe sehen bzw. Änderungen. Vielleich kannst das ja mal als Vorlage benutzen.

Ansonsten :

Ich hab das mit elektronischen Unterschriften geregelt.
Änderungen können nur bei Unterschriften gespeichert werden und die alten Dokumente werden zu Antworten.

So hat man eine lückenlose Änderungsübersicht bzw. weiß auch wer das verbrochen hat.

CU
Client   : notes 9.0.1 fx4
Server : notes 9.0.1 fx4 - 2012 R2

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz