Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: mgeidl am 13.09.05 - 16:15:43
-
Hallo,
spät aber doch stellen wir nun endlich auch auf R6.5 um. Bin jetzt grad dabei, meine Datenbanken auf einem Pilotserver zu testen und das einzige, wo´s mich aufhaut ist ein Script, das im Queryopen drin ist. Es dient dazu, daß man ein Dokument, daß bereits bearbeitet wird, nicht nochmals in den Bearbeite-Modus setzen kann. Wenn ich das Dokument unter 6.5 öffne, bekomme ich die Fehlermeldung "Wrong number of arguments for method". Kann mir jemand sagen, was dran falsch ist, hab den Code nämlich aus dem Forum hier. DANKE
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 ("Dokument wird gerade bearbeitet von "+varLock(0)+". Das Dokument wird im <LESENMODUS> geöffnet.")
Exit Sub
End If
docBackend.Lock=nnUserName.Common
Call docBackend.Save(True,True)
End Sub
-
versuche mal den Queryopen im designer zu öffnen., zu ändern (eine leerzeile oder so) und Strg-S zu dücken. Es gibt immer noch den Bug, das das Queryopen beim Speichern nicht neu kompiliert wird, wenn man es nicht explizit verändert hat.
Und bei Complilieren sollten der Compiler die Zeile anzeigen, die den Fehler wirft.
-
Hi,
interessant wäre es, an welcher Stelle er aussteigt. Benutz doch mal den Debugger.
Was mir außerdem aufgefallen ist, es fehlt die Deklaration der Variable docBackend.
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)
Dim docBackend As NotesDocument
Set docBackend=Source.document
varLock=docBackend.GetItemValue("Lock")
If (varLock(0) <> "") Then
Msgbox ("Dokument wird gerade bearbeitet von "+varLock(0)+". Das Dokument wird im <LESENMODUS> geöffnet.")
Exit Sub
End If
docBackend.Lock=nnUserName.Common
Call docBackend.Save(True,True)
End Sub
Axel
-
Es wird an dem "Lock" liegen. Lock ist in R6 eine Methode für NotesDocument:
Aus der Hilfe:
Locks a document.
Hinweis This method is new with Release 6.
Defined in
NotesDocument
Syntax
flag = notesDocument.Lock( [ name ] [, provisionalOK ] )
Parameters
name
Array of type String. Optional. The names of the lock holders. Each lock holder must be a user or group. Defaults to one lock holder: the effective user. The empty string ("") is not permitted in the array.
provisionalOK
Boolean. Optional.
True permits the placement of a provisional lock.
False (default) does not permit a provisional lock.
Return value
flag
Boolean.
True if the lock is placed.
False if the lock is not placed.
Du musst also anstelle von
docBackend.Lock=nnUserName.Common
folgendes machen:
call docBackend.ReplaceItemValue("Lock", nnUserName.Common )
Andreas
-
Es wird an dem "Lock" liegen. Lock ist in R6 eine Methode für NotesDocument:
Sie hat doch geschrieben, dass sie das Ganze auf einem Pilotserver mit 6.5 testet.
Axel
-
Glombi hat recht:
diese Zeile:
docBackend.Lock=nnUserName.Common
setzt in R5 ein Feld Namens "Lock"
in R6 versucht er die "lock"- Methode der NotesDocument- Klasse durchzuführen, aber dafür will er Argumente haben.
Also muss die Zeile durch
Call docBackend.ReplaceItemValue( "Lock" , nnUserName.Common )
ersetzt werden.
Gruß
Tode
-
Yoo ihr habt recht. Diesen kleinen, aber feinen Unterschied hab ich übersehen.
Axel
-
he, ihr seid alle voll supa, DANKE!!!!