Home > Artikel > Ausgabe 11/2012 > Internetmarke mit Access nutzen, Teil II

Internetmarke mit Access nutzen, Teil II

Achtung: Sie sind nicht angemeldet. Wenn Sie Abonnent sind und sich anmelden, lesen Sie den kompletten Artikel, laden das PDF herunter oder probieren die Beispieldatenbank aus (sofern vorhanden).

In Ausgabe 10/2012 haben Sie erfahren, wie Sie Daten aus einer Adresstabelle so aufbereiten, dass diese vom Internetdienst der deutschen Post zum Erstellen von Frankieretiketten genutzt werden können. Ein weiterer Artikel dieser Ausgabe zeigte, wie Sie Adressen aus einer Liste von Adressen auswählen. Der vorliegende Artikel führt beide Lösungen zusammen und zeigt außerdem, wie Sie die Export-Datei nach dem Markieren der betroffenen Adressdatensätze mit nur einem Mausklick erstellen.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1211_Internetmarke.mdb.

Ausgangspunkt: Auswahlformular

Wir beginnen mit dem Formular frmDatenauswahl, das im Artikel Datensätze individuell auswählen detailliert beschrieben wurde. Diesem fügen Sie lediglich noch eine Schaltfläche namens cmdExport hinzu (siehe Bild 1). Diese soll alle notwendigen Befehle enthalten, um die im Unterformular des Formulars markierten Einträge in eine Export-Datei zum Erstellen von Internetmarken zu übertragen.

Ausgangspunkt für das Erstellen von Internetmarken

Bild 1: Ausgangspunkt für das Erstellen von Internetmarken

Dazu sind im Detail drei Schritte nötig:

  • Die im ersten Teil dieses Artikels vorgestellte Abfrage muss ihre Werte nach dem Feld Markiert der Tabelle tblKunden filtern.
  • Wir benötigen eine Export-Spezifikation, die festlegt, wie Daten in der .csv-Datei angezeigt werden.
  • Schließlich brauchen wir die notwendigen Anweisungen, welche den Export und somit die Erstellung der .csv-Datei durchführen.

Datenherkunft anpassen

Die bisherige Datenherkunft wurde so aufgebaut:

  • Eine Basisabfrage namens qryInternetporto führt die Daten der Tabellen tblKunden, tblAnre­den und tblLaender so zusammen, dass die ge­wünsch­ten Felder mit entsprechenden Feldnamen versehen werden.
  • Eine UNION-Abfrage namens qryInternetportoMitAbsender fügt zu dieser Abfrage einen weiteren Datensatz hinzu, der die Daten des Absenders enthält. Diese enthält noch die Werte des Feldes KundeID der Tabelle tblKunden beziehungsweise den Wert 0 für den als Absender hinzugefügten Datensatz.
  • Die Abfrage qryInternetportoMitAbsenderSortiert greift schließlich dieses Abfrageergebnis auf, sortiert nach dem Wert des Feldes KundeID (wodurch der Absender mit dem Wert 0 ganz nach vorn rutscht). Dieses Feld wird jedoch nicht in das Abfrageergebnis übernommen, da es von der entsprechenden Internetseite nicht interpretiert werden kann.

Wo setzen wir nun an, um nur diejenigen Kundendatensätze zu übergeben, die im Formular frmDatenauswahl markiert wurden? Ganz einfach: Bei der ersten Abfrage qryInternetporto. Wir könnten zwar das Kriterium zwar in jeder der Abfragen einfügen, aber je früher wir das tun, desto früher reduzieren wir auch die zu händelnde Datenmenge. Also öffnen Sie die Abfrage qryInternetporto in der Entwurfsansicht und ziehen das Feld Markiert der Tabelle tblKunden in das Entwurfsraster. Stellen Sie als Kriterium den Wert True ein (siehe Bild 2). Wenn Sie bereits einige Datensätze im Formular frmDatenauswahl markiert haben, können Sie nun testen, ob die drei Abfragen auch nur die ausgewählten Datensätze liefern.

Einfügen des Kriteriums, das nur die ausgewählten Datensätze anzeigt

Bild 2: Einfügen des Kriteriums, das nur die ausgewählten Datensätze anzeigt

Export-Spezifikation erstellen

Im ersten Teil dieser Artikelreihe haben wir ja bereits beschrieben, welche Einstellungen im Export-Assistenten für die Erstellung der .csv-Datei durchgeführt werden müssen.

Dort waren – zumindest unter Access 2010 – nur zwei Änderungen gegenüber der Standardkonfiguration nötig. Die erste war das Aktivieren der Option Feldnamen in die erste Zeile einbeziehen, die zweite war das Einstellen der Option Textbegrenzungszeichen auf den Wert {kein}.

Diese Einstellungen wollen wir nun in einer Export-Spezifikation speichern, damit Sie diese nicht immer wieder neu vornehmen müssen. Dazu klicken Sie im Textexport-Assistenten nach dem Vornehmen der Einstellungen auf die Schaltfläche Erweitert... und dann auf Speichern unter... (siehe Bild 3). Im nun erscheinenden Dialog Import/Export-Spezifikation speichern geben Sie den Namen für die Spezifikation ein, beispielsweise Internetmarke. Dieser Name muss lediglich innerhalb einer Access-Datei eindeutig sein. Bei Angabe eines bereits vorhandenen Namens können Sie die vorhandene Spezifikation überschreiben lassen.

Speichern der Export-Spezifikation

Bild 3: Speichern der Export-Spezifikation

Bevor wir zum Finale kommen, noch ein Hinweis zum Thema Spezifikationen: In der Tat nimmt diese nicht alle Einstellungen auf, die Sie für den aktuellen Export festgelegt haben. So müssen Sie beispielsweise immer wieder die Zieldatei angeben und auch die Eigenschaft Feldnamen in die erste Zeile einbeziehen merkt sich die Spezifikation nicht.

Das ist für uns in diesem Fall aber auch kein Problem, da wir diese Informationen beim Exportieren der Daten per VBA angeben können.

Export per VBA

Und damit kommen wir zum dritten Schritt bei der Automatisierung des Exports: Dem Anlegen einer Ereignisprozedur, die durch das Anklicken der Schaltfläche cmdExport ausgelöst wird und die ausgewählten Datensätze in Form einer .csv-Datei exportiert. Dazu öffnen Sie das Formular frmDatenauswahl in der Entwurfsansicht, klicken auf die Schaltfläche cmdExport und aktivieren das Eigenschaftsfenster. Hier legen Sie für die Eigenschaft Beim Klicken den Wert [Ereignisprozedur] fest und klicken dann auf die Schaltfläche mit den drei Punkten. Es erscheint der VBA-Editor mit der leeren Ereignisprozedur, die Sie wie folgt füllen:

Private Sub cmdExport_Click()

     Dim strDateiname As String

     strDateiname = CurrentProject.Path _

         & "\Export_Internetmarke.csv"

     DoCmd.TransferText acExportDelim, _

         "Internetmarke", _

         "qryInternetportoMitAbsenderSortiert", _

         strDateiname, True

End Sub

Diese Prozedur stellt zunächst in der Variablen strDateiname den Namen zusammen, unter dem die .csv-Datei gespeichert werden soll. Dazu verwendet sie die Eigenschaft Name des CurrentProject-Objekts, was den Pfad der aktuellen Datenbank liefert. Diesem hängt die Prozedur noch ein Backslash-Zeichen (\) sowie als Dateinamen den Ausdruck Export_Internetmarke.csv an.

Danach ruft die Prozedur dann auch gleich die TransferText-Methode des DoCmd-Objekts auf. Diese erhält die folgenden Parameterwerte:

  • TransferType: Typ des Exports, hier acExportDelim (für Export mit Trennzeichen)
  • SpecificationName: Name der zu verwendenden Spezifikation, hier Internetmarke
  • TableName: Name der Tabelle oder Abfrage, welche die zu exportierenden Daten liefert, in diesem Fall qryInternetportoMitAbsenderSortiert
  • FileName: Name der zu erstellenden Datei, wie oben beschrieben
  • HasFieldNames: Angabe, ob die erste Zeile der Datei Feldnamen enthalten soll oder nicht – in diesem Fall True

Dem ersten Test steht nun nichts mehr im Wege, also wechseln Sie zur Formularansicht und klicken Sie auf die Schaltfläche cmdExport.

Das Ergebnis finden Sie schließlich unter dem Dateinamen Export_Internetmarke.csv im Verzeichnis der Datenbankdatei. Wenn Sie es per Doppelklick öffnen, wird es beispielsweise wie in Bild 4 mit Excel angezeigt.

Der Export ist gelungen – alle Daten werden wie gewünscht angezeigt.

Sie haben das Ende des frei verfügbaren Teil dieses Artikels erreicht!

Wenn Sie mehr lesen und auf viele weitere Artikel zugreifen möchten, melden Sie sich als Abonnent unter Login an. Falls nicht, bestellen Sie doch einfach ein Jahresabonnement!