我将Access 2000应用程序转换为Access 2007,应用程序通过ADO连接到MsSql-2000
2问题:
1.我无法对表单进行过滤(右键单击 - >过滤器) - 不返回任何内容
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绑定到表单。如果您使用数据表作为表单并尝试在工作表上进行过滤,则会出现数据提供程序未初始化错误。