0

ein Komma zu viel ;-)

N'Abend Gemeinde,

 

ich möchten in einem Druckformular eines Artikels die zugehörige Stückliste ausgeben. Das klappt inhaltlich schon mal nicht schlecht mit:

 

for i in 'EA-Typ'.'Stückliste' do
i.Anzahl + " " + i.Material.'Artikel-Nr.' + " " + i.Material.Bezeichnung + "
"
end

 

Das Ganze hat hat jedoch einen kleinen Schönheitsfehler, denn die Ausgabe erfolgt etwa in dieser Form:

1 Stück 4711 erste Bezeichnung
,1 Stück 0815 zweite Bezeichnung
,4 Stück 1234 dritte Bezeichnung
usw.

Wie bekomme ich das vermaledeite Komma ab der zweiten Position weg? replace() kommt leider nicht in Frage, da die Bezeichnung durchaus auch Komma(s) beinhaltet.

 

lg, Torsten

7 Antworten

null
    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Torsten, es gibt ein Operator join (Array, Trennzeichen)

    —-

    join('EA-Typ'.'Stückliste'.(
    Anzahl + " " + Material.'Artikel-Nr.' + " " + Material.Bezeichnung ),"
    ")

    —-

    Leo

    • Torsten_Stang.1
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Einwandfrei,

    vielen Dank!

    lg, Torsten

    • AWO Mönchengladbach
    • Sebastian_Urbanneck
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Bei mir sagt der immer nur "Funktion join([String]) ist nicht definiert". Wie ist diese Funktion genau zu verwenden?

     

    Ich versuche das obige zu machen, nur mit folgender For-Schleife:

    for myFLS in 'Klient*in'.Fachleistungen do
    myFLS.Datum + " " + myFLS.Beginn + ":" + "
    " + myFLS.Bericht + "

    "
    end

    • Torsten_Stang.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo,

     

    witzig - ich baue gerade was vergleichbares. So sollte es funktionieren:

     

    join(for myFLS in 'Klient*in'.Fachleistungen do
    myFLS.Datum + " " + myFLS.Beginn + ":" + "
    " + myFLS.Bericht end,"

    ")

     

    lg, Torsten

    • AWO Mönchengladbach
    • Sebastian_Urbanneck
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ahhhhh, danke, das wars. Ich war glaube ich einfach nur betriebsblind.

     

    Bei mir sieht das übrigens jetzt so aus, da es ansonsten keine Möglichkeit gab, das nach Timestamp zu sortieren:

     

    let myAktenzeichen := 'Klient*in'.Aktenzeichen;
    join(for myFLS in (select Fachleistungen)[this.'Klient*in'.Aktenzeichen = myAktenzeichen] order by Timestamp do
    myFLS.Datum + " " + myFLS.Beginn + "-" + myFLS.Ende + " Klient: " + myFLS.'Klient*in'.'Kund*innen'.Vorname + " " + myFLS.'Klient*in'.'Kund*innen'.Name + " Betreuer: " + 'Mitarbeiter*innen'.'Kürzel' + "
    " + myFLS.Bericht
    end, "

    ")

    • Torsten_Stang.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo,

     

    "order by" ist auch Mittel der Wahl, ansonsten erfolgt die Sortierung immer nach der (internen) Datensatz-ID.

     

    lg, Torsten

    • AWO Mönchengladbach
    • Sebastian_Urbanneck
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ah, es geht auch etwas eleganter. Ich habe Das Feld in eine andere Datenbank verschoben, wo es mehr Sinn macht. Hier funktioniert dann auch die Rückverknüpfung korrekt.

     

    join(for myFLS in Fachleistungen order by Timestamp do
    myFLS.Datum + " " + myFLS.Beginn + "-" + myFLS.Ende + " Klient: " + myFLS.'Kund*innen'.Vorname + " " + myFLS.'Kund*innen.Name + " Betreuer: " + myFLS.'Mitarbeiter*innen'.'Kürzel' + "
    " + myFLS.Bericht
    end, "

    ")

    Ich hätte nie geglaubt, dass ich nach 10 Jahren wirklich nochmal meine SQL-Kenntnisse gebrauchen könnte...

Content aside

  • vor 3 JahrenZuletzt aktiv
  • 7Antworten
  • 1561Ansichten