0
Daten im Mehrzeiligen Textfeld per Trigger ergänzen
Ahoi,
ich möchte gerne ein mehrzeiliges Textfeld "Info" per Trigger mit den Daten aus den Datenfeldern "L", "B" und "H" befüllen / ergänzen.
1) Für den Fall, dass das Feld "Info" leer ist, soll der Trigger die Daten aus L, B und H übergeben
2) Für den Fall, das das Feld "Info" bereits Daten enthält, soll der Trigger die Daten aus L, B und H in eine neue, leere Zeile des Mehrzeilentexfeldes "Info" übergeben (sprich, die bestehenden Daten sollen nur ergänzt werden, nicht ersetzt)
Die vom Trigger übergebenen Daten sollen im Feld "Info" für L = 100, B = 60 und H = 20 wie folgt dargestellt werden:
"L 100 x B 60 x H 20"
Sollte einer der Felder L, B oder H KEINE Daten enthalten, sollen nur die mit Daten befüllten Felder übergeben werden.
Beispiel: L = 100, B = "", H = 20
Darstellung im Feld "Info": "L = 100 x H 20"
Kann jemand helfen?
Beste Grüße
Tacho
ich möchte gerne ein mehrzeiliges Textfeld "Info" per Trigger mit den Daten aus den Datenfeldern "L", "B" und "H" befüllen / ergänzen.
1) Für den Fall, dass das Feld "Info" leer ist, soll der Trigger die Daten aus L, B und H übergeben
2) Für den Fall, das das Feld "Info" bereits Daten enthält, soll der Trigger die Daten aus L, B und H in eine neue, leere Zeile des Mehrzeilentexfeldes "Info" übergeben (sprich, die bestehenden Daten sollen nur ergänzt werden, nicht ersetzt)
Die vom Trigger übergebenen Daten sollen im Feld "Info" für L = 100, B = 60 und H = 20 wie folgt dargestellt werden:
"L 100 x B 60 x H 20"
Sollte einer der Felder L, B oder H KEINE Daten enthalten, sollen nur die mit Daten befüllten Felder übergeben werden.
Beispiel: L = 100, B = "", H = 20
Darstellung im Feld "Info": "L = 100 x H 20"
Kann jemand helfen?
Beste Grüße
Tacho
6 Antworten
-
Hallo Tacho,
leider fehlt mir keine elegante Lösung ein, deswegen hier eine Formel für z.B. eine Befehlsschaltfläche:
let AR := ["L " + L, "B " + B, "H " + H];
let LH := join([item(AR, 0), item(AR, 2)], " x ");
let LB := join(slice(AR, 0, 2), " x ");
let BH := join(slice(AR, 1, 3), " x ");
let LBH := join(AR, " x ");
let LL := item(AR, 0);
let BB := item(AR, 1);
let HH := item(AR, 2);
let INF := if L = null and B = null and H = null then
""
else
if B = null and H = null and L != null then
LL
else
if L = null and H = null and B != null then
BB
else
if L = null and B = null and H != null then
HH
else
if L = null then
BH
else
if B = null then
LH
else
if H = null then LB else LBH end
end
end
end
end
end
end;
Info := Info + INF + "
"
Grüße
Leo -
Oder so? ("Nach Änderung" in L, B und H)
let x := if L != null then "1" else "0"
let y := if B != null then "1" else "0"
let z := if H != null then "1" else "0"
let a := x + y + z
let Abmessungen switch a do
case "100": "L " + L
case "010": "B " + B
case "001": "H " + H
case "110": "L " + L + " x B " + B
case "101": "L " + L + " x H " + H
case "011": "B " + B + " x H " + H
case "111": "L " + L + " x B " + B + " x H " + H
end
if Info = null
Info := Abmessungen
else
Info := Info + "
" + Abmessungen
end
Ist sehr einfach, geht wahrscheinlich noch eleganter, funktioniert aber (glaube ich). -
Ach so, in den betreffenden Zeilen bitte das Semikolon ergänzen. Vergesse ich immer ... ;)
-
Vielen Dank Leo und Axel!
-
@Axel,
Deine Formel ist viel eleganter als meine. Habe mich von Arrays leiten lassen.
Eigentlich wollte ich das ganze als Schleife darstellen. Hier ist noch ein Vorschlag, ich kann aber nicht genau erklären, warum es funktioniert.
let BB := join(split(replace(concat([if L != null then "L " + L else "" end, if B != null then "B " + B else "" end, if H != null then "H " + H else "" end]), "", ""), ","), " x ");
Info := if Info then
Info + "
" + BB
else
BB
end
Grüße
Leo -
Hallo Leo, danke für das Lob aus berufenem Munde ... :)
"Elegant" würde meine Lösung aber nicht unbedingt nennen, eher "pragmatisch". Auf die Lösung in deinem letzten Vorschlag wäre ich im Leben nicht gekommen. Ich kann sie nicht mal komplett nachvollziehen. Programmiertechnisch ist das für mich höhere Schule.
Einziger Vorteil "meiner" Lösung: Sie ist für Nicht-Programmierer wohl besser zu verstehen und anzupassen. Größter Nachteil: Bei mehr als drei Feldern würde sie durch die vielen Case-Angaben auch unkomfortabel.
Nachteil beider Lösungen: Es wird bei jeder Änderung eine neue Zeile angehängt. Das könnte man vielleicht lösen, in dem man den Info-Text von vornherein in ein unsichtbares Feld übernimmt und bei Bedarf wieder ausliest. Im Detail habe ich das aber noch nicht durchdacht, weil es in vorliegenden Fall ja nicht gefordert war.
Content aside
- vor 6 JahrenZuletzt aktiv
- 6Antworten
- 2287Ansichten