Så här använder du ADOX för SQL en direktfråga i Access
Anteckning
Office 365 ProPlus byter namn till Microsoft 365-appar för företag. Mer information om den här ändringen finns i det här blogginlägget.
Måttlig: Kräver grundläggande makron, kodning och kompatibilitetsfärdigheter.
Den här artikeln gäller endast för Microsoft Access-databaser (.accdb och .mdb).
Sammanfattning
I den här artikeln beskrivs hur du SQL en direktfråga i Microsoft Visual Basic for Applications (VBA) med Microsoft ActiveX Data Objects (ADO).
Mer information
Du kan skriva en funktion Visual Basic för program som skapar SQL en direktfråga. En SQL består av ett meddelande och en SQL en anslutningssträng. När du kör frågan skickar den kommandon direkt till databasservern för bearbetning. Det här tar bort overheaden för Microsoft Jet-databasmotorn.
Med DAO-modellen (Data Access Object) kan du använda SQL-direktfrågor för att förbättra prestanda när du har åtkomst till externa data. Med ADO kan du använda Microsoft OLE DB-providern för SQL Server för att få direkt åtkomst till ett SQL Server utan microsoft Jet eller ODBC. Du kan också använda Microsoft OLE DB-providern för ODBC för att komma åt data i alla ODBC-datakällor.
Även om du inte längre behöver skapa SQL-direktfrågor i Microsoft Jet-databasen för att förbättra prestandan kan du fortfarande göra det med hjälp av ADOX och Jet Provider. Följande kod visar hur du skapar SQL en direktfråga.
Obs! Exempelkoden i den här artikeln använder både ADO och ActiveX Data Objects Extensions för ADOX (Data Definition Language and Security). För att den här koden ska köras korrekt måste du klicka på Referenser på menyn Verktyg i Visual Basic Editor och kontrollera att följande två referenser är markerade:
- Microsoft ActiveX Data objects 2.1-bibliotek
- Microsoft ADO Ext. 2.6 för DDL och säkerhet
Microsoft tillhandahåller programmeringsexempel enbart i förklarande syfte och gör inga utfästelser, varken uttryckligen eller underförstått. Detta omfattar men begränsas inte till underförstådd garanti för säljbarhet eller lämplighet för ett visst syfte. I denna artikel förutsätts att du känner till det programmeringsspråk som demonstreras och de verktyg som används för att skapa och felsöka procedurer. Microsofts supportexperter kan hjälpa till att förklara funktionerna i en viss procedur, men de kommer inte att ändra dessa exempel för att tillhandahålla extra funktioner eller konstruera procedurer för att uppfylla dina specifika behov. Så här SQL du skapa en direktfråga i koden:
- Öppna northwind-exempeldatabasen.
- Skapa en ny modul och skriv eller klistra sedan in följande kod:
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
Om du vill testa funktionen skriver du följande rad i direktfönstret och trycker sedan på RETUR:
? CreateSPT("MySptQuery", "Select * from Authors")