Autor Thema: Historienfunktion aufpeppen  (Gelesen 2138 mal)

Offline Don Pasquale

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.390
  • Geschlecht: Männlich
  • Don Pasquale
    • Auf Verlorenem Posten
Historienfunktion aufpeppen
« am: 30.10.02 - 20:58:12 »
Hallo Leute,

ich habe hier eine nette Historienfunktion gefunden, die aber leider immer wieder das alte Feld überschreibt. Was aber nicht der rechte Sinn einer Protokollfunktion ist.

Hat da jemand eine Idee, wie ich dem Feld $Historie etwas mehr Gedächtnis beibringe ?

Code
Sub Querysave(Source As Notesuidocument, Continue As Variant)
   Stop
   If Source.isnewdoc Then Exit Sub
   cl$=""
   On Error Resume Next
   
   Forall v In vals
      f$=Listtag(v)
      Set i=source.document.getfirstitem(f$)
      If i.text<>v Then 
         cl$=cl$+f$+": "+Left(v,1000)+" --> "+Left$(i.text,1000)+Chr(10)
         v=i.text
      End If
   End Forall
   If cl$<>"" Then
      Dim s As New notessession
      entry$=  Chr$(10) +_
      Cstr(Now)+" - Änderung durchgeführt von "+ s.commonusername+ Chr(10)+Trim$(cl$)+Chr(10)+" "
      source.document.~$Historie= entry$ 
      
   End If
   
End Sub


Vielen Dank für Eure Hilfe

Don Pasquale

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Historienfunktion aufpeppen
« Antwort #1 am: 30.10.02 - 21:40:13 »
... das du den Inhalt überschreibst, kann ich aus dem Code lesen. Wenn du den neuen Wert anhängenwillst, mußt du zunächst den Inhalt des Feldes in eine Variant-Variable laden.
Wenn in dem Feld bereits ein Inhalt war, dann wird es in der Variablen als Array gehandhabt.

In Notes 5 gibt es die Funktion ArrayAppend(...)
Damit bist du in der Lage deiner Variant-Variablen einen Wert anzuhängen.

TIP: mach aus dem Historienfeld ein MultipleValue-Feld - neue Werte mit neuer Zeile anzeigen - damit sparst du den Chr(10)

ata
Grüßle Toni :)

Offline wflamme

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 690
  • Geschlecht: Männlich
  • Irgendwie geht das schon...
    • wflamme
Re:Historienfunktion aufpeppen
« Antwort #2 am: 30.10.02 - 22:28:09 »
http://www.dominopower.com/
A flexible approach to keeping a history of recent edits

Ich hatte irgendwo auch mal einen Link auf einen OOP-orientierten Ansatz, der mir gut gefiel - mal gucken, ev. finde ich das noch.

Grüße,
Wolfgang
Grüße,
Wolfgang

"I love deadlines. I love the whooshing sound they make as they pass by..."
DOUGLAS ADAMS

wflamme@mainz-online.de
http://www.sns1.de/partner/flamme/wflamme.nsf

Offline Don Pasquale

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.390
  • Geschlecht: Männlich
  • Don Pasquale
    • Auf Verlorenem Posten
Re:Historienfunktion aufpeppen
« Antwort #3 am: 31.10.02 - 09:17:57 »
@Ata : Großer Meister

hier meine Lösung (genauso wie Du es beschrieben hast.)


Im Feld Historie habe ich
Mehrfachwerte zulassen

Werte trennen bei Eingabe mit Leerzeile
Getrennte Werte Anzeigen mit Leerzeile


Das mit den Mehrfachwerten war auch wohl weshalb alle meine Ansätze nicht geklappt hatten.


Code
Sub Postopen(Source As Notesuidocument)
   Stop
   Forall i In source.document.items
      show_hist = True
      If Lcase(Left$(i.name,3))="tm_" Then show_hist = False ' diese felder nicht sammeln
      If Left$(i.name,1)<>"$" And show_hist Then vals(Lcase(i.name))=i.text
   End Forall
End Sub

Sub Postsave(Source As Notesuidocument)
   Forall i In source.document.items
      show_hist = True
      If Lcase(Left$(i.name,3))="tm_" Then show_hist = False ' diese felder ignorieren
      If Left$(i.name,1)<>"$" And show_hist Then vals(Lcase(i.name))=i.text
   End Forall
End Sub






Sub Querysave(Source As Notesuidocument, Continue As Variant)
   Stop
   If Source.isnewdoc Then Exit Sub
   cl$=""
   On Error Resume Next
   
   Forall v In vals
      f$=Listtag(v)
      Set i=source.document.getfirstitem(f$)
      If i.text<>v Then 
         cl$=cl$+f$+": "+Left(v,1000)+" --> "+Left$(i.text,1000)+Chr(10)
         v=i.text
      End If
   End Forall
   If cl$<>"" Then
      Dim s As New notessession
      entry$=  Chr$(10) +_
      Cstr(Now)+" - Änderung durchgeführt von "+ s.commonusername+ Chr(10)+Trim$(cl$)+Chr(10)+" "
      source.document.~$Historie= Arrayappend(source.document.~$Historie, entry$ )
      
   End If
   
End Sub

und im Feld $Historie

@If(@IsNewDoc; ""; $Historie)


So funzt es prima.

 ;D ;D ;D

Vielen Dank


Ciao

Don Pasquale


 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz