Como utilizar o ADOX para criar uma consulta pass-through do SQL no Access

Moderado: requer competências básicas de macro, codificação e interoperabilidade.

Este artigo aplica-se apenas a uma base de dados do Microsoft Access (.accdb ou .mdb).

Resumo

Este artigo mostra-lhe como criar uma consulta pass-through do SQL no Microsoft Visual Basic for Applications (VBA) com o Microsoft ActiveX Data Objects (ADO).

Mais informações

Pode escrever uma função no Visual Basic para aplicações que cria uma consulta pass-through do SQL. Uma consulta pass-through do SQL é composta por uma instrução SQL e uma cadeia de ligação. Quando executa a consulta, esta envia comandos diretamente para o servidor de bases de dados para processamento. Esta ação remove a sobrecarga do motor de base de dados do Microsoft Jet.

Com o modelo do Objeto de Acesso a Dados (DAO), pode utilizar consultas pass-through do SQL para melhorar o desempenho quando acedeu a dados externos. Com o ADO, pode utilizar o Fornecedor OLE DB da Microsoft para SQL Server para aceder diretamente a um SQL Server sem a sobrecarga do Microsoft Jet ou ODBC. Também pode utilizar o Fornecedor OLE DB da Microsoft para ODBC para aceder a dados em qualquer origem de dados ODBC.

Embora já não tenha de criar consultas pass-through do SQL na sua base de dados do Microsoft Jet para melhorar o desempenho, ainda pode fazê-lo com o ADOX e o Fornecedor jet. O código seguinte mostra-lhe como criar uma consulta pass-through do SQL.

NOTA: o código de exemplo neste artigo utiliza extensões ADO e ActiveX Data Objects para Linguagem e Segurança de Definição de Dados (ADOX). Para que este código seja executado corretamente, tem de clicar em Referências no menu Ferramentas no visual basic Revisor e certificar-se de que as duas referências seguintes estão selecionadas:

  • Biblioteca microsoft ActiveX Data Objects 2.1
  • Microsoft ADO Ext. 2.6 para DDL e Segurança

A Microsoft fornece exemplos de programação apenas a título informativo, sem qualquer garantia expressa ou implícita, incluindo, sem limitações, as garantias implícitas de comercialização e/ou adequação a um fim específico. Este artigo pressupõe que o utilizador está familiarizado com a linguagem de programação demonstrada e as ferramentas utilizadas para criar e depurar procedimentos. Os técnicos de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas não modificarão estes exemplos para proporcionarem funcionalidades adicionais nem criarão procedimentos adaptados às suas necessidades específicas. Para criar uma consulta pass-through do SQL no código, siga estes passos:

  1. Abra a base de dados northwind de exemplo.
  2. Crie um novo módulo e, em seguida, escreva ou cole o seguinte código:
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. Para testar esta função, escreva a seguinte linha na janela Imediato e, em seguida, prima ENTER:

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