2016-04-26 85 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中完成,並且完全免費從篡改查詢。