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

时间:2010-05-07 08:22:11

标签: ms-access

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

MDB文件的访问版本是6.68。

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

如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

以下是一些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

答案 1 :(得分:0)

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

根据Access Wiki,没有版本6.68。不是为了Access而不是Jet,所以你需要确定你有哪个版本,然后确定你需要哪个版本的Jet进行连接。

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

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