MS access 使用相对路径查询多个 MS Access 数据库

Posted

技术标签:

【中文标题】MS access 使用相对路径查询多个 MS Access 数据库【英文标题】:MS access query multiple MS Access Databases with relative path 【发布时间】:2016-04-26 18:47:06 【问题描述】:

我正在尝试设置一个访问数据库 (Queries.accdb),该数据库将用于查询多个访问数据库作为表源。我可以通过硬编码来做到这一点,但是当我尝试使用相对路径时出现语法错误。我希望能够移动 Queries.accdb。

当前文件结构:

C:\Temp\PB\28\A.accdb C:\Temp\PB\28\B.accdb C:\Temp\PB\28\Queries.accdb C:\Temp\PB\29\A.accdb C:\Temp\PB\29\B.accdb C:\Temp\PB\29\Queries.accdb

当前工作查询:

SELECT * 
FROM  [;database=C:\Temp\PB\28\A.accdb].[Catalog] AS a 
INNER JOIN [;database=C:\Temp\PB\28\B.accdb].[Catalog] AS b 
ON a.componentid = b.externalid;

当我尝试不同的变体(.\ ~\ 等)来删除 DB 文件前面的硬编码路径时,它会自动在 Access 中添加“默认数据库文件夹”设置。 (例如:“C:\”会将以下查询更改为“C:\A.accdb”)

SELECT * 
FROM  [;database=A.accdb].[Catalog] AS a 
INNER JOIN [;database=B.accdb].[Catalog] AS b 
ON a.componentid = b.externalid;

我创建了一个 VBA 函数来返回完整的“from”括号(包括数据库文件)和一个只返回路径的函数,但我无法找出在 from 子句中使用 VBA 函数的正确语法。

"[;database=" + Application.CurrentProject.Path + "\A.accdb]"
"Application.CurrentProject.Path"

【问题讨论】:

【参考方案1】:

我无法弄清楚在 from 子句。

那是因为你做不到。必须在调用查询之前解析路径。

所以你必须在 VBA 中构建完成的 SQL 字符串,然后调用查询。

也就是说,仅仅链接当前操作所需的表,将它们命名为CatalogACatalogB不是更简单吗? em>?

(重新)链接很容易在 VBA 中完成,并且可以让您完全免于篡改查询。

【讨论】:

以上是关于MS access 使用相对路径查询多个 MS Access 数据库的主要内容,如果未能解决你的问题,请参考以下文章

MS Access - 在 1 个报告中使用多个查询

生成包含多个表/查询的 MS Access 报告

返回多个字段的 MS Access 子查询

查询 MS Access 多个条件(where)

在 MS Access 中根据表单中的多个组合框查询所有记录

错误 3296:具有多个 JOIN 的 MS Access 查询中不支持连接表达式