Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Marshuhn am 27.05.04 - 15:24:02
-
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
-
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
-
Ich empfehle die Ansicht ($Users).
Dort steht der Name in allen denkbaren Formen (sogar Soundex) drin - aber klein geschrieben!
Andreas
-
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.
-
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
-
Hmm...also ich krieg in der Zeile keinen Type Mismatch.
Allerdings benutzt Du unten bei set doc = noch "person" und nicht "person1(0)".
-
Hallo Diri,
ich habe das Problem des "Type Mismatch" schon dann, wenn ich die Zeile unter
person1 = Evaluate(|@Name([Abbreviate];@UserName)|)
Msgbox person1
nicht auskommentiere, sondern wie hier ausgeben möchte.
-
Hallo,
auch hier bekomme ich diese Fehlermeldung:
Sub Click(Source As Button)
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
person1 = Evaluate(|@Name([Abbreviate];@UserName)|)
Msgbox person1
End Sub
Gruß + vielen Dank
Marshuhn
-
Wie Diri bereits sagte: person1(0) anstelle von person1
da Evaluate ein Array zurückliefert!
Sub Click(Source As Button)
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
person1 = Evaluate(|@Name([Abbreviate];@UserName)|)
Msgbox person1(0)
person = person1(0)
Msgbox person
End Sub
Andreas
-
Stimmt, hatte ich in der Eile überlesen.
Möchte mich auf diesem Weg wieder einmal für Eure schnelle und tolle Hilfe bedanken.
Merci!!!!!
Marshuhn
-
Gern geschehen ;)
P.S. : Setzt Du den Thread dann noch auf erledigt ?