AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
27.10.21 - 18:23:05
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  Domino 9 und frühere Versionen
| |-+  ND9: Entwicklung (Moderatoren: Axel, eknori, Thomas Schulte, koehlerbv, m3)
| | |-+  Leserfeld: Namen auf [CANONICALIZE] ändern
« vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Leserfeld: Namen auf [CANONICALIZE] ändern  (Gelesen 227 mal)
emadowo
Aktives Mitglied
***
Offline Offline

Geschlecht: Männlich
Beiträge: 103


Danke für dieses Forum!


« am: 18.10.21 - 16:48:53 »

Hallo!
Muss zu meiner Schande gestehen, gegen die Regel #4 aus https://atnotes.de/index.php/topic,51224.0.html verstossen zu haben.  Roll Eyes
Hab doch tatsächlich in einem Leserfeld [CN] verwendet. "Damals" wars schöner zu handhaben und hatte immer prima funktioniert.

Auf Grund einer Verlagerung meiner Datenbank auf einen anderen Notesserver sehen manche der Leser ihre Einträge nicht mehr.

Nun muss ich die Namen in den Leserfelder (Mehrfachwerte) in den "vollständigen qualifizierten Benutzernamen" ändern, also [Canonicalize].

Und hier sitz ich auf der Leitung und hoffe, ihr helft mir davon runter.

Hab schon versucht, mittels Agent:
holeName := @GetField("$MNAutoren");
kanon := @Name([Canonicalize];holeName);
FIELD $LeseMNAutoren := kanon;
abzuändern, aber die Namen bleiben unverändert.

Vielen Dank!
« Letzte Änderung: 18.10.21 - 16:51:45 von emadowo » Gespeichert

Erwin Maier
IT-Administration Genossenschaftsbank
Notes R9.01
Kenntnisse: Formelsprache, Script
Riccardo Virzi
Frischling
*
Offline Offline

Beiträge: 32



« Antworten #1 am: 18.10.21 - 19:56:11 »

Der @Name Befehl bearbeitet nur den String/Benutzernamen, den er übergeben bekommt. Er macht keine Lookups, um den Namen zu vervollständigen. Die Möglichkeit scheidet leider aus.

Ist die Hierachie bei jedem Benutzer gleich? Das wäre dann einfach:
FIELD Feldname := "CN=" + Feldname + "/OU=Abteilung/O=Firma";
Das geht auch mit Mehrfachwerten.

Ich vermute aber, daß dem nicht so ist. Entweder eine Schleife programmieren, die jeden einzelnen Feldwert ausliest und im names per @DbLookup nach dem kompletten Benutzernamen sucht und dann ersetzt.

Oder mit @Replace arbeiten. Da muß aber eine Benutzerliste aufgebaut werden:
Suche := "Vorname1 Nachname1" : "Vorname2 Nachname2";
Ersetze := "CN=Vorname1 Nachname1/OU=Abteilung 1/O=Firma" : "CN=Vorname2 Nachname2/OU=Abteilung 2/O=Firma";
FIELD Feldname := @Replace( Feldname; Suche; Ersetze );

Keine Gewährleistung für die Formeln. Habe ich nur mal schnell getippt, den gerade Lese- oder Schreibberechtigungen sind heikel  Wink
Gespeichert
CarstenH
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 449



« Antworten #2 am: 18.10.21 - 23:43:50 »

Der @Name Befehl bearbeitet nur den String/Benutzernamen, den er übergeben bekommt. Er macht keine Lookups, um den Namen zu vervollständigen.

Mit @NameLookup sollte es in einem Rutsch ohne "Basteln" gehen - sofern die CN's eindeutig und gültig sind.

Mit gültig meine ich, dass bei früheren Namensänderungen der Nutzer mit hoher Wahrscheinlichkeit nicht alle CN's geändert worden sind, wenn die alten Namen dann iwann aus den Personendokumenten gelöscht wurden findet @NameLookup natürlich nichts mehr und liefert einen leeren Wert. Also am besten einen Probelauf in ein temporäres Feld machen und abschließend Anzahl der Elemente alt/neu vergleichen.

https://help.hcltechsw.com/dom_designer/12.0.0/basic/H_NAMELOOKUP_7699.html

HTH
Carsten
Gespeichert
Riccardo Virzi
Frischling
*
Offline Offline

Beiträge: 32



« Antworten #3 am: 19.10.21 - 08:16:04 »

Man lernt doch nie aus  Smiley Den Befehl @NameLookup kannte ich noch nicht, danke.

Ich muß Carsten zustimmen: wenn der Befehl @NameLookup einen leeren String zurück gibt, wenn kein Name gefunden wurde, ist das schlecht. Dann wird der Name aus dem Feld entfernt und der Benutzer hat keinen Zugriff mehr und es gibt auch keinen Verweis, daß der Benutzer mal Zugriff hatte.

Zum testen kann @Elements verwendet werden, aber nicht den Befehl @Trim vergessen! Ohne @Trim wird die Anzahl der Elemente gleich sein, da der @NameLookup Befehl vermutlich leere Elemente zurück gibt. Beispiel:
@If( @Elements( Feldname ) <> @Trim( @Elements( @NameLookup( Feldname ) ) ); @Prompt( "FEHLER" ); "" );

Das geht auch in einem Agenten, ohne das Daten verändert werden müssen. Das ist aber nur zum Prüfen, ob das vorkommt. Und nicht vergessen, wenn das 10.000 Dokumente betrifft, dann kommt auch 10.000 mal die @Prompt Meldung mit dem Fehler  Shocked
Wenn es tatsächlich so viele Dokumente sind, kannst Du auch in der notes.ini eine Variable auf 0 setzen und anstatt dem @Prompt Befehl die notes.ini Variable jedes Mal um eins hochzählen. Kommt auf die Anzahl der Dokumente an.
« Letzte Änderung: 19.10.21 - 08:20:04 von Riccardo Virzi » Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: