Abfragen mit Schaltflächen direkt im Formular ausführen

Ich erhalte meine Artikeldaten als Excel-Tabelle, die ich in Access importiere. Vorher kopiere ich die alten Daten mit einer Anfügeabfrage in die Tabelle »Datensicherung« und lösche die alte Tabelle »Artikel« mit einer Löschabfrage. Leider gelingt es mir nicht, diesen Ablauf zu automatisieren. Ich muß mein Formular jeweils verlassen und die Abfragen per Hand im Datenbankfenster ausführen. Kann ich die Abfragen auch im Formular ausführen?

Das ist möglich. Damit Sie die Abfragen nicht im Datenbankfenster ausführen müssen, können Sie im Formular zwei zusätzliche Schaltflächen anlegen, die Sie entsprechend programmieren.

Dazu aktivieren Sie die Toolbox mit dem Befehl »Ansicht - Toolbox« und klicken dann nacheinander auf das Symbol für die Schaltflächen und auf das Formular. Falls der Steuerelement-Assistent aktiviert ist, wählen Sie die Kategorie »Diverses« und die Aktion »Abfrage ausführen«. Danach können Sie die gewünschte Abfrage auswählen. Access nimmt dann die VBA-Programmierung für Sie vor.

Wenn Sie die Programmierung bearbeiten wollen, klicken Sie die soeben ins Formular eingefügte Schaltfläche mit der rechten Maustaste an, rufen im Kontextmenü den Befehl »Ereignis« auf und wählen gegebenenfalls den Code-Editor. Im Editor ist das Objekt »DoCmd« für das Ausführen der Abfrage zuständig. Ein Beispiel stellt das Listing im Kasten unten dar, das Sie als ABFRAGE.TXT auf der Heft-CD finden.

Die Methode »OpenQuery« führt eine vorhandene Abfrage aus. Der erste Parameter ist der Abfragename. Den Import Ihrer Excel-Tabelle erledigt die Methode »TransferSpreadsheet«. Der erste Parameter aktiviert den Import. Der zweite Parameter legt den Excel-Dateityp fest (8=Excel 97), und der Dritte definiert die Excel-Datei. Der vierte Parameter schließlich bestimmt, ob Access die Feldnamen aus der Excel-Tabelle übernehmen soll (True) oder nicht (False).

Listing »Abfrage«
Private Sub Artikelsichern_Click ()
DoCmd.OpenQuery "Datensicherung Artikel"
DoCmd.OpenQuery "Artikel löschen"
DoCmd.TransferSpread.sheetacImport,8,"Artikel","c:artikel.xls",True
End Sub