1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

doppelte einträge in einer access tabelle löschen

Discussion in 'Office-Programme' started by scanurana, Jun 28, 2010.

Thread Status:
Not open for further replies.
  1. scanurana

    scanurana ROM

    Hallo,
    wäre super wenn mir hierbei jemand helfen könnte.

    In einer Access-Tabelle sind zwei Spalten.
    In einer steht die Bankleitzahl in der anderen der Bankname.
    Die Bankleitzahl kommt zum Teil doppel oder mehrfach vor, der Bankname unterscheidet sich hierbei etwas.

    z.B.

    10090000 Berliner Volksbank
    10090000 Berliner Volksbank Fil Velten

    Ich möchte jetzt, dass die Bankleitzahl nur einmal vorkommt und nur der erste Eintrag (hier die Berliner Volksbank) in der Tabelle stehen bleibt.
    Alle weiteren, doppelt vorkommenden Bankleitzahlen sollen gelöscht werden.

    Mit DISTINCT oder GROUP BY hab ich es nicht hinbekommen.

    Gruß
     
    Last edited: Jun 28, 2010
  2. Hascheff

    Hascheff Moderator

    Hallo scanurana,
    bist du sicher, dass immer der erste Beitrag stehen bleiben muss?

    Ich werde mir bei Gelegenheit eine Lösung ausdenken.

    Gruß
    Hascheff
     
  3. scanurana

    scanurana ROM

    Hallo Hascheff,

    für eine Lösung wäre ich dir echt Dankbar.

    Nach Bankleitzahl sortiert soll immer der erste Beitrag stehen bleiben.

    Gruß,
    scanurana
     
  4. Hascheff

    Hascheff Moderator

    Hallo scanurana,

    Ich sehe zwei Wege, über eine Kreuztabellenabfrage oder ein Formular mit VBA-Code.
    Ich beschreibe mal die Kreuztabelle.

    Ich gehe mal davon aus, dass jeder Datensatz eine ID hat. Außerdem benötigst du in der Tabelle ein Ja/Nein-Feld, um die zu löschenden Datensätze zu markieren. (Ich lege ein solches "Marke"-Feld bei den meisten Tabellen gleich mit an, so etwas kann man immer mal gebrauchen.)

    Zunächst musst du eine Abfrage zur Sortierung der Datensätze erstellen, auch wenn sie in der Tabelle scheinbar schon die richtige Reihenfolge haben. Du kannst dich sonst nicht darauf verlassen, dass sie in der richtigen Reihenfolge in der Kreuztabelle verarbeitet werden.
    Die Kreuztabelle hat dann folgende Struktur:
    Zeile: BLZ
    Spalte: Marke
    Wert: ID - erster Wert

    Damit entstehen die Spalten 1 und 0, So wird Ja/Nein ausgewertet. Da Marke in allen Datensätzen den Wert "Nein" hat, wird nur diese Spalte angezeigt.

    Nun erstellst du eine weitere Abfrage, in der die Ausgangstabelle und die Kreuztabellenabfrage über die ID (in der Kreuztabellenabfrage 0) verknüpft sind. Die Verknüpfungseigenschaft muss so festgelegt werden, dass nur die in der Kreuztabellenabfrage enthaltenen Datensätze angezeigt werden.
    Nach einem kontrollierendem Blick auf das Ergebnis (mit Hilfe beliebiger Spalten, die du in die Abfrage stellst) kann es weitergehen.

    Nun wird es kritisch. Da ich nicht teste, könnte der fogende Schritt misslingen, dann musst du den Umweg gehen, den ich im Anschluss zeige.

    Wandle die zuletzt beschriebene Abfrage in eine Aktualisierungsabfrage um. Von der Ausgangstabelle muss "Marke" auf "Ja" gesetzt werden.

    Jetzt ist der Rest ein Kinderspiel. Alle Datensätze, die auf "Nein" bleiben, werden mit einer Löschabfrage beseitigt.

    Das Problem des vorletzten Schrittes besteht darin, dass Marke zur Erstellung der Kreuztabelle dient und im vorletzten Schritt gleichzeitig verändert wird. Dann kann man zum Erstellen der Kreuztabelle "Marke" durch ein weiteres Ja/Nein-Feld "Dummy" ersetzen.

    Gruß
    Hascheff

    PS: Der Weg ist zwar einfacher, aber schwerer zu beschreiben gewesen.
     
Thread Status:
Not open for further replies.

Share This Page