Использование ADOX для создания сквозного запроса SQL в Access

Средний. Требуются базовые навыки макроса, программирования и взаимодействия.

Эта статья относится только к базам данных Microsoft Access (.accdb и .mdb).

Сводка

В этой статье показано, как создать сквозной запрос SQL в Microsoft Visual Basic для приложений (VBA) с объектами данных Microsoft ActiveX (ADO).

Дополнительная информация

Вы можете написать функцию в Visual Basic для приложений, создающих сквозной запрос SQL. Сквозной запрос SQL состоит из инструкции SQL и строка подключения. При выполнении запроса он отправляет команды непосредственно на сервер базы данных для обработки. Это устраняет накладные расходы на ядро СУБД Microsoft Jet.

С помощью модели объекта доступа к данным (DAO) можно использовать сквозные запросы SQL для повышения производительности при обращении к внешним данным. С помощью ADO можно использовать поставщик Microsoft OLE DB для SQL Server для прямого доступа к SQL Server без дополнительных затрат Microsoft Jet или ODBC. Вы также можете использовать поставщик Microsoft OLE DB для ODBC для доступа к данным в любом источнике данных ODBC.

Хотя вам больше не нужно создавать сквозные запросы SQL в базе данных Microsoft Jet для повышения производительности, вы по-прежнему можете сделать это с помощью ADOX и поставщика Jet. В следующем коде показано, как создать сквозной запрос SQL.

ПРИМЕЧАНИЕ. В примере кода в этой статье используются расширения объектов данных ADO и ActiveX для языка определения данных и безопасности (ADOX). Для правильного выполнения этого кода необходимо щелкнуть Ссылки в меню Сервис в Редактор Visual Basic и убедиться, что выбраны следующие две ссылки:

  • Библиотека объектов данных Microsoft ActiveX 2.1
  • Microsoft ADO Ext. 2.6 for DDL and Security

Корпорация Майкрософт предоставляет примеры программирования только в целях демонстрации без явной или подразумеваемой гарантии. Данное положение включает, но не ограничивается этим, подразумеваемые гарантии товарной пригодности или соответствия отдельной задаче. Эта статья предполагает, что пользователь знаком с представленным языком программирования и средствами, используемыми для создания и отладки процедур. Специалисты технической поддержки Майкрософт могут пояснить работу той или иной процедуры, но модификация примеров и их адаптация к задачам разработчика не предусмотрена. Чтобы создать сквозной запрос SQL в коде, выполните следующие действия.

  1. Откройте пример базы данных Northwind.
  2. Создайте новый модуль, а затем введите или вставьте следующий код:
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. Чтобы протестировать эту функцию, введите следующую строку в окне Интерпретация и нажмите клавишу ВВОД:

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