摘要:本文從xBase 用戶的角度對(duì)比分析了ACCESS 與xBase 的差異并進(jìn)一步闡述了ACCESS 中的數(shù)據(jù)庫(kù)對(duì)象及編程方法。
---- 微軟公司有兩個(gè)流行的桌面數(shù)據(jù)庫(kù)開(kāi)發(fā)工具,一個(gè)是其自行研制開(kāi)發(fā)的基于WINDOWS 環(huán)境的ACCESS,另一個(gè)是其兼并FOX 公司而得到的Foxpro。通常將dBASE、FoxBase、Foxpro 等統(tǒng)稱為xBase 在我國(guó)擁有大量的用戶,隨著微軟公司的ACCESS 在國(guó)際桌面數(shù)據(jù)庫(kù)市場(chǎng)上的迅速崛起及中文OFFICE 在我國(guó)的深入普及,越來(lái)越多的用戶開(kāi)始使用MSACCESS(中文OFFICE97 的組件之一),很多xBase 用戶也開(kāi)始轉(zhuǎn)向或使用微軟公司的ACCESS。由于ACCESS的文件組織、數(shù)據(jù)類型、編程語(yǔ)言、編程方法等 與xBase 有較大的差異,致使不少xBase 用戶在學(xué)習(xí)ACCESS 時(shí)感到困惑,有些用戶甚至僅僅是因?yàn)閺腁CCESS 中找不到與xBase 相對(duì)應(yīng)的命令而對(duì)ACCESS大加抨擊,從而放棄ACCESS 的學(xué)習(xí)。與xBase 相比, ACCESS 有很多先進(jìn)特性,xBase 用戶一旦你掌握ACCESS 的基本概念與編程方法、改變“xBase 的思維方式”,就能利用已有的xBase 知識(shí)能夠很快地掌握ACCESS。本文從多方面對(duì)xBase 和ACCESS 進(jìn)行對(duì)比分析,通過(guò)對(duì)比使傳統(tǒng)的xBASE 用戶更好地理解與掌握ACCESS。
---- 壹、ACCESS 與xBase 的主要差異:
---- 從大的方面說(shuō),ACCESS 的使用與編程方法 同Visual Foxpro3.0 及Visual Foxpro5.0 的使用與編程方法非常相似,熟悉Visual Foxpro3.0 及以上版本的用 戶會(huì)非常容易地學(xué)會(huì)ACCESS。沒(méi)有使用過(guò)Visual Foxpro 的傳統(tǒng)xBase 用戶在開(kāi)始學(xué)習(xí)ACCESS 或Visual Foxpro 時(shí),需要從思想上做較大的轉(zhuǎn)變,這是由于ACCESS 及Visual Foxpro 都是采用基于事件處理和面 向?qū)ο蟮某绦蛟O(shè)計(jì)方法。下文中所談到的xBase 指的是Visual Foxpro 以下的版本。
---- 文件組織不同:用xBase 建立的系統(tǒng)通常包含很多不同類型的文件,每一個(gè)表、程序、報(bào)表、查詢、索引、菜單等內(nèi)容都是文件的方式存放在磁盤上,可以通過(guò)項(xiàng)目文件對(duì)其他類型的文件進(jìn)行組織與管理;ACCESS 對(duì)數(shù)據(jù)庫(kù)的組織同大型后臺(tái)數(shù)據(jù)庫(kù)系統(tǒng)(如SQL SERVER)的數(shù)據(jù)庫(kù)組織非常相似,不同數(shù)據(jù)或程序元素稱為對(duì)象,所有的 對(duì)象都存儲(chǔ)在一個(gè)物理文件中,而這個(gè)物理文件被稱為數(shù)據(jù)庫(kù)。
---- 編程語(yǔ)言不同:在傳統(tǒng)的xBase 中,表、記錄等數(shù)據(jù)操縱或是界面的設(shè)計(jì)采用的是xBase 命令進(jìn)行編程,高版本的Foxpro 中引入了部分SQL 語(yǔ)句(如SQL-SELECT)主要用來(lái)完成數(shù)據(jù)的查詢;ACCESS 中對(duì)表、記錄等數(shù)據(jù)操作主要通過(guò)SQL 實(shí)現(xiàn),程序及事件代碼的編寫采用Visual Basic for Application(低版本的ACCESS 用access basic 編程),簡(jiǎn)單的程序設(shè)計(jì)用宏。Visual Basic 是更為通用的編程語(yǔ)言,MS Office 的組件都可以用Visual Basic 進(jìn)行編程。
---- 編程方法不同:xBase 中采用面向過(guò)程的程序設(shè)計(jì)方法,即使是一個(gè)用戶輸入界面的設(shè)計(jì)也需要較長(zhǎng)的一段xBase 程序;ACCESS 中采用面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,數(shù)據(jù)處理功能的完成通過(guò)改變對(duì)象的屬性或執(zhí)行對(duì)象方法實(shí)現(xiàn),程序段通常構(gòu)成事件過(guò)程、對(duì)象方法、函數(shù),ACCESS 中較少會(huì)出現(xiàn)連續(xù)的長(zhǎng)程序。此外,ACCESS 中具有字段級(jí)、記錄級(jí)、表級(jí)數(shù)據(jù)引用完整性數(shù)據(jù)約束功 能,事務(wù)處理功能和完備的安全機(jī)制。
---- 貳、ACCESS 中的數(shù)據(jù)庫(kù)對(duì)象
---- ACCESS 的數(shù)據(jù)庫(kù)窗口中包含六類不同的數(shù)據(jù)庫(kù)對(duì)象,它們分別是表(Table)、查詢(Query)、窗體(Form)、報(bào)表(Report)、宏(Macro) 和模塊(Module)。ACCESS的數(shù)據(jù)庫(kù)如同一個(gè)容器一樣包含了全部的數(shù)據(jù) 庫(kù)對(duì)象,與Foxpro 的項(xiàng)目文件不同ACCESS 將這些對(duì) 象存儲(chǔ)在一個(gè)文件中。創(chuàng)建數(shù)據(jù)庫(kù)對(duì)象只需單擊數(shù)據(jù)庫(kù)窗口中的‘新建’按鈕,修改已有對(duì)象選擇對(duì)象然后單擊‘設(shè)計(jì)’按鈕。
---- ACCESS 中的表:ACCESS 中的表等同于xBase 中的DBF文件或Visual Foxpro 中的數(shù)據(jù)庫(kù)表。ACCESS 的表 與xBase 的DBF 文件比有如下新特點(diǎn):
字段名可多達(dá)64 位字符 可以設(shè)置字段的輸入掩碼、缺省值、值范圍。相當(dāng)與xBase 中使用@?ET 語(yǔ)句中的PICTURE、DEFAULT、RANGE 等子句的作用?梢栽O(shè)置字段與字段間的關(guān)系(通過(guò)設(shè)置表 的屬性)
---- 在ACCESS 中,不需要用專門的命令或操作來(lái)建立和維護(hù)索引文件,按某字段建立索引只需在該字段的索引屬性中選擇特定的索引類型即可,索引的建立維護(hù)和使用都是通過(guò)ACCESS 系統(tǒng)來(lái)完成的,在xBase 中諸:Index on、set index to 等操作不必有用戶關(guān)心。
---- 根據(jù)需要可在ACCESS 的數(shù)據(jù)庫(kù)中創(chuàng)建多個(gè)表,表與表之間能夠建立所謂的參照完整性關(guān)系,如同在xBase 中用set relation 、set skip 命令創(chuàng)建的多對(duì)一和一對(duì)多關(guān)系一樣,ACCESS 只需圖形界面操作就可完成一對(duì)多和多對(duì)一關(guān)系的建立并且通過(guò)連鎖刪除與連鎖更新來(lái)確保相關(guān)表中記錄之間關(guān)系的有效性,并且不能意外地刪除或更改相關(guān)數(shù)據(jù)。
---- 使用ACCESS 表與使用xBase 的DBF 文件的一個(gè)重要 差別是所謂“打開(kāi)”的概念不同,xBase 中用USE 命令打開(kāi)DBF 文件實(shí)質(zhì)是在內(nèi)存建立數(shù)據(jù)緩沖區(qū)提供數(shù)據(jù)通道,若想查看DBF 文件中的數(shù)據(jù)需要再使用BROWSE 或其他命令,ACCESS 中打開(kāi)一個(gè)表相當(dāng)于xBase 中USE + BEOWSE 命令。對(duì)表中的數(shù)據(jù)進(jìn)行處理而不顯示表中的記錄,在ACCESS 中通常有兩中做法,一種是用SQL 語(yǔ)句更新或改變數(shù)據(jù),無(wú)須先打開(kāi)表后執(zhí)行SQL 語(yǔ)句;另一種是用VBA 編程通過(guò)數(shù)據(jù)訪問(wèn)對(duì)象(DAO)來(lái)操縱表,通過(guò)DAO 操縱表時(shí),要打開(kāi)所謂的記錄集(Recordset),xBase 中的USE 命令與VBA(Visual BASIC for Application)中的Openrecordset方法的作用象類似。
---- 查詢(Query):ACCESS 中的查詢本質(zhì)上就是SQL 的數(shù)據(jù)操縱語(yǔ),利用查詢可以通過(guò)不同的方法來(lái)查看、更改以及分析數(shù)據(jù),相當(dāng)于Foxpro 中的SQL SELECT 語(yǔ)句及Foxpro 的查詢。在ACCESS 中,對(duì)表、記錄、字段的多數(shù)操作都可通過(guò)查詢來(lái)完成,例如:在xBase 中使用很多的REPLACE ... WITH ... 命令在ACCESS 中應(yīng)當(dāng)用一個(gè)動(dòng)作查詢來(lái)完成(SQL UPDATE )。在ACCESS 中建立和使用查詢基本上等同于在后臺(tái)數(shù)據(jù)庫(kù)(如:ORACLE、SQL SERVER)中使用SQL 命令,Microsoft Jet 數(shù)據(jù)庫(kù)引擎的SQL 符合ANSI SQL,ACCESS 的SQL 實(shí)現(xiàn)了幾乎所有的ANSI SQL 功能,有些SQL 命令 在ANSI SQL 中所沒(méi)有的。
---- ACCESS 中選擇查詢比Foxpro 中的SQL SELECT 命令使用起來(lái)更為方便靈活,在ACCESS 中,選擇查詢?cè)谑褂玫韧诒,可以在表與查詢間建立關(guān)系,查詢也可象表一樣作為窗體和報(bào)表的記錄來(lái)源,利用查詢還能再建查詢。
---- 窗體(Form):窗體是利用ACCESS 開(kāi)發(fā)出系統(tǒng)的主要交互界面,在有些書刊上又把窗體叫做表單,窗體相當(dāng)于xBase 中利用@?AY?ET 命令編寫用于實(shí)現(xiàn)所謂全屏幕編輯功能的程序,窗體又近似于Foxpro 中的屏幕文件(.SCX)。在ACCESS 中建立人機(jī)交互界面如同在Foxpro 中建立屏幕文件需要?jiǎng)?chuàng)建窗體對(duì)象。
---- 報(bào)表(Report):ACCESS 的報(bào)表對(duì)象最接近xBase 中的報(bào)表文件(FRX、FRM)。在xBase 中建立報(bào)表文件之 后需要用REPORT FORM ... 命令預(yù)覽或打印報(bào)表,ACCESS 中報(bào)表對(duì)象建立之后可直接在數(shù)據(jù)庫(kù)窗口中單擊‘打開(kāi)’按鈕預(yù)覽報(bào)表或是在宏或模塊中用OPENREPORT 命令打印或預(yù)覽報(bào)表。
---- 宏(Macro):宏是指一個(gè)或多個(gè)操作的集合,其中每個(gè)操作實(shí)現(xiàn)特定的功能,例如打開(kāi)某個(gè)窗體或打印某個(gè)報(bào)表。宏可以使某些普通的任務(wù)自動(dòng)完成。例如,可設(shè)置某個(gè)宏,在用戶單擊某個(gè)命令按鈕時(shí)運(yùn)行該宏,以打印某個(gè)報(bào)表。在xBase 中沒(méi)有特定的文件類型與ACCESS 的宏相對(duì)應(yīng),在ACCESS97 及以下的版本中,利用宏來(lái)創(chuàng)建用 戶自定義菜單。 ---- 模塊(module):ACCESS 的模塊相當(dāng)于xBase 中的程序文件和過(guò)程文件。每一個(gè)模塊中可以包含一個(gè)或多個(gè)子程序、函數(shù)或?qū)傩,子程序相?dāng)于Base 中的過(guò)程(Procedure)。
---- 壹、ACCESS 中用戶界面設(shè)計(jì) ---- 在信息系統(tǒng)的開(kāi)發(fā)中,用戶界面的設(shè)計(jì)占有較大的工作量。ACCESS 中的用戶界面設(shè)計(jì)比xBase 中的用戶界面設(shè)計(jì)大大簡(jiǎn)化,早期的xBase 版本中用戶界面的設(shè)計(jì)需要確定屏幕上顯示文字的坐標(biāo)位置然后用戶@ ?ay?et 命令書寫程序;Foxpro 中,用戶界面的設(shè)計(jì)有了較大的改進(jìn),設(shè)計(jì)用戶界面時(shí),先建立屏幕文件(.SCX),然后用生成器生成用戶界面的程序文件(.SPR)。ACCESS 中建立用戶界面即建立數(shù)據(jù)庫(kù)窗體對(duì)象(Form),F(xiàn)orm 的建立與設(shè)計(jì)和多數(shù)基于WINDOWS 的開(kāi)發(fā)工具(如:Visual BASIC)的界面設(shè)計(jì)一致,與xBase 的用戶界面設(shè)計(jì)有較大的差異,xBase 用戶應(yīng)從以下幾個(gè)方面理解和把握ACCESS 的窗體設(shè)計(jì):
---- 1. 理解窗體與程序
---- Foxpro 中,建立用戶交互界面需先建立屏幕文件,屏幕文件中又包含若干代碼片段(CodeSnippet),利用生成器根據(jù)屏幕文件生成擴(kuò)展名為SPR 的程序文件,代碼片段被包含在程序文件之中,執(zhí)行程序文件即出現(xiàn)交互式用戶界面。ACCESS 中,窗體相當(dāng)于屏幕文件,窗體有三種不同的視圖(VIEW)-- 設(shè)計(jì)視圖、窗體視圖和數(shù)據(jù)表視圖。設(shè)計(jì)視圖模式用于設(shè)計(jì)或修改窗體,窗體設(shè)計(jì)好之后就可以以窗體視圖或數(shù)據(jù)表視圖打開(kāi)窗體即為用戶操作使用的交互界面。ACCESS 中不需要將窗體生成程序代碼,窗體建好之后直接打開(kāi)窗體或切換到窗體視圖即可。Foxpro 中另人頭疼的事情之一是調(diào)試屏幕時(shí)反復(fù)修改屏 幕、生成程序代碼、執(zhí)行程序觀看運(yùn)行效果,對(duì)屏幕文件的任何微小改動(dòng)都必須通過(guò)生成程序、執(zhí)行程序才能看到結(jié)果,ACCESS 中無(wú)須生成過(guò)程,只需在設(shè)計(jì)視圖與窗體視圖間切換即可知道窗體修改后的效果。
---- 窗體模塊與事件過(guò)程:在Foxpro 中,@?ET 、READ、ACTIVATE 等命令中都可帶有許多子句,如:最為常用的VALID 子句,子句通常跟一個(gè)用戶自定義函數(shù),在用屏幕生成器建立屏幕文件時(shí),子句后的自定義函數(shù)的內(nèi)容可直接輸入,這些子句用到的自定義函數(shù)程序段被稱為代碼片段(CodeSnippet)。ACCESS 中,與Foxpro 中代碼片段相對(duì)應(yīng)的程序段是事件過(guò)程(Event Procedure),所謂事件過(guò)程是指一種自動(dòng)執(zhí)行的過(guò)程,用來(lái)對(duì)用戶或程序代碼啟動(dòng)的事件或系統(tǒng)觸發(fā)的事件作出響應(yīng)。例如:在Foxpro 中若想在某一字段的值輸入或修改之后執(zhí)行某一段程序,則需要通過(guò)輸入代碼片段建立VALID 子句及VALID 子句所需要的自定義函數(shù);在ACCESS 中,某控件(CONTROL)的值在輸入或修改之后欲執(zhí)行某段程序需在該控件的AfterUpdate 事件屬性的事件過(guò)程中輸入程序內(nèi)容即可,當(dāng)控件的值發(fā)生變化之后發(fā)生After Update 事件系統(tǒng)就自動(dòng)執(zhí)行該事件對(duì)應(yīng)的事件過(guò)程。ACCESS 中每一個(gè)窗體都有與該窗體相關(guān)聯(lián)的窗體模塊,窗體模塊中存放了所有該窗體的事件過(guò)程和該窗體的公用子程序和函數(shù),窗體保存時(shí)該窗體模塊自動(dòng)保存。
---- 2. 理解記錄來(lái)源(Record Source)
---- 在Foxpro 中,創(chuàng)建屏幕文件之前應(yīng)先打開(kāi)相關(guān)的表,建立表與表之間的關(guān)系,屏幕文件建立之后在保存時(shí)系統(tǒng)會(huì)詢問(wèn)是否保存環(huán)境(Environment),若保存環(huán)境則系統(tǒng)保存了打開(kāi)的表,生成程序代碼中包含有打開(kāi)和關(guān)閉表的命令。ACCESS 中窗體的“數(shù)據(jù)環(huán)境”被稱為記錄來(lái)源(Record Source),記錄源可以是表、查詢或SQL 的SELECT 語(yǔ)句。ACCESS 的記錄來(lái)源比Foxpro 的“數(shù)據(jù)環(huán)境”提供了更大的靈活性,當(dāng)ACCESS 窗體的記錄來(lái)源是相互?關(guān)聯(lián)”的若干表時(shí),ACCESS 中通過(guò)建立查詢或是使用SQL SELECT 語(yǔ)句作為記錄來(lái)源,而查詢與SELECT語(yǔ)句指定了相關(guān)的表及表間關(guān)系。
---- 建立Foxpro 的屏幕文件需先打開(kāi)相關(guān)表并保存“數(shù)據(jù)環(huán)境”才能在生成程序時(shí)包含有打開(kāi)表的代碼行,ACCESS 窗體的記錄來(lái)源只是在窗體的記錄來(lái)源屬性中給出表、查詢名字或SQL SELECT 語(yǔ)句,記錄來(lái)源并不生成程序代碼。窗體在打開(kāi)時(shí)自動(dòng)處理表、查詢及SELECT 語(yǔ)句的數(shù)據(jù),并沒(méi)有什么命令或語(yǔ)句來(lái)處理表、查詢的打開(kāi)問(wèn)題。
---- 3. 理解控件、屬性及事件過(guò)程
---- Foxpro 屏幕生成器界面中添加的文本框(TextBox)、列表框(ListBox)等項(xiàng)目在生成程序后對(duì)應(yīng)內(nèi)存變量或字段變量,屏幕生成器中對(duì)文本框等項(xiàng)目的許多設(shè)置形成了生成代碼的@ ..GET語(yǔ)句的許多子句如:ENABLE 、DISABLE 、FONT、STYLE、DEFAULT、MESSAGE、RANGE 、COLOR 等,屏幕生成器中輸入的代碼片段(Code Snippet)形成了程序中的自定義函數(shù)或過(guò)程和@?et 語(yǔ)句的VALID、WHEN 等子句。 ACCESS 中,相當(dāng)Foxpro 于屏幕生成器中文本框等項(xiàng)目的稱之為控件(CONTROL)。Foxpro 中@?et 語(yǔ)句的子句在ACCESS 中是通過(guò)控件的屬性來(lái)實(shí)現(xiàn)的,例如: Foxpro 中的@ .... Get text disable 語(yǔ)句,在ACCESS 中是 將text 控件的enabled 屬性值設(shè)置為False( 否);Foxpro中SHOW GET TEXT ENABLE 在ACCESS 中用賦值語(yǔ)句Me!text.enabled=true 改變text 控件的屬性。Foxpro 中的代碼片段在ACCESS 中是通過(guò)事件過(guò)程實(shí)現(xiàn)的,例如:Foxpro 中@?et text valid check() 語(yǔ)句中包含有Valid 子句和check() 自定義函數(shù),實(shí)現(xiàn)同樣的功能在ACCESS 中在text 控件的Before Update( 或After Update)屬性值選擇‘[ 事件過(guò)程]’并輸入相應(yīng)的程序代碼。常見(jiàn)的Foxpro @?ET 語(yǔ)句的子句與ACCESS 的控件屬性對(duì)應(yīng)關(guān)系如下:
Foxpro 子句 ACCESS 控件屬性 FUNCTION Format 、Input Mask 屬性 PICTURE Format 、Input Mask 屬性 FONT Font color name size weight italic underline 等屬性 STYLE Font italic underline 等屬性 DEFAULT Default Value ENABLED|DISABLE Enabled RANGE Validation Rule、Validation Text SIZE Left 、top、height、width VILID Before Update、After Update WHEN On enter 、On Got focus
---- 1. 在窗體中“移動(dòng)記錄指針”
---- 通過(guò)foxpro 屏幕生成器創(chuàng)建的用戶界面中常常包含用于移動(dòng)記錄的按鈕,通過(guò)單擊按鈕改變屏幕或窗口中當(dāng)前記錄,foxpro 中實(shí)現(xiàn)該功能的方法一般是在按鈕變量的valid 子句的函數(shù)中增加指針移動(dòng)語(yǔ)句如:skip、goto 、locate 等。XBase用戶初次使用ACCESS 窗體時(shí)欲實(shí)現(xiàn)同等功能但往往不知如何下手,ACCESS 中實(shí)現(xiàn)窗體中記錄導(dǎo)航可以通過(guò)以下三種方法:
在窗體的左下角增加記錄導(dǎo)航控制按鈕(navigation button)使用Goto Record 宏或Find Record 宏使用數(shù)據(jù)訪問(wèn)對(duì)象(DAO)改變當(dāng)前窗體的記錄
---- 若只是在窗體中前后移動(dòng)記錄,不需要編寫程序,在窗體的設(shè)計(jì)視圖將窗體的navigation button值設(shè)置為true,則在窗體時(shí)就會(huì)出現(xiàn)導(dǎo)航按鈕,用戶通過(guò)單擊導(dǎo)航按鈕前移、后移記錄。若想將記錄移到特定的記錄則必須通過(guò)用宏或VB 編程實(shí)現(xiàn),例如:?jiǎn)螕舸绑w中的CMD 按鈕下移三個(gè)記錄則在CMD 按鈕的on click 事件過(guò)程中輸入如下VB 語(yǔ)句:
---- DoCmd.GoToRecord ,,,3
---- 下面的示例在當(dāng)前窗體中使用記錄集及FindFirst 方法將記錄定位到“姓名”字段值為?張三”的記錄:
Dim rst As Recordset Dim strSearchName As String Set rst = Me.RecordsetClone strSearchName = " 張三" rst.FindFirst " 姓名= " & strSearchName If rst.NoMatch Then MsgBox " 沒(méi)找到" Else Me.Bookmark = rst.Bookmark End If rst.Close
---- 程序中Me.RecordsetClone 是由窗體的RecordSource屬性指定的基礎(chǔ)查詢或基表的一個(gè)副本,Bookmark是記錄集的書簽,用來(lái)唯一標(biāo)識(shí)窗體基表、基礎(chǔ)查詢或SQL 語(yǔ)句中的特定記錄。例子中FindFirst方法先在窗體記錄來(lái)源的記錄集副本中定位記錄,然后再將窗體的記錄的位置移動(dòng)到相同的位置。
---- 壹、xBase 中的常用命令在ACCESS 中如何實(shí)現(xiàn)
---- 許多xBase 用戶初次使用ACCESS 時(shí)常常在ACCESS 中查找與xBase 命令相當(dāng)?shù)恼Z(yǔ)句、功能或?qū)崿F(xiàn)方法,下表給出了常用的xBase 命令所對(duì)應(yīng)的ACCESS 宏命令及VB 語(yǔ)句或?qū)崿F(xiàn)方法:
XBase 命令 ACCESS 宏命令 ACCESS VBA 語(yǔ)句 ACCESS 操作 USE < 表>
OpenRecordset 方法 通常不需要,處理表記錄時(shí)用 BROWSE/EDIT OpenTable Docmd.opentable 在數(shù)據(jù)庫(kù)窗口直接打開(kāi)表 INDEX ON
指定表字段的索引屬性 SORT ON
通過(guò)工具欄的按鈕或菜單上命令 REPLACE
使用SQL 語(yǔ)句 SUM AVER 等
Dsum() 等函數(shù) 使用SQL 語(yǔ)句 GOTO GotoRecord Move 方法 使用記錄導(dǎo)航按鈕 SKIP GotoRecord Move 方法 使用記錄導(dǎo)航按鈕 LOCATE
FindFirst 方法 通過(guò)工具條或菜單命令查找與過(guò)濾操作 TOTAL
使用SQL 語(yǔ)句 壹、ACCESS 中的數(shù)據(jù)類型
---- xBase 用戶在初次使用ACCESS 時(shí)對(duì)ACCESS 表的字段類型特別是數(shù)值型字段類型不適應(yīng)。正是由于對(duì)ACCESS 的數(shù)據(jù)類型缺乏足夠的了解,使得很多用戶在開(kāi)發(fā)過(guò)程中出現(xiàn)了一些問(wèn)題。ACCESS與xBase 表的字段類型及其對(duì)應(yīng)關(guān)系見(jiàn)下表:
ACCESS 中表的字段類型 xBase 中庫(kù)的字段類型 字符型(Text) 字符型(Character) 數(shù)值型( 短整型、長(zhǎng)整型、單精度、雙精度) 數(shù)值型(Numeric) 貨幣型(Currency) 數(shù)值型(Numeric) 備注型(Memo) 備注型(Memo) 日期時(shí)間型(date/Time) 日期型(Date) 邏輯型(Yes/No) 邏輯型(Logical) OLE 對(duì)象型(OLE Object) 通用型(General)
---- XBase 用戶初次使用ACCESS 時(shí)常遇到的問(wèn)題之一是ACCESS 表中的數(shù)值型字段類型問(wèn)題,在xBase的DBF 文件中定義數(shù)值型字段需給出字段類型、寬度和小數(shù)位數(shù),在記錄的數(shù)值型字段存放數(shù)據(jù)時(shí),xBase 只保存規(guī)定的小數(shù)位數(shù)并自動(dòng)處理四舍五入問(wèn)題,ACCESS 中表的數(shù)值型字段同xBase 的數(shù)值型字段不同,在表中的字段存放數(shù)值型數(shù)據(jù)需將字段設(shè)置為短整型、長(zhǎng)整型、單精度、雙精度或貨幣型中的一種,在數(shù)值字段保存數(shù)據(jù)時(shí)不能保存固定長(zhǎng)度的小數(shù)位數(shù),也不能自動(dòng)處理小數(shù)的四舍五入問(wèn)題。盡管字段屬性中有DecimalPlaces 和Format,但這兩個(gè)屬性只是確定數(shù)據(jù)的顯示方式而不是保留特定的小數(shù)位數(shù),用戶必須在保存數(shù)值數(shù)據(jù)時(shí)自行處理保留的小數(shù)位數(shù)及四舍五入問(wèn)題。
---- XBase 用戶使用ACCESS 表時(shí)常遇到另一個(gè)問(wèn)題是字段的NULL 值問(wèn)題,xBase 中,若字段沒(méi)輸入值,則字符型字段為空格串、數(shù)值型字段為零值;ACCESS 中,若字段沒(méi)輸入值則字段的值為NULL(空值),NULL 是ACCESS 中的特殊常量表示沒(méi)值,NULL 不能賦予非Variant 變量。通過(guò)DAO 訪問(wèn)記錄的字段時(shí),使用NZ()函數(shù)將NULL 轉(zhuǎn)換為字符型空串或數(shù)值型零值。
出處:藍(lán)色理想
責(zé)任編輯:藍(lán)色
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|