Come usare ADOX per creare una query pass-through SQL in Access
Moderato: richiede competenze di base di macro, codifica e interoperabilità.
Questo articolo si applica solo a un database di Microsoft Access (con estensioni .accdb e .mdb).
Questo articolo illustra come creare una query pass-through SQL in Microsoft Visual Basic, Applications Edition (VBA) con Microsoft ActiveX Data Objects (ADO).
È possibile scrivere una funzione in Visual Basic, per le applicazioni che crea una query pass-through SQL. Una query pass-through SQL è costituita da un'istruzione SQL e da un stringa di connessione. Quando si esegue la query, invia i comandi direttamente al server di database per l'elaborazione. In questo modo viene rimosso il sovraccarico del motore di database Microsoft Jet.
Con il modello DAO (Data Access Object), è possibile usare query pass-through SQL per migliorare le prestazioni quando si accede a dati esterni. Con ADO è possibile usare il provider Microsoft OLE DB per SQL Server per accedere direttamente a un SQL Server senza il sovraccarico di Microsoft Jet o ODBC. È anche possibile usare il provider Microsoft OLE DB per ODBC per accedere ai dati in qualsiasi origine dati ODBC.
Anche se non è più necessario creare query pass-through SQL nel database Microsoft Jet per migliorare le prestazioni, è comunque possibile usare ADOX e il provider Jet. Il codice seguente illustra come creare una query pass-through SQL.
NOTA: il codice di esempio in questo articolo usa le estensioni ADO e ActiveX Data Objects per ADOX (Data Definition Language and Security). Affinché il codice venga eseguito correttamente, è necessario fare clic su Riferimenti nel menu Strumenti del Editor visual basic e assicurarsi che siano selezionati i due riferimenti seguenti:
- Libreria Microsoft ActiveX Data Objects 2.1
- Microsoft ADO Ext. 2.6 for DDL and Security
Microsoft fornisce esempi di programmazione a scopo puramente illustrativo, senza alcuna garanzia di qualsiasi tipo, sia espressa che implicita, ivi incluse, senza limitazioni, le garanzie implicite di commerciabilità o idoneità per uno scopo particolare. In questo articolo si presuppone che l'utente conosca il linguaggio di programmazione in questione e gli strumenti utilizzati per creare ed eseguire il debug delle procedure. Gli esperti Microsoft sono autorizzati a fornire spiegazioni in merito alla funzionalità di una particolare routine, ma in nessun caso a modificare questi esempi per fornire funzionalità aggiuntive o a creare routine atte a soddisfare specifiche esigenze. Per creare una query pass-through SQL nel codice, seguire questa procedura:
- Aprire il database Northwind di esempio.
- Creare un nuovo modulo e quindi digitare o incollare il codice seguente:
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
Per testare questa funzione, digitare la riga seguente nella finestra Immediata e quindi premere INVIO:
? CreateSPT("MySptQuery", "Select * from Authors")