Access 2007 - поставщик данных не может быть инициализирован - PullRequest
0 голосов
/ 21 декабря 2009

Я преобразовал приложение Access 2000 в Access 2007, приложение подключено к MsSql-2000 с помощью ADO.
2 проблемы:
1. Не могу сделать фильтр на форме (правый клик -> фильтр) - ничего не возвращает.
2. Я продолжаю получать сообщение «Поставщик данных не может быть инициализирован», в основном, когда я пытаюсь поиграть с фильтром

у кого-нибудь есть идея?

Ответы [ 2 ]

1 голос
/ 27 мая 2011

По моему опыту, ошибка «Поставщик данных не может быть инициализирован» чаще всего возникает из-за того, что строка соединения не идеальна для соединения ADO. Ошибка не реализуется до тех пор, пока набор записей ADO, использующий неисправное соединение, не будет создан и привязан к форме или отчету.

При работе с проектом доступа (см .: Создание проекта доступа ), убедитесь, что сервер и исходная база данных (если есть) проверены на корректность в свойствах канала передачи данных. В проектах доступа строка подключения запекается в самом проекте.

Если используется строка подключения в VBA, убедитесь, что указан правильный поставщик данных. Для соединений ADO в Access 2003 (MDB и ADP), Поставщик должен быть Microsoft.Access.OLEDB.10.0 , иначе наборы записей не могут быть связаны с формами и отчетами.

Пример:

' Bind an Access 2003 ADO recordset to an Access form
' Note that the Data Provider is SQL Server (because "Data Provider = SQLOLEDB")

' Declare objects
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset

Set cn = New ADODB.Connection

With cn

     .CursorLocation = adUseClient

    ' LockType must be adLockOptimistic
    ' See: http://support.microsoft.com/kb/281998
    .LockType = adLockOptimistic

    .Open "Provider=Microsoft.Access.OLEDB.10.0;" & _
        "Data Source=ServerName;"
        "Initial Catalog=OptionalDatabaseName;" & _
        "Trusted_Connection=Yes;" & _
        "Data Provider=SQLOLEDB;"

    Set rs = .Execute("SELECT order_id FROM dbo.Orders")

End With

' This will throw the error "Data provider could not be initialized"
' if the Provider is incorrect
Set Me.Recordset = rs

Обратите внимание, что проект Access создаст ошибку «Поставщик данных не может быть инициализирован», когда основное соединение (т. Е. Data Link) является неправильным, и была предпринята попытка с VBA назначить объект набора записей для набора записей формы. Таким образом, последняя строка примера потерпит неудачу, если основное соединение проекта Access неверно. (Это имеет место, даже если подключение проекта полностью отличается от подключения объекта набора записей.)

0 голосов
/ 16 мая 2013

Кроме того, используя Teradata ODBC Connection (Teradata, а не Microsoft для Teradata), вы можете связывать формы с помощью ADO. Ошибка не инициализированного поставщика данных возникнет, если вы будете использовать таблицу в качестве формы и попытаетесь отфильтровать ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...