如果声明只是一个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