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

时间:2009-12-21 12:21:45

标签: ms-access vba

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

有人有想法吗?

2 个答案:

答案 0 :(得分:1)

根据我的经验,错误“数据提供程序无法初始化”最常发生,因为连接字符串不适合ADO连接。在创建使用故障连接的ADO记录集并将其绑定到表单或报表之前,不会实现该错误。

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

如果在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

请注意,当主连接(即数据链接)不正确并且尝试使用VBA将记录集对象分配给表单的记录集时,Access项目将创建错误“无法初始化数据提供程序”。因此,如果Access项目的主连接不正确,示例的最后一行将失败。 (即使项目的连接与记录集对象的连接完全不同,也是如此。)

答案 1 :(得分:0)

此外,使用Teradata ODBC Connection(Teradata,而不是Microsoft for Teradata),您可以使用ADO绑定到表单。如果您使用数据表作为表单并尝试在工作表上进行过滤,则会出现数据提供程序未初始化错误。