Validierung: Trennzeichen bei KtoNr. entfernen

  • Guten Tag,


    ich hab' mal ne kurze Frage.


    Ich habe ein Feld "Kontonummer" (Typ: Zahl), in dem von den Benutzern leider oft nicht konforme Eingaben versucht werden.


    Beispiel:
    Kontonummer: 1234567890


    Benutzer gibt die KtoNr. in folgenden Schreibweisen ein:
    1234.567.890
    oder
    1234 567 890


    Doch ich möchte, dass alle Kontonummern vom Format gleich eingegeben werden. Ohne Trennzeichen (Leer bzw. Punkt).


    Mitterweile habe ich viele Probleme lösen können, indem ich den Feldtypen von Text auf Zahl geändert habe. Dadurch werden wenigstens die Punkt als Trennung entfernt.


    Da dieses Feld jedoch auch Mehrfachwerte aufnehmen kann, wird eine Eingabe mit Leerzeichen so intepretiert, als wären es drei Kontonummern (1234; 567; 890). In den Feldeigenschaften habe ich aber definitiv deklariert, dass als Trennung nur ein Semikolon in Frage kommt.


    Wie kann ich die Eingabe vernünftig validieren?
    (Mit @TRIM bin ich leider nicht weit gekommen, weil dann nur der erste Teil zum Leerzeichen übernommen wird.)


    Vielen Dank.

  • Dazu schreibt Herr B.Eindruckend:


    Die @ReplaceSubstring-Methode kann dir alles mögliche in NICHTS verwandeln. Wenn Mehrfachwerte zulässig sind, wirst du sie allerdings mehrfach mit allen Optionen über das Feld laufen lassen müssen, z.B.


    Kont1:=@ReplaceSubstring(Konto;".";"");
    kont2:=@ReplaceSubstring(Kont1;"/";"");
    ...


    Die Alternative ist, daß du die Benutzer zwingst, die Kontonummer(n) richtig einzugeben. Schau dir dazu einmal die Funktion @Matches an.

    • Offizieller Beitrag

    nimm mal das Leerzeichen als Mehrfachtrenner raus.


    Eine bessere Lösung ist es nicht auf einzelne Zeichen zu prüfen, sondern zeichenweise abzufragen, ob es sich um eine Zahl handelt (@IsNumber) und einen neuen String zusammenzubauen.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Das Leerzeichen als Trenner habe ich nicht benutzt.
    Ich hatte im Ausgangspost auch geschrieben, dass nur Semikolon und Komma als Trennzeichen genutzt werden.


    Ich habe die Formel @ReplaceSubstring nun kaskadiert und auf das (wieder auf Text-umgestellte) Feld angewandt.


    Vielen Dank.


    Ich bin wunschlos glücklich :)

  • Als alternative könntest Du auch folgende Formel in die Eingabeumsetzung oder in ein berechnetes Feld programmieren.



    allowChar := "0":"1":"2":"3":"4":"5":"6":"7":"8":"9";
    e := @Elements(@ThisValue);
    c3 := "";
    @For(n := 1; n <= e; n := n + 1;
    @Do(
    v := @Subset(@Subset(@ThisValue;n);-1);
    c2 := "";
    @For(x := 1;x <= @Length(v);x := x+1;
    @Do(
    c := @Right(@Left(v;x);1);
    c1 := @If(@IsMember(c;allowChar);c;"");
    c2 := c2 + c1
    )
    )
    );
    c3 := c3 + ";" + c2
    );
    @Explode(c3;",;");




    Gruss
    MeinerEiner



    -Ups, GROSSES SORRY mit der Formel funktioniert nur ab Version 6., hab gerad erst gesehn, das wir hier in R4 sind -