Domino 9 und frühere Versionen > Entwicklung
Name aus Adreßbuch in Script übernehmen
(1/1)
bificypdog:
Hallo,
ich wollte per Script ein Auswahlfenster (ähnlich @Picklist in Formelsprache) öffnen, indem ich einen Namen auswählen kann, den ich anschliessend als Variable weiterverwenden kann.
Hintergrund:
Ich will per Script einen Namen auswählen (lassen), für dessen Postkorb eine Kachel auf die Oberfläche erzeugt werden soll.
In der Formelsprache war das ganz einfach. Ich konnte nur den Fall nicht abfragen, wenn man auf die Postkorbkachel nicht berechtigt war. Deswegen versuche ich es jetzt in Script.
So sah es vorher (in Formelsprache) aus:
--- Code: ---_Server:= @Name([CN];@Subset(@DbName;1));
_Filename:= "names.nsf";
_Ansicht1:= "($PeopleGroupsFlat)";
_Ansicht2:= "($Users)";
_Headline:= "Benutzerauswahl";
_Text:= "Bitte wählen sie einen Benutzer aus.";
ID:=@PickList([Custom]:[Single];_Server:_Filename;_Ansicht1;_Headline;_Text;3);
_MailServer := @DbLookup("Notes":"NoCache";_Server:_Filename;_Ansicht2; ID;6);
_MailDB := @DbLookup("Notes":"NoCache";_Server:_Filename;_Ansicht2; ID;7);
@Command([AddDatabase]; _MailServer : _MailDB);
@Prompt([Ok];"Fertig";"Die Kachel wurde Ihrer Arbeitsoberfläche hinzugefügt")
--- Ende Code ---
Mein Script geht mittlerweile über zig Seiten und Unterfunktionen. Wenn das aber auch alles per Formelsprache geht, dann wäre ich für einen Tipp dankbar. Die o.g. Formeln funktionieren, jedoch gefällt mir folgendes nicht:
- Die Ansicht "($PeopleGroupsFlat)" gefällt mir in der Auswahl nicht
- und wenn der Nutzer keine Rechte auf die DB hat, dann erscheint dennoch, dass der Postkorb erfolgreich hinzugefügt wurde.
koehlerbv:
Fertigen Code mag ich jetzt nicht liefern, aber um LotusScript wirst Du nicht herumkommen. Als Tips vielleicht folgende Anmerkungen (de DesignerHelp hilft Dir dann weiter):
- Du kannst für eine PickList in LS eine beliebige Ansicht hernehmen.
- Als Rückgabewert bekommst Du (mit der entsprechenden Methode des NotesUIWorkspace) eine NotesDocumentCollection (die dann nur aus einem Dokument bestehen sollte - siehe Parameter, das kannst Du also beeinflussen).
- Hier findest Du dann alle Angaben, welches Mailfile dem User auf dem Server zugeordnet ist.
- Nun kannst Du versuchen, dieses zunächst im Backend zu öffnen. Bist Du nicht berechtigt, bekommst Du einen Fehler, den Du abfangen kannst (die Fehlernummer erfährst Du über den Debugger bzw. über die DesignerHelp).
- Bekommst Du aber keinen Fehler, kannst Du ins FrontEnd wechseln und die DB dort so öffnen, dass ein Icon dem Workspace hinzugefügt wird.
Im Gegensatz zur Formelsprache (die ich aber nach wie vor extrem schätze), hast Du mit LS alle Werkzeuge und Mittel an der Hand.
Bernhard
bificypdog:
MartinScott sei Dank: :o
Kurz und knapp, aber noch nicht fertig:
--- Code: ---Sub Initialize
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim books As Variant
Dim view As NotesView
Dim dcol As NotesDocumentCollection
Dim person(0) As Variant
Dim matchctr As Long
Dim Fullname As String
Dim MailServer As String
Dim MailFile As String
Dim msgboxd As String
Dim results As New NotesDocument(session.CurrentDatabase)
person(0) = Inputbox$("Bitte geben Sie den Namen des Mitarbeiters ein.")
If person(0) = "" Then Exit Sub
books = session.AddressBooks
Forall b In books
Call b.Open( "", "" )
Set view = b.GetView( "($Users)" )
Set dcol = view.GetAllDocumentsByKey(person(0))
If dcol.Count > 0 Then
matchctr = matchctr + 1
Set doc = dcol.GetFirstDocument
While Not (doc Is Nothing)
If Len(doc.LastName(0)) > 0 Then
Fullname = doc.FirstName(0) & " " & doc.LastName(0)
End If
If Len(doc.MailServer(0)) > 0 Then
MailServer = doc.MailServer(0)
End If
If Len(doc.MailFile(0)) > 0 Then
MailFile = doc.MailFile(0)
End If
Print "Mitarbeiter gefunden in: "+ b.title
' Msgbox msgbox1 & " - " & msgbox3 & " " & Chr$(10) & msgbox2, 0+64, "Suchergebnisse"
Set doc = dcol.GetNextDocument(doc)
Wend
End If
End Forall
If matchctr = 0 Then
Msgbox "Sorry, unable to locate name. "
End If
Call ws.addDatabase(MailServer,MailFile)
Msgbox "Die Postkorbkachel von "+Fullname+" wurde Ihrer Arbeitsumgebung hinzugefügt"+Chr(10)+Chr(10)+_
"Mailserver: "+MailServer+Chr(10)+"Maildatenbank: "+MailFile ,64,"Information"
End Sub
--- Ende Code ---
Navigation
[0] Themen-Index
Zur normalen Ansicht wechseln