我將Access 2000應用程序轉換爲Access 2007,該應用程序通過ADO連接到MsSql-2000。
2問題:
1.我無法對錶單進行過濾(右鍵單擊 - >過濾器) - 不返回任何內容。
2.我一直在收到「數據提供商無法初始化」,當我試圖玩過濾器Access 2007 - 數據提供程序無法初始化
有人有一個想法?
我將Access 2000應用程序轉換爲Access 2007,該應用程序通過ADO連接到MsSql-2000。
2問題:
1.我無法對錶單進行過濾(右鍵單擊 - >過濾器) - 不返回任何內容。
2.我一直在收到「數據提供商無法初始化」,當我試圖玩過濾器Access 2007 - 數據提供程序無法初始化
有人有一個想法?
根據我的經驗,錯誤「數據提供程序無法初始化」最常出現,因爲連接字符串對於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項目的主連接不正確,示例的最後一行將失敗。 (即使項目的連接完全不同於記錄集對象的連接,也是如此)。
如果您將ADO記錄集綁定到表單,則您對「提供程序必須是OLEDBD 10.0」的評論僅在MDB中爲真。如果您使用常規綁定表單並將Recordsource屬性設置爲SQL SELECT,則不相關。 – 2011-05-28 22:15:34
@ David-W-Fenton感謝您的補充澄清。我更新了答案,以更好地反映它與ADO直接相關。 – Mike 2011-05-31 19:45:06
此外,使用Teradata ODBC連接(Teradata,而不是Teradata的Microsoft),可以使用ADO綁定到窗體。如果您使用數據表作爲表單並嘗試過濾表單,數據提供程序未初始化錯誤將會出現。
這可能是相關的:http://bytes.com/topic/access/answers/199236-built-filter-functions-failing-when-form-recordsource-set-recordset – Fionnuala 2009-12-21 13:05:04
您是使用MDB還是ADP? – 2009-12-22 00:51:05
...你說ADO,但是如果你使用的是MDB,你可能會使用鏈接的ODBC表,在這種情況下,在轉換之後,你應該刪除所有的鏈接表,並在新版本中重新創建它們,因爲舊的元數據存儲在鏈接表定義中可能不適用於A2007。 – 2009-12-22 00:51:51