Access 2007 - 数据提供程序无法初始化

Access 2007 - 数据提供程序无法初始化

问题描述:

我将Access 2000应用程序转换为Access 2007,该应用程序通过ADO连接到MsSql-2000。
2问题:
1.我无法对表单进行过滤(右键单击 - >过滤器) - 不返回任何内容。
2.我一直在收到“数据提供商无法初始化”,当我试图玩过滤器Access 2007 - 数据提供程序无法初始化

有人有一个想法?

+0

这可能是相关的:http://bytes.com/topic/access/answers/199236-built-filter-functions-failing-when-form-recordsource-set-recordset – Fionnuala 2009-12-21 13:05:04

+0

您是使用MDB还是ADP? – 2009-12-22 00:51:05

+0

...你说ADO,但是如果你使用的是MDB,你可能会使用链接的ODBC表,在这种情况下,在转换之后,你应该删除所有的链接表,并在新版本中重新创建它们,因为旧的元数据存储在链接表定义中可能不适用于A2007。 – 2009-12-22 00:51:51

根据我的经验,错误“数据提供程序无法初始化”最常出现,因为连接字符串对于ADO连接并不完美。直到使用错误连接的ADO记录集创建并绑定到表单或报表时才会发生该错误。

如果使用Access项目(请参阅:Create An Access Project),请确保服务器和初始数据库(如果提供)在数据链接属性中经过验证是正确的。在Access项目中,连接字符串被烘焙到项目本身中。

如果在VBA中使用连接字符串,请确保正确的数据提供程序正确。对于Access 2003(MDB和ADP)中的ADO连接,the Provider must be 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项目将产生错误“数据提供商无法初始化”当主连接(即数据链路)是不正确的,有人企图用VBA来制作将记录集对象分配给窗体的记录集。因此,如果Access项目的主连接不正确,示例的最后一行将失败。 (即使项目的连接完全不同于记录集对象的连接,也是如此)。

+0

如果您将ADO记录集绑定到表单,则您对“提供程序必须是OLEDBD 10.0”的评论仅在MDB中为真。如果您使用常规绑定表单并将Recordsource属性设置为SQL SELECT,则不相关。 – 2011-05-28 22:15:34

+0

@ David-W-Fenton感谢您的补充澄清。我更新了答案,以更好地反映它与ADO直接相关。 – Mike 2011-05-31 19:45:06

此外,使用Teradata ODBC连接(Teradata,而不是Teradata的Microsoft),可以使用ADO绑定到窗体。如果您使用数据表作为表单并尝试过滤表单,数据提供程序未初始化错误将会出现。