访问错误 3443:无法识别的数据库格式“databasename.mdb”

Posted

技术标签:

【中文标题】访问错误 3443:无法识别的数据库格式“databasename.mdb”【英文标题】:Access Error 3443: Unrecognized database format 'databasename.mdb' 【发布时间】:2010-05-07 08:22:10 【问题描述】:

尝试使用 VB 应用程序中的 MDB 文件时,导致上述错误的原因可能是什么?

MDB文件的访问版本是6.68。

我感觉这可能是由于有人试图从较新版本的 Access 中打开 .mdb 文件而导致 MDB 损坏。

如何解决这个问题?

【问题讨论】:

6.68 不是我熟悉的版本 - Access 95 是版本 6,Access 2010 是 14。你有更熟悉的版本号 (bytes.com/topic/access/answers/…) 吗?您可能还想添加一些代码来显示文件是如何打开的。 Access 97 是什么版本?因为我认为可能是这样。我从我下载的一个小型第三方实用程序获取版本号。 A97 是版本 8。我原以为 A95 是版本 7。但这些数字与数据库引擎版本无关。 A95 使用了 Jet 3.0、A97、3.5 和 3.51。我不确定 A95 文件和 A97 文件之间是否存在明显差异,除了与 VBA 相关的问题。也就是说,如果您使用的是纯 Jet 对象(表/查询),则不会有任何区别。但可以肯定的是,6.68 版本号在任何情况下都没有任何意义,无论是 Access 还是 Jet。 【参考方案1】:

这里有一些 VBScript,希望能为您提供一个版本。将其保存在带有 vbs 扩展名的普通文本文件中,然后将 mdb 拖放到它上面。这是一个非常快速的草图,仅经过粗略测试。

Set fs = CreateObject("Scripting.FileSystemObject")

If WScript.Arguments.Count > 0 Then
    sPath = WScript.Arguments.Item(0)
Else
    sPathTemp = Left(WScript.ScriptFullname, _
        InStrRev(WScript.ScriptFullname, "\"))

    sPath = InputBox("Enter Path and Name of .mdb", "Get Ver", sPathTemp)
End If

If sPath = "" Or fs.FileExists(sPath) = False _
    Or Right(sPath, 4) <> ".mdb" Then

    MsgBox "Not a valid file: " & vbCrLf & sPath, 64, "Get Ver" 
Else

    Set cnnDB = CreateObject("ADODB.Connection")
    cnnDB.Provider = "Microsoft.Jet.OLEDB.4.0"
    cnnDB.Mode = 1 ''adModeRead

    On Error Resume Next
    cnnDB.Open sPath

    If Err.Number <> 0 Then
         MsgBox "Error"
    Else
        MsgBox "4 = Access 97, 5 = Access 2000 (2002?)" & vbcrlf & _
        "Value for " & sPath & " is: " & _
        cnnDB.Properties.Item("Jet OLEDB:Engine Type").Value
        cnnDB.Close
    End If
End If

【讨论】:

【参考方案2】:

“无法识别的数据库格式”错误是典型的损坏,尽管它们也与使用较新版本的 Access 创建的旧版本 Access(或者在您的情况下可能使用连接字符串)打开数据库有关引用旧版本的 Jet)。

根据Access Wiki,没有版本 6.68 这样的东西。不适用于 Access,也不适用于 Jet,因此您需要确定您拥有的版本,然后确定您需要使用哪个版本的 Jet 进行连接。

请注意,如果您使用的是 Access 2007,则在 Access 2007 SP1 中创建的 accde 或 mde 无法在没有安装 SP 的情况下在 Access 2007 中读取。

如果确实是损坏,我会鼓励您在不同的文件夹中创建一个新的、新鲜的数据库。将表、查询、表单等导入新数据库,执行压缩和修复,然后测试新数据库以确保它没有损坏。

【讨论】:

以上是关于访问错误 3443:无法识别的数据库格式“databasename.mdb”的主要内容,如果未能解决你的问题,请参考以下文章

System.Data.dll 中出现“System.Data.OleDb.OleDbException”类型的未处理异常附加信息:无法识别的数据库格式

尝试打开访问 97 数据库时无法识别的数据库格式

使用 Core Data 获取生成“无法识别的选择器错误”?

请教高手,关于“不可识别的数据库格式”

如何修复格式错误的 POM:无法识别的标签:'groupId'?

不可识别数据库格式