Für die Aufgabe, dass mehrere Tabellen einer Datenbank in eine andere verfrachtet werden sollen, weil Sie dort exakt dieselben Daten benötigen, gibt es unterschiedliche Lösungen. Je nach Situation kommt es auf die Inhalte an, auf die Beziehungen zwischen den Tabellen, oder auf die Eigenschaften und Attribute der Felder. Mit Access 2010 ist eine neue Möglichkeit hinzugekommen, die wir uns genauer anschauen.
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 1606_TabExport.accdb.
Exportfunktionen
Bei Neuanlage einer Datenbank möchten Sie das Entwickeln des Datenmodells schnell erledigt haben. Sie greifen daher häufig auf existierende Datenbanken zu, die bereits die gewünschten oder ähnliche Tabellen enthalten, importieren diese entweder in die neue Datenbank, oder exportieren sie aus der bestehenden.
In der Regel werden Sie sich dabei der für diesen Zweck vorgesehenen Funktionen der Oberfläche bedienen. Das Menüband spendiert uns dafür sogar einen eigenen Reiter Externe Daten mit seinen Gruppen Exportieren, sowie Importieren und Verknüpfen.
Auch über VBA können Sie den Import und Export auf unterschiedliche Weise anstoßen.
In aller Kürze hier einige Möglichkeiten, auf die an anderer Stelle bereits eingegangen wurde:
RunCommand acCmdExportAccess
Ruft lediglich den Dialog zum Exportieren einer Tabelle in eine externe Datenbank auf
RunCommand acCmdImportAttachAccess
Ruft nur den Dialog zum Importieren von Elementen aus einer externen Datenbank auf. Bei diesen beiden Anweisungen sind also zusätzlich manuelle Angaben erforderlich.
DoCmd.RunSavedImportExport ""
In diesem Fall läuft der Import oder Export automatisch ab, jedoch unter einer Bedingung: Sie haben den Vorgang bereits über die Oberflächendialoge einmal durchgeführt und ihn namentlich abgespeichert.
DoCmd.TransferDatabase ...
Das ist die Hauptfunktion zum Exportieren von Tabellen. Die Funktion erwartet eine Vielzahl von Parametern, die sie steuern. Nachteil: Nur eine einzelne Tabelle kann über sie exportiert werden.
Application.SaveAsText acTable, _ "", " "
Diese versteckte Funktion speichert die Tabelle komplett mit all ihren Eigenschaften in eine Datei. Das Pendant zum Wiederherstellen der Tabelle:
Application.LoadFromText acTable,"", " "
Sollen mehrere Tabellen ohne jede manuelle Interaktion exportiert werden, wie etwa jene des Datenmodells aus Bild 1 der Beispieldatenbank, so kommt man folglich um eine ausprogrammierte Routine nicht herum. Doch seit Access 2010 gibt es hierfür eine neue Anweisung, die die Sache deutlich einfacher macht.
Bild 1: Datenmodell der Beispieldatenbank
Die Funktion ExportXML
erwartet, ähnlich, wie TransferDatabase, die übergabe einer Menge von Parametern. Der erste gibt den Objekttyp des Elements an, das exportiert werden soll. IntelliSense erleichtert Ihnen dabei die Auswahl der Parameterkonstanten. Darunter finden Sie mit acExportForm oder acExportReport auch die Objekttypen Formular und Bericht. Wer nun denkt, dass sich darüber der komplette Aufbau von Formularen und Berichten transferieren ließe, der irrt! Tatsächlich bezieht Access hier nur die Daten dieser Objekte in den Export ein, also im Prinzip deren Datenherkünfte. Das braucht man wohl höchst selten!
Die einzige für unseren Zweck sinnvolle Konstante ist deshalb acExportTable. Listing 1 zeigt, wie die Tabelle tblKunden über ExportXML in eine XML-Datei überführt wird. Zunächst wird der Ausgabepfad in der Variablen sPath zwischengespeichert. Im Beispiel ist das das Verzeichnis der aktuellen Datenbank. ExportXML wird als zweiten Parameter der Name der Tabelle (tblKunden) übergeben und als dritter der Dateiname, welcher sich aus Pfad plus kunden.xml bildet.
Sub ExportTable() Dim sPath As String sPath = CurrentProject.Path & "\" ExportXML acExportTable, "tblKunden", sPath & "kunden.xml", _ , , , , _ acEmbedSchema Or acExportAllTableAndFieldProperties End Sub
Listing 1: Die einfachste Prozedur zum Datenexport per Funktion ExportXML
Darauf folgen mehrere Kommas, die bedeuten, dass hier vier optionale Parameter nicht angegeben werden. Man braucht sie in der Regel nicht, denn sie beziehen sich alle auf optionale Zusätze der XML-Datei, wie das Schema oder die Präsentation. Wichtig hingegen ist der nächste Parameter, der die Art des Exports über wählbare Flags festlegt. acEmbedSchema sagt Access, dass das XML-Schema in der XML-Datei selbst abzulegen ist, statt separat. acExportAllTableAndFieldProperties gibt an, dass nicht nur Daten und Struktur ausgegeben werden sollen, sondern auch die Eigenschaften und Attribute sowohl der Tabelle, wie aller Felder. Das wären dann Beschriftungen, Gültigkeitsformeln, Standardwerte, also alles, was nicht in die SQL-DDL-Repräsentation passt, aber auch Spaltenbreiten und weitere Layoutangaben, wie Schriftart oder Farben. Derlei erlaubt TransferDatabase nicht! Die Anweisung wurde wahrscheinlich für die Automation der ab Access 2007 neu eingeführten Vorlagen und Anwendungs-Parts eingeführt, denn die Gestalt der XML-Datei entspricht diesen Template-Dateien genau.
Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein: