Autor Thema: Name aus Adreßbuch in Script übernehmen  (Gelesen 2036 mal)

bificypdog

  • Gast
Name aus Adreßbuch in Script übernehmen
« am: 14.02.05 - 16:45:30 »
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")


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.
« Letzte Änderung: 14.02.05 - 16:48:47 von bificypdog »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Name aus Adreßbuch in Script übernehmen
« Antwort #1 am: 14.02.05 - 21:07:48 »
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

  • Gast
Re: Name aus Adreßbuch in Script übernehmen
« Antwort #2 am: 17.02.05 - 13:58:51 »
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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz