Autor Thema: Denkanstoss (Zugriff auf names.nsf -> Daten als Berechneter Text  (Gelesen 1333 mal)

Offline reraru

  • Aktives Mitglied
  • ***
  • Beiträge: 109
  • Geschlecht: Männlich
Guten Morgen zusammen.

Ich brauche mal einen kleinen Denkanstoss.

Ich habe in einem Formular ein Namensfeld, in dem man sich über den Adressdialog Namen aus dem Namens- und Adressbuch auswählen kann (Mehrfachauswahl möglich).

Bei dem Formulat handelt es sich um einen Auftrag, das Namensfeld soll die zuständigen Bearbeiter beinhalten. Ich habe mir überlegt das es ja schick wäre wenn Rechts neben den Namen noch die Rufnummer aus der "names.nsf" stehen würde.

Aussehen soll das in etwa so:



Dieses Ergebnis erziele ich wenn ich dem Berechneten Text folgende Formel zugrunde lege:

Code
Name1:= @Word(@Implode(auf_bearbeiter); " "; 1) + " " + @Word(@Implode(auf_bearbeiter); " "; 2);
Name2:= @Word(@Implode(auf_bearbeiter); " "; 3) + " " + @Word(@Implode(auf_bearbeiter); " "; 4);
Name3:= @Word(@Implode(auf_bearbeiter); " "; 5) + " " + @Word(@Implode(auf_bearbeiter); " "; 6);
Name4:= @Word(@Implode(auf_bearbeiter); " "; 7) + " " + @Word(@Implode(auf_bearbeiter); " "; 8);
Name5:= @Word(@Implode(auf_bearbeiter); " "; 9) + " " + @Word(@Implode(auf_bearbeiter); " "; 10);

Bearbeiter1:= @If(@IsNull(Name1); ""; @DbLookup(""; "" : ""; "lookup_personen"; Name1; 2));
Bearbeiter2:= @If(@IsNull(Name2); ""; @DbLookup(""; "" : ""; "lookup_personen"; Name2; 2));
Bearbeiter3:= @If(@IsNull(Name3); ""; @DbLookup(""; "" : ""; "lookup_personen"; Name3; 2));
Bearbeiter4:= @If(@IsNull(Name4); ""; @DbLookup(""; "" : ""; "lookup_personen"; Name4; 2));
Bearbeiter5:= @If(@IsNull(Name5); ""; @DbLookup(""; "" : ""; "lookup_personen"; Name5; 2));

Bearbeiter1

Ich möchte die Rufnummern natürlich auch gerne untereinander aufgelistet haben. Hier liegt wohl
mein Problem. Es könnte ja auch sein das es nur Bearbeiter1 und Bearbeiter2 gibt.

Probiert habe ich beispielsweise das hier:

Code
erg:= @If(Bearbeiter1 != ""; @Set(erg; Bearbeiter1); Bearbeiter2 != ""; @Set(erg; Bearbeiter1 + @NewLine + Bearbeiter2); Bearbeiter3 != ""; @Set(erg; Bearbeiter1 + @NewLine + Bearbeiter2 + @NewLine + Bearbeiter3); "");

erg

Dieses Beispiel berücksichtigt exemplarisch 3 Bearbeiter.

Der berechnete Text zeigt mir aber nur die Rufnummer des ersten Bearbeiters an.

Was mache ich falsch, bzw. wie könnte ich es besser machen?

Vielen Dank im Voraus!

Gruß René
System:
Lotus Notes 8.5.2 / Lotus Domino 8.5.2 FP2
Notes-Formelsprache (wenig Script-Kenntnisse)

Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
Der Fehler ist, dass bereits die erste IF Klausel erfüllt wird und daher die weitere Bearbeitung abgebrochen wird.
Du solltest erg1, erg2 und erg3 berechnen und dann konkatenieren: erg:=erg1:erg2:erg3;

Oder Du nutzt gleich eine dieser schönen Iterationsmöglichkeiten, die man mit dem 6er Client hat.
Der "Wenn ich" und der "Hätt' ich" das sind zwei arme Leut'
oder für den Süden:
Hatti Tatti Wari - san drei Larifari

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
berechneter Text beherrscht übrigens auch keine Mehrfachwerte. Wenn Du also dann Deine korrekte Liste hast, und die untereinander anzeigen lassen willst, dann musst Du das über @Implode( DeineListe ; @NewLine ) quasi "übersetzen", so dass der berechnete Text das dann richtig anzeigt.

HTH
Tode
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 reraru

  • Aktives Mitglied
  • ***
  • Beiträge: 109
  • Geschlecht: Männlich
Mahlzeit

Vielen Dank erstmal für Eure  Hinweise!

Ich hatte schon befürchtet das sich niemand mehr meldet. ;-)

Ich habe das Problem jetzt gelöst, indem ich die berechneten Felder Bearbeiter 1-5 angelegt habe. Diese ermitteln jeweils wenn vorhanden die Rufnummer.

Der berechnete Text wird wie vorgeschlagen über
Code
@Implode(Bearbeiter1:Bearbeiter2:Bearbeiter3:Bearbeiter4:Bearbeiter5; @NewLine)
ermittelt.

So klappt alles wie gewünscht. Wobei das sicherlich eleganter zu programmieren wäre.

Schande über mich.

Ich bedanke mich jedenfalls erstmal herzlich.

Bis dahin...

Gruß René
System:
Lotus Notes 8.5.2 / Lotus Domino 8.5.2 FP2
Notes-Formelsprache (wenig Script-Kenntnisse)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz