Domino 9 und frühere Versionen > ND8: Entwicklung
$writers (gesperrtes Dokument) nach schließen des doc prüfen
Frank_B:
Ich habe eine Notesdatenbank mit aktiviertem "Sperren von Dokumenten zulassen", d.h. während des Editierens ist das Dokument automatisch Notes-Anwendungsseitig gesperrt durch den Autor/Editor.
In seltenen Fällen kommt es vor, dass trotz schließen des Dokuments dieses im "gesperrt" Zustand bleibt.
Beim Schließen ist es doch normalerweise so:
Nach dem "Queryclose" event kommt das "terminate" event. Danach erscheint normalerweise in der Statuszeile des Notes-Clients "Sperre des Dokuments erfolgreich aufgehoben".
Gibt es eine Möglichkeit, direkt nach dem Schließen des Dokuments dies abzuprüfen, sprich zu schauen, ob das $writers feld existiert (gesperrt ist) oder nicht.
Frank_B:
Ich habe das mal so gelöst:
Sub Terminate
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim uidoc As NotesUiDocument
Dim doc As NotesDocument
Set db = session.CurrentDatabase
Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document
If db.IsDocumentLockingEnabled Then
If doc.HasItem("$Writers") Then
doc.RemoveItem("$Writers")
doc.RemoveItem("$WritersDate")
Call doc.Save(True,True)
End If
End If
End Sub
Danach kommt in der Statuszeile KEIN "Sperre des Dokuments erfolgreich aufgehoben".
Ich habe das quasi vorweggenommen um das Dokument definitv zu entsperren.
Spricht eurerseits etwas dagegen ?
Keydins:
Ich habe das in einigen Anwendungen über die Methode "UnLock" aus Notesdocument gelöst. Funktioniert seit Jahren sehr gut.
--- Code: --- Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Set db = session.CurrentDatabase
If Not db.IsDocumentLockingEnabled Then
Print "Dokumentensperre ist in der Datenbank nicht aktiv."
Exit Sub
Else
Set doc = Source.Document
Call doc.UnLock
Print "Dokument wurde entsperrt"
Exit Sub
End If
--- Ende Code ---
Peter Klett:
--- Zitat von: Frank_B am 25.02.16 - 12:55:11 ---Spricht eurerseits etwas dagegen ?
--- Ende Zitat ---
Wenn der Benutzer beim Verlassen des Dokumentes keine Autorenrechte mehr auf das Dokument besitzt, wird das nicht funktionieren. In diesem Fall müsste man im Querysave ein temporäres Autorenfeld in das Dokument einfügen und dieses im Terminate ebenfalls löschen.
Frank_B:
--- Zitat von: Keydins am 25.02.16 - 13:03:29 ---Ich habe das in einigen Anwendungen über die Methode "UnLock" aus Notesdocument gelöst. Funktioniert seit Jahren sehr gut.
--- Code: --- Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Set db = session.CurrentDatabase
If Not db.IsDocumentLockingEnabled Then
Print "Dokumentensperre ist in der Datenbank nicht aktiv."
Exit Sub
Else
Set doc = Source.Document
Call doc.UnLock
Print "Dokument wurde entsperrt"
Exit Sub
End If
--- Ende Code ---
--- Ende Zitat ---
In welchem Event ?
Ich gehe ins "terminate" da ich sicher gehen will, dass das Dokument entsperrt wird sobald es geschlossen wird/ist. (In seltenen Fällen blieb das Dokument nach dem Schließen gesperrt.)
Mit dem Unlock hatte ich keinen Erfolg (warum auch immer)
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln