本節書摘來自異步社群出版社《access 2007開發指南(修訂版)》一書中的第1章,第1.5節,作者: 【美】alison balter,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。
access 2007開發指南(修訂版)
正如前面所提及,access的資料庫由表、查詢、窗體、報表、宏和子產品組成。這些對象都有自己特定的功能。access環境還包括好幾個雜項對象,包括關系、資料庫屬性和導入/導出規格。有了這些對象,就可以建立功能強大的、使用者友好的內建應用程式。圖1.1所示的是access的應用程式視窗。請注意,在“導航窗格”中列出的對象類别。以下各節對access資料庫的各個對象進行解釋。

表是應用程式的起點。不管是将資料存儲在access資料庫中,還是使用連結表引用外部資料,資料庫中所有其他對象都對表進行了直接或間接的引用。
要想檢視一個已打開的資料庫中的各個表,應從“導航窗格”下拉清單中選擇“表”,如圖1.2所示(請注意,這裡看不到任何隐藏的表,要檢視隐藏的表,必須在“導航選項”對話框中選擇“隐藏對象”複選框,如圖1.3所示)。如果要檢視某個表中的資料,應輕按兩下要浏覽的表名。
access将表中的資料以資料表的形式顯示,其中包括了表中的所有字段和記錄(如圖1.4所示)。注意,圖中折疊了“導航窗格”,這樣可使使用者更好地檢視表(該技巧會在本章後面介紹)。可以修改資料表的諸多屬性,甚至還可以對資料表内的資料進行查找和篩選。如果某表與另外的表進行了連結(如羅斯文的客戶表和訂單表),就可以打開或折疊子資料表,用以檢視存儲在子表中的資料。這些簡單的技巧不會在這本書中介紹,access的使用者手冊或其他介紹關于access的圖書對此已經做了介紹,例如《sams teach yourself microsoft office access 24 hours》。
作為開發人員,經常要檢視表的設計,它是表的藍本,也可以說是模闆。為了檢視表的設計,應該在打開表後單擊功能區開始頁面上的“視圖”圖示(見圖1.5)。在設計視圖内,可以檢視和修改所有的字段名、資料類型以及字段和表的屬性。在access中,使用者具有自定義表的設計能力和靈活性,第2章将講述這些内容。
關系:連接配接表
為了較好地維護資料的完整性并簡化與資料庫内其他對象的操作過程,必須在資料庫中的表之間定義關系。通過使用“關系”視窗可以完成這項任務。為了浏覽“關系”視窗,應該選擇“資料庫工具”頁籤,然後在“顯示/隐藏”組中選擇“關系”按鈕,此時,“關系”視窗就會出現,如圖1.6所示。
在這個視窗中,可以檢視和維護資料庫中的關系。如果自己或者某個後續的開發人員已經設計了一些關系,但是在“關系”視窗中卻看不到它們,那麼在“設計”頁籤上的“關系”組中選擇“所有關系”按鈕,就可以将任何隐藏的表和關系顯示出來。
請注意圖1.6所示的關系,表之間的連接配接線上有一個數字1,還有一個無限符号(∞)。這說明在這些表之間有一個“一對多”關系。如果輕按兩下連接配接線,那麼将出現“編輯關系”對話框(如圖1.7所示)。在這個對話框中,可以指定表與表之間的準确關系。比如說,客戶表與訂單表之間的關系就是一對多的關系,它将執行參照完整性規則。也就是說,對于不存在的客戶不能添加訂單。請注意,“級聯更新相關字段”這個複選框沒有選中。這就意味着,使用者不能更新客戶表中某個客戶的客戶id。由于“級聯删除相關記錄”這個複選框沒有選中,是以,如果客戶在訂單表中有訂單,那麼它們不會從客戶表中删除。
本書第3章将詳細地講述關系的定義和維護過程,還會介紹相關資料庫設計的基礎知識。不過,在設計過程中,要盡早地在概念和設計上認識到關系的存在。要想成功地設計和實作應用程式,它是必不可少的。
access的查詢功能是非常強大的,并且具有多面性。利用選擇查詢可以對自己表中的資料進行檢視、彙總和執行運算。利用操作查詢可以添加、更新及删除表中的資料。為了運作查詢,應該先從“導航”下拉清單中選擇“查詢”,然後輕按兩下要運作的查詢,或者右鍵單擊選擇要運作的查詢,然後單擊“打開”按鈕。在運作一個選擇查詢後,将出現一個資料表,其中包含了在查詢中指定的所有字段和與查詢規則相比對的所有記錄,如圖1.8所示。在運作了一個操作查詢後,access就會執行指定的行為,例如新表的建立及對現有表的資料追加這樣的行為。一般來說,這時的查詢結果的資料會得到更新,因為查詢的結果實際上是一個動态的記錄集,又被稱為動态集,它以表中的資料為基礎。
當存儲一個查詢時,實際上隻有其定義、布局或者說格式屬性以及資料表存儲在資料庫中。access為使用者設計查詢提供了直覺的、界面友好的工具。圖1.9顯示出了“查詢設計”視窗。要打開該視窗,應該在“導航”窗格下拉清單中選擇“查詢”,然後選中要修改的查詢,并且單擊滑鼠右鍵,在彈出的快捷菜單中選擇“設計”指令。圖1.9中給出的查詢是從采購訂單、采購訂單狀态和采購價格總計表中選擇資料(注意,查詢是可以基于表和其他查詢的)。它顯示了采購訂單表中的建立日期、供應商id、運費、稅款和其他幾個字段,也顯示了采購訂單狀态表中的狀态,還顯示了來自采購價格總計查詢中的價格彙總。第4章和第12章将專門講述查詢。因為查詢是絕大部分窗體和報表的基礎,是以查詢可以應用于資料庫中其他對象的過程,有關查詢的内容将遍布全書。
雖然可以在表的資料表視圖中輸入和修改資料,但是,這樣做并不能很好地控制使用者的行為,也不能很好地處理資料輸入過程,而這時就需要使用窗體了。access的窗體富有特色,而且靈活多樣、功能強大。
要想浏覽某個窗體,應該從“導航窗格”中選擇“窗體”。然後輕按兩下想要浏覽的窗體,或者右鍵單擊需要浏覽的窗體,在彈出的快捷菜單中選擇“打開”指令。圖1.10所示的是“窗體”視圖中的一個窗體,該窗體實際上包括4個窗體,即1個主窗體和3個子窗體。主窗體顯示的資訊來自訂單表,而子窗體顯示的資訊來自訂單明細表和訂單表。當使用者一個一個地檢視訂單時,與訂單相關聯的訂單明細會相應地顯示出來。如果使用者選擇了“發貨資訊”和“付款資訊”頁籤,就可以看見有關該訂單的額外資訊。
像表和查詢一樣,也可以在設計視圖中檢視窗體。為了檢視窗體的設計,應該從“導航窗格”中右鍵單擊該窗體,在彈出的快捷菜單中選擇“設計”指令。圖1.11所示的是設計視圖中的訂單明細窗體。請注意主窗體中的3個子窗體,第5章和第10章将專門講述窗體。在應用程式的一些例子中應用窗體時也會介紹它。
在窗體中可以輸入和編輯資訊,但是在有了報表之後,就可以用列印機列印報表資訊。圖1.12所示的是一個預覽模式的報表。要想預覽某個報表,應該從“導航窗格”中右鍵單擊該報表,然後在彈出的快捷菜單中選擇“列印預覽”指令,或者輕按兩下想要預覽的報表。請注意報表中的顔色及其他内容,比如說列标題的陰影區域。報表像窗體一樣,也是比較複雜的,不過它可以包含相當豐富的資訊。
也許使用者想象不到,也可以在設計視圖中浏覽報表,如圖1.11所示。要檢視某個報表的設計,應該在“導航窗格”中右鍵單擊該報表,然後在彈出的快捷菜單中選擇“設計視圖”指令。圖1.12所示的報表有好幾個節,從圖中可以看到報表頁眉、頁面頁眉、主體、頁面頁腳和報表頁腳,這裡隻給出了報表中許多節中的一些。就像窗體可以包含子窗體一樣,報表也可以包含子報表。第6章和第11章将專門讨論報表。當它用于應用程式的一些例子中時,使用者也會看到它的應用。
access中的宏與其他office産品中的宏是不一樣的。它們不能像在microsoft word或excel中那樣進行記錄,也不能像應用于應用程式的visual basic(vba)代碼那樣儲存。對于許多在鍵盤、菜單和工具欄上手工執行的大多數任務,都可以用access的宏來執行。宏可以提供條件,這樣使用者就可以在應用程式流中添加邏輯。
access 2007中可使用嵌入式宏。嵌入式宏不是在“導航窗格”中作為單獨的對象出現,而是作為它連接配接的對象的一部分。當修改一個嵌入式宏時,它不影響資料庫中的任何其他宏或對象。因為使用者可以阻止嵌入式宏執行某些潛在的不安全操作,是以它們是可以信任的(包括嵌入式宏的宏知識會在第7章中介紹)。
為了運作宏,應該在“導航窗格”中選擇“宏”指令,然後右鍵單擊想要運作的宏,在彈出的快捷菜單中選擇“運作”指令。這樣,access就會執行宏的操作。要想檢視宏的設計,應該在“導航窗格”中右鍵單擊該宏,然後在彈出的快捷菜單中選擇“設計視圖”指令。圖1.13中給出4列宏。利用第1列可以指定條件,宏内第2列的操作隻有在這個操作的條件為真時才會執行,第3列顯示了該行宏的參數,利用第4列可以給宏添加注釋。宏設計視窗的下半部分用來指定用于標明操作的參數。在圖1.13中,標明的操作是openform,它接收6個參數,即“窗體名稱”、“視圖”、“篩選名稱”、“where條件”、“資料模式”和“視窗模式”。
子產品(modules)是任何一個應用程式的基礎,利用它可以建立函數庫,并将其用于整個應用程式之中。子產品一般是由子程式和函數構成的。函數通常要傳回一個值,而子程式則不會。通過使用代碼子產品可以做以下工作:
執行錯誤處理;
聲明和使用變量;
周遊和操作記錄集;
調用windows api和其他庫函數;
建立和修改系統對象,如表和查詢;
執行事務處理;
完成許多宏沒有的功能;
測試和調試複雜的過程;
建立系統庫資料庫。
這些隻是使用子產品可以完成的一部分任務。為了檢視一個現有子產品的設計,應該在“導航窗格”中右鍵單擊想要修改的子產品,然後在彈出的快捷菜單中選擇“設計視圖”指令打開“子產品設計”視窗,如圖1.14所示。在圖1.14中的全局代碼子產品包含通用聲明節和5個函數。圖中可見的函數名為createinvoice。第8章和第13章将對子產品和vba進行專門的讨論,不過,這本書的各章均會對它們有所論述。