0

Doppelte Einträge in zwei Feldern prüfen

Hallo liebes Forum,

wir führen eine Datenbak für die Verwaltung unserer Geschäftskontakte, die wir im Anschluss über Newsletter etc. kontaktieren wollen. Wir führen pro Eintrag zwei Felder für E-Mails:

'E-Mail Primär'

'E-Mail Sekundär'

Nun möchte ich mittels einem Funktionsfeld doppelte Einträge (> 1) der selben E-Mail Adresse finden, bzw. als 'D U P L I K A T' anzeigen lassen sofern die Adresse in der Datenbank egal in welchem Feld mehr als 1x auftaucht.

Wie könnte die Formel aussehen?

Ich hab mal angefangen:

let myEmail2 := 'E-Mail (Sekundär)';
let myEmail1 := 'E-Mail (Primär)';
if count(select Medienpartner where 'E-Mail (Sekundär)' = myEmail2 and 'E-Mail (Sekundär)' != null) > 1 then
"D U P L I K A T"
else

if count(select Medienpartner where 'E-Mail (Primär)' = myEmail1 and 'E-Mail (Primär)' != null) > 1 then
"D U P L I K A T"

else
"O K"
end

Jetzt müsste ich noch beide Spalten summiert durchsuchen, aber vielleicht geht es auch eleganter?

 

Danke!

9 Antworten

null
    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Reinhard,

    Ich würde es so versuchen:

    ---

    let me:=this;
    if cnt(select Medienpartner where Nr!=me.Nr and (contains ('E-Mail (Sekundär)'+'E-Mail (Primär)',me.'E-Mail (Sekundär)') or (contains ('E-Mail (Sekundär)'+'E-Mail (Primär)',me.'E-Mail (Primär)')))=0 then "OK" else "DUPLIKAT"
    end

    ---

    Leo

    • Reinhard
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hi Leo, das ist auf alle Fälle schonmal der bessere Ansatz, mit contains und andersherum gedacht, klappt aber leider noch nicht. Erste Meldung nach Copy/Paste ist ein fehlendes Symbol in Zeile 2 Spalte 203. Hab dann etwas mit Klammern etc. ausprobiert bis es gepasst hat, aber selbst nach duplizieren eines Eintrags wird er nicht als Duplikat angezeigt...

     

    Danke nochmal,

    Reinhard

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Reinhard,

    habe jetzt nachgebaut. So funktioniert:

    ---

    let me := this;
    if cnt(select Medienpartner where Nr != me.Nr and (contains(lower('E-Mail (Sekundär)' + 'E-Mail (Primär)'), me.lower('E-Mail (Sekundär)')) or contains(lower('E-Mail (Sekundär)' + 'E-Mail (Primär)'), me.lower('E-Mail (Primär)')))) = 0 then
    "OK"
    else
    "DUPLIKAT"
    end

    ---

    Leo

    • Reinhard
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hey Leo,

     

    das funktioniert perfekt! - auch wenn ich es nicht verstehe, was genau bewirkt "lower"?

     

    Danke für die super schnelle Hilfe!

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    lower ist für Kleinschreibung zuständig

    • Reinhard
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Danke Leo!

    Ein Problem hat sich noch herausgestellt, seit dem ich die Formel eingesetzt habe reagiert die Tabelle sehr langsam (Apple WOD Anzeige für ca. 20 sec., 2,2 GHz Intel Core i7, 16 GB 1600 MHz DDR3) ca. 4000 Datensätze sind es.

    Kann man die Funktion / Formel deaktivieren?

    • Reinhard
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Oder wie könnte ich die Funktion am einfachsten auf eine Schaltfläche übertragen um dann den Wert 'DUPLIKAT' in eine neue Text Spalte zu schreiben?

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Reinhard,

    wenn du diese Meldung tahtsächlich als Spalte haben möchtest, dann ifwürde ich von den Funktionsfelder abraten. Dann lieber ein Ja/Nein Feld namens Duplikat hinzufügen und bei einem Button die Formel:

    ---
    do as server
    for i in select Medienpartner do
    i.Duplikat:=if cnt(select Medienpartner where Nr != i.Nr and (contains(lower('E-Mail (Sekundär)' + 'E-Mail (Primär)'), i.lower('E-Mail (Sekundär)')) or contains(lower('E-Mail (Sekundär)' + 'E-Mail (Primär)'), i.lower('E-Mail (Primär)')))) = 0 then
    false
    else
    true
    end
    end
    end

    ---

    Leo

    • Reinhard
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ah, super jetzt läuft es perfekt! Danke Leo!

Content aside

  • vor 3 JahrenZuletzt aktiv
  • 9Antworten
  • 754Ansichten