Hallo,
in einer Maske kann man ein Passwort eingeben, welches beim Speichern das HTTP-Passwort im Personendokument ändern soll.
Im Querysave der Maske wird ein Agent mit
Call agent.RunOnServer(Cstr(gvBackenddoc.NoteID))
aufgerufen.
Der Code des Agenten ist unten aufgeführt.
Nun gehts los:
In der Serverkonsole wird ein "Gooooo" angezeigt, also doc gefunden.
Dann wird ein "Fehler13" in der Serverkonsole ausgegeben, also lief der Agent auf einen Fehler.
Zeile 13 ist diese: Set doc = db.GetDocumentByID(agent.ParameterDocID)
Das Personendokument im Adressbuch hat einen neuen Stempel (also gespeichert durch den Agenten), aber das neue Passwort funktioniert nicht.
Wenn ich den Code aus dem Agenten direkt in das Querysave werfe, läuft alles super.
1. Wisst ihr, warum der Agent meint, er hat einen Fehler in Zeile 13, obwohl er erst fehlerfrei über die Zeile läuft?
2. Wisst ihr vielleicht auch noch, warum das neue HTTP-Passwort per Agent nicht geht, aber aus dem Querysave direkt schon?
Ich brauche den Agenten, damit ich diesen mit dem Server signieren kann und der auf alle Personendokumente im Adressbuch Schreibrechte hat.
Vielen Dank für Hilfe!
Matthias
Sub Initialize
Dim db As notesdatabase
Dim s As New NotesSession
Dim doc As NotesDocument
' Dim coll As NotesDocumentCollection
On Error Goto fehler
'#######
Dim agent As notesagent
Set agent = s.CurrentAgent
Set db = s.CurrentDatabase
Set doc = db.GetDocumentByID(agent.ParameterDocID)
If doc Is Nothing Then
Print "################ FEHLER ################"
Else
Print "################ Gooooooooooooo ################"
End If
'#######
Dim tmp As Variant
Dim tmp2 As Variant
' Set coll = db.UnprocessedDocuments
' Set doc = coll.GetFirstDocument
Dim passwort As String
passwort = doc.passwort(0)
tmp = Evaluate({@Password("| & passwort & |" )}, doc)
Print passwort
'tmp2 = Evaluate(|@Password("wurst2010")|, doc)
Dim adressdoc As NotesDocument
Dim adressdocview As NotesView
Dim adressbuch As NotesDatabase
Set adressbuch = s.GetDatabase(db.Server, "names.nsf")
Set adressdocview = adressbuch.GetView("(Person Common)")
Set adressdoc = adressdocview.GetDocumentByKey(doc.user(0), True)
adressdoc.HTTPPassword = tmp(0)
Call adressdoc.ComputeWithForm(True, False)
Call adressdoc.Save(True, False)
' Call adressbuch.Replicate( "Sametime2" )
Exit Sub
fehler:
Print "Fehler" & Cstr(Erl)
Exit Sub
End Sub