ACCESS做為MS Office 辦公套件中的一個應用程式,經常需要來其它資料來源進行資料互動,比如在查詢中使用在EXCEL中的資料或文本記錄檔案中的資料,或者倒出查詢結果到EXCEL的資料表中或其它格式的資料檔案中。 除了常用的倒入/倒出功能外,還可以通過JET-SQL的 IN 子句來靈活實現。
外部資料庫
可以是一個駐留在遠程伺服器上的 ODBC 資料庫(如 Microsoft SQL Server),或是外部資料庫之一,如 Paradox、dBASE、Microsoft FoxPro、Microsoft Excel、Microsoft Access、Lotus 1-2-3、HTML 和 Text。
下面首先看一下 Microsoft Jet SQL 參考中關於 IN 子句的介紹。
IN 子句
標識出外部資料庫中的表,例如dBASE或Paradox資料庫,或Microsoft Jet外部資料庫,Microsoft Jet資料庫引擎能夠與之相連。
文法
標識目標表:
[SELECT | INSERT] INTO destination IN
{path | ["path" "type"] | ["" [type; DATABASE =
path]]}
標識資料來源表:
FROM tableexpression IN
{path | ["path" "type"] | ["" [type; DATABASE =
path]]}
包含 IN 子句的SELECT 語句具有以下幾個部分:
| 部分 |
說明 |
| destination |
外部表格的名稱,將資料插入表中。 |
| tableexpression |
表的名稱,可從這些表中擷取資料。這個變數可能是一個單獨的表名,一個已存查詢,或是 INNER JOIN, LEFT JOIN, 或 RIGHT JOIN. |
| Path |
目錄或檔案的整個路徑,而且這些目錄或檔案包含 table 。 |
| type |
資料庫類型的名稱,如果資料庫不是 Microsoft Jet 資料庫(例如 dBASE III、dBASE IV、Paradox 3.x或Paradox 4.x),則用此類型建立 table 。 |
說明
通過 IN 你一次只可以串連一個外部資料庫
在某些情況中,path 參數可引用包含資料庫檔案的目錄。例如,當使用 dBASE、FoxPro或 Paradox 資料庫表時,path 參數將指定包含 .dbf 或 .db 檔案的目錄。由
destination 或 tableexpression 參數可得到表檔案的名稱。
為了指定非 Microsoft JET 資料庫,可在名稱之後附加分號 (;),並用單引號 (' ') 或 (" ") 雙引號將它括入。例如可用 'dBASE IV;' 或 "dBASE IV;"這兩種寫法。
也可使用 DATABASE 保留字指定外部資料庫。例如,以下樣本指定相同的表:
... FROM Table IN "" [dBASE IV; DATABASE=C:/DBASE/DATA/SALES;];
... FROM Table IN "C:/DBASE/DATA/SALES" "dBASE IV;"
注意
為改進效能並方便使用,請使用連結資料表而不要用 IN。
在運算式中也可用 IN 保留字作為比較操作符。欲知更多資訊,請看 In 操作符.
IN 子句樣本
下列表顯示您如何使用 IN 子句來捕獲外部資料庫的資料。在每一樣本之中,假設客戶表是儲存在外部資料庫之中。
| 外部資料庫 |
SQL 陳述式 |
| Microsoft Jet 資料庫 |
SELECT CustomerID FROM Customers IN OtherDB.mdb WHERE CustomerID Like "A*"; |
dBASE III 或 IV. 捕獲資料由 一 dBASE III 表,以 "dBASE III;" 替代 "dBASE IV;"。 |
SELECT CustomerID FROM Customer IN "C:/DBASE/DATA/SALES" "dBASE IV;" WHERE CustomerID Like "A*"; |
| dBASE III 或 IV 使用資料庫文法。 |
SELECT CustomerID FROM Customer IN "" [dBASE IV; Database=C:/DBASE/DATA/SALES;] WHERE CustomerID Like "A*"; |
Paradox 3.x 或 4.x. 若要由一Paradox version 3.x 表捕獲資料,以 "Paradox 3.x;" 替代 "Paradox 4.x;"。 |
SELECT CustomerID FROM Customer IN "C:/PARADOX/DATA/SALES" "Paradox 4.x;" WHERE CustomerID Like "A*"; |
| Paradox 3.x 或 4.x 使用資料庫文法. |
SELECT CustomerID FROM Customer IN "" [Paradox 4.x;Database=C:/PARADOX/DATA/SALES;] WHERE CustomerID Like "A*"; |
| Microsoft EXCEL工作表 |
SELECT CustomerID, CompanyName FROM [Customers$] IN "c:/documents/xldata.xls" "EXCEL 5.0;" WHERE CustomerID Like "A*" ORDER BY CustomerID; |
| 在工作表之中的一個命名範圍 |
SELECT CustomerID, CompanyName FROM CustomersRange IN "c:/documents/xldata.xls" "EXCEL 5.0;" WHERE CustomerID Like "A*" ORDER BY CustomerID; |
以上摘自 Microsoft Jet SQL 參考
JET 的類型為ISAM註冊表中記錄的所有類型。
例子:
文字檔 [Text;DATABASE=文字檔路徑].[文字檔名稱]
select * from [Text;DATABASE=c:/temp].[test.txt]
EXCEL [Excel 8.0;Database=fullFileName].[SheetName]
[Excel 8.0;Database=fullFileName].[SheetName$A1:B10]
[Excel 8.0;Database=fullFileName].[Name]
SELECT * INTO [Excel 8.0;Database=c:/book1.xls].[Sheet1] FROM Customers
SELECT * INTO [Sheet1] IN '' [Excel 8.0;Database=c:/book1.xls] FROM Customers
SELECT * INTO [Sheet1] IN 'c:/book1.xls' 'Excel 8.0;' FROM Customers"
INSERT INTO [Sheet1$] IN '' [Excel 8.0;Database=c:/book1.xls] SELECT * FROM Customers
INSERT INTO [Sheet1$] IN 'c:/book1.xls' 'Excel 8.0;' SELECT * FROM Customers
select * from [Excel 8.0;Database=c:/info.XLS].[sheet1$A1:B5]
select * from [Excel 8.0;HDR=Yes;IMEX=1;Database=c:/info.XLS].[Sheet1$C5:B10]
select * from [C:/temp/access/db1.mdb].SC
select * from [;pwd=123;database=C:/temp/access/db1.mdb].SC
SELECT * FROM table IN ODBC[ODBC;Driver={Microsoft ODBC for Oracle};Server=XE;Uid=SYSTEM;PWD=123;];
SELECT * FROM [ODBC;Driver=SQL Server;Server=servername;DataBase=dbname;UID=sa;PWD=123].table1