Duplikate nach Import löschen
Ich bräuchte mal wieder einen Gedankenanstoss aus dem Forum. Ich importiere über einen Button aus einer externen Datenquelle Datensätze in eine Tabelle (über ein Script). Da ich vermeiden möchte, dass die Datensätze mehrfach in die Datenbank geschrieben werden, suche ich eine Möglichkeit, wie ich dies vermeiden kann. Meine Überlegungen gehen dahin, dass ich ein Script nach dem Ändern aktiviere. Bin mir aber noch nicht sicher, wie ich das aufbauen möchte.
Um etwas konkreter zu werden.
Tabelle A Importtabelle. Felder A und Felder B könnten als Vergleichsindex verwendet werden. Wie müsste ich da vorgehen? Danke im voraus für einen Impuls.
Frank
2 Antworten
-
Hi Frank. Folgendes Script nutze ich. Es vergleicht zwei Feldinhalte, ob sie mehrfach vorhanden sind und daraus wird ein Array gebildet. Im nächsten Schritt wird die kleinste ID des Arrays gesucht, also der früheste Eintrag und dann werden alle anderen! markiert als Duplikat. Dann kann danach gefiltert werden und gelöscht. Du benötigst dafür ein Auswahlfeld oder Ja/Nein oder Text-Feld, welches der Markierung dient. Ich nutze ein Auswahlfeld mit einer Auswahlmöglichkeit, welches mir nur die Farbe Rot anzeigt. In meinem Script fehlt der Anteil mit delete, da ich lieber erst schaue und dann lösche. Also teste erst an Daten, die Du verschmerzen kannst. Gruß Mirko
*
for j in select TABELLE do
let name := j.FELD;
let name2 := j.FELD2;
let nummer := text(number(j.Nr));
let duploArray := for i in (select Duplikate)[FELD = name and FELD2 = name2] do
i.number(Nr)
end;
if contains(concat(duploArray), nummer) and number(j.Nr) != min(duploArray) then
j.(DUPLIKAT := 1)
else
j.(DUPLIKAT := null)
end
end;
//optional//
for i in (select TABELLE)[DUPLIKAT = 1] do
delete i
end
*
-
Werde ich versuchen Mirko, vielen Dank...
Frank
Content aside
- vor 2 JahrenZuletzt aktiv
- 2Antworten
- 146Ansichten