問題:
如何合並多個表結構相同的MDB《表》
在同一目錄下,有很多相同結構相同的MDB,是從各個分支單位上報的數據,現要合並統計,如何做?
回答:
示例數據庫下載:
http://access911.net/down/eg/eg_JoinMDBTable.rar
解壓縮後有2個MDB,你也可以再多復制幾分,隨意打開哪個MDB都可以運行測試代碼,測試代碼將搜索MDB所在的目錄導入目錄中所有 MDB 的 表1 到當前數據庫中,所以請確定目錄及子目錄中不要有太多的文件否則可能導致運行時間過長。
方法一:動態搜索整個目錄,找到MDB後搜索數據庫內是否存在同樣的表,如果同樣,就組織 JET SQL 語句的 IN 子句合並
方法二:動態搜索整個目錄,找到MDB後搜索數據庫內是否存在同樣的表,如果同樣,就將所有的 MDB 數據導入到一個新的 MDB 中,每個表名重新命名一下,然後用 SELECT ... UNION ALL 語句重新組織一下。
技術要點:
1,如何取目錄下的所有mdb的文件名?將文件名放入變量
2,如何構成動態的SQl語句,將上述變量插入到語句中並形成一個可用的查詢
3,如何循環,如何將所有的 MDB 中的表的名稱全部包含進去?
要點解決:
1,
如何得到某個目錄下所有的文件名?《函數》
http://access911.net/index.asp?u1=a&u2=78FAB01E17DC
2,你要做的只是將剛才得到的變量用一下形式組織一下
dim strMdb as string
dim strSQL as string
strMdb = ..... '要點解決1
strSQL = strSQL & "select .... from .... " & strMdb & " ...."
用VBA靈活生成查詢,動態生成查詢《VBA》
http://access911.net/index.asp?u1=a&u2=73FAB41E17DC
3,如何循環,如何將所有的 MDB 中的表的名稱全部包含進去?------要點解決1本身就是一個循環,你只要得到一個 MDB 名稱就組織 SQL 的一部分即可,記得 SQL 字符串要保存在公共變量中。
上述是方案的完整思路以及需要參考的全部代碼