Domino 9 und frühere Versionen > ND8: Entwicklung
Feld im Userprofil befüllen
gere:
@koehlerbv
Sorry, falsch gelesen. Damit dachte ich, das Userprofil irgendwie in den Edit-Modus zu versetzen. War eben ein Versuch, aber genau das ist ja der Knackpunkt, an dem ich gerade hänge. Wie kann ich einen Wert in eine (Profil-)Maske schreiben, die momentan nicht geöffnet ist.
gere
Driri:
--- Zitat ---Die Frage ist nun, wie ich mit einem Button in der Aktionsleiste einer Maske einen Wert ins Userprofil schreiben kann. Irgendwie muss ich das Userprofil ja im Backend den Edit-Modus versetzen, das Feld füllen und dann wieder im Backend speichern. Nur wie?
--- Ende Zitat ---
Falsch ;)
Im Backend gibt es keinen EditMode, wie Bernhard schon sagte. Wenn Du das Backend-Dokument sauber im Zugriff hast, kannst Du die Items direkt ändern und das Dokument speichern.
Entweder so, wie Du das schon im Code stehen hast oder über ReplaceItemValue.
doc.Itemname = Wert
Call doc.ReplaceItem("Itemname", Wert)
Darum auch die Frage nach dem Debugger. Bis auf die Zeile pdoc.EditMode = True sieht das auf den ersten Blick korrekt aus.
Driri:
Was mir gerade noch auffällt, ist diese Codezeile hier :
--- Zitat ---Set pdoc = thisDb.GetProfileDocument("UserProfile","Database")
--- Ende Zitat ---
Steht das wirklich so bei Dir im Code ? Weil dann würde ich mal einen Blick in die Designer Hilfe werfen.
koehlerbv:
Lies Ingos Posting doch mal bitte aufmerksam. Ingo schreibt da auch was vom Debugger, vom Überprüfen von Objekten und vom ErrorHandling.
Und: Dein Code schreibt schon einen Wert in ein ProfileDocument. Die Frage ist nur, ob Du da überhaupt das ProfileDocument beschreibst, welche Du eigentlich beschreiben willst bzw. das, was Du dann öffnest. Du schreibst von "UserProfile", verwendest aber den String "Database" als Schlüssel. Ungewöhnlich ...
Bernhard
gere:
Also der Debuggen zeigt, dass die Variable pdoc ins Leere zeigt. Also liegt mein Problem dort begraben.
Habe nun die Zuweisung folgendermaßen geändert:
Set pdoc = thisDb.GetProfileDocument("UserProfile", s.getUserName(0))
Die Maske des Userprofils heißt "UserProfile", das ist soweit korrekt. Und da ich ja in das UserProfile des aktuellen Benutzers schreiben will, habe ich nun s.getUserName(0) als Sting verwendet. Allerdings wirft mir Notes nun beim Speichern den Fehler "Not a member: GETUSERNAME" aus. Hier nochmal der ganze Code zur Übersicht:
Sub Click(Source As Button)
Dim s As New NotesSession
Dim namesDb As New NotesDatabase("", "")
Dim thisdb As NotesDatabase
Dim namesView As NotesView
Dim namesDoc As NotesDocument
Dim nam As NotesName
Dim pdoc As NotesDocument
Set nam = s.CreateName(s.UserName)
Call namesDb.Open(s.CurrentDatabase.Server,"names.nsf")
Set namesView = namesDb.GetView("($VIMPeople)")
Set namesDoc = namesView.GetDocumentByKey(nam.Abbreviated)
Set thisDb = s.CurrentDatabase
Set pdoc = thisDb.GetProfileDocument("UserProfile", s.getUserName(0))
pdoc.EditMode = True
pdoc.EmailAddress = namesDoc.InternetAddress(0)
Call pdoc.Save(True, False, True)
End Sub
Wie kann ich denn der Variable pdoc das Userprofil zuweisen?
gere
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln