Autor Thema: Dokumente nach „Nachnamen, Vorname“ Kategorisieren  (Gelesen 2908 mal)

Offline cg-home

  • Aktives Mitglied
  • ***
  • Beiträge: 172
  • Geschlecht: Männlich
  • atnotes = Retter in der Not
Hallo zusammen,
bei einem Problem benötige ich mal wieder eure Unterstützung.

Ich will Dokumente in einer Ansicht nach „Nachnamen, Vornamen“ kategorisieren bzw. sortieren.
Das wünschen sich viele User, da sie von allen Mitarbeitern nicht die Vornamen kennen eher die Nachnamen.
 
Bei Namensfelder mit nur einem Wert habe ich es mit Formelsprache auch schon hin bekommen mit @Name+CN/@Right usw.
und als Trenner das Leerzeichen zwischen Vor- und Nachnamen.
Ist es aber ein Namensfeld (z.B.: Teilnehmer bei einem Protokoll) mit mehreren Einträgen, klappt es nur wenn sie
gleich aufgebaut sind mit z.B.:
„Vorname Nachname/OU/O“.

Wir haben aber auch folgende Namen
„Nachname/OU/O“   (ohne Vornamen, in Asien)
„Vorname Namenszusatz Nachname/OU/O“   (z.B.: Vorname Van de Nachname, in Niederlande)
„Name“   (manuell eingegebener Namen, z.B.: Externe Dienstleister)
„Gruppe“   (Gruppennamen)
„1.Vorname 2.Vorname Nachname/OU/O“   (Haben wir derzeit nicht ist aber möglich)

Um es für jede Schreibweisen hin zubekommen habe ich das ganze in ein Lotus Script erstellt, mit einer Schleife
auf alle Einträge, was auch soweit klappt mit ein paar Problemen.
Füge ich das Script beim speichern des Dokumentes ein (Query/Postsave), klappte es immer erst beim zweiten
speichern oder mit Fehlermeldungen. Vermutlich hatte ich hier ein Backend-Frontend-Problem.

Derzeit habe ich es im Namens-Feld selbst beim Event Onchange eingefügt.
Da klappt es, aber für Felder die schon mit einem Namen vorgefüllt sind, geht es natürlich nicht, da das Event
nicht ausgelöst wird. Auch in der Ansicht kann ich die Daten nicht bereinigen mit einem
„@Command([ToolsRefreshSelectedDocs])“ was ich ganz gerne zum Bereinigen von Kategorien usw.
über Berechnete Felder nutze.

Am liebsten wäre es mir ja in einem Berechneten Feld aber da geht ja nur Formel.
Oder ich trage hier ggf. eine Formel zum Starten eines Agenten ein welcher wiederum ein Script starten.

Da ich nach den ersten Leerzeichen gehe, klappt das nicht für den Fall mit Zwei Vornamen.
Das wollte ich schon mal so lösen, dass ich alle Namen im Domino Directory nachschlage und mir dort die Felder
Firstname und Lastname hole. Aber bei z.B.: 20 Namen ist das vermutlich nicht ideal immer im DD nach zu sehen.
Auch haben unsere Ausländischen Standorte eigene DD, somit sind deren User gar nicht in unserem DD.

Bevor ich hier weiter „bastle“ würde ich gerne von Euch wissen, wo ist die richtige Stelle um so ein Script zu hinterlegen?
Wie macht Ihr das, ggf. ganz anders?
Kennt Ihr eine gute Beschreibung worauf man in Lotus Script bzgl. Frontend/Backen Zugriff achten muss?

Wäre Klasse wenn ihr mir hier weiter helfen könntet, das aktuelle Script habe ich mal angehängt bei Interesse.

Danke schon mal für Eure Zeit.

Christian

« Letzte Änderung: 15.08.17 - 15:05:32 von cg-home »
11     Server R11.0.1FP3 - Windows Server 2012R2
700   Clients R11.0.1FP3 - Windows Server 2012R2 über Citrix
Traveler R11 | PowerTools 14 | Ytria | DomNavigator

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Dokumente nach „Nachnamen, Vorname“ Kategorisieren
« Antwort #1 am: 15.08.17 - 11:18:49 »
Nimm @NameLookup und hole Dir die Felder "FirstName" und "LastName" damit... dann bist Du ganz sicher.
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Dokumente nach „Nachnamen, Vorname“ Kategorisieren
« Antwort #2 am: 15.08.17 - 11:31:34 »
Eigentlich muss das im Querysave funktionieren. Wenn da Fehler auftreten, musst Du denen nachgehen, evtl. ein Refresh einfügen.

Grundsätzlich halte ich das Vorgehen für nicht wirklich erfolgreich, denn es wird immer Namen geben, die von einer Maschine nicht korrekt zu trennen sind, da hilft wirklich nur die Verwendung separater Felder.

Versuche mal die Namen der beiden Biathleten Fanny Horn Birkeland und Lars Helge Birkeland sauber zu teilen. Kleiner Tipp: Horn ist ein Nachname, Helge ein Vorname.


@Tode: Das DD ist laut cg-home nicht vollständig vorhanden, sonst wäre das sicher ein guter Weg




 

Offline cg-home

  • Aktives Mitglied
  • ***
  • Beiträge: 172
  • Geschlecht: Männlich
  • atnotes = Retter in der Not
Re: Dokumente nach „Nachnamen, Vorname“ Kategorisieren
« Antwort #3 am: 15.08.17 - 12:19:20 »
Danke für die schnelle Antwort.

@Thorsten
mit @NameLookup hatte ich es auch schon mal versucht aber nicht gelesen das es über alle DD geht.
Ich habe es jetzt gleich mal mit folgenden versucht.

vVorname := @NameLookup([NoUpdate];Teilnehmer;"FirstName");
vNachname := @NameLookup([NoUpdate];Teilnehmer;"LastName");
@If(vVorname="";vNachname;vNachname + ", " + vVorname)

oder einfacher

@NameLookup([NoUpdate];Teilnehmer;"LastName")  + ", " + @NameLookup([NoUpdate];Teilnehmer;"FirstName")

Mit der Option NoUpdate bekomme ich jetzte nur noch ein Ergebnis und auch von den DD der Töchter.
Aber auch hier klappt es nur, wenn der Name gleich aufgebaut ist.
Sobald nur ein Eintrag mit einem Nachname enthalten ist, kommt es durcheinander und die Vornamen stehen bei anderen
Nachnamen und kommen mehrfach vor. Eigentlich klar, es werden ja dann zwei Listen mit unterschiedlicher Anzahl Einträge
miteinander kombiniert.


@Peter
Dann versuche ich es noch mal mit dem Querysave und gehe auf die Fehlermeldungen los.
Ggf. kann ich sogar über ein Evaluate das @NameLookup nutzen um auf die Felder zu kommen.
Damit sollte der Zugriff auch realativ flott gehen.
Wenn es im DD korrekt eingetragen ist, sollte es dann auch mit Horn und Helge klappen.
Wer weiß was dann noch für Stolperfallen kommen ;-)

Im Querysave müsste ich doch dann bei einem neuen Dok auch immer nur auf das Frontend gehen - oder?.
Was gibt es hier alles zu beachten? NotesItem gibt es z.B.: nur für Backend und wenn ich dann Mehrfach-Felder
auslese muss ich das mit uidoc.FieldGetText( vFELD ) machen und bekomme keine Liste.
11     Server R11.0.1FP3 - Windows Server 2012R2
700   Clients R11.0.1FP3 - Windows Server 2012R2 über Citrix
Traveler R11 | PowerTools 14 | Ytria | DomNavigator

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Dokumente nach „Nachnamen, Vorname“ Kategorisieren
« Antwort #4 am: 15.08.17 - 13:01:09 »
Ich würde es nur über das Backend machen, z.B. so

Code
Dim namen As Variant
namen = doc.Feld1
Forall n In namen
   n = Korrektur (n)
End Forall
doc.Feld2 = namen

Offline cg-home

  • Aktives Mitglied
  • ***
  • Beiträge: 172
  • Geschlecht: Männlich
  • atnotes = Retter in der Not
Re: Dokumente nach „Nachnamen, Vorname“ Kategorisieren
« Antwort #5 am: 15.08.17 - 15:05:17 »
Danke, jetzt habe ich meinen Fehler gefunden.

Ich habe es auch wieder auf das Backend im Querysave umgestellt
und gesehen, dass ich als Quellfeld ein Feld genommen habe welches auch
schon berechnet ist, darum musste ich immer zweimal speichern. grrr!

Mit Evaluate scheint es jetzt auch zu klappen, hatte noch etwas gehakt,
da mir nicht bewusst war, das Evaluate immer ein Array zurück gibt
und die String-Variabel das nicht gerne hat.
Und wieder bestätigt sich "Wer lesen kann........

Code
	'Auf Notes Namen prüfen - Im Frontend ohne CN=
		If InStr(v,"/") > 0 Then
			'vFullName = StrRight(StrLeft(v,"/"),"CN=")
			vFullName = StrLeft(v,"/")

			vFormula = {@NameLookup([NoUpdate];"} & v & {";"LastName")}
			vLastName = Trim(Join(Evaluate(vFormula)," "))

			vFormula = {@NameLookup([NoUpdate];"} & v & {";"FirstName")}
			vFirstName = Trim(Join(Evaluate(vFormula)," "))  
			
		Else		'Bei manuell eingetragenen Namen ohne / auf Leerzeichen trennen
			vFullName = v

			vLastName = StrRight(vFullName," ")
			vFirstName = StrLeft(vFullName," ")

		End If		'If InStr(v,"/") > 0 Then


Da einzige was noch nicht geht ist der refresh über die Ansicht, aber wenn das nötig werden sollte
kann ich mir einen Agenten machen der das gleiche Script nutzt.

Und wie Peter schon angemerkt hat ist es keine 100% Lösung z.B.: wenn "Nachname Vorname" manuell eingegeben wird.
Ich mache mir in dieser DB Test Ansichten und wenn Sie produktiv genutzt wird, sehe
ich ja wie gut es klappt - oder auch nicht.

Danke Euch beiden, habt mir wieder mal auf die Sprünge geholfen.
11     Server R11.0.1FP3 - Windows Server 2012R2
700   Clients R11.0.1FP3 - Windows Server 2012R2 über Citrix
Traveler R11 | PowerTools 14 | Ytria | DomNavigator

Offline ronka

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Was macht der hier denn, muß der überall sein ?
    • das nächste DominoCamp kommt in Juni 2023
Re: Dokumente nach „Nachnamen, Vorname“ Kategorisieren
« Antwort #6 am: 17.08.17 - 12:27:15 »
Es gibt viele Länder mit doppel Nachnamen wie "Manfred Graf von Nassau bis Oranien", dort geht es dann auch nur wenn beim Registrieren die richtige einträge im Personen dokument gemacht würden.

Ich habe vor lange lange zeit mal für ein CMR eine solche formel erstellt, der aber mit sehr viele ausnahme regelungen auch eine "Eva Maria Gonzales Mercado" richtig einordnen könnte, aber bei "Manuel Espido Andres Villejacho Sandrez-valdez" dann doch wieder scheiterte.

das neueste von Notes und Domino auf den DominoCamp vom 19 bis 21 Juni 2023 auf www.DominoCamp.de

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz