Visual FoxPro 數(shù)據(jù)庫及操作課件_第1頁
Visual FoxPro 數(shù)據(jù)庫及操作課件_第2頁
Visual FoxPro 數(shù)據(jù)庫及操作課件_第3頁
Visual FoxPro 數(shù)據(jù)庫及操作課件_第4頁
Visual FoxPro 數(shù)據(jù)庫及操作課件_第5頁
已閱讀5頁,還剩145頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1

VisualFoxPro資料庫及操作2第一節(jié)VisualFoxPro資料庫及其建立

資料庫是表的集合。從VisualFoxPro3.0開始引入了真正意義上的資料庫概念。把一個二維表定義為表,把若干個關(guān)係比較固定的表集中起來放在一個資料庫中管理,在表間建立關(guān)係,設(shè)置屬性和數(shù)據(jù)有效性規(guī)則使相關(guān)聯(lián)的表協(xié)同工作。資料庫檔具有.dbc擴(kuò)展名,其中可以包含一個或多個表、關(guān)係、視圖等。一個VisualFoxPro表或.dbf檔,能夠存在以下兩種狀態(tài)之一:與資料庫相關(guān)聯(lián)的資料庫表,與資料庫不關(guān)聯(lián)的自由表。二者的絕大多數(shù)操作相同且可以相互轉(zhuǎn)換。相比之下,資料庫表的優(yōu)點(diǎn)要多一些。當(dāng)一個表是資料庫的一部分時,它就可以具有以下內(nèi)容:●長表名和表中的長字段名●表中字段的標(biāo)題和注釋●默認(rèn)值、輸入掩碼和表中字段格式化●表字段的默認(rèn)控件類3●字段級規(guī)則和記錄級規(guī)則●支持參照完整性的主關(guān)鍵字索引和表間關(guān)係●INSERT、UPDATE或DELETE事件的觸發(fā)器一、建立資料庫1.命令方式【格式】CREATEDATABASE[<資料庫檔案名>|?]【功能】建立一個新的擴(kuò)展名為.DBC的資料庫檔並打開此資料庫。【說明】<資料庫檔案名>指定生成的資料庫檔,若省略擴(kuò)展名,則默認(rèn)為.DBC,同時也自動建立相關(guān)聯(lián)的資料庫備註檔擴(kuò)展名為.DCT,關(guān)聯(lián)的索引檔擴(kuò)展名為.DCX。如果未指定資料庫檔案名或用“?”代替資料庫名,VisualFoxPro系統(tǒng)會彈出創(chuàng)建對話框,以便用戶選擇資料庫建立的路徑和輸入資料庫名。保存後該資料庫檔被建立,並且自動以獨(dú)佔(zhàn)方式打開該資料庫。4

2.菜單方式用菜單方式建立資料庫的具體步驟如下:(1)選擇【檔】∣【新建】出現(xiàn)新建對話框。(2)選擇“資料庫”單選按鈕,再單擊“新建檔”按鈕,出現(xiàn)“創(chuàng)建”對話框。(3)在“創(chuàng)建”對話框中輸入檔案名。選擇“保存”按鈕,系統(tǒng)自動打開資料庫檔,並且將資料庫設(shè)計器也自動打開。3.利用專案管理器建立資料庫打開已建立的專案檔,出現(xiàn)專案管理器窗口。在“數(shù)據(jù)”選項卡中選擇“資料庫”,然後單擊“新建資料庫”按鈕,再通過“創(chuàng)建”對話框提示用戶輸入資料庫名,即擴(kuò)展名為.DBC的檔案名,單擊“保存”,出現(xiàn)資料庫設(shè)計器。

51.打開資料庫1).命令方式

【格式】OPENDATABASE[<資料庫檔案名>|?][EXCLUSIVE|SHARED]

【功能】將磁片上一個擴(kuò)展名為.DBC的指定資料庫文件打開。

【說明】打開一個資料庫檔,同名的.DCT相關(guān)的數(shù)據(jù)庫備份檔與.DCX相關(guān)的索引檔也一起被打開。資料庫打開後,在常用工具欄中可以看見當(dāng)前正在使用的資料庫名,同時當(dāng)資料庫設(shè)計器為當(dāng)前窗口時,系統(tǒng)菜單上出現(xiàn)【資料庫】菜單項。<資料庫檔案名>:指定要打開的資料庫名。如果用戶省略<資料庫檔案名>或用“?”代替資料庫名。系統(tǒng)會顯示打開對話框。二、資料庫的打開與關(guān)閉6

在資料庫被打開的情況下,它所包含的所有表可以使用。但是,表並沒有被真正打開,用戶要打開它,仍要用USE命令。

2).菜單方式

(1)選擇【檔】|【打開】,出現(xiàn)打開對話框。

(2)選擇資料庫檔所在的檔夾,將檔類型選擇為“資料庫(.dbc)”。(3)選擇所要打開的資料庫檔案名,單擊“確定”按鈕。3).利用專案管理器打開資料庫打開已建立的專案檔,出現(xiàn)專案管理器窗口,選擇“數(shù)據(jù)”標(biāo)籤,選擇要打開的資料庫名,然後單擊“打開”按鈕。

7資料庫檔操作完成後,或暫時不用時,必須將其關(guān)閉,保存在外部存貯器中以確保數(shù)據(jù)的安全性。關(guān)閉資料庫檔有以下幾種方式:1.命令方式【格式】CLOSE[ALL|DATABASE]【功能】關(guān)閉當(dāng)前打開的資料庫?!菊f明】ALL用於關(guān)閉所有對象。如數(shù)據(jù)庫、表、索引、專案管理器等。DATABASE關(guān)閉當(dāng)前資料庫和數(shù)據(jù)庫表;如果當(dāng)前沒有打開的資料庫,則關(guān)閉所有打開的自由表、所有工作區(qū)內(nèi)所有索引和格式檔。

三、資料庫的關(guān)閉82.利用專案管理器關(guān)閉資料庫

打開已建立的專案檔,出現(xiàn)專案管理器窗口,選擇“數(shù)據(jù)”標(biāo)籤,選擇“資料庫”下麵需要關(guān)閉的資料庫名,然後單擊“關(guān)閉”按鈕。在常用工具欄上的當(dāng)前資料庫下拉列表框中該資料庫名消失,同時在專案管理器中“關(guān)閉”按鈕變成“打開”按鈕。四、資料庫的修改在VFP中,修改資料庫實(shí)際是打開資料庫設(shè)計器,用戶可以在資料庫設(shè)計器中完成各種數(shù)據(jù)對象的建立、修改、刪除等操作。9資料庫設(shè)計器打開的方法:(1)從專案管理器中打開資料庫設(shè)計器。(2)從“打開”對話框中打開資料庫設(shè)計器。(3)用命令方式打開資料庫設(shè)計器。命令格式:

MODIFYDATABASE[資料庫檔案名|?][NOWAIT][NOEDIT]

說明:(1)資料庫檔案名,是指定要修改的資料庫檔案名,選用“?”,則彈出“打開”對話框,選定要打開的資料庫檔。(2)NOWAIT選項:只用於程式中,交互方式下無效。(3)NOEDIT:指打開資料庫設(shè)計器,但禁止對數(shù)據(jù)庫進(jìn)行修

改。

101.命令方式

【格式】DELETEDATABASE<資料庫檔案名|?>

【功能】從磁片上刪除一個擴(kuò)展名為.DBC的資料庫檔。

【說明】被刪除的資料庫不能處於打開狀態(tài)。被刪除的資料庫中的表成為自由表。資料庫檔案名可以包括資料庫的路徑和數(shù)據(jù)庫名字。如果用“?”代替資料庫檔案名,將顯示打開對話框,用戶從打開對話框中選擇要從磁片上刪除的資料庫的名字。2.使用專案管理器打開已建立的專案檔,出現(xiàn)專案管理器窗口,單擊“數(shù)據(jù)”標(biāo)籤,選擇要刪除的“資料庫”,然後單擊“移去”按鈕。若選擇“移去”僅將資料庫從專案中移去,被刪除的資料庫中的表成為自由表。若選擇“刪除”將從磁片上刪除資料庫。五、刪除資料庫11前面我們已經(jīng)知道表有二種,一種是資料庫表,另一種是自由表。如果建表時資料庫是打開的,則建立的表為當(dāng)前資料庫表,否則,建立自由表。無論建立那種表,其方法都相同。一個表由表結(jié)構(gòu)和表記錄兩部分組成。表結(jié)構(gòu)描述了數(shù)據(jù)存放形式以及存貯的順序,確定了表的字段,就完成了對表結(jié)構(gòu)的定義;表記錄是表所要保存的數(shù)據(jù)主體,數(shù)據(jù)由記錄組成,字段是構(gòu)成記錄的基本單元。建立一個表檔首先第一步就是建立表結(jié)構(gòu),然後再輸入表記錄。建立表結(jié)構(gòu)的方法有很多,在這裏主要講述三種方法:命令方式、菜單方式和使用專案管理器的方式。第二節(jié)資料庫表的建立和操作12一、資料庫表的建立

1.命令方式【格式】CREATE[<表檔案名>|?]【功能】建立一個新的、擴(kuò)展名為.DBF的表檔?!菊f明】<表檔案名>指定生成的表檔案名,若缺省擴(kuò)展名,則默認(rèn)為.DBF。如果使用“?”或末指定表檔案名,VisualFoxPro系統(tǒng)會彈出創(chuàng)建對話框,以便用戶輸入表名。13現(xiàn)在用命令方式來建立stud.dbf表。表內(nèi)容如下:

學(xué)號姓名性別班級名系別代號地址出生日期是否團(tuán)員照片備註011110李建國男計012101湖北武漢09/28/84T

011103李寧女電013402江西九江05/06/85F

011202趙娜女英011203廣西南寧02/21/84F

021204孫亮男電013402湖南長沙09/08/86T

011111趙琳女計012101江蘇南京11/18/85T

021405羅宇波男英011203江蘇南通12/12/85F

14用命令方式建立表的具體步驟為:(1)如果沒有建立STUDENT資料庫,則先建立資料庫再打開它。如果創(chuàng)建自由表,該步可略去。(2)在命令窗口中輸入CREATESTUD回車,系統(tǒng)打開“表設(shè)計器”對話框,如圖3-1和圖3-2所示。(3)在“字段名”文本框中輸入第一個字段名:“學(xué)號”,在“類型”下拉列表框中,選擇字段的類型為字元型,在寬度輸入框中輸入10或單擊右邊的微調(diào)按鈕至10。(4)將輸入光標(biāo)定位在第二個字段的字段名上,用同樣的方法依次輸入各個字段的字段名、類型、寬度和小數(shù)位數(shù)。(5)將所有字段的參數(shù)確定好之後,單擊“確定”或按快捷鍵CTRL+W存盤。系統(tǒng)會打開提示窗口,詢問用戶是否立即輸入記錄,選擇“是”立即開始輸入記錄,選擇“否”不輸入記錄,游標(biāo)返回命令窗口,只建立表結(jié)構(gòu)。15圖3-1自由表設(shè)計器圖3-2資料庫表設(shè)計器16表設(shè)計器對話框中包含“字段”、“索引”、“表”三個選項卡。1)“字段”選項卡:適用於建立表結(jié)構(gòu),確定表中每個字段的字段名、字段類型、字段寬度和小數(shù)位數(shù)等?!?/p>

字段名:是某字段的名字。在表中必須是唯一的,字段名必須以漢字、字母和下劃線開頭,由漢字、字母、數(shù)字和下劃線組成,對於資料庫表支持長字段名,字段名最多為128個字元,自由表不支持長字段名,字段名最多為10個字元。當(dāng)資料庫表轉(zhuǎn)化為自由表時截去超長部分的字元。字段名不能使用系統(tǒng)的保留字?!?/p>

字段類型:表示該字段中存放數(shù)據(jù)的類型。一個字段即二維表中的一列,其中的數(shù)據(jù)應(yīng)具有共同的屬性。若存放的是一些符號,不進(jìn)行數(shù)值運(yùn)算,則定義為字元型;若需要進(jìn)行數(shù)值運(yùn)算,則根據(jù)數(shù)值表示的實(shí)際意義,選擇數(shù)值型、貨幣型、浮點(diǎn)型、雙精度型、整型中的一種。對描述日期的字段,可根據(jù)需要定義為日期型或日期時間型。對取值只有兩種情況,為“真”或?yàn)椤凹佟钡臄?shù)據(jù)定義為邏輯型。17若存儲的字元超過254,為節(jié)省存儲空間可定義為備註型。若要保存圖片或OLE對象,可定義為通用型。備註型和通用型字段的資訊都沒有直接存放在表檔中,而是存放在一個與表檔同名的.FPT檔中?!?/p>

字段寬度:表示該字段所允許存放數(shù)據(jù)的最大寬度。由數(shù)據(jù)的最大寬度決定。過大浪費(fèi)存儲空間,過小數(shù)據(jù)溢出。字元型字段的最大寬度254個字元,數(shù)值型字段和浮點(diǎn)型字段的寬度為20位,邏輯型字段的寬度固定為1,日期型字段的寬度固定為8,通用型字段和備註型字段的寬度固定為4?!?/p>

小數(shù)位數(shù):只對數(shù)值型字段和浮點(diǎn)型字元等數(shù)值類型有效,允許最大寬度20。在計算數(shù)值型字段和浮點(diǎn)型字段的寬度時,小數(shù)點(diǎn)本身也算作一個字元。數(shù)值型字段的小數(shù)位數(shù)由數(shù)據(jù)的精度決定位數(shù)。

若建立的是資料庫表,則下麵還有顯示、字段有效性等框。18①字段的顯示屬性●

格式:控制字段在流覽窗口、表單、報表等顯示時的樣式。格式字元及功能如表3-1所示。字元功

能字元功

能A字母字元,不允許空格和標(biāo)點(diǎn)符號R顯示文本框的格式掩碼,但不保存到字段中D使用當(dāng)前的SETDATA格式T刪除前導(dǎo)空格和結(jié)尾空格E英國日期格式!字母字元轉(zhuǎn)換成大寫K游標(biāo)移至該字段選擇所有內(nèi)容^用科學(xué)計數(shù)法表示數(shù)值數(shù)據(jù)L數(shù)值字段顯示前導(dǎo)0$顯示貨幣符號表3-1字段的格式字元19表3-2字段的顯示掩碼字元●

標(biāo)題:若表結(jié)構(gòu)中字段名用的是英文,則可以在標(biāo)題中輸入漢字,這樣顯示該字段值時就比較直觀了。沒有設(shè)置標(biāo)題,則將表結(jié)構(gòu)中的字段名作為字段的標(biāo)題。字元功

能字元功

能X任意字元*左側(cè)顯示*9數(shù)字字元和+-號.指定小數(shù)點(diǎn)位置#數(shù)字字元、+-號和空格,用逗號分隔整數(shù)部分$指定位置顯示貨幣符號$$貨幣符號與數(shù)字不分開顯示●

輸入掩碼:控制輸入該字段的數(shù)據(jù)的格式。掩碼字元及功能如表3-2所示。

20②字段有效性●

規(guī)則:限制該字段的數(shù)據(jù)的有效範(fàn)圍。在規(guī)則中輸入:性別="男".OR.性別="女"。這樣當(dāng)給“性別”字段輸入記錄值時就只能輸入“男”或“女”?!?/p>

資訊:當(dāng)向設(shè)置了規(guī)則的字段輸入不符合規(guī)則的數(shù)據(jù)時,就會將所設(shè)置的資訊顯示出。●

默認(rèn)值:當(dāng)往表中添加記錄時,系統(tǒng)向該字段預(yù)置的值。在“性別”字段中輸入默認(rèn)值為“男”。輸入記錄時只有女生才需要改變默認(rèn)值,可以減少輸入。字段有效性的設(shè)置可在圖3-2中進(jìn)行。2)表選項卡:字段選項卡上主要介紹的是字段屬性,它控制了字段值的輸入,表選項卡則對表的記錄屬性進(jìn)行描述,控制記錄數(shù)據(jù)。在這裏主要介紹記錄有效性和觸發(fā)器。如圖3-3所示。

21圖3-3記錄有效性和觸發(fā)器22①

記錄有效性●規(guī)則:指定記錄的有效條件,滿足該條件,數(shù)據(jù)才能輸入到表中,它確定的是該記錄各字段值之間的總體數(shù)據(jù)關(guān)係是否有錯?!褓Y訊:當(dāng)記錄的數(shù)據(jù)不符合規(guī)則時,由系統(tǒng)顯示給用戶的提示資訊。②觸發(fā)器當(dāng)對記錄進(jìn)行操作時,若設(shè)置了觸發(fā)器,則對觸發(fā)器設(shè)置的條件運(yùn)算式進(jìn)行驗(yàn)證,若其值為真.T.,則允許進(jìn)行相關(guān)操作,否則,則拒絕操作?!癫迦胗|發(fā)器:當(dāng)向表中插入或追加記錄時,判斷其運(yùn)算式的值,為“真”允許插入或追加,為“假”不允許插入或追加。●更新觸發(fā)器:當(dāng)要修改記錄時,判斷其運(yùn)算式的值,為“真”允許修改,為“假”不允許修改。

23●刪除觸發(fā)器:當(dāng)要刪除表中記錄時,判斷其運(yùn)算式的值,為“真”允許刪除,為“假”不允許刪除。以上三類觸發(fā)器也可以用相應(yīng)的命令實(shí)現(xiàn):CREATETRIGGERON表名FORINSERTAS觸發(fā)條件運(yùn)算式CREATETRIGGERON表名FORUPDATEAS觸發(fā)條件運(yùn)算式CREATETRIGGERON表名FORDELETEAS觸發(fā)條件運(yùn)算式

2.菜單方式選擇【檔】|【新建】打開新建對話框,選擇“表”,單擊“新建檔”出現(xiàn)創(chuàng)建對話框,確定需要建立表的路徑和表名,按“保存”按鈕後,出現(xiàn)“表設(shè)計器”對話框。以下步驟同命令方式。24

3.用項目管理器新建表打開已建立的專案檔,出現(xiàn)專案管理器窗口,選擇“數(shù)據(jù)”選項卡中的“資料庫”下的表,然後單擊“新建”按鈕。出現(xiàn)新建表對話框,選擇“新建表”出現(xiàn)創(chuàng)建對話框,確定需要建立表的路徑和表名,按“保存”按鈕後,出現(xiàn)圖3-1所示的“表設(shè)計器”對話框。以下步驟同命令方式。

二、資料庫表記錄的輸入

如果在剛建好表結(jié)構(gòu)時,在系統(tǒng)提示是否立即輸入記錄的對話框中選擇“是”可直接進(jìn)入輸入記錄窗口。如果選擇了“否”,再想輸入表記錄就要以追加方式輸入記錄。輸入表記錄的方法又分為命令方式和菜單方式兩種方法。

1.命令方式

【格式】APPEND[BLANK]

【功能】在當(dāng)前已打開表的末尾追加一條或多條記錄。25

【說明】BLANK:表示在表末尾追加一條空記錄,並自動返回命令窗口,此時系統(tǒng)並不彈出編輯窗口。【例4-1】在學(xué)生表末尾追加記錄。

USESTUD

&&打開表

APPE

&&或EDIT

注意:輸入邏輯值時只輸入T或F,定界符系統(tǒng)自動生成輸入日期值時只輸入數(shù)碼,分隔符號系統(tǒng)自動生成輸入備註值時,游標(biāo)位於MEMO上時,按CTRL+PgDn進(jìn)入編輯窗口,完成後按CTRL+W返回下一個字段繼續(xù)輸入。2.菜單方式(1)首先打開表STUD.DBF。(2)選擇【顯示】|【流覽】命令。(3)選擇【表】|【追加新記錄】命令,用戶可以輸入追加記錄的各個字段。261.表的打開表檔建好後,以檔的形式保存在磁片上,在進(jìn)行各種操作之前,首先必須打開表。打開表的過程實(shí)質(zhì)上就是將表從磁片調(diào)入記憶體,這樣就可以對表中的數(shù)據(jù)進(jìn)行各種操作。系統(tǒng)在任何時刻都只能對內(nèi)存中的表進(jìn)行訪問。(1)命令方式

【格式】USE[[<盤符>][<路徑>]<[資料庫名!]表檔名|?>

【功能】打開指定磁片的指定路徑下的表和相關(guān)的索引文件。

【說明】<盤符>和<路徑>:指定表檔所在的驅(qū)動器及路徑,若省略盤符和路徑參數(shù),則打開當(dāng)前盤、當(dāng)前路徑下的表檔。三、表的打開與關(guān)閉27[資料庫名!]表檔案名:指定打開指定資料庫中的表檔。若末指定資料庫名,則在當(dāng)前資料庫中查找,沒有則在自由表中查找。兩者同名,則打開資料庫中的表。如果表檔中含有通用型、備註型字段,同名的.FPT檔也同時打開。若不指定表檔案名而使用“?”,系統(tǒng)會彈出“使用”對話框,以便用戶指定打開表的檔案名?!纠?-2】打開在E盤VFP子目錄中STUD.DBF表。

USEE:\VFP\STUD(2)用項目管理器打開表在專案管理器中選中需要打開的表,選擇“流覽”或“修改”都能直接打開表且進(jìn)行流覽或修改,關(guān)閉流覽或修改窗口後,該表仍處於打開狀態(tài)。282.表的關(guān)閉表檔操作完成後,或暫時不用時,必須將其關(guān)閉,保存到外存中以確保數(shù)據(jù)的安全性。關(guān)閉表就是將表檔從記憶體中調(diào)出,保存在磁片上。關(guān)閉表檔有以下幾種方式:(1)打開另一個表檔如果工作區(qū)中已打開有表檔,打開另一表檔時,系統(tǒng)將自動將先前打開的表檔關(guān)閉。(2)使用不帶任何選項的USE命令

【格式】USE

【功能】關(guān)閉當(dāng)前已打開的表檔。(3)使用CLEAR命令

【格式】CLEARALL

【功能】關(guān)閉所有工作區(qū)中已打開的表檔、索引文件、格式檔及備註檔等,同時釋放所有的記憶體變數(shù)。並選擇工作區(qū)1為當(dāng)前工作區(qū)。29(4)使用CLOSE命令

【格式1】CLOSEALL

【功能】關(guān)閉各種類型檔,並選擇工作區(qū)1為當(dāng)前工作區(qū)。

【格式2】CLOSEDATABASES

【功能】關(guān)閉所有已打開的資料庫檔、表檔、索引文件、格式檔及備註檔等,並選擇工作區(qū)1為當(dāng)前工作區(qū)。(5)退出VisualFoxPro系統(tǒng)

【格式1】

QUIT

【功能】退出VisualFoxPro系統(tǒng),並關(guān)閉所有打開的檔,返回操作系統(tǒng)。(6)在數(shù)據(jù)工作窗口中關(guān)閉在數(shù)據(jù)工作窗口中選擇要關(guān)閉的表檔,然後選擇“關(guān)閉”按鈕,系統(tǒng)將關(guān)閉所選擇的表檔。301.刪除自由表【格式】DELETEFILE[表檔案名|?]【功能】將指定的表檔從磁片上刪除?!菊f明】如果刪除的表檔存在有與之相關(guān)的.fpt備註文件和(.cdx或.idx)索引檔,則同時刪除這些檔。刪除一個表檔,應(yīng)保證該表檔是處於關(guān)閉狀態(tài)的。要刪除的表檔如果不是在默認(rèn)的路徑下,則檔案名應(yīng)指明路徑。表檔名不能包含通配符。若不指定檔案名或使用“?”,系統(tǒng)會彈出“刪除”對話框,選擇要刪除的表檔路徑、檔類型及檔案名後,單擊“刪除”按鈕。四、表的刪除312.刪除資料庫表先將資料庫表從資料庫中移去,然後再用刪除自由表的方法進(jìn)行刪除。移去資料庫表的命令是:

【格式】REMOVETABLE[表檔案名|?][DELETE][RECYCLE]

【功能】從當(dāng)前資料庫中移去一個表。

【說明】表檔案名:準(zhǔn)備從資料庫中移去的表檔案名。

選擇?將出現(xiàn)移去對話框,從中選擇一個要從當(dāng)前資料庫中移去的表。選擇DELETE在移去資料庫表的同時,從磁片上刪除。選擇RECYCLE在移去資料庫表的同時,不會立即從磁片上刪除,而是放入回收站中。323.在專案管理器中刪除表在專案管理器中選中需要刪除的表,選擇“移去”按鈕或選擇主菜單中【專案】|【移去檔】命令,出現(xiàn)一個選擇對話框,若選擇“移去”按鈕,則將表檔移出項目檔,若選擇“刪除”按鈕,則將表檔從磁片上刪除。五、表的顯示1.表結(jié)構(gòu)的顯示在表的使用過程,要經(jīng)常查看表的結(jié)構(gòu)和記錄,以隨時瞭解表的變化情況?!靖袷健縇IST|DISPLAYSTRUCTURE[TOPRINT[PROMPT]|TO[FILE][<檔案名>]]

【功能】顯示或列印當(dāng)前表檔的結(jié)構(gòu)。

33

在執(zhí)行以上命令時,如果系統(tǒng)中沒有已打開的表檔,系統(tǒng)提示輸入檔案名。用LIST命令,所有資訊連續(xù)顯示,資訊較多時,螢?zāi)煌V乖谧钺嵋黄?;用DISPLAY命令,如果資訊較多則分屏顯示,敲任意鍵繼續(xù)顯示下一屏?!纠?-3】顯示表STUD.DBF的結(jié)構(gòu)。

USESTUDLISTSTRUCTURE

需要指出的是,最後一行顯示出的記錄位元組數(shù)是所有字段寬度之和再加1。這額外的一個位元組是用來存放記錄的刪除標(biāo)記(*)的。2.表記錄的顯示1).命令方式

【格式】LIST|DISPLAY[FIELDS<字段名表>][<範(fàn)圍>][FOR<條件運(yùn)算式>][WHILE<條件運(yùn)算式>][OFF][NOCONSOLE][TOPRINTER[PROMPT]|TOFILE<檔案名>]

【功能】將當(dāng)前表檔的記錄按照指定的選項進(jìn)行顯示。34

【說明】DISPLAY命令與LIST命令的功能相似,當(dāng)表檔的數(shù)據(jù)記錄較多時,用DISPLAY命令較為方便。還有一點(diǎn)不同之處就是,如果同時缺省<範(fàn)圍>和<條件>子句,DISPLAY命令只顯示當(dāng)前的一條記錄,而LIST命令則是取默認(rèn)值A(chǔ)LL而顯示全部記錄。FIELDS<字段名表>:用來指定顯示的字段。<範(fàn)圍>:用來指定顯示哪些記錄?!肮?fàn)圍”有以下四種表示方法:●

ALL:所有記錄。●

NEXTN:從當(dāng)前記錄開始,後面的N條記錄(包括當(dāng)前記錄)●

RECORDN:第N條記錄?!?/p>

REST:當(dāng)前記錄後的全部記錄(包括當(dāng)前記錄)。

35FOR<條件運(yùn)算式>:指定對表檔中指定範(fàn)圍內(nèi)滿足條件的記錄進(jìn)行操作。WHILE<條件運(yùn)算式>:也是指定對表檔中指定範(fàn)圍內(nèi)滿足條件的記錄進(jìn)行操作,但是,當(dāng)?shù)谝淮斡龅讲粷M足條件的記錄時,停止繼續(xù)往後搜索。WHILE<條件運(yùn)算式>若與FOR<條件運(yùn)算式>同時使用,則WHILE項優(yōu)先;若兩者都不選用,則顯示<範(fàn)圍>中指定的全部記錄。OFF:表示不顯示記錄號;若不選此項,則在各記錄前顯示記錄號。

【例4-4】顯示表STUD.DBF的全部記錄。

USESTUDLIST

36【例4-5】顯示男生的記錄。

USESTUDDISPLAYFOR性別=’男’FIELDS學(xué)號,姓;名,性別,班級名,系別代號【例4-6】顯示表中所有記錄的學(xué)號、姓名和性別。

USESTUD

LISTFIELDS學(xué)號,姓名,性別

【例4-7】顯示表中1985年出生的同學(xué)的學(xué)號、姓名、性別及出生日期。

USESTUDLISTFIELDS學(xué)號,姓名,性別,出生日期;FORYEAR(出生日期)=1985

372).菜單方式(1)打開表。(2)選擇【顯示】|【流覽】命令,系統(tǒng)彈出記錄流覽窗口,顯示當(dāng)前表中的記錄。這時還可以選擇【顯示】|【流覽】或【編輯】來改變顯示方式。3).利用專案管理器

在專案管理器中,選擇需要顯示的表檔,單擊“流覽”按鈕或選擇主菜單中【專案】|【流覽】命令,系統(tǒng)彈出記錄流覽窗口,顯示當(dāng)前表中的記錄。38六、表的修改1.表結(jié)構(gòu)的修改表結(jié)構(gòu)的改變有時會引起表記錄的變化,所以在一般情況下不輕易進(jìn)行修改。但在確實(shí)需要時也可以進(jìn)行修改。無論進(jìn)行何種修改,使用的命令都是一個

1).命令方式【格式】MODIFYSTRUCTURE【功能】將當(dāng)前已打開的表檔的表設(shè)計器打開進(jìn)行修改?!菊f明】要修改表結(jié)構(gòu)必須要先打開需要修改結(jié)構(gòu)的表檔。如果當(dāng)前工作區(qū)中沒有已打開的資料庫,執(zhí)行此命令時系統(tǒng)會彈出“打開”對話框,以便用戶選擇需要修改表結(jié)構(gòu)的檔案名及路徑等資訊,用戶選擇完成後,系統(tǒng)將彈出表設(shè)計器對話框。主要有增加、修改、刪除和移動幾種操作。39(1)增加字段:將游標(biāo)移至需插入位置上的字段上,選擇“插入”按鈕或按快捷鍵ALT+I,在該位置上出現(xiàn)一個新字段,原位置以下的各字段均下移一行。確定增加字段的字段名、字段類型、字段寬度等參數(shù),選擇“確定”按鈕即可。

(2)修改字段:將游標(biāo)定位在需要修改處,編輯修改,完成後選擇“確定”按鈕即可。(3)刪除字段:將游標(biāo)移至需刪除的字段上,選擇“刪除”按鈕或按快捷鍵ALT+D,在該位置上的字段被刪除,原位置以下各字段均上移一行。選擇“確定”按鈕。(4)移動字段:將游標(biāo)移至需移動位置的字段上,用滑鼠拖動字段名前的“”按鈕,出現(xiàn)一個虛框,當(dāng)虛框出現(xiàn)在目標(biāo)位置上時鬆開滑鼠,移動完成,選擇“確定”按鈕即可。無論是何種修改,選擇“確定”按鈕後,由於表結(jié)構(gòu)的變化要影響表記錄數(shù)據(jù),所以都要出現(xiàn)對話框由用戶確認(rèn)修改是否有效。40使用MODIFYSTRUCTURE命令要注意以下幾點(diǎn):①在MODIFYSTRUCTURE命令的執(zhí)行期間,如果強(qiáng)行退出,有可能丟失數(shù)據(jù)。②不能同時修改字段名和它的類型,否則系統(tǒng)將不能正確地送回原來的數(shù)據(jù)而造成數(shù)據(jù)的丟失。③如果在修改字段名的同時插入或刪除了字段,會引起字段位置發(fā)生變化,有可能造成數(shù)據(jù)丟失。但是,在插入或刪除字段的同時卻可以修改字段的寬度或字段的類型,MODIFYSTRUCTURE將根據(jù)字段名正確地從備份檔中傳送數(shù)據(jù)。④如果修改表結(jié)構(gòu)完成後出現(xiàn)了數(shù)據(jù)丟失現(xiàn)象,或者對其不滿意,可利用備份檔將表恢復(fù)到修改前的狀態(tài),方法是先將新的表檔刪除掉,再將備份檔的擴(kuò)展名.BAK改為表檔擴(kuò)展名.DBF,將備註備份檔擴(kuò)展名.TBK改為備註檔的擴(kuò)展名.FPT。

412).利用資料庫設(shè)計器

在資料庫設(shè)計器中選中需要修改的表檔,再選擇主菜單中【資料庫】|【修改】命令,具體的修改方法同命令方式。3).利用專案管理器

在專案管理器中選中需要修改的表檔,再選擇主菜單中【專案】|【修改】命令或單擊專案管理器中的“修改”按鈕。2.修改記錄

在表的使用維護(hù)過程中,有大量的工作是對數(shù)據(jù)記錄的修改、編輯與更新,通常可以採用編輯修改、流覽修改和替換修改三種方式。42

1).編輯修改

【格式】EDIT/CHANGE[FIELDS<字段名表>][<範(fàn)圍>][FOR<邏輯運(yùn)算式1>][WHILE<邏輯運(yùn)算式2>]

【功能】按照給定條件編輯修改當(dāng)前打開的表檔記錄。

【說明】[FIELDS<字段名表>]:若選擇此選項,則只列出字段名表中的字段,且顯示順序同字段名表中的順序;若未選擇此選項,將顯示表中的所有字段,顯示順序同表中的字段順序。

[<範(fàn)圍>]:若未選擇此選項,則EDIT/CHANGE命令的範(fàn)圍為全部記錄。[FOR<邏輯運(yùn)算式1>]和[WHILE<邏輯運(yùn)算式2>]:同前面其他命令所述,在此不再重複敘述。43【例4-8】修改STUD.DBF中計0121班學(xué)生的學(xué)號、姓名和性別等資訊。

USESTUDEDITFIELDS學(xué)號,姓名,性別FOR班級名=”計0121”全部修改完畢,使用

Ctrl+End或

Ctrl+W鍵保存所有修改的結(jié)果。

442).流覽修改(1)命令方式

【格式】BROWSE[FIELDS<字段名表>][FOR<邏輯運(yùn)算式1>]

【功能】顯示當(dāng)前表的記錄內(nèi)容,以供編輯修改。

【說明】編輯結(jié)束後,按Ctrl+W或Ctrl+End存盤退出BROWSE編輯窗口,或者按Ctrl+Q或Esc鍵放棄存盤退出BROWSE窗口。(2)菜單方式利用菜單方式進(jìn)行流覽修改的操作步驟如下:①打開表。②選擇【顯示】|【流覽】命令,系統(tǒng)彈出記錄流覽窗口。③在編輯修改窗口中編輯修改數(shù)據(jù)內(nèi)容,完成後按Ctrl+W鍵存盤退出Browse窗口。453).替換修改(1)命令方式

【格式】REPLACE<字段名1>WITH<運(yùn)算式1>[ADDITIVE][,<字段名2>WITH<運(yùn)算式2>[ADDITIVE]]...[<範(fàn)圍>][FOR<邏輯運(yùn)算式1>][WHILE<邏輯運(yùn)算式2>][NOOPTIMIZE]

【功能】用指定運(yùn)算式的值替換當(dāng)前表中滿足條件記錄的指定字段的值。

【說明】該命令適合對當(dāng)前庫進(jìn)行成批地、有規(guī)律地修改。缺省範(fàn)圍、條件時,僅替換當(dāng)前記錄。該命令回車後,數(shù)據(jù)修改自動完成。適用於程式設(shè)計。

ADDITIVE:只對備註型字段修改有效。選擇:表示添加內(nèi)容,不選擇:表示替換內(nèi)容。運(yùn)算式的類型必須與字段類型一致。運(yùn)算式的值不能超出字段寬度,否則,數(shù)據(jù)無效。46【例4-9】修改STUD.DBF中的“學(xué)號”字段數(shù)據(jù),。

USESTUDREPLACE學(xué)號WITH”20”+學(xué)號ALL(2)菜單方式①打開表檔。選擇【顯示】|【流覽】命令。

②選擇【表】|【替換字段】命令,彈出圖3-4所示的“替換字段”對話框。③單擊字段下拉按鈕選擇要進(jìn)行替換操作的字段名,在“替換為”顯示欄中輸入替換運(yùn)算式,再選擇“替換條件”顯示框中的範(fàn)圍、條件。④單擊“替換”按鈕,系統(tǒng)將自動完成替換操作。

47表3-4替換字段對話框48七、記錄指針的定位記錄號用於標(biāo)識數(shù)據(jù)記錄在表檔中的物理順序。記錄指針是一個指示器,它始終指向當(dāng)前表中正在操作處理的那條記錄,此記錄被稱為當(dāng)前記錄。如果要對某條記錄進(jìn)行處理,必須移動記錄指針,使其指向該記錄。在任意時刻指針只能指向唯一的一條記錄。記錄指針定位有絕對定位、相對定位和查詢定位三種。在這裏暫時只講前二種,查詢定位在講到查詢時再詳細(xì)介紹。49

1.絕對定位【格式】[GO|GOTO]<[RECORD]<數(shù)值運(yùn)算式1>[IN<數(shù)值運(yùn)算式2>|IN<字元運(yùn)算式>]【功能】將記錄指針絕對定位到<數(shù)值運(yùn)算式1>指定的記錄上。<數(shù)值運(yùn)算式1>:記錄的物理記錄號。IN<數(shù)值運(yùn)算式2>|IN<字元運(yùn)算式>:指定操作表所在的工作區(qū);若缺省,則對當(dāng)前工作區(qū)表操作。工作區(qū)的概念在後面再詳細(xì)介紹。絕對定位與是否打開索引檔沒有關(guān)係。

502.相對定位【格式1】SKIP[<數(shù)值運(yùn)算式1>][IN<數(shù)值運(yùn)算式2>|<字符運(yùn)算式>]【功能】記錄指針從當(dāng)前記錄向前(或向後)移動若干個記錄。【說明】<數(shù)值運(yùn)算式1>:表示移動的記錄個數(shù)。若數(shù)值運(yùn)算式的值為負(fù)值,表示向前移動記錄;否則,表示向後移動記錄。如果缺省此項,則表示向後移動1個記錄。如果記錄指針已經(jīng)移過檔的最後一個記錄,則RECNO()函數(shù)返回的值等於檔中的記錄總數(shù)加1,EOF()函數(shù)返回邏輯真(.T.)值?!靖袷?】GO|GOTO<|TOP|BOTTOM>【功能】將記錄指針移動到表檔的首記錄或尾記錄。TOP:將記錄指針移動到表檔的首記錄。BOTTOM:將記錄指針動到表檔的最後一條記錄。51相對定位與是否打開索引檔有關(guān)。如果打開了索引檔,記錄指針按索引檔中順序移動。否則按表檔中物理順序移動。

【例4-10】絕對定位命令的用法。

USESTUDGOTO2GO3【例4-11】相對定位的用法。

USESTUDSKIP4&&系統(tǒng)主窗口顯示為5

SKIP–3 &&系統(tǒng)主窗口顯示為2

SKIP8&&超出了記錄總數(shù)6

gotop&&系統(tǒng)主窗口顯示為152表記錄的刪除也是表維護(hù)的一項經(jīng)常性的工作,因?yàn)閯h除意味著數(shù)據(jù)的消失,所以對記錄的刪除操作比較慎重,刪除可分為邏輯刪除和物理刪除兩種操作。邏輯刪除還可以恢復(fù),而物理刪除則不可恢復(fù)。1.邏輯刪除記錄邏輯刪除就是給指定的記錄作刪除標(biāo)記“*”。(1)命令方式

【格式】DELETE[<範(fàn)圍>][FOR<條件>][WHILE<條件>]

【功能】對當(dāng)前表中指定範(fàn)圍內(nèi)滿足條件的記錄作刪除標(biāo)記“*”。

【說明】DELETE命令僅僅是在要刪除的記錄前加上一個刪除標(biāo)記“*”,並不是真正地從表檔中將該記錄刪除掉??梢杂肔IST或DISP命令顯示帶刪除標(biāo)記的記錄。八、表記錄的刪除53<範(fàn)圍>,F(xiàn)OR<條件>、WHILE<條件>等各項選項意義同前;如果同時缺省<範(fàn)圍>和<條件>子句,則僅僅刪除當(dāng)前的記錄。【例4-12】刪除STUD.DBF中所有男同學(xué)的記錄。

USESTUDDELETEFOR性別="男"LISTFIELDS學(xué)號,姓名,性別,班級名,系別;代號,地址,出生日期,是否團(tuán)員(2)菜單方式利用菜單方式邏輯刪除記錄的具體操作步驟如下:①首先打開表檔②選擇【顯示】|【流覽】命令,系統(tǒng)彈出記錄流覽窗口,顯示當(dāng)前表中的記錄。主菜單上增加【表】菜單項。

54③選擇【表】|【刪除記錄】命令,出現(xiàn)圖3-5所示的“刪除”對話框。④單擊刪除對話框中的For…按鈕或While…按鈕,系統(tǒng)彈出運(yùn)算式生成器,用戶可以在運(yùn)算式框中輸入一個邏輯運(yùn)算式,如性別=”男”,單擊【確定】按鈕完成條件運(yùn)算式的輸入。⑤在“作用範(fàn)圍”下拉列表框中選擇範(fàn)圍,如ALL。⑥單擊“刪除”對話框中的“刪除”按鈕,系統(tǒng)將完成對指定範(fàn)例內(nèi)滿足指定條件的記錄的邏輯刪除。2.隱藏邏輯刪除記錄【格式】SETDELETEDON|OFF【功能】將表檔中已邏輯刪除的記錄隱藏,仿佛真正刪除一樣。

55圖3-5記錄刪除對話框56【說明】表檔中被邏輯刪除的記錄只是在該記錄上加一個刪除標(biāo)記,當(dāng)SETDELETED設(shè)置為OFF時,對該表檔的各種操作,對被刪除的記錄同樣有效。當(dāng)SETDELETEDON時,可使對表檔中數(shù)據(jù)的各種操作,一般均不包括有刪除標(biāo)記的記錄,但下列情況例外:命令的記錄範(fàn)圍是當(dāng)前記錄或RECORD(n)時;INDEX或REINDEX命令不受SETDELETED的影響,始終處理帶刪除標(biāo)記的記錄。SETDELETED的缺省狀態(tài)是OFF?!纠?-13】隱藏上題中STUD.DBF的標(biāo)記刪除記錄。

USESTUDSETDELETEDON3.恢復(fù)邏輯刪除記錄恢復(fù)邏輯刪除是將被邏輯刪除的記錄恢復(fù)為正常記錄。即去掉“*”號。57(1)命令方式

【格式】RECALL[<範(fàn)圍>][FOR<條件>][WHILE<條件>][NOOPTIMIZE]

【功能】將當(dāng)前表檔中指定範(fàn)圍內(nèi)滿足條件的已作刪除標(biāo)記“*”的記錄恢復(fù),即去掉這些刪除記錄的刪除標(biāo)記,使之成為正常記錄。

【說明】RECALL命令與DELETE命令相對應(yīng),它可以去掉被邏輯刪除記錄的刪除標(biāo)記“*”。<範(fàn)圍>,F(xiàn)OR<條件>、WHILE<條件>等各項選項意義同前;如果同時缺省<範(fàn)圍>和<條件>子句,則僅僅恢復(fù)當(dāng)前記錄?!纠?-14】恢復(fù)STUD.DBF中刪除的所有記錄。

USESTUDRECALLALL(2)菜單方式①首先打開表檔58②選擇【顯示】|【流覽】命令。③選擇【表】|【恢復(fù)記錄】命令,出現(xiàn)類似圖3-5所示對話框。餘下操作與“刪除”對話框的操作相同。4.物理刪除記錄物理刪除是將當(dāng)前表檔中被邏輯刪除的記錄全部清除。(1)命令方式

【格式】PACK[MEMO][DBF]

【功能】將當(dāng)前表檔中所有帶刪除標(biāo)記(*)的記錄全部真正地刪除掉。

【說明】若選用MEMO選項,PACKMEMO將壓縮與表檔同名的備註檔中的無用空間,但並不刪除表檔中作了刪除標(biāo)記的記錄。若選用DBF選項,而不用MEMO選項,則只刪除表檔中作了刪除標(biāo)記的記錄,而不壓縮相應(yīng)的備註檔。59若不帶任何選項,PACK命令將刪除資料庫檔中作了刪除標(biāo)記的記錄,同時壓縮相應(yīng)的備註檔。注意:執(zhí)行該命令後被刪除的記錄將不能被恢復(fù),因此使用時應(yīng)特別小心?!纠?-15】將STUD.DBF中的學(xué)號為“021405”的記錄進(jìn)行物理刪除。

USESTUDDELETEFOR學(xué)號=”021405”

PACK(2)菜單方式利用菜單方式物理刪除表記錄的具體步驟如下:①首先打開表檔②選擇【顯示】|【流覽】命令,系統(tǒng)彈出記錄流覽窗口,顯示當(dāng)前表中的記錄。主菜單上增加【表】菜單。③選擇【表】|【徹底刪除】命令,出現(xiàn)“確認(rèn)”對話框。60④單擊“是”按鈕,完成物理刪除過程。注意:用戶也可以在EDIT、CHANGE、BROWSE窗口中,按Ctrl+T鍵對當(dāng)前記錄作(或取消)刪除標(biāo)記,也可以用滑鼠單擊記錄最左邊的刪除標(biāo)記欄作刪除(或取消)標(biāo)記。

5.刪除全部記錄

【格式】ZAP

【功能】將當(dāng)前打開的表檔中的所有記錄完全刪除掉。

【說明】執(zhí)行該命令之後,將只保留表檔的結(jié)構(gòu),而不再有任何數(shù)據(jù)存在。這種刪除無法恢復(fù),因此,為防止用戶發(fā)生錯誤操作而刪除有用的表檔記錄,執(zhí)行該命令時,系統(tǒng)會彈出提示窗口,以確認(rèn)是否刪除全部記錄,單擊“是”按鈕清除所有記錄,單擊“否”按鈕放棄ZAP操作。611.表結(jié)構(gòu)的複製【格式】COPYSTRUCTURETO<檔案名>[FIELDS<字段名表>][[WITH]CDX|[WITH]PRODUCTION]【功能】複製當(dāng)前表檔的結(jié)構(gòu)作為新表檔的結(jié)構(gòu)。【說明】命令執(zhí)行前,需複製的表檔必須是打開的。執(zhí)行後,生成的新表檔只有結(jié)構(gòu)。<字段名表>:確定新表結(jié)構(gòu)的字段名,<字段名表>中的字段必須是原表檔中具有的字段名。若省略該選項,則原樣複製當(dāng)前表檔的結(jié)構(gòu)?!纠?-16】用複製命令將STUD.DBF中的學(xué)號、姓名、性別、出生日期等四個字段,構(gòu)成一個新表結(jié)構(gòu)。九、表的複製62

USESTUDCOPYSTRUCTURETOSTUD1FIELDS學(xué)號,姓名,性別,出生日期2.表檔的複製【格式】COPYTO<檔案名>[FIELDS<字段名表>][<範(fàn)圍>][FOR<邏輯運(yùn)算式1>][WHILE<邏輯表達(dá)式2>][[WITH]CDX]|[[WITH]PRODUCTION]【功能】將當(dāng)前打開的表檔全部或部分複製到一個新生成的表檔中?!菊f明】新生成表檔中的字段順序由FIELDS選擇項<字段名表>確定,缺省表示新表的結(jié)構(gòu)與原表的結(jié)構(gòu)完全相同,新表檔中的記錄由<範(fàn)圍>選擇項以及<條件>選擇項確定。同時缺省<範(fàn)圍>、<條件>表示將原表的全部記錄都複製到新表中。若<範(fàn)圍>、<條件>和<字段名表>都缺省,則表示將原表進(jìn)行備份。63

<檔案名>指定新生成的表檔。若當(dāng)前原表檔中有備註型字段,則相應(yīng)的備註檔(.FPT檔)將同時被複製。新表檔案名不能與被複製的原表檔同名,省略盤符和路徑表示在當(dāng)前盤當(dāng)前目錄下生成新表檔。

【例4-17】複製STUD.DBF中所有女同學(xué)的記錄到STUD2.DBF中。

USESTUD

COPYTOSTUD2FOR性別=“女”

3.表記錄保存為文本檔

【格式】COPYTO<檔案名>[FIELDS<字段名表>][<範(fàn)圍>][FOR<邏輯運(yùn)算式1>][WHILE<邏輯表達(dá)式2>]<TYPESDF|DELIMITED[WITH<定界符>|WITHBLANK|WITHTAB]>

【功能】將當(dāng)前表的記錄全部或部分保存到一個文本文件中。

64【說明】

FIELDS<字段名表>:確定文本檔中的字段順序,缺省表示將表中記錄的全部字段值保存到文本檔中,。<範(fàn)圍>以及<條件>選擇項:確定哪些記錄的字段值保存到文本檔中。同時缺省<範(fàn)圍>、<條件>表示將原表的全部記錄的字段值都保存到文本檔中。[TYPE]:當(dāng)用戶生成的新檔不是DBF格式檔時,可以用TYPE選項指定新檔的格式,系統(tǒng)會自動產(chǎn)生不同格式的新檔,並為新檔加上相應(yīng)的擴(kuò)展名。TYPE檔類型包括下列幾種:●

SDF:複製為SDF(SystemDataFormat)格式的ASCII文本檔,默認(rèn)擴(kuò)展名為.TXT。●DELIMITED[WITH<定界符>WITHBLANK|WITHTAB]:複製為帶分隔符號的ASCII文本檔,默認(rèn)擴(kuò)展名為.TXT。65SDF和DELIMITED格式的區(qū)別:SDF是將表檔的每一條記錄複製到SDF文本檔中,在每一行中,字段與字段間沒有分隔符號,每一行以回車換行結(jié)束。字段在SDF檔中的寬度是固定的,等於源表中該字段的定義寬度。在SDF檔中,表檔中的字元型字段和數(shù)值型字段原樣存貯,即字元型左對齊存貯,不足部分在右邊填以空格;數(shù)值型則以右對齊方式存貯,不足部分在左邊填以空格。日期型數(shù)據(jù)以YYYYMMDD格式存貯。邏輯型數(shù)據(jù)以T或F存貯。SDF文本檔不接受備註型字段和通用型字段。DELIMITED檔帶定界符格式文本檔,也是將源表檔中的每一條記錄作為一行存貯,每行以回車換行結(jié)尾。但記錄的各字段間以分隔符號隔開,各字段的寬度為字段值的實(shí)際寬度。66字段間的分隔符號默認(rèn)為“,”號,字元型字段的定界符為雙引號。用戶可以用WITH<定界符>WITHBLANK|WITHTAB指定分隔符號,WITH<定界符>表示用指定的<定界符>為字元型字段的定界符;WITHBLANK|WITHTAB則指定空格或Tab鍵作為字段間的分隔符號。若使用WITHBLANK,則字元型字段不再有定界符。注意:該命令和表檔的複製命令實(shí)際上是同一個命令,是複製為表檔還是文本檔,看是否帶TYPE子句?!纠?-18】複製STUD.DBF中的記錄內(nèi)容複製到SSTUD.TXT(SDF格式)、DSTUD.TXT(DELIMITED格式)和ESTUD.TXT(以空格為分隔符號的DELIMITED格式)中。

USESTUDCOPYTOSSTUDSDFCOPYTODSTUDDELIMITEDCOPYTOESTUDDELIMITEDWITHBLANK67十、表記錄的追加

維護(hù)資料庫的一項經(jīng)常性的操作就是根據(jù)需要隨時向表檔中添加記錄,添加記錄包括追加記錄、插入記錄和利用其他檔追加。追加記錄在前面已經(jīng)介紹,在這裏就介紹後面兩種方法。1.從另一個表檔中追加記錄

【格式】APPENDFROM<檔案名|?>[FIELDS<字段名表>][FOR<邏輯運(yùn)算式>]

【功能】從指定的表檔中讀入數(shù)據(jù),並添加到當(dāng)前表檔的末尾。

【說明】數(shù)據(jù)的追加是從命令中指定的表檔追加到當(dāng)前表檔中,所以,應(yīng)先將需要追加記錄的表檔打開,設(shè)置為當(dāng)前表,然後再使用該命令進(jìn)行追加。68

追加原則是同名原則,即將數(shù)據(jù)來源表中的字段與當(dāng)前表的字段進(jìn)行比較,同名則將符合條件的記錄的值追加過來。若數(shù)據(jù)來源表中缺少某些字段,則當(dāng)前表中該字段值為空。追加數(shù)據(jù)記錄時,若兩個表檔同名字段的寬度不相同,一般情況下,若當(dāng)前表的字段寬度大於數(shù)據(jù)來源表的字段寬度,記錄能正常追加,對字元型數(shù)據(jù)後面加空格,對數(shù)值型數(shù)據(jù)前面加“0”,但若當(dāng)前表的字段寬度小於數(shù)據(jù)來源表的字段寬度,記錄不能正常追加,數(shù)據(jù)失去原來的意義。對字元型數(shù)據(jù)截去後面多餘字元,對數(shù)值型數(shù)據(jù)進(jìn)行小數(shù)部分的四捨五入,仍不夠根據(jù)當(dāng)前表的寬度用“*”號填充,表示溢出。692.從另一個文本檔中追加記錄(1)命令方式

【格式】APPENDFROM<檔案名|?>[FIELDS<字段名表>][FOR<邏輯運(yùn)算式>][[TYPE]SDF|[DELIMITED[WITHTAB|WITH<定界符>|WITHBLANK]]

【功能】從指定類型的文本檔中讀入數(shù)據(jù),並添加到當(dāng)前表檔的末尾。

【說明】<檔案名>是指獲取數(shù)據(jù)的文本檔案名。文本檔中的每一行,追加為一條記錄??梢栽谖谋緳n中輸入文本,但要保證文本格式相同,再利用此命令追加為記錄。注意:數(shù)據(jù)檔若由COPYTO命令生成的且定義了文本檔的分隔符號,則追加記錄時也應(yīng)用相同的分隔符號。因?yàn)橄到y(tǒng)以每個分隔符號作為字段值的分隔符號。這樣才能保證數(shù)據(jù)能正確還原。70(2)菜單方式①打開表檔。②選擇【顯示】|【流覽】命令。③選擇【表】|【追加記錄】命令,彈出圖3-6所示的“追加來源”對話框。④單擊類型下拉按鈕選擇用來追加記錄的數(shù)據(jù)檔的類型,在“來源於”顯示欄中輸入數(shù)據(jù)來源檔的路徑和文件名,再選擇“選項”顯示框中的字段、條件。確定後返回追加來源窗口。⑤單擊“確定”按鈕,系統(tǒng)將滿足條件的記錄完成追加操作。3.插入記錄【格式】INSERT[BEFORE][BLANK]【功能】在當(dāng)前表檔的指定位置插入新記錄或空記錄。

71圖3-6追加來源對話框72【說明】INSERT是在當(dāng)前記錄之後插入新記錄,INSERTBEFORE是在當(dāng)前記錄之前插入新記錄,INSERTBLANK是在當(dāng)前記錄之後插入空記錄。若表檔建立了索引,則插入的新記錄按索引值進(jìn)行排列?!纠?-19】在表STUD.DBF的第2號記錄前插入一條新記錄,在第4號記錄後插入一條新記錄。

USESTUDGOTO2INSERTBEFORE &&在2號記錄前插入一條新記錄

GOTO5&&因已插入了一條新記錄,原4號現(xiàn)為5號

INSERT&&在4號記錄後插入一條新記錄73十一、檔管理命令

VisualFoxPro除了表檔之外,還有其他多種類型的檔,系統(tǒng)對各類檔提供了通用的管理手段,其功能類似於DOS的檔管理命令,但必須注意它們之間的區(qū)別。1.顯示檔目錄

【格式】DIR|DIRECTORY[ON<盤符>][[LIKE][<路徑>][<通配符>]][TOPRINTER[PROMPT]|TOFILE<檔案名>]或LIST|DISPLAYFILES[ON<盤符>][LIKE<通配符>]

[TOPRINTER[PROMPT]|TOFILE<檔案名>]

【功能】顯示磁片檔目錄資訊。

【說明】該命令類似於DOS操作系統(tǒng)的DIR命令。

ON<盤符>:指定所顯示檔目錄所在的驅(qū)動器符號,缺省此項為當(dāng)前盤。[LIKE][<路徑>][<通配符>]:<路徑>指定顯示檔所在路徑;

742.檔改名【格式】RENAME<檔案名1>TO<檔案名2>【功能】將<檔案名1>改為<檔案名2>?!菊f明】該命令類似於DOS操作系統(tǒng)的REN命令。改名之前檔必須關(guān)閉,正在使用的檔不能改名。如果有備註檔,對表檔改名時,不要忘記為相應(yīng)的.FPT檔改名,否則打不開改名後的表?!纠?-20】將STUD.DBF改為GL.DBF。

USERENAMESTUD.DBFTOGL.DBFRENAMESTUD.FPTTOGL.FPT753.檔刪除【格式】ERASE[<檔案名>|?]或

DELETEFILE[<檔案名>|?]【功能】從磁片上刪除指定的檔?!菊f明】此命令類似於DOS操作系統(tǒng)的DEL命令。如果選擇參數(shù)?或缺省檔案名選項,系統(tǒng)將彈出Open對話框,供用戶選擇所需刪除的檔。為防止誤操作,該命令不默認(rèn)擴(kuò)展名,所以<檔案名>必須用全稱,<檔案名>不能使用通配符,如果<檔案名>不在目錄下,則需指定路徑。同時,此命令也不能刪除已打開的檔。【例4-21】刪除當(dāng)前目錄下的.BAK檔。

ERASEABC.BAKERASESTUD.BAKDELETEFILEXSCJ.BAKDIR*.BAK764.檔複製【格式】COPYFILE<檔案名1>TO<檔案名2>【功能】對各類檔進(jìn)行複製【說明】此命令類似於DOS操作系統(tǒng)的COPY命令。<檔案名1>和<檔案名2>必須給出全名,不能使用通配符;不能複製已打開的檔;當(dāng)複製含有備註型字段或已建立索引的表檔時,必須複製相應(yīng)的備註檔和索引檔?!纠?-22】將STUD.DBF改名為STUDBAK.DBF複製到A:盤上。

COPYFILESTUD.DBFTOA:STUDBAK.DBFCOPYFILESTUD.FPTTOA:STUDBAK.FPT

&&複製.FPT備註檔775.顯示文本檔

【格式】TYPE<檔案名1>[AUTO][WRAP][TOPRINTER

[PROMPT]|TOFILE<檔案名2>][NUMBER]

【功能】顯示或同時列印文本檔

【說明】此命令類似於DOS操作系統(tǒng)的TYPE命令。文本檔是指非結(jié)構(gòu)式檔,即沒有任何內(nèi)部控制符的ASCII碼檔。例如命令檔.PRG、螢?zāi)桓袷綑n.FMT和文本文件.TXT。<檔案名1>和<檔案名2>:必須帶擴(kuò)展名,不能使用通配符,且不能是打開的檔。

6.調(diào)用外部命令如果覺得VisualFoxPro的檔管理命令不方便,可以調(diào)用DOS的有關(guān)命令。

【格式】RUN|![/N[K]]<MS-DOS命令|程式名>

【功能】執(zhí)行MSDOS的系統(tǒng)命令。

【說明】此命令直接完成外部程式的功能。使用本命令必須有足夠的記憶體空間,否則會產(chǎn)生“記憶體不足”的錯誤。78

為了高效方便地存取數(shù)據(jù),往往要求表記錄以某一定的順序排放或顯示,因此,VisualFoxPro提供了兩種方法重新組織數(shù)據(jù),即排序和索引。排序是從物理上對表進(jìn)行重新整理,按照指定的關(guān)鍵字段來重新排列表中數(shù)據(jù)記錄的順序,並產(chǎn)生一個新的表檔。由於新表的產(chǎn)生即費(fèi)時間也浪費(fèi)空間,實(shí)際中很少用。索引是從邏輯上對表進(jìn)行重新整理,按照指定的關(guān)鍵字段的建立索引檔。一個表檔可以建立多個索引檔,但對於打開的表檔,任何時侯只有一個索引檔起作用,此索引檔稱為主控索引。第三節(jié)表的排序與索引79一、表的排序【格式】SORTTO<新檔案名>ON<字段1>[/A|/D][/C][,<字段2>[/A|/D][/C]...][ASCENDING|DESCENDING][<範(fàn)圍>][FOR<邏輯運(yùn)算式1>][WHILE<邏輯運(yùn)算式2>][FIELDS<字段名表>]【功能】對當(dāng)前打開的表,按指定的字段進(jìn)行排序,生成新的表檔?!菊f明】

生成的排序檔也是一個資料庫檔。範(fàn)圍、條件的含義同COPYTO命令。用作排序的字段的數(shù)據(jù)類型允許是N、C、D、L型。/A表示昇冪/D表示降序/C表示不區(qū)分大小寫。

80當(dāng)有多個關(guān)鍵字段時,先按字段1的值排列,其值相同的,再按字段2的值排列。原庫中的記錄發(fā)生變化,排序檔不能自動完成同步修改。該命令執(zhí)行後,當(dāng)前表不變,產(chǎn)生的新表不會自動打開。該排序方法占空間、廢時間,很少用?!纠?-23】將STUD.DBF按性別進(jìn)行降序排列

USESTUD

SORTTOSTUD2ON性別/D81二、索引的基本概念1.索引及索引檔的概述索引是以索引檔的形式存在的,它根據(jù)指定的索引關(guān)鍵字運(yùn)算式建立的。索引檔可以看成索引關(guān)鍵字的值與記錄號之間的對照表,關(guān)鍵字可以是一個字段,也可以是幾個字段的組合。在建立索引檔時,把表所有記錄的索引關(guān)鍵字運(yùn)算式的值按指定順序排序,並把每個索引關(guān)鍵字運(yùn)算式值與該值在表中所對應(yīng)的記錄對應(yīng)起來,保存在索引檔中。索引檔必須與原表一起使用,查詢時根據(jù)索引關(guān)鍵字運(yùn)算式的值先在索引檔中找到某字段所在的記錄號,然後再到表裏直接定位。這樣的查找方式使順序查找和隨機(jī)查找都有較高的效率。打開索引檔時,將改變表中記錄的邏輯順序,但並不改變表中記錄的物理順序。82一個表檔可建立多個索引檔,也可同時打開多個索引檔,但在同一時間內(nèi)只有一個索引起作用,這個索引稱為主控索引。

VisualFoxPro系統(tǒng)中支持兩種不同的索引檔類型,即單索引檔和複合索引檔。單索引檔是根據(jù)一個索引關(guān)鍵字運(yùn)算式(或關(guān)鍵字)建立的索引檔,檔擴(kuò)展名為.IDX,它可用INDEX命令的各種形式建立。單索引檔分為標(biāo)準(zhǔn)和壓縮兩種類型。複合索引檔是指索引檔中可以包含多個索引標(biāo)識的擴(kuò)展名為.CDX。每個索引標(biāo)識與單索引檔類似,也可以根據(jù)一個索引關(guān)鍵字運(yùn)算式(或關(guān)健字)建立。每一個索引標(biāo)識均有一個特殊的標(biāo)識名(TAG)。標(biāo)識名由字母或下劃線開頭,由字母、數(shù)字或下劃線組成,長度不超過10個字元。用戶可以利用標(biāo)識名來使用標(biāo)識,向複合索引檔中追加標(biāo)識。複合檔中標(biāo)識的數(shù)目,僅受記憶體和磁片空間的限制。83複合索引檔又有兩種:一種是獨(dú)立複合索引檔;另一種是結(jié)構(gòu)複合索引檔。結(jié)構(gòu)複合索引檔是由VisualFoxPro自動命名的,與相應(yīng)的表檔同名,擴(kuò)展名為.CDX。當(dāng)VisualFoxPro打開一個表時,便自動查找一個結(jié)構(gòu)複合索引檔,如果找到便自動打開,該索引檔隨表檔同時打開和同時關(guān)閉。獨(dú)立複合索引檔不與表檔同名,擴(kuò)展名為.CDX。在打開表時不會自動打開此索引檔,由命令指定打開。索引可分為下列四種類型:

2.主索引主索引是一個永遠(yuǎn)不允許在指定字段和運(yùn)算式中出現(xiàn)重複值的索引。它也是在資料庫表的永久關(guān)聯(lián)中創(chuàng)建參照完整性時主表和被引用表使用的索引。每一個表只能建立一個主索引,只有資料庫表才能建立主索引。84

3.侯選索引侯選索引也是一個不允許在指定字段和運(yùn)算式中出現(xiàn)重複值的索引。資料庫表和自由表都可以建立侯選索引,一個表可以建立多個侯選索引。主索引和侯選索引都存儲在.CDX結(jié)構(gòu)複合索引檔中,不能存儲在獨(dú)立複合索引檔和單索引檔中,因?yàn)橹魉饕秃钸x索引都必須與表檔同時打開和同時關(guān)閉。

4.唯一索引系統(tǒng)只在索引檔中保留第一次出現(xiàn)的索引關(guān)鍵字值。資料庫表和自由表都可以建立唯一索引

5.普通索引是一個最簡單的索引,允許關(guān)鍵字值的重複出現(xiàn),適合用來進(jìn)行表中記錄的排序和查詢,也適合於一對多永久關(guān)聯(lián)中“多”的一邊(子表)的索引。資料庫表和自由表都可以建立普通索引。85

三、索引檔的建立1.命令方式

【格式】INDEXON<索引關(guān)鍵字運(yùn)算式>TO<單索引檔>|TAG<標(biāo)識名>[OF<獨(dú)立複合索引檔案名>][FOR<邏輯運(yùn)算式>][COMPACT][ASCENDING|DESCENDING][UNIQUE][ADDITIVE]

【功能】對當(dāng)前表檔按指定的關(guān)鍵字建立索引檔。

【說明】<索引關(guān)鍵字運(yùn)算式>:指定建立索引檔的關(guān)鍵字運(yùn)算式,可以是單一字段名,也可以是多個字段組成的字元型運(yùn)算式,運(yùn)算式中各字段的類型只能是數(shù)值型、字元型和日期型和邏輯型。當(dāng)運(yùn)算式是單個字段名時,字段類型不用轉(zhuǎn)換;應(yīng)轉(zhuǎn)換成同一類型的運(yùn)算式。86

TAG<標(biāo)識名>:此選項只對建立複合索引檔時有效,指定建立或追加索引標(biāo)識的標(biāo)識名。OF<獨(dú)立複合索引檔>:指定獨(dú)立複合索引檔案名。若有此選項,表示在指定的獨(dú)立複合索引檔中追加一個索引標(biāo)識,若指定的獨(dú)立複合索引檔不存在,系統(tǒng)將自動建立指定的檔。若沒有此選項,表示在結(jié)構(gòu)複合檔中追加一個索引標(biāo)識,若結(jié)構(gòu)複合索引檔不存在,系統(tǒng)將自動建立結(jié)構(gòu)複合索引檔。FOR<邏輯運(yùn)算式>:表示只對滿足條件的記錄建立索引。COMPACT:此選項只對單索引檔有效,表示建立壓縮索引檔。ASCENDING|DESCENDING:ASCENDING表示按昇冪建立索引,DESCENDING表示按降序建立索引。缺省時,按昇冪建立索引。單索引檔不能選用DESCENDING選項。87UNIQUE:表示建立的是唯一索引。ADDITIVE:表示保留以前打開的索引檔。否則,除結(jié)構(gòu)複合索引檔外,以前打開的其他索引檔都將被關(guān)閉。新建的索引檔自動打開,並開始起作用?!纠?-24】對STUD.DBF表檔建立出生日期單索引檔STUD.IDX。

USESTUDINDEXON出生日期TOSTUD【例4-25】對表檔STUD.DBF,建立一個基於出生日期字段的結(jié)構(gòu)複合索引檔。USESTUDINDEXON出生日期TAG出生日期DESCENDING88【例4-26】在表檔STUD.DBF的結(jié)構(gòu)複合索引檔中,按學(xué)號和姓名各追加一個標(biāo)識。

USESTUDINDEXON學(xué)號TAG學(xué)號【例4-27】在表檔STUD.DBF的結(jié)構(gòu)複合索引檔中,先按性別再按學(xué)號追加一個標(biāo)識。

USESTUDINDEXON性別+學(xué)號TAG性別學(xué)號【例4-28】在表檔STUD.DBF中,先按性別再按是否團(tuán)員建立一個獨(dú)立複合索引檔SXBTY.CDX。

USESTUDINDEXON性別+IIF(是否團(tuán)員,’團(tuán)員’,’非團(tuán)員’)TAG性別團(tuán)員OFSXBTY89

2.菜單方式①打開表檔。②選擇【顯示】|【表設(shè)計器】命令,打開表設(shè)計器對話框,選擇“索引”標(biāo)籤,如圖3-7所示。③在索引名中輸入索引標(biāo)識名,在類型的下拉列表框中確定一種索引類型,在運(yùn)算式中輸入索引關(guān)鍵字運(yùn)算式,在篩選中輸入確定參加索引的記錄條件,在排序

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論