Verwenden von ADOX zum Erstellen einer SQL-Passthrough-Abfrage in Access

Moderat: Erfordert grundlegende Makro-, Programmier- und Interoperabilitätskenntnisse.

Dieser Artikel gilt nur für eine Microsoft Access-Datenbank (.mdb oder .accdb).

Zusammenfassung

In diesem Artikel erfahren Sie, wie Sie eine SQL-Passthrough-Abfrage in Microsoft Visual Basic for Applications (VBA) mit Microsoft ActiveX Data Objects (ADO) erstellen.

Weitere Informationen

Sie können eine Funktion in Visual Basic für Anwendungen schreiben, die eine SQL-Passthrough-Abfrage erstellen. Eine SQL-Passthrough-Abfrage besteht aus einer SQL-Anweisung und einer Verbindungszeichenfolge. Wenn Sie die Abfrage ausführen, werden Befehle zur Verarbeitung direkt an den Datenbankserver gesendet. Dadurch wird der Mehraufwand für die Microsoft Jet-Datenbank-Engine entfernt.

Mit dem DAO-Modell (Data Access Object) können Sie SQL-Passthrough-Abfragen verwenden, um die Leistung beim Zugriff auf externe Daten zu verbessern. Mit ADO können Sie den Microsoft OLE DB-Anbieter für SQL Server verwenden, um ohne den Mehraufwand von Microsoft Jet oder ODBC direkt auf eine SQL Server zuzugreifen. Sie können auch den Microsoft OLE DB-Anbieter für ODBC verwenden, um auf Daten in einer beliebigen ODBC-Datenquelle zuzugreifen.

Obwohl Sie keine SQL-Passthrough-Abfragen mehr in Ihrer Microsoft Jet-Datenbank erstellen müssen, um die Leistung zu verbessern, können Sie dies dennoch mit ADOX und dem Jet-Anbieter tun. Der folgende Code zeigt, wie Sie eine SQL-Passthrough-Abfrage erstellen.

HINWEIS: Der Beispielcode in diesem Artikel verwendet sowohl ADO als auch ActiveX Data Objects Extensions for Data Definition Language and Security (ADOX). Damit dieser Code ordnungsgemäß ausgeführt werden kann, müssen Sie im Menü Extras im Visual Basic-Editor auf Verweise klicken und sicherstellen, dass die folgenden beiden Verweise ausgewählt sind:

  • Microsoft ActiveX Data Objects 2.1-Bibliothek
  • Microsoft ADO Ext. 2.6 für DDL und Sicherheit

Die Verwendung der hier aufgeführten Informationen, Makro- oder Programmcodes geschieht auf Ihre eigene Verantwortung. Microsoft stellt Ihnen diese Informationen sowie Makro- und Programmlistings ohne Gewähr auf Richtigkeit, Vollständigkeit und/oder Funktionsfähigkeit sowie ohne Anspruch auf Support zur Verfügung. Die zur Verfügung gestellten Makro- und Programmierungsbeispiele sollen lediglich exemplarisch die Funktionsweise des Beispiels aufzeigen. Die Microsoft Support-Spezialisten können bei der Erläuterung der Funktionalität bestimmter Prozeduren helfen, jedoch werden sie diese Beispiele nicht in Bezug auf eine erweiterte Funktionalität verändern, noch werden sie Prozeduren entwickeln, die auf Ihre besonderen Bedürfnisse zugeschnitten sind. Führen Sie die folgenden Schritte aus, um eine SQL-Passthrough-Abfrage im Code zu erstellen:

  1. Öffnen Sie die Beispieldatenbank Northwind.
  2. Erstellen Sie ein neues Modul, und geben Sie dann den folgenden Code ein, oder fügen Sie ihn ein:
Function CreateSPT(SPTQueryName As String, strSQL As String)

Dim cat As ADOX.Catalog
  Dim cmd As ADODB.Command

Set cat = New ADOX.Catalog
  Set cmd = New ADODB.Command

cat.ActiveConnection = CurrentProject.Connection

Set cmd.ActiveConnection = cat.ActiveConnection

cmd.CommandText = strSQL
  cmd.Properties("Jet OLEDB:ODBC Pass-Through Statement") = True

'Modify the following connection string to reference an existing DSN for 
 'the sample SQL Server PUBS database.

cmd.Properties _
     ("Jet OLEDB:Pass Through Query Connect String") = _
       "ODBC;DSN=myDSN;database=pubs;UID=sa;PWD=;"
  cat.Procedures.Append SPTQueryName, cmd

Set cat = Nothing
  Set cmd = Nothing

End Function

  1. Geben Sie zum Testen dieser Funktion die folgende Zeile in das Direktfenster ein, und drücken Sie dann die EINGABETASTE:

    ? CreateSPT("MySptQuery", "Select * from Authors")