Das Notes Forum
Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: wittmann_franz am 10.01.08 - 08:07:23
-
Guten Morgen zusammen,
ich möchte in einer Datenbank ein berechnetes Feld mit den alten Namen nach Namensänderung füllen.
Die Abfrage zum names.nsf des Servers habe ich bereits hinbekommen und kriege auch Daten zurück geliefert.
Nun komme ich bei dem Punkt nicht weiter das gelieferte Ergebnis so anzupassen das nur der alte Name angezeigt wird.
Hier die Formel:
@Implode(
@Name([CN];
@If(HSorGS = "extern" ; "" ;
help != "";
@DbLookup("NOTES"; server : "names"; "$Users";name; "FullName") ;
"")));
Hier das Ergebnis:
Alter Name Alter Name Neuer Name Neuer Name 22222222
Wenn ich das @Name([CN] weg lasse ist das Ergebniss folgendes:
Alter Name/Organisation/DE Alter Name Neuer Name/Organisation/DE Neuer Name 222222
Die Zahl am Ende steht bei uns in jedem Peronendokument und stellt sowas wie die Personalnummer da.
Gibt es evt. ein anderes Feld welches ich nicht kenne, wo nur der alte Name existiert ?
Ansonsten bräuchte ich bitte einen Lösungsansatz (noch besser die Lösung :o)) um die Ergebnisse so umzugestalten das nur noch der Alte Name geliefert wird.
Server 7.0.2
Client 7.0.2
Vielen Dank schon mal für Eure Hilfe
-
Ich habe hier auf die Schnelle das Feld "$AdminpOldWebName" gefunden.
-
:(
Das war es leider nicht.
Dieses Feld habe ich nicht oder sehe ich nirgends.
In den DocEigenschaften wird es jedenfalls nicht afgeführt.
Es gibt dort jedoch die Felder AltFullName, AltFullNameLanguage und AltFullNameSort.
Die sind nur leider alle leer.
-
Das Feld gibt es anscheinend auch nur bei den Personen, die umbenannt worden sind.
-
Îst es nicht so, das im FullName der aktuelle Name oben steht?
Ergo mußte es doch reichen, alle Namen ab der zweiten Position zu nehmen.
-
@klauss
ich habe auch nur bei Personen geschaut die umbenannt worden sind.
@andre
Richtig. Aber genau das ist ja mein Problem.
Das bekomme ich irgendwie nicht hin.
Vor allem brauche ich den Eintrag nur einmal. Das gelingt mir irgendwie nicht.
Habe schon mit @Right, @Subset usw. probiert, leider bisher ohne Erfolg.
-
Rudimentär würde ich sagen:
_Ergebnis := dein DBlookup
@Elements(_Ergebnis) >=1 ; _Ergebnis[1] ; ""
oder
@If(@Subset(@Subset(_Ergebnis;1);-1)= "";"NICHT VORHANDEN";@Subset(@Subset(_Ergebnis;1);-1))
-
wenn die Personalnummer immer gleich strukturiert ist (z.B. Länge), dann kannst du sie doch abschneiden.
grüsse
Dau-in
-
Ja, dann hat er aber immernoch vier Namen da stehen, er möchte doch nur, wenn ich es Richtig verstanden habe, einmal den, wenn vorhanden, alten Namen haben.
-
@Dau-in
daran hatte ich auch schon gedacht, nur leider ist die Nummer immer unterschiedlich
@Andre
Vielen dank für die schnelle Hilfe.
Nur leider ändert sich das Ergebnis überhaut nicht.
Ich habe gerade mal das Ergbnis meines Lookups und das Ergebnis nach Deiner Formel verglichen, die sind komplett identisch.
Ist denn das was ich aus dem names.nsf ziehe eine Liste, oder evt. ein anderer Wert?
Weil @Subset doch nur mit Listen arbeitet oder??
-
Ich bin mir jetzt nicht 100% sicher aber mach noch ein @Explode auf das Ergebnis damit es auf jeden Fall eine Liste ist.
-
Schon viel besser,
Formel sieht jetzt so aus:
@If(@Subset(@Subset(@Explode(full1);1);-1)= "";"NICHT VORHANDEN";@Subset(@Subset(@Explode(full1);1);-1));
Ergebnis nur noch der Vorname >:(
-
Gib dem Explode noch das Semikolon als Trennzeichen mit auf den Weg.
-
hab ich gemacht, dann gibt er mir wieder die komplette Liste zurück.
Mit einem Leerzeichen hab ich´s auch noch versucht, dann wieder nur der Vorname
???
-
Entweder bin ich noch nicht richtig wach - oder ich steh auf nem Schlauch :o
Also der Reihe nach:
- Mit dem Schlüssel "name" zieht er das Dokument aus dem Adressbuch anhand des aktuellen Namens
- Der DBLookup holt alle Einträge aus Fullname
- Der erste Wert der Liste ist der neue Name als hierarchischer Name
- Der letzte Wert der Liste ist die Personalnummer
- Der alte Wert soll in einem Feld als CN gespeichert werden
Jetzt habe ich noch Fragen:
Das Feld Fullname ist bearbeitbar, ist es sicher, daß der zweite Name der alte ist?
Sind alle Personen migriert worden?
Toni
-
... so auf die Schnelle:
REM {Alle Werte ziehen};
vListe := @DbLookup("NOTES"; server : "names"; "$Users";name; "FullName");
REM {Den ersten Wert aus der Liste löschen, Liste Trimmen - damit ist der erste Wert nun der alte Name};
vListe_2 := @Trim(@Replace( vListe ; name ; "" ));
REM {Der erste Wert als CommonName};
vOldName := @Name([CN] ; @Subset(vListe_2 ; 1)) ;
REM {Die bisherige Verweigung verwenden};
@If(HSorGS = "extern" ; "" ;
help != ""; vOldName ;
"")
Toni
-
Hallo Toni,
Du bist ja schneller als die Polizei erlaubt.
Hier meine Antworten
mit dem Schlüssel "name" zieht er den aktuellen (neuen) Namen
Lookup holt alle Einträge
Der erste (hierarchisch) und der zweite (CommonName) Wert in der liste ist der neue Name.
Der letzte Wert ist die Personalnummer
Der alte Wert soll in einem Feld als CN gespeichert werden
Damit ist auch Deine Fraag nach dem bearbeitetem Feld beantwortet.
Was meinst Du mit Deiner Frage zur Migration ??
Ergebnis nach Deiner Formel ist nun jedoch der neue Name.
-
... dann machen wir es anders herum:
REM {Alle Werte als CommonName ziehen};
vListe := @Name( [CN] ; @DbLookup("NOTES"; server : "names"; "$Users";name; "FullName"));
REM {CommonName´des Schlüssels} ;
vKey := @Name([CN] ; name) ;
REM {Alle neuen Namen aus der Liste löschen, Liste Trimmen - damit ist der erste Wert nun der alte Name};
vListe_2 := @Unique(@Trim(@Replace( vListe ; vKey ; "" )));
REM {Der erste Wert sollte dann der alte CommonName sein };
vOldName := @Subset(vListe_2 ; 1) ;
REM {Die bisherige Verweigung verwenden};
@If(HSorGS = "extern" ; "" ;
help != ""; vOldName ;
"")
Toni
-
jupp, das wars.
Vielen Dank an alle die zur Lösung beigetragen haben.