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 4/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 eine Lösung kennen, mit der Sie Export/Import-Spezifikationen einfach manipulieren können.

Techniken

Import/Export, VBA, Formulare

Voraussetzungen

Access 2000 und höher

Beispieldateien

ImportExportSpezifikationen.mdb

Shortlink

www.access-im-unternehmen.de/786

Import/Export-Spezifikationen im Griff

André Minhorst, Duisburg

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.

Das ist jedoch kein Grund, den Kopf in den Sand zu stecken: Diese Tabelle ist nämlich keine typische Systemtabelle, sondern sie wird nur als solche dargestellt und bringt die Eigenschaft mit sich, dass die enthaltenen Daten nicht direkt geändert werden können. Sie können jedoch per VBA auf die Inhalte der beiden Tabellen zugreifen und diese auch ändern. Probieren Sie beispielsweise einmal die folgende Prozedur aus:

Public Sub SpecsAnpassen()

    Dim db As DAO.Database

    Dim rst As DAO.Recordset

    Set db = CurrentDb

    Set rst = db.OpenRecordset("MSysIMEXSpecs", dbOpenDynaset)

    rst.AddNew

    rst!SpecName = "Testspezifikation"

    rst.Update

    Set db = Nothing

End Sub

Die Prozedur öffnet ein Recordset auf Basis der Tabelle MSysIMEXSpecs und fügt mit der AddNew-Methode einen neuen Datensatz hinzu. Dabei trägt sie als Namen der Spezifikation den Wert Testspezifikation ein. Nicht nur, dass das Aufrufen der Prozedur keinen Fehler hervorruft - der Datensatz wird auch noch problemlos angelegt!

Systemtabelle oder nicht?

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.