Domino 9 und frühere Versionen > ND9: Entwicklung

@Picklist - Verständnisproblem

(1/2) > >>

Tode:
Ich programmiere ja noch nicht lange Notes- Datenbanken (maximal 20 Jahre oder so), aber manchmal verzweifle ich an mir selbst (oder es liegt einfach daran, dass ich alt werde).

Gegeben sei:

Eine Ansicht mit 2 Spalten.
Die erste Spalte ist versteckt, nicht sortiert, und zeigt ein MultiValue- Feld an. Die Spalte steht auf "Trennz. bei Mehrfachwerte" = Neue Zeile, mehrfachwerte getrennt anzeigen ist nicht aktiviert.
Die zweite Spalte ist die, die der User sieht. Sie ist sortiert, hat keine Mehrfachwerte, sehr simpel.

In einer Aktionsschaltfläche steckt folgender hochkomplizierter Code:


--- Code: ---_title := "Title";
_msg := "Message";

_srv := @Subset( @DbName ; 1 );
_db := TrailerDBName;

_viw := "ViwPicklistCompany";
_col := 1;

_pickList := @PickList( [Custom] : [Single] ; _srv : _db ; _viw ; _title ; _msg ; _col );
--- Ende Code ---

Laut Designer Hilfe liefert Picklist Mehrfachwerte:
--- Zitat ---Return value
columnValue

Text list. The value(s) in the specified column for the document(s) that the user selected.
--- Ende Zitat ---

Mache ich jetzt ein @Prompt( [OK] ; "TEST"; _pickList ), dann bekomme ich alle Werte, die auch in der Spalte stehen (Moment: Müsste der Code nicht auf die Nase fallen, wenn _picklist wirklich Multivalue wäre!?).
Jetzt kommt das große ABER: Mache ich ein @Prompt( [OK] ; "ELEMENTS"; @text( @Elements( _picklist ) ) ), dann bekomme ich -und ich kann mich auf den Kopf stellen- IMMER 1.

Und das geht mir einfach nicht in den Kopf...
Ich habe das in einer leeren Datenbank nachgestellt, und es ist auch dort definitiv so...

Natürlich ist der Code nicht neu, sondern schon eine Weile im Einsatz.
Und ich könnte wetten, dass ich das so schon zig mal verwendet habe...

Das Ergebnis von Picklist wird in ein Feld geschrieben. Und wie ich jetzt herausgefunden habe, hat dann das Feld anhand seiner Multi- Value- Trenner aus diesem String wieder einen Multivalue gemacht.

Das Ganze funktioniert aber sporadisch nicht (dann wird der Text nicht in Einzelwerte geteilt, sondern bleibt ein langer String), und darüber bin ich auf dieses unglaubliche Problem gestossen.

Client ist 9.0.1FP4, andere habe ich noch nicht ausprobiert.

Jetzt sagt mir: Werde ich so langsam bescheuert, oder ist es die Formelsprache?

jBubbleBoy:
Mehrfachwerte trennen durch neue Zeile = ein Wert mit mehreren Zeilen
In der Theorie stimmt die Beschreibung und ein @Elements( .. liefert eine 1 zurück.

Das beste wäre ein @implode(feldName;"<Trenner>") und dann wieder umkehren ;)

Andrew Harder:
Sicher, das da ein

--- Code: ---@Explode(_pickList; @Newline)
--- Ende Code ---
nicht reichen würde?

jBubbleBoy:
Naja irgendwo gibt es noch einen Haken, denn das hätte der Trenner im Feld schon machen müssen, macht er aber nicht immer.

Tode:
Ich muss lernen, mich verständlich auszudrücken:

Das Ganze war als Beispiel zu sehen. Wenn ich in der Ansicht das Semikolon als Trenner eingebe, dann muss meine Formel im Feld @Explode( _picklist ; ";" ) lauten, und bei Leerzeichen @Explode( _picklist ; " " ).

Einen Workaround zu schaffen ist also mehr als Trivial.

Das schafft aber eine Abhängikeit zwischen Ansichts- Design und Code an einer anderen Stelle, den ich gerne vermieden hätte. Stellt jemand (versehentlich oder wegen Lesbarkeit oder weil die Dreisam grade so viel Wasser hat) die Spalteneigenschaft um, dann geht der Code in allen Picklists, die sich auf diese Ansicht beziehen plötzlich auf die Bretter.

Laut Hilfe dürfte es diese Abhängigkeit aber nicht geben... und DAS ist mein Problem... Ich kann ja in den Feldeigenschaften auch einstellen, dass ich Mehrfachwerte mit Neuer Zeile getrennt anzeigen will, aber wenn ich Programmatisch auf das Feld zugreife bekomme ich trotzdem einen Mehrfachwert, und keinen mit @NewLine implodeten Wert...

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln