DetailPage-MSS-KB

知识库

文章编号: 238401 - 最后修改: 2007年8月7日 - 修订: 3.2

本文的发布号曾为 CHS238401

症状

如果您试图访问 Access 2000 或 Access 2002 数据库,则可能会在 Visual Basic 程序中收到以下错误之一:

如果使用 Microsoft ActiveX 数据对象 (ADO)(或 ADO 数据控件),则会收到下面的错误信息:
Run-time error -2147467259 Unrecognized Database Format XXX
如果使用数据访问对象 (DAO)(或 DAO 一般数据控件),则会收到下面的错误信息:
Run-time error 3343 Unrecognized Database Format XXX

原因

Access 2000 和 Access 2002 使用 Jet 4.0 引擎,该引擎创建 Jet 4.0 格式的数据库文件。而 Jet 3.5 组件无法识别这种格式。
  • 如果您使用的是 ADO,并试图通过 Microsoft.Jet.OLEDB.3.51 提供程序连接 Access 2000 或 2002 数据库,将收到错误 -2147467259。
  • 如果您使用的是 DAO,并使用 Microsoft DAO 3.51 对象库,将收到错误 3343。
  • DAO 的一般数据控件不能作用于 Access 2000 或 2002 数据库,并且总是生成错误 3343,除非按照本文“解决方案”一节中的指示使用它。发生此错误的原因是:此控件是基于 Jet 3.51 的且只能识别 Jet 3.51(或以前版本)的数据库格式。

解决方案

要解决此问题,请使用以下方法之一:
  • 安装 Visual Studio Service Pack 4 或更高版本。(如果使用的是“数据控件”,请将其连接属性更改为 Access 2000)。
  • 对于 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 数据库。

状态

该问题最初是在 Visual Studio 6.0 Service Pack 4 中得到了解决。有关 Visual Studio Service Pack 的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
194022  (http://support.microsoft.com/kb/194022/ ) Visual Studio 6.0 Service Pack 的简介、获取位置和安装原因

194295  (http://support.microsoft.com/kb/194295/ ) 如何了解是否安装了 Visual Studio Service Pack
要下载最新的 Visual Studio Service Pack,请访问下面的 Microsoft 网站:
http://msdn2.microsoft.com/en-us/vstudio/Aa718353.aspx (http://msdn2.microsoft.com/en-us/vstudio/Aa718353.aspx)

参考

有关 Jet 4.0 的更多信息,请参阅 Access 2000 文档。

有关 ADO 和 DAO 的更多信息,请参阅 Visual Basic 文档。

有关更多信息,请在 Visual Basic 附带的 MSDN Library 中查询“无法识别的数据库格式”。

这篇文章中的信息适用于:
  • Microsoft Visual Basic 5.0 专业版
  • Microsoft Visual Basic 6.0 专业版
  • Microsoft Visual Basic 5.0 企业版
  • Microsoft Visual Basic 6.0 企业版
  • Microsoft Access 2000 标准版
  • Microsoft Access 2002 标准版
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.6
关键字: 
kbtophit kbjet kbprb kbctrl kbpubtypekc kbmsccsearch KB238401
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。
其他支持选项
Microsoft Community 支持论坛
直接联系我们
查找 Microsoft 认证合作伙伴
Microsoft 商店
关注我们: