Logging der Lesezugriffe auf ein Dokument

  • Hallo Leute,


    es wäre schön wenn ich auf gewissen Dokumenten ein Logging mitführen könnte, wer/wann dieses Dokument gelesen hat.
    (Es gelten dann keine faulen Ausreden mehr im Sinne "das hab ich nicht gewusst ..")
    Wie ist sowas sinnvollerweise einzubauen ?


    Danke


    Günther

  • Alternativ kannst Du die Lesezugriffe in einem "versteckten" Feld im Dokument selbst beim QueryOpen Event mitloggen. Der Vorteil ist, dass Du nicht noch die Verbindung zwischen Protokolleintrag und Dokument erstellen mußt und im Eintrag direkt nachschauen kannst, wer gelesen hat. Im einfachsten Fall (nur den letzen Leser protokollieren sieht) das so aus:


    Sub Queryopen(...)
    Dim session As New NotesSession
    Dim doc As NotesDocument


    Set doc=source.Document
    doc.LastReader=session.CommonUserName & " " & Cstr(Now())
    Call doc.Save(True,False)

    End Sub


    Zum Protokollieren aller Leser schreibst Du "LastReader" einfach fort:


    doc.LastReader= _
    doc.LastReader(0) & Chr(13) & _
    session.CommonUserName & " " & Cstr(Now())


    Nachteil, dabei ist natürlich, dass bei vielen Lesezugriffen der Feldinhalt aufgebläht wird und im Extremfall seine Grenze erreicht wird.

    • Offizieller Beitrag

    ein weiterer Nachteil von UWE.S Methode:
    Leser auf die DB oder Autoren, die das Dokument nicht bearbeiten dürfen, nicht mit gelogt werden.


    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

  • Im Queryopen soll das Feld fortgeschrieben werden? Wie ist es denn, wenn ich das Dokument im Preview Pane öffne? Ich meine mich zu erinnernn, dass das Queryopen-Event dann nicht auftritt.


    /edit:
    Ausreden, wie "Das hab ich nicht gewusst" kannst du nie ganz verhindern. Ich kann mir auch aus den Dokumenteneigenschaften das Feld "Body" (oder wie auch immer es bei dir heißt) ansehen. Und willst du das verhindern, must du ganz andere Handstände machen. Bis hin dazu, das Design zu verbergen...

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

  • UWE.S
    Und du bekommst Speicherkonflikte wenn zwei oder mehr Leute gleichzeitig auf das Dokument zugreifen.
    Ausserdem funktioniert das Vergeben von Zugriffsrechten auf Dokumentebene auch nicht mehr, da ja jeder das Dokument bearbeiten können muss

  • Danke für Eure Anregungen !


    Also, ich habs jetzt so gemacht :


    Es gibt ausserhalb eine eigene Log-Datenbank.
    Beim QueryOpen wird dort ein Dokument angelegt, dieses enthält ja schon automatisch Infos zu User und Datum/Zeit. Da schreibe ich noch ein paar Felder rein, um das Dokument identifizieren zu können.
    Das funktioniert auch, falls das Dokument in der Vorschau geöffnet wird.
    In der Log-Datenbank genügt übrigens "Depositor" Recht.


    :) jetzt lässt sich zwar nachvollziehen, wer was wann gelesen hat, aber ob er es auch vestanden hat ...



    Danke !


    Günther

  • Mach doch eine Maske, die beim schliessen des Dokuments aufpoppt:


    a) gesehen aber nicht gelesen
    b) gelesen aber schon wieder vergessen
    c) gelesen und verstanden
    d) ich bin dagegen


    Das kannst du dann gleich in der Log-DB vermerken und sehr schön auswerten.


    Aber vom Betriebsrat absegnen lassen ;)

    Bye
    Torsten


    IBM Advanced Certified System Administrator - Lotus Notes and Domino 8.5