Domino 9 und frühere Versionen > ND8: Entwicklung
Feld im Userprofil befüllen
gere:
Hallo zusammen,
Leider bin ich was Lotus Script angeht noch fleißig am Trainieren. Ich habe gerade ein kleines Problem, bei dem ich nicht weiterkomme. Ich habe eine Notes-Anwendung und dort einen Synchronisations-Button in einer Maske, mit dem unter anderem die Email-Adresse des Benutzers aus dem Domino Directory ausgelesen werden soll und in das Userprofil des aktuellen Benutzers in dieser Notes-Anwendung geschrieben werden soll. Das im Userprofil vorgesehene Feld heißt "EmailAddress".
Ich habe nun geschafft, die Email-Adresse aus dem Domino Directory direkt in das Test-Feld "Email" der gerade geöffneten Maske zu schreiben (siehe nachfolgender Code).
Sub Click(Source As Button)
Dim s As New NotesSession
Dim workspace As New NotesUIWorkspace
Dim namesDb As New NotesDatabase("", "")
Dim thisdb As NotesDatabase
Dim namesView As NotesView
Dim namesDoc As NotesDocument
Dim nam As NotesName
Dim doc As NotesDocument
Dim uidoc As NotesUIDocument
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 uidoc = workspace.CurrentDocument
Set doc = uidoc.Document
uidoc.EditMode = True
doc.Email = namesDoc.InternetAddress(0)
Call doc.Save(True, False, True)
End Sub
Wenn ich allerdings von der momentan geöffneten Maske das Feld "EmailAddress" im UserProfile füllen will, bleibt das jeweils leer (siehe nachfolgender Code).
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","Database")
pdoc.EditMode = True
pdoc.EmailAddress = namesDoc.InternetAddress(0)
Call pdoc.Save(True, False, True)
End Sub
Wo liegt denn hier der Fehler? Muss ich pdoc als NotesUIWorkspace deklarieren, damit das Feld "EmailAddress" befüllt werden kann?
Danke für Eure Hilfe,
gere
MadMetzger:
Was ist denn das für ein Dokument, das gerade offen ist. Irgendwie scheinst du hier Schwierigkeiten mit der Unterscheidung zwischen Backend und Frontend zu haben. Aber eben dieser Punkt ist sehr wichtig, wenn man mit Notes und Script unterwegs ist.
Eigentlich wundert es mich, dass der obere Code so auch funktioniert und die Adresse in dem Dokument ankommt. Oder gibt es in der Maske, mit der das Dokument geöffnet wurde das Feld Email gar nicht?
Driri:
--- Zitat ---pdoc.EditMode = True
--- Ende Zitat ---
Was willst Du mit dieser Zeile ? Die Property EditMode gibt es für ein NotesDocument nicht.
Du hast überhaupt kein Errorhandling drin. Zumindest eine Prüfung, ob die Objekte überhaupt sauber zugewiesen wurden, solltest Du einbauen (so ala "If Not (namesDoc Is Nothing)...").
Was sagt der Debugger, wenn Du den Code Step für Step laufen läßt ?
gere:
Hallo zusammen,
Danke für Eure Antworten.
@MadMetzger:
Der Synchronize-Button wird in der Aktionsleiste der momentan geöffneten Eingabemaske gedrückt. Ich habe mit dem oberen Code die Email-Adresse aus dem DD ausgelesen und in das Feld "Email" in der gerade offenen Maske geschrieben. Das hat soweit funktioniert. Wenn ich nun aber mit dem selben Button in der momentan geöffneten Maske die Emailadresse aus dem DD in das Feld "EmailAddress" im Userprofil schreiben will, funktioniert das nicht. Benutzt habe ich hierfür den unteren Code.
@Driri:
Mit der Zeile "uidoc.EditMode = True" versetze ich das aktuell geöffnete Dokument in den Edit-Modus. Das klappt sogar.
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?
Danke + Gruss
gere
koehlerbv:
Ingo meinte eine ganz andere Zeile.
Und: Im Backend gibt es keinen EditMode (ist auch unnötig).
Bernhard
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln