2016-04-26 129 views
0

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

当前文件结构:

  • 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个\查询。 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子句中使用VBA函数的正确语法。

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

回答

1

我找不出正确的语法使用在 VBA函数引用条款。

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

因此,您必须在VBA中构建完成的SQL字符串,然后调用查询。

这就是说,岂不是更简单,只是链接需要为当前操作的表,为其指定的名称作为CatalogACatalogB

(重新)链接很容易在VBA中完成,并且完全免费从篡改查询。