時(shí) 間:2013-11-01 10:55:58
作 者:
竹笛 。
正 文:
5.1 建表與相關(guān)字段屬性的解說(shuō)
學(xué)習(xí)說(shuō)明
我們都知道,無(wú)論是多么強(qiáng)大、多么先進(jìn)的數(shù)據(jù)庫(kù),都是基于存儲(chǔ)在表中的數(shù)據(jù)來(lái)運(yùn)行的,因此,表的設(shè)計(jì)和建立就顯得特別重要,這也是數(shù)據(jù)庫(kù)中最基礎(chǔ)、最重要的組成部分之一——如若把數(shù)據(jù)庫(kù)比作一個(gè)倉(cāng)庫(kù)的話,那么,表的設(shè)計(jì),就好比這個(gè)倉(cāng)庫(kù)的倉(cāng)位設(shè)計(jì),而表的建立,就好比是倉(cāng)位建設(shè)的施工——因此,如若倉(cāng)庫(kù)的倉(cāng)位的設(shè)計(jì)和施工出了問(wèn)題,毫無(wú)疑問(wèn),必然會(huì)給這個(gè)倉(cāng)庫(kù)的管理帶來(lái)極大的不便,因此,希望大家能注重基本功的概念和練習(xí),只有牢固的基本功,才能讓我們走得更遠(yuǎn)、走得更好。
建表與相關(guān)字段屬性的解說(shuō)
在前面的課程中,我們已經(jīng)講過(guò)表的設(shè)計(jì),那么,在這一節(jié)中,我們就來(lái)講表的施工,也就是表的建立,所謂表的建立,就是將先前對(duì)應(yīng)的表的設(shè)計(jì)圖,在當(dāng)前的對(duì)應(yīng)的數(shù)據(jù)庫(kù)文件中加以實(shí)現(xiàn)。
我們將以實(shí)際的例子加以說(shuō)明,比如tblCodeyg這個(gè)表,它的表設(shè)計(jì)如下:
那么,我們應(yīng)該如何實(shí)現(xiàn)呢?
首先,進(jìn)入我們先前存儲(chǔ)項(xiàng)目文件的C盤(pán)下的BXMIS目錄,雙擊鼠標(biāo)左鍵打開(kāi)【Data.mdb】文件,則如下圖所示:
對(duì)于熟悉Access 2003的人來(lái)說(shuō),這個(gè)界面可能有些陌生,但是原理都是一樣的——此時(shí),我們注意到,當(dāng)前默認(rèn)顯示的是
的欄目,接下來(lái)點(diǎn)選
后面的小倒黑三角,則如下圖所示:
接下來(lái),我們選中【表(B)】選項(xiàng),則如下圖所示:
如上圖所示,在【表】欄目下,我們會(huì)發(fā)現(xiàn),已經(jīng)有了8個(gè)名稱以Sys為前綴的表的存在,需要特別說(shuō)明的是,這些表并非是Access本身就有的,而是《盟威軟件快速開(kāi)發(fā)平臺(tái)》的系統(tǒng)表,也就是說(shuō),除非是教程的指引,這些表是不允許我們手工修改和刪除的——如若擅自改動(dòng)或刪除這些平臺(tái)系統(tǒng)表,那么,可能會(huì)導(dǎo)致基于平臺(tái)運(yùn)行的各類系統(tǒng)出現(xiàn)各種難以預(yù)料的故障。
接下來(lái),我們正式開(kāi)始建表,請(qǐng)依次點(diǎn)選【創(chuàng)建】——【表設(shè)計(jì)】,如下圖所示:
當(dāng)我們點(diǎn)選【表設(shè)計(jì)】,打開(kāi)表的設(shè)計(jì)視圖之后,如下圖所示:
在當(dāng)前的設(shè)計(jì)視圖中,左側(cè)窗格的右側(cè)有一個(gè)
按鈕(該按鈕名叫百葉窗開(kāi)關(guān)按鈕),通過(guò)這個(gè)按鈕,即可以控制左側(cè)窗格的開(kāi)關(guān),我們可以根據(jù)自己的喜好,來(lái)選擇開(kāi)啟或關(guān)閉右側(cè)窗格,在這里,我們就暫且關(guān)閉左側(cè)窗格——關(guān)閉完成之后,如下圖所示:
如上圖所示,表的設(shè)計(jì)界面,上半部分是【字段名稱】、【數(shù)據(jù)類型】和【說(shuō)明】(【字段】的【說(shuō)明】,類似備注),下半部分是【字段屬性】界面,默認(rèn)尚未被激活,當(dāng)在【字段名稱】列中輸入字段名稱,并將鼠標(biāo)光標(biāo)移到【數(shù)據(jù)類型】列之后(【數(shù)據(jù)類型】的默認(rèn)值為文本,需要根據(jù)實(shí)際的需要進(jìn)行調(diào)整),相應(yīng)的【字段屬性】就會(huì)被激活,如下圖所示:
為了便于表的建立,現(xiàn)在就將表設(shè)計(jì)說(shuō)明書(shū)中的項(xiàng)目和表設(shè)計(jì)視圖中的對(duì)象(列或?qū)傩裕┑膶?duì)應(yīng)關(guān)系以簡(jiǎn)明的方式加以說(shuō)明,如下表所示:
設(shè)計(jì)說(shuō)明書(shū)中的項(xiàng)目
設(shè)計(jì)界面中的對(duì)象(列或?qū)傩裕?div style="height:15px;">
備注
字段名
字段名稱
標(biāo)題名稱
字段屬性-標(biāo)題
字段類型
數(shù)據(jù)類型
字段大小
字段屬性-字段大小
必填
字段屬性-必填字段
是或否,除主鍵外,默認(rèn)為否
位數(shù)
字段屬性-小數(shù)點(diǎn)位數(shù)
適用于數(shù)據(jù)類型為貨幣和數(shù)字的字段
說(shuō)明
說(shuō)明
需要特別說(shuō)明的是,雖然【字段屬性】是從屬于字段的,但是卻與【數(shù)據(jù)類型】密切相關(guān),因此,【數(shù)據(jù)類型】不同,相對(duì)應(yīng)的字段的【字段屬性】也有差異,比如,在字段的【數(shù)據(jù)類型】為文本的情況下,【字段屬性】中就沒(méi)有小數(shù)點(diǎn)位數(shù)的屬性設(shè)置項(xiàng)——這也是為什么在沒(méi)有選擇【數(shù)據(jù)類型】以前,【字段屬性】不被激活的根本原因——在【數(shù)據(jù)類型】沒(méi)有確定之前,由于不同的【數(shù)據(jù)類型】,所擁有的【字段屬性】也有所不同,因此,系統(tǒng)根本就無(wú)從判斷需要顯示哪些屬性項(xiàng)。
下面,我們就將ygID字段按表設(shè)計(jì)說(shuō)明書(shū)的要求建設(shè)完畢,如下圖所示:
需要值得說(shuō)明的是,本教程中沒(méi)有提到的【字段屬性】的相關(guān)設(shè)置項(xiàng),請(qǐng)不要隨意更改——除非您對(duì)您的更改所帶來(lái)的實(shí)際影響和顯示效果非常明白——接下來(lái),按照表設(shè)計(jì)說(shuō)明書(shū)的要求,完成剩下字段的建立,如下圖所示:
此時(shí),還有一項(xiàng)工作沒(méi)有完成,那就是設(shè)置主鍵,所謂主鍵,就是一條記錄的唯一標(biāo)識(shí)符,這就好比在戶籍系統(tǒng)中,我們的身份證號(hào)是我們身份的唯一標(biāo)識(shí)符一樣,因此,一個(gè)字段一旦被標(biāo)識(shí)為主鍵,那么,這個(gè)字段的值,便是不允許出現(xiàn)重復(fù)的——這就如同在戶籍系統(tǒng)中,身份證號(hào)是不允許出現(xiàn)重復(fù)是一樣的,接下來(lái),我們就開(kāi)始設(shè)置主鍵——先在表設(shè)計(jì)視圖中選擇ygID字段,或者將鼠標(biāo)光標(biāo)移回ygID字段那一行內(nèi)的任意位置,然后再點(diǎn)選工具欄上的
按鈕,或右擊鼠標(biāo)右鍵,選擇其中的
命令,其后,ygID字段前記錄選定器的便多了一個(gè)
標(biāo)志,這便是主鍵字段的標(biāo)志。
正是因?yàn)橐粋€(gè)主鍵字段是不允許出現(xiàn)重復(fù)值,所以,當(dāng)一個(gè)字段被設(shè)置為主鍵后,它的字段屬性也會(huì)同時(shí)發(fā)生改變,那就是字段屬性中的【索引】的值將從【無(wú)】自動(dòng)變更為【有(無(wú)重復(fù))】,并且,這個(gè)值是不允許更改的,除非取消這個(gè)字段的主鍵設(shè)置——取消主鍵,也就是刪除附加在這個(gè)字段上的主鍵屬性,方法也很簡(jiǎn)單,在已經(jīng)設(shè)置好主鍵的字段上再次點(diǎn)選
按鈕,或單擊鼠標(biāo)右鍵,在彈出的右鍵才菜單上選擇
命令,就可以刪除當(dāng)前字段的主鍵屬性(并不會(huì)連帶刪除當(dāng)前的字段)。
如若已經(jīng)設(shè)置好了主鍵,則如下圖所示:
好了,字段的設(shè)計(jì)就告一段落,接下來(lái),我們就可以保存已完成的工作——依次點(diǎn)選左上角的圓形Office按鈕——【保存(S)】命令,或單擊左上角的圓形Office按鈕右側(cè)的
—按鈕,如下圖所示:
如上圖所示,單擊保存按鈕之后,如若沒(méi)有事先保存,則會(huì)彈出【另存為】對(duì)話框,如下圖所示:
由于在表設(shè)計(jì)說(shuō)明書(shū)中,該表的表名為:tblCodeyg,因此,接下來(lái),刪除【表名稱(N)】下的文本框中的默認(rèn)值:表1,然后輸入表設(shè)計(jì)說(shuō)明書(shū)中的對(duì)應(yīng)的表名:tblCodeyg。需要強(qiáng)調(diào)的是,為了以后編寫(xiě)代碼以及可能的后續(xù)開(kāi)發(fā)的便利,表名最好以英文的形式(或字母的形式,可以包含數(shù)字和下劃線)來(lái)命名。
輸入完畢,單擊確認(rèn)按鈕,我們注意到,此時(shí)的表的設(shè)計(jì)區(qū)域的頂部已經(jīng)發(fā)生了明顯的變化,已經(jīng)由先前的
變?yōu)楫?dāng)前的
,如下圖所示:
如上圖所示,這其中的
便是剛才輸入的表的名稱。這個(gè)時(shí)候,我們也就發(fā)現(xiàn),先前截圖中一再出現(xiàn)的
,便是系統(tǒng)指定的默認(rèn)名稱。
現(xiàn)在,該表的設(shè)計(jì)工作就已經(jīng)全部完成了,首先,我們先通過(guò)單擊
按鈕,恢復(fù)左側(cè)窗格的顯示,可以很清晰地看到,我們剛才建的表已經(jīng)出現(xiàn)在表的列表窗格中,如下圖所示:
接下來(lái),單擊表名稱右側(cè)的
按鈕,退出tblCodeyg表的設(shè)計(jì)視圖——如若單擊標(biāo)題欄右側(cè)的
按鈕,則會(huì)退出整個(gè)數(shù)據(jù)庫(kù),因此,不要點(diǎn)錯(cuò)了位置。
接下來(lái),我們便可以按照同樣的方法,完成表設(shè)計(jì)說(shuō)明書(shū)中tblCodelb表和tblBxmx的建立,在這里,需要值得說(shuō)明的是tblBxmx表的czsj字段,按照表設(shè)計(jì)說(shuō)明書(shū)的要求,這個(gè)字段是不需要手工輸入的,當(dāng)前的操作時(shí)間,可以從操作系統(tǒng)中直接提取,所以,我們需要借助一個(gè)系統(tǒng)函數(shù)來(lái)實(shí)現(xiàn)這個(gè)設(shè)計(jì)目標(biāo),這就需要使用Now()函數(shù),該函數(shù)可以在錄入當(dāng)前記錄的時(shí)候,自動(dòng)提取當(dāng)前的操作系統(tǒng)時(shí)間插入對(duì)應(yīng)的表格中。
在這里,需要再次強(qiáng)調(diào)的是,由于該函數(shù)直接從操作系統(tǒng)中提取時(shí)間,因此,如若操作系統(tǒng)時(shí)間錯(cuò)誤,那么,該函數(shù)也必將插入錯(cuò)誤的系統(tǒng)時(shí)間,因此,請(qǐng)確保您當(dāng)前使用的操作系統(tǒng)時(shí)間沒(méi)有錯(cuò)誤——由于該項(xiàng)操作涉及操作系統(tǒng)的控制面板,而操作系統(tǒng)的課程,并非Access的課程,因此,請(qǐng)大家參閱相關(guān)教程。
那么,既然可以使用系統(tǒng)函數(shù)從操作系統(tǒng)中自動(dòng)提取時(shí)間,那么,在實(shí)際的表的設(shè)計(jì)中,應(yīng)該如何實(shí)現(xiàn)這個(gè)設(shè)計(jì)目標(biāo)呢?或許已經(jīng)有人注意到,在字段的屬性中,有一個(gè)默認(rèn)值的屬性,或者可以把該系統(tǒng)函數(shù)寫(xiě)入默認(rèn)值屬性來(lái)達(dá)到實(shí)現(xiàn)此功能的目的——完全正確,就是這樣——當(dāng)然,這也不是唯一的實(shí)現(xiàn)方式,比如,我們也可以在后續(xù)的窗體建設(shè)中,再來(lái)實(shí)現(xiàn)此設(shè)計(jì)目標(biāo)。
當(dāng)前,我們就在當(dāng)前環(huán)節(jié)實(shí)現(xiàn)此設(shè)計(jì)目標(biāo),首先,打開(kāi)tblBxmx表的設(shè)計(jì)視圖,定位到czsj字段,然后【字段屬性】的在默認(rèn)值一欄中,輸入以下字符:=Now(),如下圖所示:
需要值得注意的是,在這個(gè)位置,盡管我們可以借助系統(tǒng)函數(shù)來(lái)實(shí)現(xiàn)自動(dòng)提取操作系統(tǒng)當(dāng)前時(shí)間,來(lái)實(shí)現(xiàn)自動(dòng)輸入的目的,但是,在當(dāng)前的表中,我們?nèi)匀豢梢栽诒碇惺止ば薷拇藭r(shí)間,當(dāng)然,在系統(tǒng)正式投入運(yùn)行之后,手工直接向表中寫(xiě)入數(shù)據(jù),是不被允許的,所以,不用擔(dān)心系統(tǒng)自動(dòng)提取的數(shù)據(jù)會(huì)被修改而違背了我們?cè)O(shè)計(jì)的初衷,當(dāng)然,在后續(xù)的窗體設(shè)計(jì)中,盡管也可以提供修改此時(shí)間的界面,但我們可以在設(shè)計(jì)的環(huán)節(jié),就可以禁用此功能,因此,可以確保此設(shè)計(jì)目標(biāo)的實(shí)現(xiàn)。當(dāng)然,這是后續(xù)的課程所需要講述的內(nèi)容,所以,其中的細(xì)節(jié),在這里就不過(guò)多闡述了。