ADOX gebruiken om een SQL-passthrough-query te maken in Access

Gemiddeld: vereist basisvaardigheden voor macro's, codering en interoperabiliteit.

Dit artikel is alleen van toepassing op een Microsoft Access-database (.accdb en .mdb).

Samenvatting

In dit artikel leest u hoe u een SQL passthrough-query maakt in Microsoft Visual Basic for Applications (VBA) met Microsoft ActiveX Data Objects (ADO).

Meer informatie

U kunt een functie schrijven in Visual Basic voor toepassingen waarmee een SQL-passthrough-query wordt gemaakt. Een SQL passthrough-query bestaat uit een SQL-instructie en een verbindingsreeks. Wanneer u de query uitvoert, worden opdrachten rechtstreeks naar de databaseserver verzonden voor verwerking. Hierdoor wordt de overhead van de Microsoft Jet-database-engine verwijderd.

Met het DAO-model (Data Access Object) kunt u SQL-passthrough-query's gebruiken om de prestaties te verbeteren wanneer u externe gegevens opent. Met ADO kunt u de Microsoft OLE DB-provider voor SQL Server gebruiken om rechtstreeks toegang te krijgen tot een SQL Server zonder de overhead van Microsoft Jet of ODBC. U kunt ook de Microsoft OLE DB-provider voor ODBC gebruiken voor toegang tot gegevens in elke ODBC-gegevensbron.

Hoewel u geen SQL-passthrough-query's meer hoeft te maken in uw Microsoft Jet-database om de prestaties te verbeteren, kunt u dit nog steeds doen met behulp van ADOX en de Jet-provider. De volgende code laat zien hoe u een SQL-passthrough-query maakt.

OPMERKING: De voorbeeldcode in dit artikel maakt gebruik van zowel ADO- als ActiveX Data Objects Extensions for Data Definition Language and Security (ADOX). Deze code wordt alleen correct uitgevoerd als u in het menu Extra in de Visual Basic-Editor op Verwijzingen klikt en ervoor zorgt dat de volgende twee verwijzingen zijn geselecteerd:

  • Microsoft ActiveX Data Objects 2.1-bibliotheek
  • Microsoft ADO Ext. 2.6 voor DDL en beveiliging

Microsoft verstrekt programmeervoorbeelden alleen ter illustratie, zonder expliciete of impliciete garantie. daaronder mede begrepen, maar niet beperkt tot impliciete garanties met betrekking tot de verkoopbaarheid en/of geschiktheid voor een bepaald doel. In dit artikel wordt ervan uitgegaan dat u bekend bent met de programmeertaal VBScript, alsmede met de hulpprogramma's waarmee procedures worden gemaakt en waarmee fouten in procedures worden opgespoord. U kunt desgewenst contact opnemen met Microsoft Product Support Services voor uitleg over de functie van een bepaalde procedure. Microsoft Product Support Services is echter niet bereid de voorbeelden aan te passen om extra functies toe te voegen of om procedures te maken die aan uw specifieke eisen voldoen. Voer de volgende stappen uit om een SQL passthrough-query in code te maken:

  1. Open de voorbeelddatabase Northwind.
  2. Maak een nieuwe module en typ of plak de volgende code:
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. Als u deze functie wilt testen, typt u de volgende regel in het venster Direct en drukt u op Enter:

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