Domino 9 und frühere Versionen > ND8: Entwicklung

Feld im Userprofil befüllen

<< < (2/5) > >>

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