【问题标题】:Access Error 3443: Unrecognized database format 'databasename.mdb'访问错误 3443:无法识别的数据库格式“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。

标签: ms-access


【解决方案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 中读取。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多