Microsoft Access

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

Access能夠存取Access/Jet、Microsoft SQL Server、Oracle資料庫，或者任何ODBC相容資料庫內的資料。雖然它支持部分物件導向技術，但是未能成為一種完整的物件導向開發工具。

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

## 歷史

年份｜版本｜版本代號｜作業系統需求｜對應的Office版本

1992年｜Access 1.1｜1｜Windows 3.0

1993年｜Access 2.0｜2.0｜Windows 3.1x｜Office 4.3 Pro

1995年｜Access for Windows 95｜7.0｜Windows 95｜Office 95 Professional

1997年｜Access 97｜8.0｜Windows 9x、NT 3.51/4.0｜Office 97 Professional、Developer

1999年｜Access 2000｜9.0｜Windows 9x、NT 4.0、2000｜Office 2000 Professional、Premium及Developer

2001年｜Access 2002｜10｜Windows 98以上｜Office XP Professional及Developer

2003年｜Access 2003｜11｜Windows 2000以上｜Office 2003 Professional及Professional Enterprise

2007年｜Microsoft Office Access 2007｜12｜Windows XP SP2｜Office 2007 Professional、Professional Plus、Ultimate及Enterprise

2010年｜Microsoft Office Access 2010｜14｜Windows XP SP3、Vista SP1、Windows 7｜Office 2010 Professional、Professional Academic及Professional Plus

2012年｜Microsoft Office Access 2013｜15｜Windows Server 2008 R2、Windows 7｜Office 2013 Professional及Professional Plus

2015年｜Microsoft Office Access 2016｜16｜Windows 7｜Office 2016 Professional及Professional Plus

2018年｜Microsoft Office Access 2019｜Windows 10｜Office 2019 Professional及Professional Plus

2021年｜Microsoft Office Access 2021｜Windows 10、Windows 11｜Office 2021 Professional及Professional Plus

Microsoft Access 1.0發佈於1992年11月，當時該軟體以7張1.44 MB磁片形式發售。

為了配合Word的版本號碼，Access版本號自Office 95開始與Word同步，版本號配合Word 7訂為7.0。

Access 2007起資料庫改以新檔案格式`.accdb`儲存。由於與舊Access版本不相容，若需在較舊的Access版本裡讀取，需要先轉存回`.mdb`。

Access 2013起已不再支援dBase資料庫，無法匯入`.dbase`的資料庫檔案。

由於Office 2024不再提供Professional版本，故Access不再於零售賣斷的Microsoft Office版本中出現；但Microsoft 365訂閱版本中仍設有Access。

## 用途

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。對於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語句的執行放在同一事務中。

例如：

```vb
 
Dim strSQL As String
strSQL = "SELECT * INTO [excel 8.0;database=d:\gz.xls].sheet1 FROM table1 WHERE table1.city = 'gz' " 
 :REM 执行该函数进行SQL查询 
CurrentProject.Connection.Execute strSQL
```

## 編程模型

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）

## 基本資料

- 開發者：微軟
- 發行日期：1992年
- 軟體版本週期：2021
- 軟體版本週期：2021年10月5日
- 程式語言：C++
- 作業系統：Microsoft Windows
- 狀態：活躍
- 類型：關聯式資料庫管理系統
- 許可協議：專有EULA