在MDB数据库中链接ACCDB数据库表失败问题求助
问题排查与解决方案
核心原因
MDB(Access 2003格式)默认依赖Jet OLEDB引擎,而ACCDB(Access 2007+格式)需要ACE OLEDB引擎驱动,原代码的链接逻辑针对MDB设计,无法兼容ACCDB格式。
具体修复步骤
1. 移除错误屏蔽,定位具体问题
原代码开头的On Error Resume Next会隐藏所有错误信息,先注释或删除该行,运行后弹出的错误提示能直接指向问题点:
' On Error Resume Next ' 注释或删除此行,查看具体错误
2. 修改ACCDB的连接字符串逻辑
原代码中链接MDB的方式无法适配ACCDB,需要更新TableDef的连接字符串,使用ACE引擎。假设后续代码中链接表的逻辑类似如下(需对应修改你的完整代码):
' 原MDB链接逻辑(示例) Set TablesLieesDATAIDS = BaseActuel.CreateTableDef("链接表名") TablesLieesDATAIDS.Connect = ";DATABASE=" & CheminDATAIDS TablesLieesDATAIDS.SourceTableName = "源表名" BaseActuel.TableDefs.Append TablesLieesDATAIDS
修改为ACCDB适配的ACE引擎连接字符串:
Set TablesLieesDATAIDS = BaseActuel.CreateTableDef("链接表名") ' 使用ACE OLEDB驱动 TablesLieesDATAIDS.Connect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & CheminDATAIDS TablesLieesDATAIDS.SourceTableName = "源表名" BaseActuel.TableDefs.Append TablesLieesDATAIDS
3. 确认ACE驱动已安装
运行MDB的机器必须安装**Microsoft Access Database Engine(ACE)**驱动,否则无法识别ACCDB格式。需下载对应版本(32位/64位,需与Office环境位数一致)安装。
4. 修正文件路径赋值
确保CheminDATAIDS的赋值正确指向.accdb文件:
CheminDATAIDS = Me.CheminDATAIDS & "\dataids.accdb" ' 确认后缀为.accdb
额外注意事项
- 如果MDB是32位版本,必须安装32位ACE驱动;64位MDB对应64位驱动,否则会出现位数不兼容错误。
- 若链接的ACCDB包含加密表,需在连接字符串中添加密码参数:
;Jet OLEDB:Database Password=你的密码
内容的提问来源于stack exchange,提问作者Thomas Jovelin
相关产品推荐
相关产品推荐

