Import/Export-Spezifikationen im Griff

Wer oft Daten importiert oder exportiert, wird dies in vielen Fällen mit den entsprechenden Assistenten und den damit erzeugten Spezifikationen erledigen. Falls nicht, erhalten Sie in diesem Beitrag eine kurze Einführung in die notwendigen Schritte. Außerdem erfahren Sie, wo Access die Spezifikationen speichert und wie Sie diese ganz schnell ändern, ohne extra den Assistenten dafür öffnen zu müssen.

Wenn Sie etwa unter Access 2007/2010 einen Export mit dem Assistenten durchführen möchten, finden Sie alles Notwendige im Ribbon-Tab Externe Daten (unter Access 2003 und älter verwenden Sie zum Importieren den Menüeintrag Datei|Externe Daten|Importieren beziehungsweise Verknüpfen und zum Exportieren den Kontextmenüeintrag Exportieren des jeweiligen Objekts im Datenbankfenster). Im Ribbon-Tab Externe Daten klicken Sie einfach auf das gewünschte Ziel beziehungsweise die Quelle (s. Abb. 1) und starten so den Assistenten. Nach dem Auswählen der Quell-/Zieldatei sieht der Assistenten dann in allen Access-Versionen des neuen Jahrtausends ähnlich aus.

pic001.png

Abb. 1: Aufruf von Import- und Export-Funktionen unter Access 2010

Der Export erfordert einige Vorbereitung: Wenn nicht alle Felder und alle Datensätze einer Tabelle in die Zieldatei, etwa eine Excel-Tabelle, geschrieben werden sollen, müssen Sie eine entsprechende Abfrage erstellen, welche nur die gewünschten Felder aufnimmt und gegebenenfalls die Datensätze durch entsprechende Kriterien einschränkt.

Dafür lässt sich der Assistent anschließend in zwei Schritten abfertigen: Er fragt nur, ob die Datenspalten durch Trennzeichen oder eine fixe Spaltenbreite voneinander getrennt werden sollen und welches Trennzeichen gegebenenfalls verwendet werden soll. Außerdem möchte er wissen, ob die Feldnamen als Spaltenköpfe mitexportiert werden sollen und ob die einzelnen Werte etwa in Anführungszeichen eingefasst werden sollen.

Beim Importieren etwa aus einer Textdatei ist der Assistent naturgemäß etwas neugieriger: Er fragt auch zunächst, ob die Daten in festen Spalten vorliegen oder durch ein Begrenzungszeichen voneinander getrennt sind (s. Abb. 2). Kommt Letzteres infrage, geben Sie im zweiten Schritt an, welches Trennzeichen verwendet werden soll (s. Abb. 3). Danach kümmern Sie sich um die Zuweisung der einzelnen Spalten der Quelldatei zu den Feldern der Zieltabelle (s. Abb. 4). Und schließlich geben Sie noch an, ob ein neuer Primärindex erstellt werden oder ein vorhandenes Primärindex-Feld oder gar keins verwendet werden soll (s. Abb. 5).

pic002.png

Abb. 2: Soll mit oder ohne Trennzeichen importiert/exportiert werden

pic003.png

Abb. 3: Welches Trennzeichen wird verwendet, welches Textbegrenzungszeichen und wie sieht es mit der ersten Zeile aus

pic004.png

Abb. 4: Festlegen von Feldern und Datentypen

pic005.png

Abb. 5: Auswählen eines Primärschlüsselfeldes, falls gewünscht

Spezifikationen speichern

Es wird gern übersehen, ist aber enorm wichtig: der Dialog, der sich durch einen Mausklick auf die Schaltfläche Erweitert öffnet (s. Abb. 6). Hier finden Sie nämlich nicht nur eine Zusammenfassung der vorgenommenen Einstellungen, sondern auch noch die Möglichkeit, die Einstellungen zu speichern. Dazu klicken Sie auf die Schaltfläche Speichern unter … und geben im folgenden Dialog den Namen der zu speichernden Spezifikation an.

pic006.png

Abb. 6: Übersicht und weitere Optionen

Damit schaffen Sie die Voraussetzung für die folgenden Aktionen:

  • Sie können einen Import oder Export auf Basis der gespeicherten Spezifikation mit einer einfachen VBA-Anweisung aufrufen.
  • Sie können änderungen an der Spezifikation durchführen, indem Sie den Assistenten erneut starten, gleich mit einem Klick auf Spezifikationen… den Dialog Import/Export-Spezifikationen öffnen und dort die gewünschte Spezifikation auswählen. Sie können die Spezifikation dann ändern und unter dem gleichen oder einem anderen Namen sichern.

Import/Export per VBA

Für den Import/Export per VBA gibt es ein paar Methoden des DoCmd-Objekts, zum Beispiel DoCmd.TransferSpreadsheet für Excel-Tabellen oder DoCmd.TransferText für Textdateien.

Wenn Sie beispielsweise den Inhalt der Tabelle tblKategorien in einer Textdatei speichern möchten und dazu bereits eine Export-Spezifikation unter dem Namen Kategorien Exportspezifikation erstellt haben, können Sie dies mit der folgenden Anweisung erledigen:

DoCmd.TransferText acExportDelim, "Kategorien Exportspezifikation", "tblKategorien", CurrentProject.Path & "\\Kategorien.txt", True

Der erste Parameter gibt dabei die Export/Import-Art an, der zweite den Namen der Spezifikation, der dritte die Quelltabelle und der vierte die Zieldatenbank.

Der letzte Parameter bestimmt, ob die Feldnamen beim Export in die erste Zeile geschrieben werden sollen.

Auf ähnliche Weise gehen Sie auch beim Importieren von Daten vor – Sie müssen lediglich eine entsprechende Spezifikation anlegen und als ersten Parameter eine der acImport…-Konstanten angeben.

Umständliches Anpassen der Spezifikationen

Wenn Sie eine Spezifikation einmal ändern müssen, weil Sie beispielsweise einen Import mit vielen Feldern erstellt und beim Testen festgestellt haben, dass der Import noch nicht richtig funktioniert, müssen Sie theoretisch jedes Mal erneut den Assistenten öffnen und die Spezifikation laden, ändern und erneut speichern. Das ist sehr unpraktisch, denn der Assistent fragt beispielsweise jedes Mal erneut den Namen der zu importierenden Datei ab. Dabei müssen Sie auch immer wieder zum entsprechenden Quellverzeichnis navigieren, um die Datei auszuwählen, was mit der Zeit nervt.

Zum Glück gibt es noch eine Alternative, die in den folgenden Abschnitten vorgestellt wird.

Speicherort der Spezifikationen

Die Daten einer Spezifikation werden günstigerweise an einer leicht erreichbaren Stelle gespeichert – nämlich in zwei als Systemtabellen markierten Tabellen:

  • MSysIMEXSpecs speichert die allgemeinen Daten einer Spezifikation (Abb. 7 zeigt den Entwurf und die Entsprechung im Dialog aus Abb. 6) und
  • MSysIMEXColumns enthält die Informationen zu den einzelnen Feldern (siehe Abb. 8).

pic007.png

Abb. 7: Entwurf der Tabelle MSysIMEXSpecs

pic008.png

Abb. 8: Entwurf der Tabelle MSysIMEXColumns

Sollten die Tabellen bei Ihnen nicht sichtbar sein, kann dies zwei Ursachen haben:

  • Sie haben noch keine Spezifikation gespeichert. Die Tabellen werden erst erstellt, wenn Sie mindestens eine Spezifikation gespeichert haben.
  • Die Access-Optionen sind so eingestellt, dass keine Systemtabellen angezeigt werden. In diesem Fall aktivieren Sie die Anzeige der Systemobjekte. Unter Access 2003 und älter zeigen Sie die Optionen mit Extras|Optionen an, die gesuchte Option Systemobjekte befindet sich unter Ansicht|Anzeigen, unter Access 2007 und jünger klicken Sie mit der rechten Maustaste auf die Titelzeile des Navigationsbereichs und wählen aus dem Kontextmenü den Eintrag Navigationsoptionen… aus – die Option Systemobjekte anzeigen befindet sich unten links.

Spezifikationen bearbeiten

Unter Access 2007 und jünger können Sie die beiden Tabellen MSysIMEXSpecs und MSysIMEXColumns direkt bearbeiten. Sie können dort also sowohl die allgemeinen Einstellungen anpassen als auch die für die einzelnen Felder. Wenn Sie also einen Import etwa unter dem Namen Kategorien Importspezifikation gespeichert haben, ermitteln Sie aus dem Feld SpecID (s. Abb. 9) den Wert, mit dem Sie in der Tabelle MSysIMEXColumns die passenden Feldinformationen finden und ändern können (s. Abb. 10).

pic009.png

Abb. 9: Ermitteln der SpecID für eine gespeicherte Spezifikation

pic010.png

Abb. 10: Bearbeiten der Spalteninformationen in MSysIMEXColumns

Kein Zugriff unter Access 2003 und älter

Wenn Sie dies unter älteren Access-Versionen ausprobieren, werden Sie schnell auf Widerstand stoßen: Die Daten der beiden Tabellen MSysIMEXSpecs und MSysIMEXColumns lassen sich nicht ändern. Genau wie die übrigen Systemtabellen scheinen diese beiden Tabellen geschützt zu sein. änderungen lassen sich offensichtlich nur per Assistent durchführen.

Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

Workplace

Jahresabonnement TestzugangOder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar