Autor Thema: Namensauflösung  (Gelesen 11688 mal)

Offline chatty

  • Junior Mitglied
  • **
  • Beiträge: 76
  • Geschlecht: Männlich
Namensauflösung
« am: 27.06.05 - 12:57:58 »
Hallo an alle Notes-Jünger,

ich habe folgende Frage:
Wie kann ich die Namen der Personen welche zu einer Gruppe gehören in ein normales Text-Feld auflösen?

Beispiel: Die Gruppe Notes_Admin besteht aus den Personen Klaus, Michael und Werner. Im Dokument selbst habe ich ein Feld welches nur den Wert "Notes_Admin" enthält. Wenn ich dieses Dokument speichere möchte ich in einem weiteren Feld die Namen der Personen die zu "Notes_Admin" gehören angezeigt bekommen. Also in diesem Fall sollte das 2. Feld die Werte Klaus, Michael, Werner enthalten. Wie kann man das programmtechnisch hinbekommen?

Vielen Dank für jedwede Hilfe!!!!
Chatty

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Namensauflösung
« Antwort #1 am: 27.06.05 - 13:20:23 »
Hi,

du musst mit dem Namen der Gruppen einen Lookup auf die, nach Gruppen sortierte Ansicht (ich glaube die heißt $Groups) machen und den Inhalt vom Feld Members auslesen.

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline chatty

  • Junior Mitglied
  • **
  • Beiträge: 76
  • Geschlecht: Männlich
Re: Namensauflösung
« Antwort #2 am: 27.06.05 - 14:09:32 »
Hallo Axel,

erstmal vielen Dank für die schnelle Antwort.... nur leider weiß ich damit nichts anzufangen da ich mich noch nicht so gut mit dem Notes-Designer auskenne.

Ich gehe nochmals ins Detail:
Der Gruppen-Name "Notes_Admin" sowie die zugehörigen Personen sind im Adressbuch gepflegt. Wie genau bekomme ich die Namen aus dieser Gruppe in ein weiteres Textfeld auf meiner Maske? Das Textfeld selbst habe ich als "Computed" vom Typ "Text" angelegt welches nicht editierbar ist.

Ich habe als Default-Value für dieses Feld schon folgendes versucht:
   @Implode(@Name([CN];atOpenAddPers)

und

   @Name([Abbreviate]; atOpenAddPers)

beides ohne Erfolg. Das Feld "atOpenAddPers" enthält den Namen der Gruppe also in diesem Fall "Notes_Admin".

Chatty

Offline diali

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.023
  • Geschlecht: Männlich
Re: Namensauflösung
« Antwort #3 am: 27.06.05 - 14:19:31 »
da gibt es einige Ansätze.
Schau mal hier oder hier.
Gruß
Dirk

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Namensauflösung
« Antwort #4 am: 27.06.05 - 22:38:42 »
... beim @Name nur einen Gruppennamen einzutragen, daß hilft bestimmt nicht - wenn schon, dann mit einem @DBLookup...

ata
Grüßle Toni :)

Offline chatty

  • Junior Mitglied
  • **
  • Beiträge: 76
  • Geschlecht: Männlich
Re: Namensauflösung
« Antwort #5 am: 28.06.05 - 13:07:05 »
wie genau sieht dann die Syntax aus für den @DBLookup Befehl???

Das Quellfeld heißt "atOpenAddPers" mit Inhalt "Notes_Admin"
Das Zielfeld heißt "cgPersonsCC" und soll die Namen aus der Gruppe "Notes_Admin" enthalten.

Sorry für die vielleicht dumme Frage aber die Hilfe zu dem Befehl im Notes ist nicht wirklich aussagekräftig.

Gruss
Chatty

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Namensauflösung
« Antwort #6 am: 28.06.05 - 13:15:56 »
Hi,

deine Werte-Formel müsste so aussehen:

Code
@DbLookup("":"NoCache"; "Name deines Servers":"names.nsf"; "($Groups)"; atOpenAddPers; "Members");

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Namensauflösung
« Antwort #7 am: 28.06.05 - 13:17:58 »
danke Axel - da war ich schon mitten in meiner Antwort... ;D

... das wäre die Syntax für den @DBLookup - den Code anstelle des Gruppennamen im @Name verwenden...

ata
Grüßle Toni :)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Namensauflösung
« Antwort #8 am: 28.06.05 - 13:26:18 »
Bei dem Verfahren gilt es aber zu berücksichtigen, dass das nur funktioniert, wenn die DB auf dem Server liegt. Wird dieser Code lokal ausgeführt, werden keine oder falsche Angaben zurückgeliefert.

Ein unschöner, aber machbarer Workaround wäre die Verwendung der ReplikID des NABs, welche sinnvollerweise in einem Profile- oder SetupDoc stehen sollte.

Sicher kann man das allerdings nur in LS lösen.

Bernhard

Offline chatty

  • Junior Mitglied
  • **
  • Beiträge: 76
  • Geschlecht: Männlich
Re: Namensauflösung
« Antwort #9 am: 28.06.05 - 15:33:06 »
Hallo zusammen!

erstmal vielen Dank für die tatkräftige kompetente Unterstützung.

Ich glaube wir kommen der Sache schon näher, allerdings bekomme ich noch eine Fehlermeldung:

Feld: 'cgPersonsCC': Eintrag im Index nicht gefunden

Welcher Index ist hier gemeint? Was ist hier das Problem?

Ich habe für das oben genannte Feld als Default-Wert folgendes Coding probiert:

@Name([Abbreviate]; @DbLookup("":"NoCache"; "Name des Servers":"names.nsf"; "($Groups)"; atOpenAddPers; "Members"))

und nur:

@DbLookup("":"NoCache"; "Name des Servers":"names.nsf"; "($Groups)"; atOpenAddPers; "Members")


Wobei ich den kompletten Pfad in den "Name des Servers" eingefügt habe.
Bei beiden Varianten erhalte ich die obige Fehlermeldung.

Der Typ des Feldes ist "Namen" und "Berechnet".

Gruss
Chatty

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Namensauflösung
« Antwort #10 am: 28.06.05 - 15:43:16 »
Der Index, der gemeint ist, ist der Ansichtsindex der Ansicht, die Du durchsuchst, als "($Groups)" im NAMES.NSF.

Was meinst Du aber mit "Default value ? Du sprichst doch von einem berechneten Feld ...

Was meinst Du mit "vollständigen Pfad des Servers" ? Der Server hat einen Namen, Pfade kommen da nicht vor.

Da Du "vereinfachte Bedingungen" hast (die erforderlichen Infos stehen Dir alle über die Properties der Applikation, in der der Code läuft, zu Verfügung), solltest Du das @dbLookup wie folgt ausführen:

@DbLookup("":"NoCache"; @Subset (@dbName; 1):"names.nsf"; "($Groups)"; atOpenAddPers; "Members")

Damit liefert Dir Deine Applikation selbst den Servernamen zurück, auf dem die Applikation läuft.

HTH,
Bernhard

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Namensauflösung
« Antwort #11 am: 28.06.05 - 15:56:02 »
... bei einer Replik der Datenbank auf mehreren Servern kann er dann aber auf unterschiedliche Adressbücher stossen...

Der Fehler liegt am Gruppennamen, der muß in Anführungsstriche gebettet werden.

Toni
Grüßle Toni :)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Namensauflösung
« Antwort #12 am: 28.06.05 - 16:44:56 »
Der Fehler liegt am Gruppennamen, der muß in Anführungsstriche gebettet werden.

Hallo Toni,

wenn der Gruppenname, der ja aus dem Feld namens "atOpenAddPers" geholt wird, in Anführungszeichen gesetzt wird, dann sucht er nach einer Gruppe mit dem Namen des Feldes. Das wäre sicher nicht gewünscht.

... bei einer Replik der Datenbank auf mehreren Servern kann er dann aber auf unterschiedliche Adressbücher stossen...

Jo, Risiken und Nebenwirkungen sind bei dieser Methode nicht ohne. Allerdings sollte man solcherart Funktionalität nicht in DBs verwenden, die über Domänen hinweg (mit unterschiedlichen Adressbüchern) eingesetzt werden - da macht das ja sowieso keinen Sinn.

M.E. sollte man das Auslesen von Gruppen sowieso nur on-the-fly machen, da Gruppen jederzeit geändert werden können und sowas dann zur Asynchronität zwischen DB und NAB führen kann (wenn es auf x Servern möglich ist, das Feld zu ändern). Sowas muss man dann nicht noch unbedingt speichern und conflict docs provozieren.

Bernhard

Offline chatty

  • Junior Mitglied
  • **
  • Beiträge: 76
  • Geschlecht: Männlich
Re: Namensauflösung
« Antwort #13 am: 28.06.05 - 17:07:32 »
Hallo Bernhard, Hallo Toni,

mit Default-Wert meine ich die Formel die ich in den Properties des Feldes "cgPersonsCC" hinterlegt habe.

Aktuell habe ich diese Formel:

@DbLookup("":"NoCache"; @Subset (@dbName; 1):"names.nsf"; "($Groups)"; atOpenAddPers; "Members")


Trotzdem erhalte ich noch immer die Fehlermeldung das der Eintrag im Index für das Feld "cgPersonsCC" nicht gefunden wurde.

Habt ihr noch einen weiteren Ratschlag???

Schöne Grüße
Chatty

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Namensauflösung
« Antwort #14 am: 28.06.05 - 19:33:38 »
Hi,

überprüf mal folgendes:

1. Wie heißt euer Adressbuch (Dateiname) und wo liegt es (Verzeichnis)?

2. Gibt's den Gruppennamen der in dem Feld eingetragen ist wirklich?

3. Was steht im Feld atOpenAddPers.

Du kanst auch mal testen was passiert wenn du einen Gruppennamen, den es wirklich im Adressbuch gibt, als Parameter (statt atOpenAddPers, aber dann in Anführungszeichen) angibst.

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Namensauflösung
« Antwort #15 am: 29.06.05 - 09:41:57 »
@Bernhard

... wenn "atOpenAddPers" ein Feldname ist, hast du natürlich Recht...

... dann gibt es den Feldinhalt nicht in der ersten Spalte (muß sortiert sein - ist sie das noch?) der Ansicht ...

Toni
Grüßle Toni :)

Offline chatty

  • Junior Mitglied
  • **
  • Beiträge: 76
  • Geschlecht: Männlich
Re: Namensauflösung
« Antwort #16 am: 29.06.05 - 15:46:27 »
Hallo Axel,

1. unser Adressbuch heißt names.nsf und lieht im Domino1-Verzeichnis auf unserem Server

2. den Gruppenname gibts wirklich da er direkt aus dem Adressbuch ausgewählt wird

3. im Feld atOpenAddPers stehen Namen von einzelnen Personen oder eben Gruppenname die alle aus dem Adressbuch ausgewählt werden

Ich habe auch versucht statt dem Feld "atOpenAddPers" einen Gruppennamen aus dem Adrssbuch in Anführungszeichen in die Formel einzubauen.

Trotzdem erhalte ich noch immer obige Fehlermeldung.

Als Formel für das Feld "cgPersonsCC" (ist ein Textfeld welches berechnet wird) verwende ich aktuell:

@DbLookup("":"NoCache"; @Subset (@DbName; 1):"names.nsf"; "($Groups)"; atOpenAddPers; "Members")


Hast du noch eine Idee woran es liegen könnte?

Gruss
Chatty

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Namensauflösung
« Antwort #17 am: 29.06.05 - 15:56:48 »
Der Ansichtsname stimmt nicht - verwende die Ansicht "Groups" oder - besser, weil Systemansicht, die sowieso niemals jemand anfassen sollte - "($Users)".

Für ein berechnetes Feld musst Du noch den Fall "Vorgabe nicht ausgefüllt" berücksichtigen, also

@If (atOpenAddPers != ""; @DbLookup("":"NoCache"; @Subset (@DbName; 1):"names.nsf"; "($Users)"; atOpenAddPers; "Members"); "")

Auch auf lokale Anwendung solltest Du prüfen, aber das hatte ich glaube ich schon geschrieben.

Bernhard

Offline chatty

  • Junior Mitglied
  • **
  • Beiträge: 76
  • Geschlecht: Männlich
Re: Namensauflösung
« Antwort #18 am: 29.06.05 - 17:10:53 »
Hallo Bernhard!!!

du hast es geschafft... nun geht es!!!!

Es hat nur einen Schöheitsfehler noch... die Namen der Grupper werden zwar nach dem Sichern des Dokuments in das Feld "cgPersonsCC" aufgelöst allerdings sieht das dann folgendermaßen aus:

CN=Peter Heinze/O=IT-Firma;CN=Gerd Müller/O=IT-Firma;CN=Regina Foss/O=IT-Firma

Kann man die CNs und O= irgendwie entfernen?

Nochmals vielen Dank an dich und alle anderen die so toll geholfen haben.

Gruss
Chatty

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Namensauflösung
« Antwort #19 am: 29.06.05 - 17:16:59 »
Nimm einfach @Name ([CN]; deinfeldname), das setzt das entsprechend um.
Wenn Du dann noch die Namen untereinander darstellen willst, kannst Du das auch noch in den Feldeigenschaften einstellen (dritter Tab Propellerhat alias "Karlson auf dem Dach"), dort als Anzeigewert "Neue Zeile" eintragen.

HTH,
Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz