Domino 9 und frühere Versionen > Entwicklung
Extrahieren von Vor- und Nachnamen über Lotus Script
Marshuhn:
Hallo Forum-User,
wir haben folgendes Problem. Wir lassen mit folgender Formel:
person = Strrightback(session.commonusername," ") + " , " + Strleftback(session.commonusername," ")
den Vor- und Nachnamen auslesen, damit wir damit über die Ansicht Personen|People auf das Names- und Adressbuch zugreifen können.
Die erste Spalte ist folgendermaßen sortiert:
Nachname , Vorname
Dieses ist nicht problematisch, wenn es nur einen Vornamen und einen Nachnamen gibt.
Wenn der User aber zwei Vornamen und einen Mehrfachnachnamen (auf der Kamp) mit Blanks besitzt, dann greift unsere Formel nicht mehr.
Wie ist es möglich, dass auch diese Konstellation sauber in Vor- und Nachname extrahiert wird und wir damit auf das Namens- und Adressbuch zugreifen zu können?
Gruß + Danke
Marshuhn
SeppHerberger:
Hallo Marshuhn,
ich weiss zwar nicht wie du den Namen extrahieren kannst. Ich weiss allerdins, dass die Ansicht ($People) nach dem Notes-Benutzernamen sortiert ist und den bekommst du über session.username.
Vielleicht hilft dir dass ja weiter.
Gruss
Daniel
Glombi:
Ich empfehle die Ansicht ($Users).
Dort steht der Name in allen denkbaren Formen (sogar Soundex) drin - aber klein geschrieben!
Andreas
Driri:
Ich würde einfach eine andere View aus dem N&A benutzen, z.B. die versteckte View $VIMPeople. Dort steht in der ersten Spalte der abbreviated Username.
Dann mit Evaluate und @Name([Abbreviate];@UserName) arbeiten.
Marshuhn:
Erst einmal recht herzlichen Dank an Alle!
Ich würde gerne die Lösung von Diri bevorzugen,
bekomme aber wieder bei der Evaluate-Zeile die Fehler-Meldung "Type Missmatch".
Dim session As New NotesSession
Dim books As Variant
Dim view As NotesView
Dim doc As NotesDocument
Dim done As Variant
Dim person As String
Dim person1 As Variant
books = session.AddressBooks
done = False
' person = Strrightback(session.commonusername," ") + " , " + Strleftback(session.commonusername," ")
' person = session.username
person1 = Evaluate(|@Name([Abbreviate];@UserName)|)
' Msgbox person1
' person = session.username
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
Messagebox( "Phone for " + person _
+ " is " + doc.Stellvertreter( 0 ) )
done = True
doc.Stellvertreter="Hugo1"
Messagebox( "Phone for " + person _
+ " is " + doc.Stellvertreter( 0 ) )
If ( doc.Save( False, False ) = True ) Then
Messagebox "Document " & doc.UniversalID & " successfully saved"
Else
Messagebox "Document " & doc.UniversalID & " was not saved"
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
Wo liegt mein Denkfehler?
Gruß + Danke
Marshuhn
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln