访问错误 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”类型的未处理异常附加信息:无法识别的数据库格式
使用 Core Data 获取生成“无法识别的选择器错误”?