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

6 Antworten

null
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    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
    • AxelE
    • vor 6 Jahren
    • Gemeldet - anzeigen
    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).
    • AxelE
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Ach so, in den betreffenden Zeilen bitte das Semikolon ergänzen. Vergesse ich immer ... ;)
    • Tacho
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Vielen Dank Leo und Axel!
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    @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
    • AxelE
    • vor 6 Jahren
    • Gemeldet - anzeigen
    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