如果聲明只是一個Recordset
不指定,如果它是DAO或ADO,Access將決定自己是否會DAO或ADO,這取決於你的參考文獻的順序:
打開代碼窗口,轉到工具 - >參考,然後看看那裏的列表。
它看起來像:
你看,在這個例子中,對DAO引用( 「Microsoft DAO 3.6對象庫」)和 ADO(「Microsoft ActiveX數據對象2.5庫「)。
如果您聲明瞭您的Recordset而未指定類型,Access將選擇這些引用中的第一個(即位於列表頂部的第一個引用)並創建此類型的Recordset。
所以在這個例子中,它將是一個DAO.Recordset
。
現在回到你的問題:
你聲明你的Recordset而不指定類型。
所以如果你的 Access數據庫中的第一個引用是ADO,Access將創建一個ADODB.Recordset
。
然後你用一個DAO方法打開它,它需要一個DAO.Recordset
,這就是你得到這個錯誤的原因。
有兩種方法來解決問題:
- 確保您的Access數據庫只有一個引用到ADO 或 DAO(但不能同時),那麼你並不需要指定記錄集的類型。
- 如果您確實需要這兩個引用,請始終將您的記錄集聲明爲
DAO.Recordset
或ADODB.Recordset
以確保它確實是您的代碼所期望的類型。
我得到OpenRecordset方法的類型不匹配錯誤。我使用上面顯示的代碼,沒有DAO或ADODB限定符。 – Tom 2011-05-17 17:57:24
如果您在代碼窗口中,則從菜單欄打開** Tools/References **可以進入** Add References **對話框。 – 2011-05-17 18:14:54
@Robert - 啊,謝謝 – Tom 2011-05-17 18:21:53