2009-12-21 150 views
0

我將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

回答

1

根據我的經驗,錯誤「數據提供程序無法初始化」最常出現,因爲連接字符串對於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

0

此外,使用Teradata ODBC連接(Teradata,而不是Teradata的Microsoft),可以使用ADO綁定到窗體。如果您使用數據表作爲表單並嘗試過濾表單,數據提供程序未初始化錯誤將會出現。

相關問題