这篇文章中的信息适用于:
Microsoft Visual Basic Professional Edition for Windows 5.0, 6.0
Microsoft Visual Basic Enterprise Edition for Windows 5.0, 6.0
Microsoft Access 2000
Microsoft Data Access Components 2.5, 2.6
本文的发布号曾为 CHS238401
症状当您试图从 Visual Basic 程序访问 Access 2000 数据库时,可能会遇到以下错误之一:
如果您使用 ADO(或 ADO 数据控件):
运行错误:-2147467259:数据库格式不可识别
如果您使用 DAO(或 DAO 一般数据控件):
运行错误:3343:数据库格式不可识别
原因Access 2000 使用的是 Jet 4.0 引擎,它创建 Jet 4.0 格式数据库文件。 而 Jet 3.5 组件无法识别这种格式。
如果您使用 ADO,并试图通过 Microsoft Jet OLEDB 3.51 提供程序连接 Access 2000 时,将得到错误消息 -2147467259。
如果您使用 DAO,并使用“Microsoft DAO 3.51 对象库”时,将得到上面的 3343 错误消息。
DAO 一般数据控件不能与 Access 2000 数据库一起工作,并总是产生 3343 错误,但您可以按照本文的解决方式部分给出的说明来避免错误发生。 之所以发生错误,是因为此控件是基于 Jet 3.51 的,因而只能识别 Jet 3.51(或以前版本)的数据库格式。
解决方案要解决这一问题,请使用以下任意一种方法:
安装 Visual Studio Service Pack 4。
对于 ADO(或 ADO 数据控件),请使用“Microsoft.Jet.OLEDB 4.0”提供程序。
对于 DAO,请转到工程菜单,并选择引用,使用“Microsoft DAO 3.6 对象库”。
如果您使用的是一般数据控件,则需要打开一个 DAO 3.6 记录集,并将其指派为数据控件的源,如下所示: Option Explicit
Private daoDB36 As Database
Private rs As DAO.Recordset
Dim sPath As String
Private Sub Form_Load()
sPath = _
"C:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb"
Set daoDB36 = DBEngine(0).OpenDatabase(sPath)
Set rs = daoDB36.OpenRecordset("Customers")
Set Data1.Recordset = rs
End Sub
该问题在 Visual Basic Service Pack 4 中已得到解决,将新值 ( Access 2000 ) 添加到连接属性中,DAO 数据控件即可打开 Access 2000 数据库。
状态Microsoft 已在 Visual Basic Service Pack 4 中解决了这一问题,将新值 (Access 2000) 添加到“连接”属性中,DAO 数据控件即可打开 Access 2000 数据库。 要获得 Visual Studio Service Pack 4,请访问以下网站:
http://msdn.microsoft.com/vstudio/sp
参考有关 Jet 4.0 的详细信息,请参阅 Access 2000 文档。
有关 ADO 和 DAO 的详细信息,请参见 Visual Basic 文档。
有关“不可识别的数据库格式”的详细信息,请在 Visual Basic 随附的 MSDN Library 中查询相应主题。