Domino 9 und frühere Versionen > ND8: Entwicklung

$writers (gesperrtes Dokument) nach schließen des doc prüfen

(1/2) > >>

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