Historie über ien Feld erstellen

  • Hi @ all,


    ich möchte eine Historie über ein Feld "Responsable" erstellen.
    Die Histrorie soll in einem weiterem Feld "PreResponsable" mit Mehrfachwerten gespeichert werden.
    Kann mir bitte jemand eine Lösung anbieten. Ich weiss z.Zt. nicht mehr weiter. :-?


    Gruß


    wilfried

    • Offizieller Beitrag

    Was soll alles erfasst werden?, nur Bearbeiter und Zeit oder auch veränderte Feldinhalte?


    nur Bearbeiter und Zeit:
    beim Speichern (QuerySave oder PostSave) den Inhalt des Feldes Responsable an das Feld PreResponsable anhängen (ArrayAppend(NotesDocument.Responsable, NotesDocument.PreResponsable) und das Feld Responsable mit dem NotesSession.CommonUsername und Today oder Now berechnen.


    mit Feldveränderungen:
    im PostOpen alle Feldinhalte in Variablen oder ein Array schreiben und im QuerySave vergleichen und bei Änderungen im Feld Responsable dokumentieren.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Es soll nur der Bearbeiter erfasst werden.


    Kannst du mit bitte die Lösung mit Feldveränderungen einmal zeigen,
    also was und wie muss in Postopen und Querysave.
    Von Script habe ich noch keine Ahnung, kommt aber noch.


    Wilfried

    • Offizieller Beitrag

    In etwa so (im QuerySave):

    Code
    dim session as new NotesSession
    dim doc as NotesDocument
    set doc = Source.Document
    doc.PreResponsable = ArrayAppend(doc.Responsable, doc.PreResponsable)
    doc.Responsable = Today & " - " & session.CommonUserName
    Source.Refresh


    Felddef.
    PreResponsable ... Text-Feld, Mehrfachwerte-Feld, Trenner: neue Zeile - berechnet: PreResponsable
    Responsable ... Text-Feld - berechnet: Responsable


    Bitte erst testen. Es kann sein, das der Source.Refresh nicht ausreicht.


    Gruß
    Dirk

    • Offizieller Beitrag

    wie soll dann das Datum / Uhrzeit dokumentiert werden?


    Wenn es bearbeitbar ist, dann kann doch jeder die Historie verändern.


    Gruß
    Dirk

  • Uhrzeit und Datum wird nicht unbedingt benötigt.


    Es kann jeder aus dem Teilnehmerkreis das Feld Responsable ändern können. Deshalb auch die Historie über das Feld. In dem Feld PreResponsable soll die Änderung dokumentiert werden.


    Gruß



    Wilfried

  • taurec


    Nein, leider funzt das nicht so. Es wird im Feld Responsable beim speichern der Username eingetragen und nicht der ausgewählte Name (den ich aus einer Teilnehmeransicht wähle) eingetragen.
    Das Feld PreResponsable übernimmt den vorherigen Eintrag. Das funzt also schon.


    Wilfried

    • Offizieller Beitrag

    so wie ich es beschrieben habe, wird das Feld Responsable berechnet und mit dem UserNamen überschrieben.


    Falls ich dies falsch verstanden habe, dann lass einfach die Teil doc.Responsable = Today & " - " & session.CommonUserName weg.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Noch einmal zu diesem Thema.
    Es wird jetzt bei jedem speichern der Name aus dem Feld Responsable in das Feld PreResponsable geschrieben.
    Kann man es so hinbekommen, das das Feld PreResponsable vorher gecheckt wird. Damit der gleiche Name an letzter Position nicht noch einmal dort hinterlegt wird. Sondern nur wenn ein anderer Name dazwischen ist.
    Bisheriger Code
    Sub Postsave(Source As Notesuidocument)
    Dim session As New NotesSession
    Dim doc As NotesDocument
    Set doc = Source.Document
    doc.PreResponsable = Arrayappend(doc.Responsable, doc.PreResponsable)
    Source.Refresh
    End Sub



    Gruß


    Wilfried

  • Sorry habe noch keine Ahnung von Scipt.


    Hier:
    Sub Postsave(Source As Notesuidocument)
    Dim session As New NotesSession
    Dim doc As NotesDocument
    Set doc = Source.Document
    doc.PreResponsable = Arrayappend(doc.Responsable, doc.PreResponsable)
    If (doc.PreResponsable(Ubound(PreResponsable) - 1) <> doc.Responsable(0)) Then 'Eintrageb
    End If
    Source.Refresh

    End Sub

  • Dann sollte es so aussehen:


    Sub Postsave(Source As Notesuidocument)
    Dim session As New NotesSession
    Dim doc As NotesDocument
    Set doc = Source.Document
    If (doc.PreResponsable(0) <> doc.Responsable(0)) Then
    doc.PreResponsable = Arrayappend(doc.Responsable, doc.PreResponsable)
    End If
    Source.Refresh


    End Sub