Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Marshuhn am 02.06.04 - 12:31:19
-
Hallo Notesgurus,
ich habe erneut eine Frage:
Ich möchte aus unserem Namens- und Adressbuch für den jeweils angemeldeten Anwender ein Feld (Vertreter) auslesen lassen. Dieses soll alles über ein gemeinsames Feld erfolgen. Das gemeinsame Feld lautet HugoErna und soll auch selber gefüllt werden und dann in der Maske gefüllt angezeigt werden.
Ich verwende dafür folgendes Script:
Sub Initialize
Dim workspace As New NotesUIWorkspace
Dim session As New NotesSession
Dim books As Variant
Dim view As NotesView
Dim doc As NotesDocument
Dim actdoc As notesdocument
Dim item As notesitem
Dim done As Variant
Dim person As String
Dim test As Variant
Dim Stellvertreter As Variant
Dim person1 As Variant
books = session.AddressBooks
done = False
Set uidoc = workspace.currentdocument
Set actdoc =uidoc.document
person1 = Evaluate(|@Name([Abbreviate];@UserName)|)
person = person1(0)
Forall b In books
' check every Domino Directory,
' unless we're already done
If ( b.IsPublicAddressBook ) And ( Not done ) Then
Call b.Open( "", "" )
' look up person's last name
' in People view of address book
Set view = b.GetView( "($VIMPeople)" )
Set doc = view.GetDocumentByKey( person )
' if person is found, display the phone number item
' from the Person document
If Not ( doc Is Nothing ) Then
done = True
If doc.Stellvertreter(0)="" Then
Msgbox "Feld Stellvertreter ist nicht gefüllt"
Msgbox doc.Stellvertreter(0)
Else
Msgbox "Feld Stellvertreter ist gefüllt"
Msgbox doc.Stellvertreter(0)
' Call uidoc.fieldsettext("HugoErna","Hallo")
Set item = actdoc.replaceitemvalue("HugoErna",doc.Stellvertreter(0))
Msgbox actdoc.HugoErna(0)
uidoc.refresh
End If
Else
Msgbox "nicht gefunden"
End If
End If
End Forall
' if done is still False, the person wasn't found
If Not done Then
Messagebox _
( "Sorry, unable to locate person's name." )
End If
End Sub
Leider wird der Wert nur sehr kurz eingeblendet. Danach verschwindet der Wert wieder. Wenn ich die auskommentierte Zeile
(Call uidoc.fieldsettext("HugoErna","Hallo")
durchführen lasse, dann bekomme ich die Fehlermeldung "Notes Fehler #0c:04).
Vielen Dank schon einmal vorab für die Hilfe. :D
Danke
-
Statt uidoc.refresh würde ich ein
call uidoc.Reload
machen. Die Zeile
Call uidoc.fieldsettext("HugoErna","Hallo")
löschen bzw weiterhin auskommentieren, da Du das im Backend setzen solltest.
Andreas
-
Das sieht mir eher nach was anderem aus: Was steht denn als Formel in Deinem berechneten Feld HugoErna ? Vielleicht "" ?
Bernhard
PS: Statt uidoc.Refresh kannst Du auch NotesUIWorkspace.ViewRefresh nehmen.
-
Hallo Ihr Beiden,
wieder einmal schon danke für die Unterstützung.
Das Feld, welches ich füllen lassen will ist ja das gemeinsame Feld. Die oben beschriebene Formel steht im Initialize. Sonst ist keine weitere Formel in diesem gemeinsamen Feld vorhanden. Leider haben mir Eure Voschläge noch keinen Erfolg gebracht. :'(
Gruß + danke für hoffentlich weitere Hilfe
Marshuhn
-
In welchem "Initialize" ?
Wenn ich den Code in das Initialize eines gemeinsamen Feldes einfüge, bekomme ich beim Erstellen eines Dokument hier einen Fehler:
Set uidoc = workspace.currentdocument
"Object variable not set"
Also, wo genau ist der Code?
Andreas
-
Ich habe den Code in das Postopen Event der Maske eingefügt und es funktioniert.
Anstelle eines gemeinsamen Feldes solltest Du also eine Teilmaske machen und den Code dort in das Postopen einfügen.
Andreas
-
Hallo zusammen,
ich klink mich hier mal ein, denn ich arbeite gemeinsam mit Marshuhn an diesem Problem, will aber hier noch mal unsere grundsätzliche Aufgabe schildern:
Wir wollen ein gemeinsames Feld definieren, das per Lotusscript mit einem Vorgabewert gefüllt wird, der im eigenen Dokument des zentralen Adressbuches steht.
Wir haben mit der geschilderten Prozedur versucht, zum die Inhaltsbefüllung zum Initialize-Zeitpunkt durchzuführen, stoßen hier aber auf Schwierigkeiten.
Wenn also jemand einen Tip hat, wie grundsätzlich eine Feldbefüllung (a la Vorgabewert-Funktionalität) mit LS realisiert wird, würden wir uns sehr freuen
Gruß
Matthias
-
Das einzige was in einem Feld mit Script geht, ist das Entering Event (und natürlich auch Exiting). Dann muss aber auch der Cursor darin platziert werden, sonst wird das Event nicht ausgeführt.
An Eurer Stelle würde ich eine Teilmaske verwenden. Das Feld muss ja nicht unbedingt in der Teilmaske stehen.
Initialize geht nicht, da das NotesDocument nicht greifbar ist.
Andreas
-
Hallo Andreas,
vielen Dank für den Tipp. Diesen haben wir befolgt und jetzt funktioniert es prima.
Danke
Danke auch an Bernhard
Marshuhn