hallo andreas,
ich hab so eine datenbank, in der die user die nummer allerdings manuell eingeben muessen.
dazu hab ich eine eingabevalidierung:
_VorhNummern := @If ( @IsNewDoc; @DbColumn("":"nocache" ;
"SECLN01/DE/SANYO-ENERGY-EU":"sanyoquo.nsf" ; "($All)" ; 2 );
"");
@If( @IsMember(@Text(quotation_number) ; @Text (_VorhNummern)) ; @Failure
("This number is already existing! Please use next number!") ; @Success )
damit keine konflikte bestehen, locke ich das dokument vorher mit einem script, das ich hier aus dem forum habe.
postopen:
Sub Postopen(Source As Notesuidocument)
Dim sess As New NotesSession
Dim doc As NotesDocument
Dim thatUser As String
Set doc = source.document
If Source.EditMode Then
If doc.HasItem("LockEdit") Then
Source.EditMode = False
thatUser = doc.LockEdit(0)
Msgbox thatUser & "is currently editing this document. You will not be able to edit it until this user has finished editing. Click OK for read only. Close and re-open document for editing later."
Else
Call doc.ReplaceItemValue("LockEdit",sess.CommonUserName)
Call doc.ReplaceItemValue("LockEditTime", Now)
Call doc.Save(True,True)
End If
End If
End Sub
querymodechange:
Sub Querymodechange(Source As Notesuidocument, Continue As Variant)
Dim sess As New NotesSession
Dim doc As NotesDocument
Dim thatUser As String
Set doc = source.document
If Source.EditMode Then
Continue = True
Else
If doc.HasItem("LockEdit") Then
thatUser = doc.LockEdit(0)
Msgbox thatUser & "is currently editing this document. You will not be able to edit it until this user has finished editing. Click OK for read only. Close and re-open document for editing later."
Continue = False
Else
Continue = True
Call doc.ReplaceItemValue("LockEdit", sess.CommonUserName)
Call doc.ReplaceItemValue("LockEditTime", Now)
Call doc.Save(True, True)
End If
End If
End Sub
queryclose:
Sub Queryclose(Source As Notesuidocument, Continue As Variant)
Dim sess As New NotesSession
Dim doc As NotesDocument
Set doc = source.document
If doc.LockEdit(0) = sess.CommonUserName Then
Call doc.RemoveItem("LockEdit")
Call doc.RemoveItem("LockEditTime")
Call doc.Save(True, True)
End If
End Sub
das klappt soweit bei mir eigentlich ganz gut. hab die DB 3 x (einmal auf 1er server, cluster auf 2er server, replikation auf webserver) und manche haben sie auch lokal. ich hatte bis dato nur das problem, dass manche user das dokument geoeffnet haben, sich es anders ueberlegt haben, und mit cancel ein leeres dok erzeugt wurde. passierte aber nur ein paarmal am anfang.
ich kann damit ganz gut leben, aber wenn der vorschlag von rob green besser ist, nehm ich den. ich muss wieso ein kassenbuch fuer die buchhaltung machen, da brauch ich genau das gleiche.
gruss,
daniela