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:
_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")
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.
MartinScott sei Dank: :o
Kurz und knapp, aber noch nicht fertig:
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