Autor Thema: History  (Gelesen 1207 mal)

Offline SnooP

  • Frischling
  • *
  • Beiträge: 21
  • Ich liebe dieses Forum!
History
« am: 26.06.03 - 17:20:45 »
Ich habe ein Script das ein Feld durch ein Klick im Backend ändert und das Dokument anschließend schließt.

Hier mein Script:

   Dim UiWs As New Notesuiworkspace
   Dim uidoc As notesuidocument
   Dim doc As notesdocument
   Dim var As Integer
   
   Set uidoc=uiws.currentdocument
   Set doc=uidoc.document
   
   var2=Messagebox ("Sind sie sicher?", 36 , "Frage")   
   If var2=6 Then
      If doc.wpm(0)="wpm" Then
         doc.Status="2"
         var=Messagebox ("test", 32 , "bla")      
         Call doc.save(True, True)
         Call uidoc.Close
      Else
         doc.Status="3"
         Call doc.save(True, True)   
         Call uidoc.Close
      End If
   End If
   
End Sub

so, das Funktioniert auch. In diesem Dokument befindet sich eine TeilMaske, mit 3 Feldern :

SessionTimes
SessionEditors
SessionStatus

die es mir eine Historie ermöglicht, wann und durch wen ein Dokument geändert wurde. Soweit so gut.

Jetzt habe ich schon mehrer Stunden verbracht mein Problem zu lösen und bin zu keinem Ergebniss gekommen.

Ich möchte, dass mitprotokuliert wird wenn sich das Feld FeldName="Status" ändert. Die Änderung erfolgt wie oben beschrieben im Backend duch ein Click auf ein Button.

Das Problem dabei ist eigentlich der, dass meine History nurmitbekommt, dass ein Doku. gespeichert wurde und sich ein feld verändert hat (Stichwörter: Postopen, Querysave, Postsave). Da ich das Feld aber im Backend verändere, bekommt meine History das nicht mit.

Danke im Voraus

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re:History
« Antwort #1 am: 26.06.03 - 18:34:23 »
wenn sich was "ändert" ...
dazu trägst Du ins PostOpen Event der Maske eine globale Variable ein, die im IDE "Initialize" Bereich dann gefüllt wird (immer noch PostOpen Event) mit [CHECKER = doc.status(0)]

wenn nun Dein Buttonm Click kommt,
erfolgt die Überprüfung per

if doc.status(0) <> CHECKER Then
mach Deine Historie.....
End

die Historie selber, also in ein Feld etwas fortzuschreiben ist nicht so schwer (mal etwas umständlicher der Code, abert hoffentlich nachvollziehbarer):
Dim current As String
current$ = Time$()
Auslesen = doc.Historie(0)
Neu = doc.FeldABC(0) & " am " & current$
Protokoll = Auslesen & Chr(10) & Neu
doc.Historie=Protokoll
Vielleicht verdirbt Geld wirklich den Charakter.
Auf keinen Fall aber macht Mangel an Geld ihn besser.
(John Steinbeck)

Meiporblog: http://www.meipor.de/blog
allg. Unternehmerblog: http://www.m-e-x.de/blog

Offline SnooP

  • Frischling
  • *
  • Beiträge: 21
  • Ich liebe dieses Forum!
Re:History
« Antwort #2 am: 27.06.03 - 12:16:01 »
Leider bekomme ich es nicht hin daher alles etwas ausführlicher:

ich habe eine Teilmaske mit 3 Feldern:

SessionTimes = (Wert) @Now
SessionEditors =(Wert) @UserName
SessionStatus = (Wert) "Dokument erstellt"

in der Maske (im Dokument) befindet sich ein Feld "CommentHistory"

Im Feld sind folgende Werte einegtragen:

(SessionStatus + ": ")  + @Name([CN];SessionEditors)+" am " + @Replace(@Text(@Weekday(SessionTimes));"1":"2":"3":"4":"5":"6":"7";"Sonntag" : "Montag" : "Dienstag" : "Mittwoch" : "Donnerstag" : "Freitag" : "Samstag") + ", den "+
@Text(@Day(SessionTimes)) + "." + @Replace(@Text(@Month(SessionTimes)); "1":"2":"3":"4":"5":"6":"7":"8":"9":"10":"11":"12" ; "Januar":"Februar":"März":"April":"Mai":"Juni" : "Juli" : "August" : "September" : "Oktober" : "November":"Dezember") + " " + @Text(@Year(SessionTimes)) +
" um " + @Text(SessionTimes;"S1")

Jetzt muss ich in der Teilmaske den Script einbauen wie RobGreen es beschrieben hat.
Es müssen also alle veränderungen in ein Array geladen werden die dan dem Feld "CommentHistory" zugewiesen werden, der wiederum Zeigt wie Werte bzw. Daten in der Maske an.

Leider bekomme ich es nicht hin !!!

Hier mein verzweifelter Versuch:

   Dim session As New NotesSession        
   Dim workspace As New NotesUIWorkspace
   Dim uiDoc As NotesUIDocument
   Dim currentDoc As NotesDocument
   Dim dateField As NotesItem
   Dim statusField As NotesItem
   Dim nameListItem As NotesItem
   Dim nameArray As Variant            Dim dateArray As Variant            
   Dim statusArray As Variant

   
   Set uiDoc = workspace.CurrentDocument
   Set currentDoc = uiDoc.Document
   
   Stop
   
     REM Append the "SessionEditors" field with the current editor of the document.
   
   Set nameListItem  = currentDoc.GetFirstItem( "SessionEditors" )        
   Set dateField        = currentDoc.GetFirstItem( "SessionTimes" )
   Set statusField      = currentDoc.GetFirstItem( "SessionStatus" )
   
   nameArray             = nameListItem.Values
   dateArray               = dateField.Values
   statusArray            = statusField.Values
   
   If addToFields And (Not uiDoc.IsNewDoc) Then
      Redim Preserve nameArray(Ubound(nameArray) + 1)
      Redim Preserve dateArray(Ubound(dateArray) + 1)
      Redim Preserve statusArray(Ubound(statusArray) + 1)
   End If
   
   nameArray(Ubound(nameArray)) = session.UserName
   dateArray(Ubound(dateArray)) = Now
   
'- Prüfen der Veränderung des Statusfeldes-------------------------------------
   If currentDoc.Status(0) <> checker Then
   Redim Preserve statusArray(Ubound(statusArray) + 1)
   statusArray(Ubound(statusArray)) = "Status geändert '
   End If
   
If Not uiDoc.IsNewDoc Then
      nameListItem.Values = nameArray
      dateField.Values = dateArray
      statusField.Values = statusArray
   End If
   
   
End Sub

Danke im Voraus für eure Hilfe

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz