Microsoft_Access

**Microsoft Office Access**（前名 **Microsoft Access**）是由微軟發佈的關聯式資料庫管理系統。它結合了 Microsoft Jet Database Engine 和圖形使用者介面兩項特點，是 Microsoft Office 的系統程式之一。

Access 能夠存取 Access/Jet、Microsoft SQL Server、Oracle 資料庫，或者任何 ODBC 相容資料庫內的資料。熟練的軟體設計師和資料分析師利用它來開發應用軟體，而一些不熟練的程式員和非程式員的進階使用者則能使用它來開發簡單的應用軟體。雖然它支援部分物件導向技術，但是未能成為一種完整的物件導向開發工具。

其實 Access 也是微軟公司另一個通訊程式的名字，想與 ProComm 以及其他類似程式來競爭。可是事後微軟證實這是個失敗計劃，並且將它中止。數年後他們把名字重新命名於此資料庫軟體。

## 歷史

Microsoft Access 1.0 版本在 1992 年 11 月發佈。

微軟組態它於系統 Windows 3.0 內，並以最小 8MB 硬碟空間的系統要求，當時該軟體以 7 張 1.44MB 軟碟儲存發售。

此軟體能夠有效地處理大量記錄。但是測試顯示在某些情況下，會導致數據損毀。之後，該軟體歷經改良至今已成為微軟 OFFICE 商用軟體的主要系統之一。

Access 2007 推出 .accdb 的副檔名，如果電腦只有 Access 2003 (.mdb) 的版本，無法像 Word,Excel 相容 (無法開啟)，必須轉換成 .mdb 檔案。

Access 2013 已經無法匯入 .dbase (DataBase) 的資料庫檔案。

## 用途

Microsoft Access 在很多地方得到廣泛使用，例如小型企業，大公司的部門。喜愛編程的開發人員亦利用它來製作處理數據的桌面系統。它也常被用來開發簡單的 WEB 應用程式。

它的使用方便程度和強大的設計工具為初級程式員提供許多功能。不過，方便性的宣傳，常令人誤解。在過於樂觀的誤導下，讓許多沒有程式設計背景的辦公室從業人員應用此軟體，並以為能夠創造可用的系統，但此工具本身的局限性，常常使這些使用者失敗。

一些專業的應用程式開發人員使用 Access 內附的快速應用開發功能，特別是給街道上的推銷員製作一個初型或獨立應用程式的工具。可是如果是透過網路存取數據的話，Access 的可擴放性並不高．因此當程式被較多使用者使用時，他們的選擇多會是傾向於一些客戶端 - 伺服器為本的方案，例如 Oracle、IBM DB2、Microsoft SQL Server、Windows SharePoint Services、PostgreSQL、MySQL、Alpha Five、MaxDB，或者 Filemaker。無論如何，不少 Access 的功能（表單，報告，序列和 VB 代碼）可以用作其他資料庫的後期應用，包括 JET（檔案為主的資料庫引擎，Access 預設使用）、Microsoft SQL Server、Oracle 和任何其他跟 ODBC 相容的產品。這種方法允許開發者把一個成熟的應用的數據移動到一台更大功率的伺服器而不會在適當的位置犧牲發展。

## SQL

Access 查詢中使用的預設使用「Microsoft Jet SQL」，而 ADO 中使用的 SQL 語法是「ANSI SQL」。這兩種語法存在輕微的差別（中間還包含某些特殊函式和功能）並非完全相容。其中萬用字元就不一樣：對於多個字元，前者是 \* 而後者是 % ； 對於單個字元，前者是 ? 而後者是 \_ 。 Jet SQL 基本遵從了 SQL ANSI-89 Level 1 compliant。對於 Access 的欄位類型為 True/False，在 SQL 語句中可用 0 對應 False，-1 對應 True。不能用 1 對應 True。

也可以將 ACCESS 資料庫查詢的語法設定為相容 ANSI SQL（在 ACCESS 選項那裡設定），但是這樣做的話，編寫 SQL 語句就要遵循 ANSI SQL 語法規則了。對於之前已經使用過的 ACCESS 資料庫不建議這樣做，因為很可能會導致原有編寫的 SQL 查詢失效，進而造成諸多不便。

Access 使用的 Jet SQL 引擎，每次只能執行一條 SQL 語句。如果成批執行多條 SQL 語句，需要使用 Visual Basic for Applications 編程。在 Access 的 VBA 中執行 SQL 語句，有三種方法。

* DoCmd.RunSQL：基於 Access 的物件模型，使用 Microsoft Jet SQL，在 SQL 語句中可以使用 VBA 函式。需要在呼叫前設定 `DoCmd.SetWarnings False` 關閉提示或確認對話方塊。執行時在 Access 狀態列顯示進度條，可通過 Esc 鍵中止執行。不能取得 SQL 語句影響的記錄行數。不能將多個 SQL 語句的執行放在同一事務中。
* CurrentDB.Execute：基於 DAO 物件模型，使用 Microsoft Jet SQL，在 SQL 語句中可以使用 VBA 函式。沒有提示或確認對話方塊的顯示。執行時沒有在 Access 狀態列顯示進度條，不可以通過 Esc 鍵中止執行。能取得 SQL 語句影響的記錄行數。可以將多個 SQL 語句的執行放在同一事務中。
* CurrentProject.Connection.Execute：基於 ADO 物件模型，連接到不同資料庫使用不同的 SQL 語法。對 Access 使用 ISO SQL 標準語法並可以使用 VBA 函式。沒有提示或確認對話方塊的顯示。執行時沒有在 Access 狀態列顯示進度條，不可以通過 Esc 鍵中止執行。能取得 SQL 語句影響的記錄行數。可以將多個 SQL 語句的執行放在同一事務中。

例如：

## 編程模型

Access 軟體自身提供了一套 COM 物件體系，可供其它軟體（如 Excel）使用 VBA 或者 C#、C++ 等程式語言呼叫 Access 的功能。

* Application：Access 應用程式環境
* DBEngine：資料庫管理系統
* Debug：立即窗口物件，可用 Print 輸出文字
* Forms：包含所有打開的窗口
* Reports：包含所有打開的報表
* Screen：螢幕
* DoCmd

## 延伸閱讀

* "Microsoft Office Access 2003 Inside Out" by John L. Viescas
* "Database Design for Mere Mortals" by Michael J. Hernandez
* "Access Database Design & Programming" by Steven Roman
* "Access 2002 Developer's Handbook™ Set By Paul Litwin; Ken Getz; Mike Gunderloy
* "Succeeding in Business with Microsoft Office Access 2003: A Problem-Solving Approach" by Karin Bast, Leon Cygman, Gerard Flynn, Rebekah Tidwell
* "Access 2003 VBA Programmer's Reference" by Patricia Cardoza, Teresa Hennig, Graham Seach, Armen Stein
* "SQL Access to SQL Server" Published by Apress - Susan Sales Harkins and Martin WP Reid
* "Mastering Microsoft Office Access 2003" Published by Sams - Alison Balter

## 參見

* Microsoft SQL Server
* Microsoft Office
* Microsoft
* List of relational database management systems
* Xbase
* Comparison of relational database management systems
* Data Normalization Basics （頁面存檔備份，存於網際網路檔案館）
* Visual Basic

## 外部連結

* Why Use Microsoft Access
* Microsoft Access Articles and Tutorials （頁面存檔備份，存於網際網路檔案館）
* Utter Access Forums （頁面存檔備份，存於網際網路檔案館）
* Access 知識庫 / 程式設計俱樂部 （頁面存檔備份，存於網際網路檔案館）
* A FAQ site about Microsoft Access （頁面存檔備份，存於網際網路檔案館）
* Microsoft Access Linklist （頁面存檔備份，存於網際網路檔案館）
* Microsoft Access Newsgroups
* Microsoft Access for Beginners
* Articles on Microsoft Access （頁面存檔備份，存於網際網路檔案館）
* Blog about Microsoft Access Tips and Tricks （頁面存檔備份，存於網際網路檔案館）
* History of JET database （頁面存檔備份，存於網際網路檔案館）
* Additional info on history of Access
* Access Opener utility manages multiple versions （頁面存檔備份，存於網際網路檔案館）
* Access 術語表 （頁面存檔備份，存於網際網路檔案館）

本條目部分或全部內容出自以 GFDL 授權發佈的《自由線上電腦詞典》（FOLDOC）。