趙長君
摘 要: 本文從xBase用戶的角度對比分析了ACCESS與xBase的差異,并進(jìn)一步闡述了ACCESS中的數(shù)據(jù)庫對象及編程方法。
關(guān)鍵詞: ACCESS Foxpro 數(shù)據(jù)庫
微軟公司有兩個流行的桌面數(shù)據(jù)庫開發(fā)工具,一個是其自行研制開發(fā)的基于WINDOWS環(huán)境的ACCESS,另一個是其兼并FOX公司而得到的Foxpro。dBASE、FoxBase、Foxpro等統(tǒng)稱為xBase,在我國擁有大量的用戶,隨著微軟公司的ACCESS在國際桌面數(shù)據(jù)庫市場上的迅速崛起及中文OFFICE在我國的深入普及,越來越多的用戶開始使用MSACCESS(中文OFFICE97的組件之一),很多xBase用戶開始轉(zhuǎn)向或使用微軟公司的ACCESS。由于ACCESS的文件組織、數(shù)據(jù)類型、編程語言、編程方法等與xBase有較大的差異,致使不少xBase用戶在學(xué)習(xí)ACCESS時感到困惑,有些用戶甚至僅僅是因為從ACCESS中找不到與xBase相對應(yīng)的命令而對ACCESS大加抨擊,從而放棄ACCESS的學(xué)習(xí)。與xBase相比,ACCESS有很多先進(jìn)特性,xBase用戶一旦掌握ACCESS的基本概念與編程方法,改變“xBase的思維方式”,就能用已有的xBase知識很快地掌握ACCESS。
本文從多方面對xBase和ACCESS進(jìn)行對比分析,通過對比使傳統(tǒng)的xBASE用戶更好地理解與掌握ACCESS。我們就ACCESS與xBase的主要差異做以下討論。
從大的方面說,ACCESS的使用與編程方法同Visual Foxpro3.0及Visual Foxpro5.0的使用與編程方法非常相似,熟悉Visual Foxpro3.0及以上版本的用戶會非常容易地學(xué)會ACCESS。沒有使用過Visual Foxpro的傳統(tǒng)xBase用戶在開始學(xué)習(xí)ACCESS或Visual Foxpro時,需要從思想上做較大的轉(zhuǎn)變,這是由于ACCESS及Visual Foxpro都是采用基于事件處理和面向?qū)ο蟮某绦蛟O(shè)計方法,下文中所談到的xBase指的是Visual Foxpro以下的版本。
文件組織不同:用xBase建立的系統(tǒng)通常包含很多不同類型的文件,每一個表、程序、報表、查詢、索引、菜單等內(nèi)容都是以文件的方式存放在磁盤上,可以通過項目文件對其他類型的文件進(jìn)行組織與管理。ACCESS對數(shù)據(jù)庫的組織同大型后臺數(shù)據(jù)庫系統(tǒng)(如SQL SERVER)的數(shù)據(jù)庫組織非常相似,不同數(shù)據(jù)或程序元素稱為對象,所有的對象都存儲在一個物理文件中,而這個物理文件被稱為數(shù)據(jù)庫。
編程語言不同:在傳統(tǒng)的xBase 中,表、記錄等數(shù)據(jù)操縱或是界面的設(shè)計采用的是xBase命令進(jìn)行編程,高版本的Foxpro中引入了部分SQL語句(如SQL-SELECT),主要用來完成數(shù)據(jù)的查詢;ACCESS中對表、記錄等數(shù)據(jù)操作主要通過SQL實現(xiàn),程序及事件代碼的編寫采用Visual Basic for Application(低版本的ACCESS用access basic編程),簡單的程序設(shè)計用宏,Visual Basic是更為通用的編程語言。絕大多數(shù)計算機(jī)編程人員都可以用MS Office Visual Basic進(jìn)行編程。
編程方法不同:xBase中采用面向過程的程序設(shè)計方法,即使是一個用戶輸入界面的設(shè)計,也需要較長的一段xBase程序;ACCESS中采用面向?qū)ο蟮某绦蛟O(shè)計方法,數(shù)據(jù)處理功能的完成通過改變對象的屬性或執(zhí)行對象方法實現(xiàn),程序段通常構(gòu)成事件過程、對象方法、函數(shù),ACCESS中較少會出現(xiàn)連續(xù)的長程序。此外,ACCESS中具有字段級、記錄級、表級數(shù)據(jù)引用完整性數(shù)據(jù)約束性在ACCESS中,不需要用專門的命令或操作來建立和維護(hù)索引文件,按某字段建立索引只需在該字段的索引屬性中選擇特定的索引類型即可,索引的建立維護(hù)和使用都是通過ACCESS系統(tǒng)完成的,在xBase中諸如Index on、set index to等操作不必有用戶關(guān)心。
根據(jù)需要可在ACCESS的數(shù)據(jù)庫中創(chuàng)建多個表,表與表之間能夠建立所謂的參照完整性關(guān)系,如同在xBase中用set relation、set skip命令創(chuàng)建的多對一和一對多關(guān)系一樣,ACCESS只需圖形界面操作就可完成一對多和多對一關(guān)系的建立,并且通過連鎖刪除與連鎖更新來確保相關(guān)表中記錄之間關(guān)系的有效性,不能意外地刪除或更改相關(guān)數(shù)據(jù)。
使用ACCESS表與使用xBase的DBF文件的一個重要差別是所謂“打開”的概念不同,xBase中用USE命令打開DBF文件,實質(zhì)是在內(nèi)存建立數(shù)據(jù)緩沖區(qū)提供數(shù)據(jù)通道,若想查看DBF文件中的數(shù)據(jù),需要再使用BROWSE或其他命令,ACCESS中打開一個表相當(dāng)于xBase中USE+BEOWSE命令,對表中的數(shù)據(jù)進(jìn)行處理而不顯示表中的記錄,在ACCESS中通常有兩種做法:一種是用SQL語句更新或改變數(shù)據(jù),無須先打開表后執(zhí)行SQL語句;另一種是用VBA編程通過數(shù)據(jù)訪問對象(DAO)來操縱表,通過DAO操縱表時,要打開所謂的記錄集(Recordset),xBase中的USE命令與VBA(Visual BASIC for Application)中的Openrecordset方法的作用相類似。
查詢(Query):ACCESS中的查詢本質(zhì)上就是SQL的數(shù)據(jù)操縱語,利用查詢可以通過不同的方法來查看、更改及分析數(shù)據(jù),相當(dāng)于Foxpro中的SQL SELECT語句及Foxpro的查詢。在ACCESS中,對表、記錄、字段的多數(shù)操作都可通過查詢來完成。例如:在xBase中使用很多的REPLACE...WITH...命令在ACCESS中應(yīng)當(dāng)用一個動作查詢來完成(SQL UPDATE)。在ACCESS中建立和使用查詢基本上等同于在后臺數(shù)據(jù)庫(如:ORACLE、SQL SERVER)中使用SQL命令,Microsoft Jet數(shù)據(jù)庫引擎的SQL符合ANSI SQL,ACCESS 的SQL實現(xiàn)了幾乎所有的ANSI SQL功能,有些SQL命令在ANSI SQL中沒有。
我們從編程方法、數(shù)據(jù)查詢、文件組織等方面了解了ACCESS與xBase的差異,結(jié)合通用的MS Office Visual Basic編程語言,相信從xBase入手學(xué)習(xí)MS Office VisualACCESS并非難事。