升级至 Access 2000 时出现不可识别的数据库格式错误消息

这篇文章中的信息适用于:

  • 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 中查询相应主题。

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus