張未未
?
Access數(shù)據(jù)庫實現(xiàn)對象間數(shù)據(jù)“流動”的方法
張未未
摘 要:目前,Access課程的講授大多采取案例式或項目驅(qū)動式教學法。但在學生課后所完成的課程項目中,多數(shù)項目并不能真正實現(xiàn)數(shù)據(jù)庫應(yīng)用系統(tǒng)功能,依然是Access軟件中各種對象的羅列與展示,而不能將不同對象依據(jù)業(yè)務(wù)邏輯關(guān)系有機的組織起來。針對此問題,總結(jié)出了在Access對象間實現(xiàn)數(shù)據(jù)關(guān)聯(lián)與流動的方法。這些方法相對簡單,易于掌握,可以更好地幫助學生理解Access各對象的基本功能和相互關(guān)系,從而設(shè)計并實現(xiàn)出更具邏輯性、功能性和完整性的數(shù)據(jù)庫應(yīng)用系統(tǒng),達到進一步提高案例式和項目驅(qū)動式教學法教學效果的目的。
關(guān)鍵詞:數(shù)據(jù)關(guān)聯(lián);數(shù)據(jù)流動;Access;中醫(yī);案例設(shè)計;教學方法
ACCESS是一種關(guān)系型桌面數(shù)據(jù)庫管理系統(tǒng),由于其功能強大、操作簡單的特點,受到了廣大非計算機專業(yè)人士和數(shù)據(jù)庫初學者的青睞[1]。因此,許多高校都在非計算機專業(yè)的計算機基礎(chǔ)課程中加入了Access數(shù)據(jù)庫的教學內(nèi)容部分,以助于提高學生對于計算機化數(shù)據(jù)的認知能力,增強學生對于現(xiàn)實數(shù)據(jù)進行計算機化分解、保存和處理的應(yīng)用能力,為學生將來的專業(yè)發(fā)展提供幫助[2]。
由于Access軟件包含了表、查詢、窗體、報表、宏和模塊等眾多數(shù)據(jù)庫功能對象,不僅可以實現(xiàn)數(shù)據(jù)的保存和管理等數(shù)據(jù)庫基本功能,還可以實現(xiàn)界面開發(fā)、報表打印和邏輯程序設(shè)計等應(yīng)用系統(tǒng)的開發(fā)功能。因此在教學過程中,不但要求教師講清各數(shù)據(jù)庫對象的基本功能,還要將他們放置在一個完整的數(shù)據(jù)庫應(yīng)用系統(tǒng)案例背景下,講清不同對象在應(yīng)用系統(tǒng)中的地位和作用,更重要的是講清各對象之間相互配合的使用方法[3],這樣才能使學生對Access軟件功能及數(shù)據(jù)庫系統(tǒng)有更深入的理解與認識,并且在數(shù)據(jù)庫各對象功能的分與合之間掌握應(yīng)用系統(tǒng)的基本開發(fā)方法及應(yīng)用技能。本文以教學中所使用的Access中醫(yī)門診數(shù)據(jù)庫應(yīng)用系統(tǒng)為例,總結(jié)了以業(yè)務(wù)邏輯數(shù)據(jù)的“流動”方式來串聯(lián)各數(shù)據(jù)庫對象的幾種常用方法,并通過不同方法的使用,實現(xiàn)不同的系統(tǒng)應(yīng)用功能,以使Access教學案例的設(shè)計與實現(xiàn)更具邏輯性、功能性和完整性。
數(shù)據(jù)“流動”是一種形象的說法,是指Access數(shù)據(jù)庫各對象數(shù)據(jù)之間的相互引用而引起的數(shù)據(jù)邏輯走向。數(shù)據(jù)流動是以業(yè)務(wù)邏輯實現(xiàn)為導(dǎo)向的,是串聯(lián)Access數(shù)據(jù)庫各對象并使之相互配合使用的主線。例如:在Access中,表可以作為窗體的數(shù)據(jù)源,而窗體又可以作為表中數(shù)據(jù)顯示、添加和編輯的界面,在這其中通過數(shù)據(jù)將表和窗體兩種不同的數(shù)據(jù)庫對象串聯(lián)起來,數(shù)據(jù)在表和窗體間進行流動,從而使表和窗體達到相互配合使用的目的。類似的例子還有表和查詢之間,查詢和窗體之間,以及表和報表之間,查詢和報表之間等[4]。這些例子所反映的都是Access數(shù)據(jù)庫中對象間最基本的數(shù)據(jù)流動方法,體現(xiàn)的是表和查詢作為窗體和報表數(shù)據(jù)源的基本功能。與之相比較,還有一些更為復(fù)雜的實現(xiàn)數(shù)據(jù)在不同對象間流動的方法,例如,窗體和窗體間數(shù)據(jù)的引用,窗體和宏對象間的數(shù)據(jù)引用等,這些方法更能體現(xiàn)數(shù)據(jù)流動的業(yè)務(wù)邏輯性,更能使應(yīng)用系統(tǒng)具有完整的業(yè)務(wù)邏輯功能,也是利用Access軟件開發(fā)數(shù)據(jù)庫應(yīng)用系統(tǒng)的優(yōu)勢與關(guān)鍵所在。本文將對這些方法通過幾個典型實例進行重點闡述。
本文選取《Access2010中醫(yī)藥數(shù)據(jù)庫實例教程》一書中所使用的中醫(yī)門診數(shù)據(jù)庫作為示例數(shù)據(jù)庫,進行了中醫(yī)門診應(yīng)用系統(tǒng)部分主要功能的案例設(shè)計與實現(xiàn),用以在教學中講述實現(xiàn)各對象間數(shù)據(jù)“流動”的主要方法。該數(shù)據(jù)庫所包含的表對象及表間關(guān)系如圖1所示[5]:

圖1 中醫(yī)門診數(shù)據(jù)庫表結(jié)構(gòu)及表間關(guān)系
從數(shù)據(jù)庫結(jié)構(gòu)中不難看出,該數(shù)據(jù)庫包含了患者在中醫(yī)門診就診過程中涉及到的主要業(yè)務(wù)數(shù)據(jù),從不同數(shù)據(jù)表所代表的實體之間相互關(guān)系可以總結(jié)出就診的主要流程,如圖2所示:

圖2 中醫(yī)門診數(shù)據(jù)庫所表示的就診流程
利用該數(shù)據(jù)庫可以實現(xiàn)患者管理、醫(yī)生管理、藥品管理、掛號管理、診治診斷和處方開具等門診應(yīng)用系統(tǒng)的主要業(yè)務(wù)功能。除此之外,由于數(shù)據(jù)庫中還包含了“Tbl密碼”表和“Tbl登錄日志”表,因此可以實現(xiàn)簡單的身份驗證及安全性保護功能。由此設(shè)計實現(xiàn)的“中醫(yī)門診數(shù)據(jù)庫應(yīng)用系統(tǒng)”教學案例結(jié)構(gòu)如圖3所示:

圖3 中醫(yī)門診數(shù)據(jù)庫應(yīng)用系統(tǒng)結(jié)構(gòu)圖
下面將以掛號管理系統(tǒng)和登錄驗證系統(tǒng)為例闡述實現(xiàn)不同對象間數(shù)據(jù)“流動”的3種方法。
3.1 利用窗體控件值的引用實現(xiàn)數(shù)據(jù)流動
窗體中某一控件值的引用根據(jù)不同的應(yīng)用環(huán)境有不同的書寫方法,具體可分為3種:
①引用當前窗體中普通控件的值:“[控件名]”。
②引用當前窗體的子窗體中的普通控件的值:“[子窗體名].[Form]![控件名]”。
③引用其他窗體(不具有主子窗體關(guān)系的獨立窗體)中控件的值:“[Forms]![窗體名]![控件名]”[6]。
而方法②和③都可以用來實現(xiàn)數(shù)據(jù)在不同對象間的流動。這里以“掛號管理系統(tǒng)”的實現(xiàn)為例,如圖4所示:

圖4 “掛號管理系統(tǒng)”操作界面
為掛號管理系統(tǒng)的操作界面,分為“掛號管理窗體”和“掛號確認窗體”,其中“掛號管理窗體”為主/子窗體類型。
(1)就診次數(shù)的計算
對于某一患者的就診次數(shù)可以根據(jù)該患者的掛號次數(shù)來進行統(tǒng)計,利用計算機型文本框通過公式“=count([掛號ID])”便可得到相應(yīng)數(shù)據(jù)。但如果在“掛號管理窗體”的主窗體“就診次數(shù)”文本框中直接寫入該公式,則會出現(xiàn)“#錯誤”的錯誤提示。這主要是因為主窗體的數(shù)據(jù)源并不包括掛號信息數(shù)據(jù),從而導(dǎo)致公式中引用的“[掛號ID]”數(shù)據(jù)無法找到。而解決此問題的方法如圖5所示:

圖5 主/子窗體控件數(shù)據(jù)的引用
在子窗體的窗體頁腳中添加計算型文本框,完成掛號次數(shù)的統(tǒng)計,然后將計算的結(jié)果引用到主窗體中進行顯示,引用公式為“=[掛號子窗體].[Form]![就診次數(shù)]”,從而實現(xiàn)子窗體數(shù)據(jù)向主窗體數(shù)據(jù)的流動。
(2)掛號過程的實現(xiàn)
當在“掛號管理窗體”中完成患者選擇以及科室選擇時,便可以單擊“掛號”按鈕打開“掛號確認窗體”開始進行掛號操作。完成掛號的過程就是將“掛號ID”、“就診日期”、“患者ID”和“醫(yī)生ID”數(shù)據(jù)通過“掛號確認窗體”寫入“Tbl掛號”表的過程,因此“掛號確認窗體”是以“Tbl掛號”表為記錄源的,而窗體中4個文本框分別與“Tbl掛號”表中對應(yīng)字段相綁定。其中“掛號ID”在“Tbl掛號”表中被定義為自動編號數(shù)據(jù)類型,因此在掛號過程中會由系統(tǒng)自動分配,無需人為干預(yù);“就診日期”則可采用文本框的默認值(即當前日期),也可選擇新的日期。但對于患者ID和醫(yī)生ID的選擇就不是隨意的了。其中患者ID的選擇必須是“掛號管理窗體”中所指定的患者,這就涉及到兩個獨立窗體間控件數(shù)據(jù)的引用問題。如圖6所示:

圖6 獨立窗體間控件數(shù)據(jù)的引用
引用的方式是在“掛號確認窗體”中,將“患者ID”文本框的默認值屬性設(shè)置為“=[Forms]![掛號管理]![患者ID]”,即引用“掛號管理窗體”中“患者ID”文本框的值,從而實現(xiàn)數(shù)據(jù)在兩個獨立窗體之間的流動,而這種數(shù)據(jù)的引用是符合業(yè)務(wù)邏輯的。
3.2 利用參數(shù)查詢實現(xiàn)數(shù)據(jù)流動
如3.1節(jié)所述,依據(jù)窗體間關(guān)系的不同可以選擇不同的控件值引用方式來實現(xiàn)數(shù)據(jù)在不同窗體間的流動。但有些數(shù)據(jù)的流動是要符合一些復(fù)雜的業(yè)務(wù)邏輯需求的,并不是簡單的值的引用。例如在“掛號確認窗體”中“醫(yī)生ID”的選擇就要受到“掛號管理窗體”中所選科室的限制,即通過所選擇的科室需要先找到科室下對應(yīng)的所有醫(yī)生,而這些醫(yī)生才是可以選取的范圍。由于涉及到查詢問題,自然而然會想到利用查詢對象來完成醫(yī)生范圍的查找。
如圖7所示:

圖7 查詢實現(xiàn)窗體間數(shù)據(jù)的傳遞
“科室醫(yī)生查詢”作為參數(shù)查詢其參數(shù)值來自于“掛號管理窗體”的“科室”組合框,查詢中對于窗體控件值的引用方法為“[Forms]![窗體名]![控件名]”,與獨立窗體間控制值引用方法相同,這樣的引用實現(xiàn)了數(shù)據(jù)由窗體向查詢的流動。而查詢得到的結(jié)果將作為“掛號確認窗體”中“醫(yī)生ID”組合框的數(shù)據(jù)來源,從而完成查詢數(shù)據(jù)向窗體的流動。這樣就通過一個中間的查詢過程,為兩個窗體之間的數(shù)據(jù)傳遞架起了一座橋梁,在數(shù)據(jù)流動的基礎(chǔ)上完成了業(yè)務(wù)邏輯的功能要求[7]。
在這個案例中,掛號單的打印也是利用參數(shù)查詢來實現(xiàn)數(shù)據(jù)由窗體向報表的傳遞的。如圖8所示:

圖8 查詢實現(xiàn)窗體與報表間數(shù)據(jù)的傳遞
當前“掛號ID”由“掛號確認窗體”傳遞給“掛號單查詢”,而該查詢的結(jié)果將作為“掛號單報表”的數(shù)據(jù)源被打印出來,即當前“掛號ID”所對應(yīng)的掛號單,而不會打印出所有的掛號單。
3.3 利用宏實現(xiàn)數(shù)據(jù)流動
宏是Access中除模塊對象外功能最靈活的一種對象,特別是對于并不掌握任何程序設(shè)計語言的使用者來說,它可以在不編寫代碼的情況下,實現(xiàn)一些編程語言的復(fù)雜功能。而且宏可以對表、查詢、窗體和報表對象進行控制與交互,從而將這些對象按照業(yè)務(wù)邏輯有效地組織起來。因此利用宏對象中所提供的豐富操作命令,也是實現(xiàn)Access不同對象間數(shù)據(jù)流動的重要方法。
以“登錄驗證系統(tǒng)”為例,如圖9所示:

圖9 “登錄驗證系統(tǒng)”操作界面
可以利用宏來完成“用戶名”和“密碼”的合法性與正確性驗證功能。
具體實現(xiàn)時,可以為“登錄”按鈕添加嵌入宏,也可以新建獨立的帶有條件判斷的宏對象,然后與“登錄”按鈕的單擊事件進行綁定[8]。宏代碼如圖10所示:

圖10 登錄驗證過程宏代碼
注釋(1):正確的登錄用戶名和密碼已保存在“Tbl密碼”表的“醫(yī)生ID”字段和“密碼”字段中。因此驗證的過程就是通過“Tbl密碼”表進行比對的過程。
注釋(2):“DLookUp”函數(shù)的功能是從指定記錄集中獲取符合條件的特定字段的值,類似于SQL語言中Select語句所實現(xiàn)的功能。“Forms![登錄驗證]![用戶名]”和“[Forms]![登錄驗證]![密碼]”表示從“登錄驗證”窗體的“用戶名”文本框和“密碼”文本框中獲取所輸入的值。如果用戶名或密碼驗證錯誤后,都會通過“MessageBox”操作命令彈出錯誤提示對話框。
注釋(3):當用戶名和密碼驗證正確后,將關(guān)閉“登錄驗證”窗體,打開“功能選擇”窗體從而進入系統(tǒng),以及完成登錄日志寫入和權(quán)限分配等功能。
從宏代碼中不難看出,驗證過程就是通過宏分別對表和窗體對象中的數(shù)據(jù)進行取用,并進行對比的過程。因此宏實現(xiàn)了不同對象間數(shù)據(jù)的關(guān)聯(lián)功能,達到了數(shù)據(jù)流動的目的。
3.4 各方法小結(jié)比較
上述介紹了3種實現(xiàn)數(shù)據(jù)在不同對象間“流動”的方法,比較而言,第一種方法更適合在窗體與窗體之間、窗體與查詢之間以及報表與窗體之間通過引用的方式達到數(shù)據(jù)流動的目的,實現(xiàn)起來最為簡單;第二種方法,以查詢結(jié)果作為不同對象之間數(shù)據(jù)傳遞的工具,通常會涉及3個或3個以上對象間的數(shù)據(jù)流動,這種方法實現(xiàn)的關(guān)鍵在于參數(shù)查詢的設(shè)計;第三種方法,以宏操作來控制多個對象間數(shù)據(jù)的相互關(guān)聯(lián),并利用條件宏使數(shù)據(jù)流動具有更多的分支選擇,從而實現(xiàn)更為豐富的業(yè)務(wù)邏輯功能。除了以上3種方法之外,更為復(fù)雜的數(shù)據(jù)關(guān)聯(lián)功能就需要通過VBA以及ADO編程來實現(xiàn)了[9],但這種方法對于非計算機專業(yè)的學生來說掌握起來難度較大,這里不再討論。
目前,各院校Access課程的講授大多采取案例式或項目驅(qū)動式教學法[10],目的是在教學過程中能理論聯(lián)系實際,突出課程的應(yīng)用性和實用性,同時使學生基本掌握利用Access軟件開發(fā)小型數(shù)據(jù)庫應(yīng)用系統(tǒng)的能力。筆者在綜合分析了許多學生所完成的課程項目后發(fā)現(xiàn),能真正實現(xiàn)數(shù)據(jù)庫應(yīng)用系統(tǒng)功能的項目并不多。大多數(shù)項目依然是Access軟件中各種功能對象的羅列與展示,而不能將不同對象依據(jù)業(yè)務(wù)邏輯有機的組織起來。而究其原因主要是因為學生沒有很好地掌握不同對象間依靠數(shù)據(jù)相互關(guān)聯(lián),實現(xiàn)數(shù)據(jù)流動的方法。因此,本文通過列舉中醫(yī)門診應(yīng)用系統(tǒng)中部分功能的實現(xiàn)過程,總結(jié)了Access對象間實現(xiàn)數(shù)據(jù)流動常用的3種方法。這3種方法相對簡單,易于掌握,比較適合非計算機專業(yè)學生學習。同時,也可以用來幫助Access初學者設(shè)計并實現(xiàn)更具邏輯性、功能性和完整性的數(shù)據(jù)庫應(yīng)用系統(tǒng)。
參考文獻
[1] 梁華,陳振,張波.案例驅(qū)動的ACCESS程序設(shè)計教學改革[J].計算機教育,2011,(6):26-29.
[2] 王蘋,翟興.面向計算思維的中醫(yī)院校計算機基礎(chǔ)課程的教學改革探索[J].中國醫(yī)藥導(dǎo)報,2015, 12(16):69-72.
[3] 王娟.Access數(shù)據(jù)庫教學中任務(wù)的設(shè)計[J].信息技術(shù),2010,(7):168-170.
[4] 朱名勛.ACCESS數(shù)據(jù)庫案例開發(fā)教學改革研究[J].科技視界,2014,(20):73-74.
[5] 馬星光,劉仁權(quán).Access2010中醫(yī)藥數(shù)據(jù)庫實例教程[M].北京:中國中醫(yī)藥出版社,2012.
[6] 敖培,李延強,趙四方,等.面向計算機等級考試的ACCESS數(shù)據(jù)庫綜合教學案例設(shè)計[J].生物技術(shù)世界,2015,(1):160-161.
[7] 邢為民,董衛(wèi)軍,索琦.數(shù)據(jù)庫原理與實踐(Access 2013)[M].第2版.北京:電子工業(yè)出版社,2015:250-252.
[8] 張未未,郭鳳英,韓愛慶.基于多種類型宏的Access數(shù)據(jù)庫登錄身份驗證系統(tǒng)[J].計算機與現(xiàn)代化,2015,(5):121-126.
[9] 陶佳琦,翁正新.VB訪問Access數(shù)據(jù)庫的研究[J].微型電腦應(yīng)用,2014,30(10):14-16.
[10] 陳坤健,李海燕.“計算機基礎(chǔ)”項目化教學模式探索[J].中國電化教育,2012, (3):116-119.
Realization Method of Data Flow Among Objects in Access Database
Zhang Weiwei
(Information Center, Beijing University of Chinese Medicine, Beijing 100029, China)
Abstract:At present, case or project driven teaching methods are mostly used for Access course. But most of the course projects that students accomplished after class cannot really realize database application system function. All kinds of objects are listed and displayed in Access software, not organized according to the business logic relationship. This paper concludes the methods to realize data relation and data flow among objects in Access for this problem. These methods are relatively simple and easy to master. It can better help students understand the basic functions and relationships of each object in Access, so as to design and implement more logical, functional and complete database application system, which can further improve the teaching effect of case and project driven teaching methods.
Key words:Data Relation; Data Flow; Access; Chinese Medicine; Case Designing; Teaching Method
收稿日期:(2015.09.10)
作者簡介:張未未(1979-),男,北京中醫(yī)藥大學,信息中心,講師,碩士,研究方向:數(shù)據(jù)庫應(yīng)用技術(shù)、辦公自動化、計算機教育,北京,100029
文章編號:1007-757X(2016)01-0073-04
中圖分類號:G642
文獻標志碼:A