奇怪的情况,使用 ADO 在 Excel VBA 中定义连接到 Access .accdb 数据库的文件路径,但是它告诉我找不到 .mdb 文件
Posted
技术标签:
【中文标题】奇怪的情况,使用 ADO 在 Excel VBA 中定义连接到 Access .accdb 数据库的文件路径,但是它告诉我找不到 .mdb 文件【英文标题】:Weird situation, define a file path connecting to Access .accdb database in Excel VBA using ADO, however it tells me couldn't find .mdb file 【发布时间】:2011-12-02 15:04:18 【问题描述】:我正在使用 ADO 连接在 Excel VBA 中编写代码以打开 Access .accdb 数据库。我将文件路径定义为波纹管,但是当我运行我的代码时,错误消息告诉我“找不到文件 C:\Users\sevenice\Documents\EM Database.mdb”。太奇怪了,我从来没有定义 .mdb 文件范围内的文件路径。
但是,当我将 accdb 文件保存为 mdb 文件,然后将 mdb 文件放在 Documents 文件夹下时,代码可以正常工作!但我无法弄清楚为什么。
我的代码有什么问题吗?还是 Access 2007 中存在一些默认文件路径?我的代码在 Excel 2007 中。
谢谢, 必应
将 cnn 调暗为新的 ADODB.Connection Dim rst 作为新的 ADODB.Recordset
将 Dbfilepath 调暗为字符串
Dbfilepath = "C:\Users\sevenice\Desktop\EM Database.accdb"
Set cnn = New ADODB.Connection
cnn.Open "Provider= Microsoft.ACE.OLEDB.12.0;" & " Data Source=" & Dbfilepath & ";" & "Persist Security Info =False;"
Set rst = New ADODB.Recordset
rst.ActiveConnection = cnn
【问题讨论】:
第一件事是,您不需要连接字符串各部分之间的“&”。只需将其设为一个字符串并在 DbFlePath 前后使用 &。其次就像下面说的那样,用 SQL 语句试试。与 rst.open strsql、cnn 一样,Access 提供程序对连接字符串的形成方式很挑剔。 您是否检查过变量 Dbfilepath 是否未在其他地方定义为公共变量或常量? 【参考方案1】:您是否在 SQL 文本中引用了数据库名称(您已从发布的代码中截取该名称)?
例如
SELECT [g/gtop] FROM [EM Database].[N (t) Data]
AFAIK 此语法将尝试在当前目录中查找数据库EM Database.mdb
。我猜它使用 .mdb 来兼容遗留代码(或者它是一个错误!:)
【讨论】:
以上是关于奇怪的情况,使用 ADO 在 Excel VBA 中定义连接到 Access .accdb 数据库的文件路径,但是它告诉我找不到 .mdb 文件的主要内容,如果未能解决你的问题,请参考以下文章