Domino 9 und frühere Versionen > ND6: Entwicklung

Denkanstoss (Zugriff auf names.nsf -> Daten als Berechneter Text

(1/1)

reraru:
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

--- Ende Code ---

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

--- Ende Code ---

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é

Gandhi:
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.

Tode:
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

reraru:
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)

--- Ende Code ---
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é

Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln