Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 6/2011.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Lernen Sie ein Tool kennen, mit dem Sie die Daten aus zwei Datenbanken zusammenführen können.

Techniken

Datenmodellierung, VBA

Voraussetzungen

Access 2000 und höher

Beispieldateien

aiuMerge.mdb

Shortlink

www.access-im-unternehmen.de/810

Der Merge-Assistent

André Minhorst, Duisburg

Es kommt immer mal wieder vor, dass man Daten aus verschiedenen Quellen in einer einzigen Datenbank zusammenführen muss. Sofern die Quelldaten eine gewisse Struktur aufweisen oder sich mithilfe von Abfragen so darstellen lassen, dass das Datenmodell der Zieldatenbank abgebildet werden kann, gibt es gute Nachrichten: Sie können dann den in diesem Beitrag vorgestellten Merge-Assistent verwenden, um sich die Arbeit zu vereinfachen. Mit diesem Assistenten stellen Sie schnell die notwendigen Daten zusammen und starten den Abgleich per Mausklick.

Das Zusammenführen von Daten mehrerer Datenquellen kann eine komplizierte Angelegtenheit werden - vor allem, wenn die Daten aus verschiedenen Tabellen stammen, die auch noch miteinander verknüpft sind.

Welche Konstellationen es dort gibt und mit welchen Abläufen Sie einen solchen Import selbst programmieren können, haben wir bereits im Beitrag Daten zusammenführen beschrieben (www.access-im-unternehmen.de/803).

Im vorliegenden Beitrag stellen wir Ihnen ein Tool vor, mit dem Sie den Abgleich einfach durchführen können - vorausgesetzt, die Daten erfüllen die eine oder andere Bedingung. Zum Beispiel sollten die Daten der Ziel- und der Quelltabelle beide in einem ordentlichen Datenmodell vorliegen und die Tabellen jeweils einen Primärschlüssel aufweisen. Ist dies nicht der Fall, ist ein Import zwar nicht ausgeschlossen, aber der Aufwand wird dann höher.

Verfügbarmachen der Daten

Im ersten Schritt entscheiden Sie, welche der Datenbanken das Ziel der Zusammenführung sein soll. Diese Datenbank öffnen Sie und machen die Daten der anderen Datenquelle in Form entsprechender Verknüpfungen verfügbar.

Befinden sich die anderen Daten in einer Access-Datenbank, erstellen Sie einfache Verknüpfungen auf alle Tabellen, deren Daten in der Zieldatenbank landen sollen.

Verwenden Sie andere Datenquellen wie etwa Excel-Tabellen oder auch andere Datenbankformate, stellen Sie ebenfalls entsprechende Verknüpfungen her.

Tool installieren

Der aktuelle Beitrag liefert das Tool in Form einiger Objekte, die Sie in die Zieldatenbank importieren müssen. In diesem Fall handelt es sich um die folgenden Objekte der Beispieldatenbank:

  • Formular frmAbgleich
  • Formular frmAbgleichDetails
  • Tabelle tblPKAltUndNeu
  • Tabelle tblAbgleiche
  • Klasse clsOrder
  • Modul mdlTools_Abgleich

Was nicht passt, wird passend gemacht

Sollten die Daten aus unterschiedlich aufgebauten Datenquellen stammen, müssen Sie diese so weit wie möglich angleichen. Da es allzuviele verschiedene Varianten gibt, hier nur ein allgemeiner Hinweis: Formen Sie die Daten der verknüpften Tabellen mithilfe von Abfragen in der lokalen Tabelle so um, dass diese zu den Tabellen des hiesigen Datenmodells passen.

Damit ist sowohl die Aufteilung auf verschiedene Tabellen beziehungsweise Abfragen gemeint als auch die Benennung der Feldnamen.

Voraussetzungen

Die wichtigste Voraussetzung für das Funktionieren der Lösung ist, dass jede Zieltabelle nur einen einzigen Primärschlüssel besitzt. Mehr als einen Primärschlüssel wie etwa der zusammengesetzte Primärschlüssel der Tabelle Bestellungen der Nordwind-Datenbank kann die Anwendung nicht verarbeiten.

Festlegen der Import-Reihenfolge

Wenn die verknüpften Daten in entsprechender Form vorliegen, überlegen Sie sich, in welcher Reihenfolge Sie die Daten importieren möchten. Haben Sie beispielsweise Kunden, Artikel, Bestellungen und Bestelldetails, beginnen Sie mit den Tabellen, die keine Fremdschlüsselfelder zur Herstellung von Verknüpfungen mit anderen Tabellen enthalten.

Die Tabelle mit den Kundendaten ist ein guter Start: Sie sollte außer gegebenenfalls ein paar Lookup-Feldern wie zum Auswählen der Anrede et cetera keinerlei Fremdschlüsselfelder enthalten. Falls doch, importieren Sie diese zuerst, soweit noch nicht vorhanden.

Bestellungen werden einem Kunden zugeordnet, also werden Sie die Tabelle mit den Bestellungen erst nach den Kunden importieren. Die Bestelldetails legen fest, welche Bestellung welche Artikel enthält - hier müssen Sie zunächst die Artikeldaten abgleichen.

Zusammenführung

Eine der größten Herausforderungen besteht darin, bereits vorhandene Daten zu erkennen und diese nicht erneut zu importieren - hier gewinnt das Wort Zusammenführung besondere Bedeutung. Insbesondere kann es vorkommen, dass ein Kunde sowohl in der ersten als auch in der zweiten Datenbank vorkommt.

Dann soll natürlich kein weiterer Kundendatensatz angelegt werden, sondern einer der beiden bestehenden Datensätze übernommen werden.

Dies erfordert zwei Arbeitsschritte: Zunächst den vorbereitenden Schritt, in dem Sie festlegen, nach welchen Feldern die neuen und die vorhandenen Datensätze abgeglichen werden sollen.

Im zweiten Schritt werden beim Zusammenführen der Daten Dubletten auftauchen: Hier müssen Sie eine Möglichkeit bieten, die beiden Datensätze zu vergleichen und zu entscheiden, welcher der beiden Datensätze übernommen werden soll.

Gegebenenfalls sollen ja selbst zwei Kundendatensätze noch kombiniert werden, um etwa den ersten Kundendatensatz, der zwar die richtige Adresse enthält, um die im zweiten Kundendatensatz aufgeführte Telefonnummer zu ergänzen. Prinzipiell müsste der Benutzer also für jedes einzelne Feld entscheiden können, aus welcher Datenbank der Inhalt entnommen wird. Sie ahnen es bereits: Diesem Formular messen wir besondere Bedeutung zu.

Anhängsel zusammenbringen

Beim Vereinigen der Kundendaten berücksichtigen Sie auch gleich die Daten solcher Tabellen, die per Fremdschlüsselfeld mit der Kundentabelle verknüpft sind. Im Falle der Bestellungen können folgende Situationen auftreten, wenn ein Kunde mit einer Bestellung aus Datenbank B in Datenbank A importiert werden soll:

  • Der Kunde ist bereits vorhanden. Dann wird nur der Bestelldatensatz in die Bestellungen-Tabelle der Zieldatenbank importiert und das Fremdschlüsselfeld mit dem Primärschlüsselwert des bestehenden Kundendatensatzes gefüllt.
  • Der Kunde ist noch nicht vorhanden. Dann wird zunächst der Kunde neu angelegt. Dieser erhält dabei in der Regel einen neuen Primärschlüsselwert, da der vorhandene ja bereits vergeben sein könnte. Die Bestellung wird beim Importieren mit dieser neu vergebenen Kunden-ID versehen.

Primärschlüsselfelder

Wie oben bereits erwähnt, muss zumindest die Zieltabelle genau ein Primärschlüsselfeld enthalten.

Dieses kann als Autowert oder als herkömmliches Zahlenfeld ausgelegt werden (Textfelder oder GUIDs als Datentyp von Primärschlüsselfeldern unterstützt die hier vorgestellte Lösung nicht).

Wenn es sich um einen Autowert handelt, gibt es beim Einfügen von Daten nur eine Möglichkeit: Der Datensatz muss mit einem automatisch vergebenen Primärschlüsselwert angelegt werden.

Ist das Primärschlüsselfeld nicht als Autowertfeld deklariert, soll die Lösung dieses Beitrags selbst einen geeigneten Wert bestimmen. In diesem Fall wird der bisher größte als Primärschlüssel vergebene Wert ermittelt und der Wert 1 hinzu addiert.

Ein Abgleich auf Basis der Primärschlüsselwerte ist ebenfalls vorgesehen. Sollten Sie also beispielsweise die Daten einer Kundentabelle importieren wollen, die zunächst nur in einer Kopie der Anwendung verwendet und dann in mehreren Kopien erweitert wurde, werden die Daten bei der Zusammenführung anhand des Primärschlüssels abgeglichen.

Wenn gleiche Datensätze zusammengeführt werden sollen, die aber nicht zwingend den gleichen Primärschlüsselwert besitzen, müssen Sie Vergleichskriterien wie Vorname und Nachname oder Ähnliche festlegen - dazu stehen alle gemeinsamen Felder der Ziel- und der Quelltabelle bereit.

Bestehende Daten

Eine interessante Herausforderung ist der Abgleich mit bestehenden Daten. Wie soeben beschrieben, sollen die Anwendung Datensätze aus zwei Datenbanken, die übereinstimmen könnten (also beispielsweise zwei Kunden, die Produkte gekauft haben, die mit verschiedenen Datenbanken verwaltet werden), zusammenführen können.

Dazu legen Sie fest, anhand welcher Felder übereinstimmende Datensätze erkannt werden sollen, also beispielsweise Vorname und Nachname. Je nach Menge der Datensätze reicht dies bereits aus, sonst nehmen Sie noch weitere Felder wie Straße, PLZ oder Ort hinzu.

Wählen Sie die Vergleichsfelder jedoch sorgfältig aus: Kunden sind nicht zur Konsistenz verpflichtet, was die Eingabe etwa in Bestellformularen angeht. Mal schreiben sie Straße als ganzes Wort aus, mal geben sie nur Str. ein. Verlassen Sie sich also eher auf Daten wie die Postleitzahl.

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.