Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: reraru am 18.10.05 - 10:07:58

Titel: Denkanstoss (Zugriff auf names.nsf -> Daten als Berechneter Text
Beitrag von: reraru am 18.10.05 - 10:07:58
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:

(http://www.anton-cramer.de/bearbeiter.jpg)

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é
Titel: Re: Denkanstoss (Zugriff auf names.nsf -> Daten als Berechneter Text
Beitrag von: Gandhi am 18.10.05 - 13:00:37
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.
Titel: Re: Denkanstoss (Zugriff auf names.nsf -> Daten als Berechneter Text
Beitrag von: Tode am 18.10.05 - 13:49:27
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
Titel: Re: Denkanstoss (Zugriff auf names.nsf -> Daten als Berechneter Text
Beitrag von: reraru am 18.10.05 - 14:21:19
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é