Access - Doppelte Daten auswerten

Hallo zusammen,

habe mich jetzt schon längere Zeit nicht mehr mit Access(VBA) beschäftigt und steht jetzt vor einem kleineren (größeren?) Problem.

Ich wills mal kurz beschreiben.

  • Ich bekomme mehrmals im Monate Gerätedaten in einer TXT-Datei (je 20000-50000 Datensätze), die ich in Access importiere (kein Problem)
  • Zunächst lösche ich die leeren Datensätze raus (auch kein Problem)

aber jetzt
Ein Datensatz besteht u.a. aus folgenden Daten, welche für mich relevant sind:

  • Ortsbezug (bestimmter Code)
  • GeräteID
  • Modul Nr. (eine GeräteID kann mehrere Module besitzen)

Jetzt kann es allerdings vorkommen, dass die Kombination aus GeräteID und Modul mehrmals in der TXT-Datei vorkommt (aufgrund von Fehleingaben oder weil mehrmals ein Kommentar oder eine andere Konfig hinterlegt wurde).
Ich müsste jetzt alle doppelten Kombinationen aus GeräteID&Modul aus der DB löschen, so dass die Kombination aus GeräteID & Modul wirklich nur einmal vorkommt.
Im zweiten Schritt interessiert mich dann wieviele GeräteID&Module zum Ortsbezug stehen, heisst wieviele Kominationen aus GeräteID&Modul sind zum Beispiel im Ortscode xyz.

Bisher hatte ich die Problematik in Excel gelöst, aber aufgrund von mehr und mehr Daten die in das Ganze reinspucken, hab ich mich entschieden nun auf Access umzusteigen.
In Excel hab ich das Problem gelöst, in dem ich über alle Reihen die GeräteID und ModulNr prüfe und doppelte rausschmeisse, dann nach Ortscode sortiere und den Ortscode zähle.

Vielleicht hat jemand auf die schnelle eine nette Lösung.
Ich hätte zwar eine, aber die läuft bei 21000 Datensätze knapp 20 Minuten über die Datenbank (bischen lang), Excel braucht 2 Minuten.
Bin schon am überlegen, ob ich nach import und Datenbereinigung wieder exportieren soll und die Auswertung inner TXT-Datei laufen lassen soll.

Für jeden Vorschlag bin ich schon mal dankbar …

Beste Grüße
mueffel

Hallo mueffel,

über welche Access-Version reden wir denn? Auf Grund der Unterschiede, ist die Angabe der Version hier zwingend notwendig!

Ich müsste jetzt alle doppelten Kombinationen aus
GeräteID&Modul aus der DB löschen, so dass die Kombination aus
GeräteID & Modul wirklich nur einmal vorkommt.

nö, musst du nicht löschen, da reicht eine einfache Abfrage.

  1. Assistenten für Abfragen aufrufen
  2. Doppelte Datensätze auswählen.

oder eine selber erstellen:

  • Gruppieren nach GeräteID & Modul

Im zweiten Schritt interessiert mich dann wieviele
GeräteID&Module zum Ortsbezug stehen, heisst wieviele
Kominationen aus GeräteID&Modul sind zum Beispiel im Ortscode
xyz.

dafür gibt es Berichte, die das auf einen Blick übersichtlich darstellen.

Ich hätte zwar eine, aber die läuft bei 21000 Datensätze knapp
20 Minuten über die Datenbank (bischen lang), Excel braucht 2
Minuten.

hmmm, keine Ahnung was du da programmiert hast, es scheint nicht optimal zu sein :frowning:

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Hi Wolfgang,

Danke schon mal für Deine schnelle Antwort.

über welche Access-Version reden wir denn? Auf Grund der
Unterschiede, ist die Angabe der Version hier zwingend
notwendig!

Hab momentan noch ACC2003 im Einsatz

Ich müsste jetzt alle doppelten Kombinationen aus
GeräteID&Modul aus der DB löschen, so dass die Kombination aus
GeräteID & Modul wirklich nur einmal vorkommt.

nö, musst du nicht löschen, da reicht eine einfache Abfrage.

  1. Assistenten für Abfragen aufrufen
  2. Doppelte Datensätze auswählen.
    oder eine selber erstellen:
  • Gruppieren nach GeräteID & Modul

Hab ich schon probiert, allerdings zeigt er mir dann die Kombinationen, welche wirklich nur einmal vorkommen nicht mehr an.
Da steh ich momentan aufm Schlauch.

Im zweiten Schritt interessiert mich dann wieviele
GeräteID&Module zum Ortsbezug stehen, heisst wieviele
Kominationen aus GeräteID&Modul sind zum Beispiel im Ortscode
xyz.

dafür gibt es Berichte, die das auf einen Blick übersichtlich
darstellen.

Ich muss die Werte inner anderen Tabelle weiterverarbeiten, heisst zählen und in Tabelle xyz unter dem Ortsbezug die Menge im entsprechenden Datensatz abspeichern. Das ist wiederum kein Problem, aber eben auf die Menge zu kommen, da es viele doppelte Kombinationen gibt.

Ich hätte zwar eine, aber die läuft bei 21000 Datensätze knapp
20 Minuten über die Datenbank (bischen lang), Excel braucht 2
Minuten.

hmmm, keine Ahnung was du da programmiert hast, es scheint
nicht optimal zu sein :frowning:

Ich hab mir das Bsp. aus http://www.vbarchiv.net/archiv/tipp_1465.html auf meine Bedürfnisse angepasst.

Danke schon mal

Gruss
Jochen

Hallo,

Ich müsste jetzt alle doppelten Kombinationen aus
GeräteID&Modul aus der DB löschen, so dass die Kombination aus
GeräteID & Modul wirklich nur einmal vorkommt.

Da würde ich vorschlagen, zunächst eine Tabelle zu erstellen, in der über die Felder „GeräteID“ und „Modul“ ein zusammengesetzter Index ohne Duplikate (zusammengesetzter Primärschlüssel) gelegt wird.

Die TXT-Datei bräuchte lediglich verknüpft und deren Inhalt mittels einer Anfügeabfrage in die bestehende Access-Tabelle eingefügt werden.
Dabei werden mehrfache Ds mit derselben Kombination aus GeräteID und Modul nicht eingefügt.

Im zweiten Schritt interessiert mich dann wieviele
GeräteID&Module zum Ortsbezug stehen, heisst wieviele
Kominationen aus GeräteID&Modul sind zum Beispiel im Ortscode
xyz.

Select Ortsbezug, count(*) as OrtsAnzahl from tblTabelle group by Ortsbezug

oder bei bestimmten Ortsbezug:
Select count(*) as OrtsAnzahl from tblTabelle where Ortsbezug = „XYZ“

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Hallo Franz,

Danke für Deinen Vorschlag …

Da würde ich vorschlagen, zunächst eine Tabelle zu erstellen,
in der über die Felder „GeräteID“ und „Modul“ ein
zusammengesetzter Index ohne Duplikate (zusammengesetzter
Primärschlüssel) gelegt wird.

Die TXT-Datei bräuchte lediglich verknüpft und deren Inhalt
mittels einer Anfügeabfrage in die bestehende Access-Tabelle
eingefügt werden.
Dabei werden mehrfache Ds mit derselben Kombination aus
GeräteID und Modul nicht eingefügt.

mmhh… OK, wäre ein Weg… ich müsste allerdings zuerst die TXT über TransferText reinholen und bereinigen, da noch ziemlich viel anderer Mist drinsteht in der TXT.
Würde dann ne neue Tabelle machen mit nem zusammengesetzten PK, und die Ds aus der Import-Tab wieder rüberschieben.

Oder siehst Du vielleicht noch einen Weg direkt aus der Import-Tab was zu machen. Zusammengesetzten PK kann ich ja wg. den Duplikaten im nachhinein nicht mehr setzen.

Grüße an den Bodensee
Jochen

Hallo,

der Trick ist halt, daß man die Jet-Engine die Prüfung machen läßt, und das geht nur, wenn eine Tabelle mit zusammengesetzten Primärschlüssel schon definiert ist.

Alternativ gäbe es nur aufwendigere und damit weniger performante Methoden via Recordsets oder dergleichen.

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Hi …

Besten Dank für den Tipp, funktioniert bereits wunderbar.

Gruss
Jochen