1

join als bessere concat

Guten Morgen zusammen.Gestern beim Webinar hat der Frank nebenbei die Funktion "join" erwähnt. Damit das Ganze dokumentiert ist, möchte ich hier diese Funktion kurz erklären. Zuerst die Problemstellung:
Man möchte die Aufzählung bestimmten Werte in einer Tabelle bekommen.
der Erste Weg:

concat(select Tabelle.(Feld1+Feld2))

dabei bekommt man die Liste, kommagetrennt. Jetzt möchte ich, dass die Werte nicht nebeneinander sondern untereinander stehen:

replace(concat(select Tabelle.(Feld1+Feld2)),",","
")

---
So kriege ich eine tabellenähnliche Darstellung. Problematisch wird das ganze, wenn die Felder Texte mit Komma enthalten. Dann ersetzt "replace" diese Kommas auch durch Zeilenumbruch. Jetzt kommt "join"zum Einsatz:

join((select Tabelle.(Feld1+Feld2)),"
")


So kann ich alles untereinander ordnen, ohne mir gedanken über Kommas zu machen. Natürlich kann man damit auch adere Trennzeichen setzen.

Grüße
Leo

9 Antworten

null
    • AxelE
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Leo, danke für die Info. Ich habe allerdings noch nicht verstanden, was concat/join genau bewirkt und wofür man das gebrauchen könnte. Lässt sich das in ein paar Worten erklären?
    • Dominik_Eng
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Lieber Leo

    Wieder mal ein sehr wertvoller Input, besten Dank dafür.

    Bin ja noch gespannt, was es alles noch zu entdecken gibt :-)

    Gruss Nik
    • blue_bee
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo,

    ist es irgendwie möglich ein Leerzeichen zwischen Feld 1 und Feld 2 einzufügen?

    liebe Grüße.

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo, das sollte gehen, indem man das gewünschte Zeichen (oder auch mehrere) einfach als String zwischen die Felder setzt. Also, auf obiges Beispiel bezogen:

     

    join((select Tabelle.(Feld1 + " " + Feld2)),"
    ")

    • Rodenti GmbH & Co. KG
    • geolei
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Vielen Dank für den nützlichen Tipp! Ich habe es gleich verwenden können. Dazu habe ich den Code in ein Formelfeld eingebaut. Nachdem ich das Ganze in eine styled Anweisung gepackt habe werden die Zeilenumbrüche allerdings ignoriert:

     

    styled(text(join((select Tabelle).Feld1, "
    ")), "pink", "", "warn")

     

    Gibt es dafür eine Lösung? Ich möchte später je nach Bedingung das Feld in einer anderen Farbe darstellen lassen.

    • Olli
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Und wie bekomme ich ein "leeres" Feld weg, welches mit join entsteht, weil ein Feld in der Tabelle leer ist?

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Olli,

    ---

    let myArray:=for i in select TABELLENNAME.FELDNAME do
    if i then i end
    end;
    join(myArray,"
    ")

    ---

    Leo

    • Olli
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Leo, das sieht gut aus. Ich glaube es ist genau, was ich brauche. Vielen Dank!

    • Peter_Gaede.2
    • vor 3 Jahren
    • Gemeldet - anzeigen

    join() hat aber auch einen Nachteil gegenüber concat(), denn es kann nur mit Arrays umgehen, welches ausschliesslich Elemente vom Typ text enthält - bei concat() besteht diese Einschränkung nicht.

Content aside

  • 1 „Gefällt mir“ Klicks
  • vor 3 JahrenZuletzt aktiv
  • 9Antworten
  • 4609Ansichten