Moin Frettchen!
IMHO Meine Access-Erfahrungen sind praktisch nicht vorhanden, aber Du kannst folgende (SQL92-Standard) SQL-Abfrage dafür nehmen:
Angenommen
1. Du willst aus "Tabelle" löschen
2. Feld1, Feld2, ... Feldn sind Dein Vergleichskriterium, wenn die gleich sind, sollen die "alten" Datensätze gelöscht werden.
3. Es gibt so etwas wie "rowindex" unter Access (müßte eine DataItem-Eigenschaft sein. Ein rowindex ist eine eindeutige pro Datensatz inkrementierte Zahl, die jedem Datensatz zur Verfügung steht.
Dann müsste folgendes SQL-Statement:
.delete from tabelle where rowindex in
. (select tab1.rowindex
. from tabelle tab1,
. tabelle tab2
. where tab1.feld1 = tab2.feld1 and
. tab1.feld2 = tab2.feld2 and
. ...
. tab1.feldn = tab2.feldn and
. tab1.rowindex != tab2.rowindex and
. tab1.rowindex != (select max(tab3.rowindex)
. from tabelle tab3.rowindex
. where tab1.feld1 = tab3.feld1 and
. tab1.feld2 = tab3.feld2 and
. ...
. tab1.feldn = tab2.feldn))
eigentlich zum Ziel führen.
Erklärung: Im ersten where werden alle Rowindexe von gleichen Spalten geholt, mit Ausnahme der höchsten (zuletzt eingefügten) Spalte (=Select 2)
Achtung! Das Statement macht "full-table-scans", d.h. es geht die Tabelle komplett durch (mindestens 1x, eher, da kenne ich Access nicht, 3x), ist also laaaangsam.
Hoffe es hilft Dir
Gruß Jürgen