0

Duplikate bei Leerzeichen oder anderer Schreibweise vermeiden

Hallo zusammen,

 

ich benutze folgendes Script

 

let me := this;
let myField := Standortbezeichnung;
if cnt((select 'Werbeträger')[Standortbezeichnung = myField]) > 1 then
let responce := dialog("ACHTUNG - D U P L I K A T !", "Der Standort < " + myField + " > existiert bereits, möchten Sie diesen Standort löschen?", ["Ja", "Nein"]);
if responce = "Ja" then
delete me
else
let r := first(select 'Werbeträger' where Standortbezeichnung = myField);
if responce = "Nein" then popupRecord(r) end
end
end

 

Das Script funktioniert einwandfrei, jedoch wenn sich ein Leerzeichen 'einschleicht', wird das Feld nicht als Duplikat erkannt. Gibt es eine Möglichkeit, dass Leerzeichen mit einbezogen werden?

Selbiges passiert bei anderer Schreibweise, wie zB bei

Straßennamen - Musterstrasse und Musterstraße oder zB bei

Zeichen - Musterstrasse / Musterstraße und Musterstrasse - Musterstraße

 

Hat jemand eine Idee, wie man das lösen könnte?

 

Vielen Dank schon mal.

 

Gruß Kruna

12 Antworten

null
    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Vieleicht mit
    let myField := lower(replace(Standortbezeichnung, " ",""))

    und

    if cnt((select 'Werbeträger')[lower(replace(Standortbezeichnung, " ","")) = myField]) > 1 then

    • Kruna
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Guten Morgen Uwe,

     

    ja, das hat mir schon sehr weitergeholfen. Vielen, tausend Dank!! Ich habe allerdings, nach ausprobieren, 'lower' weggelassen, da der Popup-Dialog die Standortbezeichnung nun nur in Kleinbuchstaben und zusammengeschrieben anzeigt. Beide Schreibweisen im Popup-Dialog wären auch nicht weiter schlimm oder hat 'lower' in diesem Zusammenhang eine bestimmte, andere Funktion?

    Ok, dank Duden, werde ich mich an Regeln bei der Schreibung Strasse/Straße bwz. Bindestrich/Schrägstrich bei Straßennamen halten, somit fällt das weg.

     

    Gruß Kruna

    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Ich nutze lower(9 um beide Zeichenketten zu vergleichen. Wenn ein Zeichen aus versehen ein Großbuchstabe ist wo ein Kleinbuchstabe hingehört, klappt es nicht mehr.
    Mach eine zweite Variable für den Alert: let vAlert := Standortbezeichnung; alert(....+vAlert+.....)

    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    "Strasse" = "strasse" ergibt 'Nein' da beide Zeichenketten nicht übereinstimmen.

    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Wenn du auch noch mit Umlauten wie ä,ö,ü,ß arbeitest, musst du regex für die Angleichung beider Zeichenketten nutzen.
    Sowas wie replacex().

    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hier noch eine simple Funktion für die Schreibweisen:

    function fx_Umlaute(vString : text) do
    vstring := replace(vString, " ","");
    vString := replace(vString, "ß", "ss");
    vString := replace(vString, "ä", "ae");
    vString := replace(vString, "ö", "oe");
    vString := replace(vString, "ü", "ue");
    vString
    end;
    let myField := fx_Umlaute(text(lower(Standortfeld)))

    Bei der select-Abfrage schreibst du folgendes:

    if cnt((select 'Werbeträger')[fx_Umlaute(text(lower(Standortbezeichnung)))= myField]) > 1 then

    Wenn du es als Globale Funktion definierst, kannst du es von überall in Ninox nutzen.

    • Kruna
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Halo Uwe,

     

    Klasse, das hat auch wunderbar geklappt. Das mit der zweite Variable funktioniert auch wie eigentlich gewollt. 'Lower' habe ich dann doch wieder eingefügt. :-)

    Was regex/replacex() angeht, habe ich gar keine Ahnung was das bedeutet. Ich habe gerade eben gegoogelt und etwas über Umlaute/Sonderzeichen gefunden.

    Beim Versuch der Umsetzung

     

    let myField := replacex(Standortbezeichnung, "[^äöüÄÖÜ!&?,. \w]", "");

    oder

    let myField := replacex(Standortbezeichnung, " \w]", "");

     

    passiert leider nichts. In einem anderen Post hieß es, das man eckige durch runde Klammern ersetzen soll, hat aber auch nicht geklappt.

    Was habe ich falsch gemacht bzw. nicht bedacht?

     

    Gruß Kruna

    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Kruna
    Hast du mal das obere Script bei dir eingefügt?
    Die Funktion erledigt auf einfache Weise das Angleichen der Strings zum vergleichen.

    • Kruna
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Sorry, da warst Du schneller. :)

    Ich habe soeben das Script eingefügt und bekommen den Fehler:

     

    Ich dachte zunächst, dass ich 'text durch 'Standortbezeichnung' ersetzen sollte und in Zeile 2 nach dem Doppelpunkt ein = hinzufüge, aber das war nicht richtig.

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

    Groß-/Kleinschreibung beachten, "vString" muss es heissen....

    • Kruna
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Ahhh, ich habe den Fehler in vstring gerade gefunden und korrigiert

    • Kruna
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Nun habe ich das Script neu angepasst udn siehe da....es hat funktioniert!!!!

    Ninox flasht mich immer wieder!!!!

     

    Vielen Dank Uwe für Deine Zeit und Hilfe!

     

    Wünsche noch einen schönen Tag,

    Gruß Kruna