Autor Thema: $writers (gesperrtes Dokument) nach schließen des doc prüfen  (Gelesen 5100 mal)

Offline Frank_B

  • Senior Mitglied
  • ****
  • Beiträge: 275
  • Geschlecht: Männlich
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.



Gruß Frank

Offline Frank_B

  • Senior Mitglied
  • ****
  • Beiträge: 275
  • Geschlecht: Männlich
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 ?
Gruß Frank

Offline Keydins

  • Aktives Mitglied
  • ***
  • Beiträge: 163
  • Geschlecht: Männlich
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
Gruß Dirk

Aktuelle Notesumgebung
~800 BasicClients 9.0.1 FP9 SHF55
  10 FullClients 9.0.1 FP7 SHF143
    7 DominoServer 9.0.1 FP9 HF 139 / 64 Bit

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Spricht eurerseits etwas dagegen ?

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.

Offline Frank_B

  • Senior Mitglied
  • ****
  • Beiträge: 275
  • Geschlecht: Männlich
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

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)
Gruß Frank

Offline Keydins

  • Aktives Mitglied
  • ***
  • Beiträge: 163
  • Geschlecht: Männlich
Bei mir sitzt es im PostSave in dem auch automatisch ein Call source.Close getriggert wird, da das in den speziellen Anwendungsfällen notwendig ist.

Bin mir nicht ganz sicher, könnte aber sein, dass ich es dort mit eingebaut habe, weil es im QueryClose nicht so recht wollte wie es sollte.
Gruß Dirk

Aktuelle Notesumgebung
~800 BasicClients 9.0.1 FP9 SHF55
  10 FullClients 9.0.1 FP7 SHF143
    7 DominoServer 9.0.1 FP9 HF 139 / 64 Bit

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz