Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: CrazyCoder am 21.02.03 - 12:50:51

Titel: Doc Kontrolle?!
Beitrag von: CrazyCoder am 21.02.03 - 12:50:51
Schönen Mittag! :)

Also ich habe jetzt schon mehr fach das Problem gehabt das in meiner datenbank mit der gerade ca 30 User arbeiten 2 gleichzeitig in ein Doc gegangen sind und dann verschiedene Versionen des Doc's abgespeichert haben, was dann natürlich zu Replikationsfehlern führt!!  >:(

Nunja, meine Lösung für das Problem ist eigentlich einfach.

Ich müßte kontrollieren ob das Doc gerade von einem anderen User in Bearbeitung ist und dann ne Fehlermeldung bringen!

Hat da jemand Ahnung von?? Ich denke mal das, das vielleicht noch mehr Leute als ich brauchen könnten!  :D

Also, ich bitte dringend um Hilfe!!!

cya
CrazyCoder
Titel: Re:Doc Kontrolle?!
Beitrag von: Axel am 21.02.03 - 13:28:33
Hi,

Das hab ich mal im Web gefunden. Getestet hab ich es allerdings noch nicht.

Zitat
Locking documents to prevent save conflicts
This piece of code assigns edit lock to the first user who opens the document. When other users try to open the same document, they get a message saying "Document is locked by X" and a read-only copy is opened for them. They will not be able to edit the document until the lock is released by the first user.

A manually run agent to unlock the document can be provided for Domino Admin in case of system crash.

Form should have a hidden field called "Lock" of type Text (Editable)
Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
       If (Source.IsNewDoc) Then
              Exit Sub
       End If   'New Doc, Lock not reqd
       Dim varLock As Variant
       Dim session As New NotesSession
       Dim nnUserName As New NotesName(session.UserName)
       Set docBackend=Source.document
       varLock=docBackend.GetItemValue("Lock")
       If (varLock(0) <> "") Then
              Msgbox ("Document is currently locked by "+varLock(0)+". A read-only copy will be opened for your use.")
              Exit Sub
       End If
       docBackend.Lock=nnUserName.Common
       Call docBackend.Save(True,True)
End Sub

'When user trys to edit, check if he/she has the lock

Sub Querymodechange(Source As Notesuidocument, Continue As Variant)
       If Source.FieldGetText("Lock")<>"" Then
              Dim session As New NotesSession
              Dim nnUserName As New NotesName(session.UserName)
              If (Strcomp(nnUserName.Common,Source.FieldGetText("Lock"),5)=0) Then
                     continue=True
              Else
                     Msgbox("Sorry, you are in read-only mode ! This operation cannot be performed. This document is currently used by "+Source.FieldGetText("Lock"))
                     continue=False
              End If
       End If
End Sub

'Release the lock when the user with the lock closes the document

Sub Queryclose(Source As Notesuidocument, Continue As Variant)
       If strNewDoc="New" Then  '(exit if it's a new doc.Set this variable to New in postopen if it's a new doc)
              Exit Sub
       End If
      
       Dim session As New NotesSession
       Dim nnUserName As New NotesName(session.UserName)
       If (Strcomp(nnUserName.Common,Source.FieldGetText("Lock"),5)=0) Then
              Set docBackend=Source.document
              docBackend.Lock=""
              Call docBackend.Save(True, True)
       End If
      
End Sub

Agent to Unlock selected documents -
Manually run agent - Simple Action
Modify field 'Lock': Set to ''

Axel
Titel: Re:Doc Kontrolle?!
Beitrag von: wflamme am 22.02.03 - 22:30:56
In den Formularoptionen das Merging aktivieren, falls die Logik das zuläßt.
Record-Locking macht in replizierenden Umgebungen keinen rechten Sinn, finde ich.
Titel: Re:Doc Kontrolle?!
Beitrag von: CrazyCoder am 26.02.03 - 14:14:24
Hi Leute!
Ich weiß dieser Post war schon fast wieder vergessen, aber ich hatte leider wichtigere Probleme!!

Nunja, den SourceCode der dort über mir ist (Beitrag von Axel) ist nicht so ganz funktionell! Ich versuche mich da gerade durch zu arbeiten, aber ich habe keine Ahung von LotusScript! Meine Programmierkenntnisse reichen gerade soweit, das ich den Code lesen und verstehen kann aber für umschreiben leider nicht mehr!

Kann mir da vielleicht mal einer etwas unter die Arme greifen?!?

Es würde reichen wenn der 2. User entweder das Doc garnicht öffnen oder nur im Lesen-Modus öffen kann.

Hoffe mir kann einer von euch helfen!! :)

cya
CrazyCoder
Titel: Re:Doc Kontrolle?!
Beitrag von: Till_21 am 26.02.03 - 16:01:00
Meine Programmierkenntnisse reichen gerade soweit, das ich den Code lesen und verstehen kann aber für umschreiben leider nicht mehr!

Es würde reichen wenn der 2. User entweder das Doc garnicht öffnen oder nur im Lesen-Modus öffen kann.
CrazyCoder
das macht der code doch, oder ?

gruss
Titel: Re:Doc Kontrolle?!
Beitrag von: CrazyCoder am 26.02.03 - 16:25:15
@Till_21

Hm... also wenn er das tun würde würde ich mich nicht nochmal deswegen malden! In der Theorie stimmt das wohl, er sollte es machen!!! Aber sollen und tun ist was anderes!!! Ausserdem erkennt er auch nicht, das der User der es geöffnet hat das Doc wieder geschlossen hat und sperrt die Dokumente dauerhaft mit dem Namen der Person, zumindest sag er das!
Aber ich kann trotzdem das Doc öffnen und ich kann immernoch in den Bearbeiten-Modus wechseln und locker-flockig meine Änderungen speichern und das sollte er ja eben verhindern! Ne!? :)

Also, du kannst ihn ja mal bei dir einspielen, du wirst sehen er funzt nicht! Und wenn doch dann mußt du mit erklären was du anders hast als ich!!! ;)

cya
CrazyCoder
Titel: Re:Doc Kontrolle?!
Beitrag von: Don Pasquale am 27.02.03 - 10:36:07
Hallo CrazyCoder,

es stimmt, das es vorkommen kann, das die Meldung:
"Dokument ist von XY in Bearbeitung" erscheint,
obwohl dieser bereits vor Stunden den Rechner
ausgeschaltet hat. Deswegen gibt es dann 2 Lösungen:
Man lässt einen Agenten in der Nacht laufen, der
alle Lock Felder leer oder
die betreffende Person öffnet das Dokument erneut
(er ist der einzige der das Lock umgehen kann) und
verlässt das Dokument regulär.


Ciao

Don Pasquale
Titel: Re:Doc Kontrolle?!
Beitrag von: CodeWarrior am 10.03.03 - 21:31:38
Versuchs mal mit http://www.xetrion.com
Document Locking für Notes- und Web-Clients.
Haben es in einigen DBs aktiv, bis jetzt ohne Probleme.

CodeWarrior