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
-
Vieleicht mit
let myField := lower(replace(Standortbezeichnung, " ",""))und
if cnt((select 'Werbeträger')[lower(replace(Standortbezeichnung, " ","")) = myField]) > 1 then
-
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
-
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+.....)
-
"Strasse" = "strasse" ergibt 'Nein' da beide Zeichenketten nicht übereinstimmen.
-
Wenn du auch noch mit Umlauten wie ä,ö,ü,ß arbeitest, musst du regex für die Angleichung beider Zeichenketten nutzen.
Sowas wie replacex(). -
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. -
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
-
Hallo Kruna
Hast du mal das obere Script bei dir eingefügt?
Die Funktion erledigt auf einfache Weise das Angleichen der Strings zum vergleichen. -
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.
-
Groß-/Kleinschreibung beachten, "vString" muss es heissen....
-
Ahhh, ich habe den Fehler in vstring gerade gefunden und korrigiert
-
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
Content aside
- vor 2 JahrenZuletzt aktiv
- 12Antworten
- 236Ansichten