0

Mehrzeilenfeld teilen

Moin,

 

ich habe eine Mehrzeilenfeld mit einer Lieferadresse. Beispiel:

Max Mustermann GmbH & Co. KG

Alter Marktplatz 38a

21089 Musterstadt

Jetzt brauche ich die Informationen einzeln in Feldern.

Firmenname

Strasse

Hausnummer

PLZ

Ort

Firmenname hab ich hinbekommen:

substr(Lieferadresse, 0, index(Lieferadresse, "
"))

Jetzt wollte ich die Strasse machen und hab erstmal versucht die ganze nächste Zeile zu nehmen:

substr(Lieferadresse, length(Firmenname), index(Lieferadresse, "
"))

Ergebnis: Alter Marktp

Kann mir jemand helfen? Das muss doch auch einfacher gehen oder? Hab´s auch schon mit extract versucht, aber ich steig durch die Syntax mit den RegEx nicht durch.

Liebe Grüße

Jan

6 Antworten

null
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Hallo Jan,

    du kannst mit split() einen Array aus dem Text machen und dann mit item() einzelne Zeilen extrahieren. Mit trennen der Sätze ist es schwieriger weil man nie weiß wie die Straße und die Nummer aussehen werden. Ich würde die Straße und Hausnummer immer in dem Feld Adresse lassen. Dann würde die Formel so aussehen:

    ---

    let myARAAY:=split(Lieferadresse,"

    ");

    Firma:=item(myARRAY,0);

    Adresse:=item(myARRAY,1);

    PLZ:=extractx(item(myARRAY,2), "\d+");

    Ort:=substr(item(myARRAY,2), index(item(myARRAY,2), " ") + 1)

    ---

    Leo

    • Jan_Hellwage
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Moin Leo,

    der Hammer, genau den Input habe ich gebraucht! Ich hab es noch ein bischen verändert und jetzt funktioniert es so wie ich es gern hätte:

    let myARRAY := split(Lieferadresse, "
    ");
    Firmenname := item(myARRAY, 0);
    Strasse := extractx(item(myARRAY, 1), "\D+");
    Hausnummer := extractx(item(myARRAY, 1), "\d+");
    PLZ := extractx(item(myARRAY, 2), "\d+");
    Ort := substr(item(myARRAY, 2), index(item(myARRAY, 2), " ") + 1);

    Danke Leo! Da docktor ich schon ne ganze Weile dran rum...

    LG Jan

    • Jan_Hellwage
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Ich hab es jetzt in den Trigger bei Änderungen eingesetzt. Kann ich irgendwie alle Datensätze über die Massendatenänderung triggern? Hab da über 1000 Kunden in der Datenbank und will nicht jeden Datensatz manuell ändern... Hab gelesen das es mit einer for Schleife gehen soll, aber weiß nicht wie/wo ich die benutzen soll?!

    LG Jan

    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Hallo Jan,

    erstell einen Button und schreib folgende Formel rein:

    ---

    for i in select 'DEINE TABELLE' do

    let myARRAY := split(i.Lieferadresse, "
    ");
    i.(Firmenname := item(myARRAY, 0);
    Strasse := extractx(item(myARRAY, 1), "\D+");
    Hausnummer := extractx(item(myARRAY, 1), "\d+");
    PLZ := extractx(item(myARRAY, 2), "\d+");
    Ort := substr(item(myARRAY, 2), index(item(myARRAY, 2), " ") + 1))

    end

    ---

    Bei dieser Schreibweise musst du aufpassen wenn Hausnummer zB. 23a heißt

     

    Leo

    • Klaus_J
    • vor 6 Jahren
    • Gemeldet - anzeigen

    hallo Jan

    ich baue mir auch gerade die Adresse zusammen.

    ich lese sie aus der E-mail Bestellung die Adresse aus.ich habe noch die variante Zusatztext (FirmenName oder PostfachNr)

    ich überprüfe die Zeilenanzahl ,wenn größer als 4 dann Zusatz einfügen.

    grüße aus Hamburg.

    • Jan_Hellwage
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Danke Leo,

    ich hab mir schon gedacht das ich nen Button nehme und jetzt hab ich auch die syntax von der for schleife ein bischen besser verstanden!

    Vielen Dank!