07739-Visual Foxpro數(shù)據(jù)庫程序設(shè)計教程_第1頁
07739-Visual Foxpro數(shù)據(jù)庫程序設(shè)計教程_第2頁
07739-Visual Foxpro數(shù)據(jù)庫程序設(shè)計教程_第3頁
07739-Visual Foxpro數(shù)據(jù)庫程序設(shè)計教程_第4頁
07739-Visual Foxpro數(shù)據(jù)庫程序設(shè)計教程_第5頁
已閱讀5頁,還剩359頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第1章數(shù)據(jù)庫基礎(chǔ)概述1.1.1數(shù)據(jù)處理的基本概念1.數(shù)據(jù)

數(shù)據(jù)是指存儲在某種介質(zhì)上用來記錄客觀事物的性質(zhì)、形態(tài)和持征的符號,是對客觀存在的實體的一種描述和記載。2.信息

信息是經(jīng)過加工處理后獲得的有用的數(shù)據(jù),是對數(shù)據(jù)按一定的目的,采用一定的方法加工處理后的結(jié)果。3.數(shù)據(jù)處理

數(shù)據(jù)處理就是將原始數(shù)據(jù)轉(zhuǎn)化為信息的過程。1.1.2數(shù)據(jù)處理的發(fā)展過程

1.人工管理階段

計算機數(shù)據(jù)處理的人工管理階段有以下缺點:(1)數(shù)據(jù)與程序不具有獨立性。(2)數(shù)據(jù)存在大量的冗余。2.文件系統(tǒng)階段

操作系統(tǒng)中的文件系統(tǒng)是專門管理外存數(shù)據(jù)的管理軟件。計算機開始大量地用于數(shù)據(jù)處理工作。這時的數(shù)據(jù)處理,程序和數(shù)據(jù)可以分別存儲為程序文件和數(shù)據(jù)文件,因而程序與數(shù)據(jù)不再是一體。計算機數(shù)據(jù)處理的文件系統(tǒng)階段雖然比人工管理階段有了很大的進步,但仍有以下缺點:(1)程序與數(shù)據(jù)相互依賴性。(2)數(shù)據(jù)的冗余大。(3)數(shù)據(jù)獨立性差。3.數(shù)據(jù)庫系統(tǒng)階段

數(shù)據(jù)庫系統(tǒng)管理數(shù)據(jù)的特點如下:(1)實現(xiàn)了數(shù)據(jù)共享、減少了數(shù)據(jù)冗余。(2)數(shù)據(jù)結(jié)構(gòu)化。(3)提高了數(shù)據(jù)的獨立性。(4)數(shù)據(jù)統(tǒng)一管理與控制。數(shù)據(jù)庫技術(shù)1.2.1數(shù)據(jù)庫所謂數(shù)據(jù)庫是按照一定的組織方式,相互有關(guān)的數(shù)據(jù)的集合稱為數(shù)據(jù)庫(DataBase,簡稱DB)。1.2.2數(shù)據(jù)庫管理系統(tǒng)

數(shù)據(jù)庫管理系統(tǒng)(DataBaseManagementSystem,簡稱DBMS)是為數(shù)據(jù)庫的建立、使用和維護而配置的軟件。1.21.數(shù)據(jù)庫管理系統(tǒng)的功能

(1)數(shù)據(jù)定義功能。(2)數(shù)據(jù)操作功能。(3)控制和管理功能。(4)數(shù)據(jù)字典。2.常用的數(shù)據(jù)庫管理系統(tǒng)Oracle的功能比較強大,一般用于超大型管理系統(tǒng)軟件的建立,現(xiàn)在的應(yīng)用范圍也已經(jīng)比較廣泛。1.2.3數(shù)據(jù)庫系統(tǒng)1.計算機硬件系統(tǒng)

計算機硬件系統(tǒng)是指存儲數(shù)據(jù)庫和運行數(shù)據(jù)庫系統(tǒng)的硬件資源,包括計算機運算器、控制器、存儲器、輸入設(shè)備、輸出設(shè)備等。2.數(shù)據(jù)庫存儲在計算機外存儲器上的若干設(shè)計合理、滿足實際應(yīng)用需要的數(shù)據(jù)庫。3.數(shù)據(jù)庫管理系統(tǒng)

數(shù)據(jù)庫管理系統(tǒng)軟件是計算機系統(tǒng)軟件中的一種,幫助用戶創(chuàng)建、維護和使用數(shù)據(jù)庫,是數(shù)據(jù)庫系統(tǒng)的核心。4.相關(guān)軟件

相關(guān)軟件包括操作系統(tǒng)、編譯系統(tǒng)、應(yīng)用開發(fā)工具軟件和計算機網(wǎng)絡(luò)軟件等。5.人員人員包括數(shù)據(jù)庫管理員和用戶。數(shù)據(jù)描述與數(shù)據(jù)模型1.31.3.1數(shù)據(jù)描述

1.現(xiàn)實世界現(xiàn)實世界即客觀存在的世界?,F(xiàn)實世界中存在著各種各樣的事物及事物之間的聯(lián)系。2.信息世界

現(xiàn)實世界中的事物及事物之間的聯(lián)系由人們的感官感知,經(jīng)過人們的頭腦分析、歸納、抽象,形成信息。1.3.2概念模型1.概念模型涉及的術(shù)語3.機器世界

信息世界中的信息經(jīng)過抽象和組織,以數(shù)據(jù)形式存儲在計算機中,形成了所謂的機器世界,機器世界又稱數(shù)據(jù)世界。(1)實體和實體集(Entity,EntitySet)。(2)屬性(Attribute)。(3)域(Domain)。

(4)實體型(EntityType)。

2.實體聯(lián)系

實體內(nèi)部的聯(lián)系通常是指組成實體的各屬性之間的聯(lián)系,實體之間的聯(lián)系通常是指不同實體集之間的聯(lián)系。兩個實體型之間的聯(lián)系可以分為三類:(1)一對一聯(lián)系(1:1):

實體集A中的一個實體至多與實體集B中的一個實體相對應(yīng),反之,實體集B中的一個實體至多與實體A中的一個實體相對應(yīng)。(2)一對多聯(lián)系(1:n):實體集A中的一個實體與實體集B中的多個實體相對應(yīng),而實體集B中的一個實體至多與實體A中的一個實體相對應(yīng)。(3)多對多聯(lián)系(m:n):實體集A中的每一個實體與實體集B中的多個實體相對應(yīng),并且實體集B中的每一個實體也與實體A中的多個實體相對應(yīng)。3.建立實體聯(lián)系模型教學(xué)管理系統(tǒng)的實體模型如圖1-4所示。

1.3.3數(shù)據(jù)模型

1.層次模型利用樹型結(jié)構(gòu)表示實體及其之間聯(lián)系的模型稱為層次模型,該模型體現(xiàn)實體間的一對多聯(lián)系。2.網(wǎng)狀模型利用網(wǎng)狀結(jié)構(gòu)表示實體及其之間聯(lián)系的模型稱為網(wǎng)狀模型,該模型體現(xiàn)實體間的多對多聯(lián)系,具有很大的靈活性。3.關(guān)系模型利用二維表格表示實體及其之間聯(lián)系的模型稱為關(guān)系模型,該模型把實體的屬性和聯(lián)系都統(tǒng)一用二維表格描述,這樣的一個二維表格稱為一個關(guān)系。表1-1就是一個關(guān)系

關(guān)系模型結(jié)構(gòu)簡單,但描述能力強,還有嚴格的數(shù)學(xué)理論基礎(chǔ),因此基于關(guān)系模型的數(shù)據(jù)庫是當今使用最為廣泛的數(shù)據(jù)庫。1.4關(guān)系數(shù)據(jù)庫1.4.1關(guān)系的概念

1.字段(Field)關(guān)系中的一列稱為一個字段,或稱為一個屬性。2.記錄(Record)

關(guān)系中的一行稱為一個記錄,或稱為一個元組。3.表(Table)

若干條記錄的集合構(gòu)成了表。表往往由兩部分組成,一是表的結(jié)構(gòu)(包含哪些字段),二是表中包含的一行行數(shù)據(jù)記錄。4.關(guān)系數(shù)據(jù)庫(RelationalDataBase)

關(guān)系數(shù)據(jù)庫是由若干表組成的集合,即關(guān)系數(shù)據(jù)庫中至少應(yīng)有一個表。5.關(guān)鍵字(Key)

關(guān)系中為了確定一條記錄,通常使用一種稱之為關(guān)鍵字的術(shù)語來描述,即一個關(guān)系中的某一字段或字段的組合,若它的值能唯一地標識了一條記錄,則稱該字段或字段的組合為關(guān)鍵字。6.主關(guān)鍵字(PrimaryKey)

若一個關(guān)系有多個關(guān)鍵字,若選定其中的一個作為當前標識記錄的依據(jù),則該關(guān)鍵字為主關(guān)鍵字。7.外部關(guān)鍵字(ForeignKey)若某個字段不是本表的主關(guān)鍵字,但它卻是另外一個表的主關(guān)鍵字,則稱這樣的字段為表的外部關(guān)鍵字。1.4.2關(guān)系的性質(zhì)

在關(guān)系模型中,以二維表表示的關(guān)系有如下的性質(zhì):(1)每一個列不能再分,即表中不能包含表。見表1-6所示的工資表不是關(guān)系。(2)列是同質(zhì)的,即每一列是同一類型的數(shù)據(jù),來自同一個域。(3)同一個關(guān)系中,不能有相同的字段名。(4)同一個關(guān)系中,不能有內(nèi)容完全相同的行。(5)行或列的次序可以任意交換,不影響關(guān)系的實際含義。1.4.3關(guān)系的運算

1.選擇(Select)

選擇是指從一個關(guān)系中選出滿足給定條件記錄的操作,選擇是從記錄的角度進行的運算,選出滿足條件的那些記錄構(gòu)成原關(guān)系中的一個子集。2.投影(Project)

投影是指從一個關(guān)系中選擇若干字段(屬性)組成新的關(guān)系,投影是從字段的角度進行的運算,所得到的字段個數(shù)通常比原關(guān)系中的字段少。3.連接(Join)

連接是指把兩個關(guān)系中的記錄按一定條件橫向結(jié)合,生成一個新的關(guān)系。最常用的連接運算是自然連接,它是利用兩個關(guān)系中的公共字段,把該字段相等的記錄連接起來。1.4.4關(guān)系的完整性

1.域完整性

域完整性是指字段的取值應(yīng)滿足相應(yīng)的條件。2.實體完整性

實體完整性是指表的主關(guān)鍵字的值必須是唯一的,且不允許取空值。3.參照完整性

現(xiàn)實世界中實體之間往往存在某種聯(lián)系。4.用戶自定義完整性用戶定義的完整性是針對某一具體數(shù)據(jù)庫的約束條件,由應(yīng)用環(huán)境決定。通常用戶定義的完整性主要包括以下幾個方法:(1)字段有效性約束。(2)記錄有效性約束。(3)表約束。4.用戶自定義完整性

練習(xí)一見書第2章

VisualFoxPro6.0開發(fā)環(huán)境VisualFoxPro6.0簡介2.12.1.1FoxPro發(fā)展過程1986年,F(xiàn)ox公司推出了與dBASEIIIplus全兼容的FoxBASE1.0,特別是隨后推出的FoxBASE+2.1版本,其功能和性能都大大提高,給微機關(guān)系數(shù)據(jù)庫產(chǎn)品帶來了巨大影響;1989年Fox公司又推出FoxPro1.0。2.1.2VisualFoxPro6.0的功能

1.數(shù)據(jù)定義功能

2.數(shù)據(jù)操縱功能

通過VisualFoxPro6.0中數(shù)據(jù)庫設(shè)計器,用戶可以方便地定義自己的數(shù)據(jù)庫,可以在數(shù)據(jù)庫中添加、移去、修改數(shù)據(jù)表,建立數(shù)據(jù)表之間的聯(lián)系。利用VisualFoxPro6.0提供的命令和菜單等,用戶可以方便地操縱數(shù)據(jù)表中的數(shù)據(jù),如添加、刪除、修改、查詢、統(tǒng)計等。3.數(shù)據(jù)控制功能

4.程序編輯、運行與調(diào)試功能5.界面設(shè)計功能

VisualFoxPro6.0能夠自動檢查數(shù)據(jù)表的完整性,以保證數(shù)據(jù)的正確性、有效性和相容性,同時還能控制多用戶的并發(fā)操作。通過VisualFoxPro6.0提供的命令,用戶可以方便地建立和運行自己的程序,如果程序中有錯誤,系統(tǒng)還提供了調(diào)試功能,幫助用戶排除程序中的錯誤。利用VisualFoxPro6.0的表單設(shè)計器,用戶可以快速、方便地建立漂亮實用的用戶界面,大大提高開發(fā)速度。2.1.3VisualFoxPro6.0的特點

1.強大的查詢與管理功能

VisualFoxPro6.0除了把數(shù)據(jù)庫和表的概念嚴格區(qū)分之外,還引入了視圖等概念。3.擴大了對SQL語言的支持SQL語言是關(guān)系數(shù)據(jù)庫的標準語言,其查詢語句不僅功能強大,而且使用靈活。2.全新的數(shù)據(jù)庫表概念VisualFoxPro6.0除了把數(shù)據(jù)庫和表的概念嚴格區(qū)分之外,還引入了視圖等概念。4.豐富的可視化輔助工具VisualFoxPro6.0提供了向?qū)В╳izard)、設(shè)計器(designer)、生成器(builder)等可視化輔助工具,大大方便了用戶的使用。

5.支持面向?qū)ο蟮某绦蛟O(shè)計VisualFoxPro6.0除了繼續(xù)支持傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計外,還支持面向?qū)ο蟪绦蛟O(shè)計,加快軟件開發(fā)的過程,提高軟件開發(fā)的質(zhì)量。6.支持網(wǎng)絡(luò)應(yīng)用VisualFoxPro6.0既可以開發(fā)單機環(huán)境的數(shù)據(jù)庫應(yīng)用系統(tǒng),又可以開發(fā)網(wǎng)絡(luò)環(huán)境的數(shù)據(jù)庫應(yīng)用系統(tǒng)。

VisualFoxPro6.0的使用2.22.2.1VisualFoxPro6.0的啟動

正確安裝了VisualFoxPro6.0后,在Windows桌面“開始”菜單的“程序”選項中自動建立一個“MicrosoftVisualFoxPro6.0”程序組,在該組中有一個“MicrosoftVisualFoxPro6.0”命令,執(zhí)行該命令就可啟動VisualFoxPro6.0。

圖2-1VisualFoxPro6.0用戶界面2.2.2VisualFoxPro6.0的界面

圖2-1所示的VisualFoxPro6.0用戶界面是一個標準的Windows應(yīng)用程序窗口,包括標題欄、菜單欄、工具欄、窗口工作區(qū)、命令窗口和狀態(tài)欄。1.標題欄

標題欄位于窗口的頂部,有一個標題“MicrosoftVisualFoxPro”,標題欄的右邊是最小化、最大化和關(guān)閉按鈕。2.菜單欄

菜單欄位于標題欄的下面,有“文件”、“編輯”、“顯示”、“格式”、“工具”、“程序”、“窗口”和“幫助”等菜單項。3.工具欄工具欄位于菜單欄的下面,以命令按鈕的形式給出了常用的命令。當用戶將鼠標指針停留在工具欄中的某個命令按鈕上時,屏幕上將彈出一個文本框,顯示該命令按鈕的名字。圖2-2“工具欄”對話框圖2-3快捷菜單4.窗口工作區(qū)窗口工作區(qū)位于“常用”工具欄的下面,又稱主窗口,用于顯示命令或程序的執(zhí)行結(jié)果。5.命令窗口命令窗口位于主窗口內(nèi),其主要作用是輸入和顯示命令。6.狀態(tài)欄狀態(tài)欄位于主窗口的底部,用來顯示系統(tǒng)的當前狀態(tài)(如打開的數(shù)據(jù)表名、記錄數(shù)等),用戶選擇菜單命令,或鼠標移動到工具按鈕上時,在狀態(tài)欄內(nèi)給出相應(yīng)的命令提示。2.2.3VisualFoxPro6.0的操作方式

VisualFoxPro6.0支持兩種工作方式:交互操作方式和程序執(zhí)行方式。1.交互操作方式

(1)命令方式。命令方式是指用戶在命令窗口中輸入或選擇一條命令,并按回車鍵,系統(tǒng)立即執(zhí)行該命令,若有顯示結(jié)果則在窗口工作區(qū)中顯示,如圖2-4所示。圖2-4命令執(zhí)行方式(2)可視化操作方式。可視化操作主要包括菜單操作、設(shè)計器、向?qū)?、生成器等工具類操作??梢暬僮鞣绞綄嶋H上是執(zhí)行了相應(yīng)的菜單命令或打開了系統(tǒng)提供的輔助工具后(如向?qū)?、設(shè)計器等),系統(tǒng)會彈出一個可視化的界面,通過對界面的操作完成某些要求。2.程序執(zhí)行方式

程序執(zhí)行方式是用戶先建立程序,然后再運行該程序,步驟如下:(1)通過“MODIFYCOMMANDMAIN.PRG”命令,建立一個程序文件MAIN.PRG。(2)通過“DOMAIN.PRG”命令,運行MAIN.PRG程序。2.2.4VisualFoxPro6.0的退出

一般地,退出VisualFoxPro6.0的常用方法有以下三種:(1)單擊窗口右上角的關(guān)閉按鈕;(2)在命令窗口中鍵入命令“QUIT”,按回車鍵;(3)執(zhí)行“文件”菜單中的“退出”命令。VisualFoxPro6.0的輔助工具2.32.3.1向?qū)?/p>

向?qū)且环N快捷設(shè)計工具,它通過一系列對話框向用戶提示每一步操作,引導(dǎo)用戶選擇所需要的選項,回答系統(tǒng)提出的詢問,一步步地完成某項任務(wù)。VisualFoxPro6.0提供了20多個向?qū)?,若干工作都可使用相?yīng)的向?qū)硗瓿?。?-1列出了VisualFoxPro6.0常用向?qū)У拿Q以及功能。2.3.2設(shè)計器

每種設(shè)計器有一個或多個工具欄,使用這些工具欄可以很方便地完成設(shè)計任務(wù)。例如“數(shù)據(jù)庫設(shè)計器”就有“數(shù)據(jù)庫設(shè)計器”工具欄,如圖2-6所示。設(shè)計器在VisualFoxPro6.0中的應(yīng)用非常廣泛,許多工作需要靠設(shè)計器來完成。表2-2列出了VisualFoxPro6.0常用設(shè)計器的名稱以及功能。圖2-6數(shù)據(jù)庫設(shè)計器2.3.3生成器圖2-7是編輯框生成器。圖2-7數(shù)據(jù)庫設(shè)計器VisualFoxPro6.0提供了若干生成器,表2-3列出了VisualFoxPro6.0常用生成器的名稱以及功能。

VisualFoxPro6.0的系統(tǒng)設(shè)置2.42.4.1設(shè)置工作目錄

(1)執(zhí)行“工具”菜單中的“選項”命令,彈出“選項”對話框,在對話框中選擇“文件位置”選項卡,結(jié)果如圖2-8所示。(2)在“文件位置”選項卡中,選中“默認目錄”項,然后單擊“修改”按鈕,系統(tǒng)彈出“更改文件位置”對話框,在其中輸入自己的工作目錄“d:\\人事檔案管理系統(tǒng)”,或者單擊對話框按鈕,從彈出的“選定目錄”對話框中選擇需要的工作目錄,并選中“使用默認目錄”復(fù)選框,如圖2-9所示。(3)在“更改文件位置”對話框中,設(shè)定完默認的目錄后,單擊“確定”按鈕,系統(tǒng)返回“文件位置”選項卡。(4)在“文件位置”選項卡中依次單擊“設(shè)置為默認值”按鈕和“確定”按鈕,默認工作目錄設(shè)置完成。

在最后一步中,如果不單擊“設(shè)置為默認值”按鈕,這種設(shè)置為臨時設(shè)置,即再次啟動VisualFoxPro6.0后,這些設(shè)置不起作用。圖2-8數(shù)據(jù)庫設(shè)計器圖2-9數(shù)據(jù)庫設(shè)計器2.4.2設(shè)置日期格式(1)單擊“選項”對話框中的“區(qū)域”選項卡,打開“日期格式”下拉列表框,如圖2-10所示。(2)單擊“日期格式”下拉列表中的“ANSI”選項,“日期格式”下拉列表框右側(cè)的文字框中效果為“98.11.2305:45:35PM”。(3)選中“年份”復(fù)選框,年份顯示4位。(4)在“區(qū)域”選項卡中依次單擊“設(shè)置為默認值”按鈕和“確定”按鈕,日期格式設(shè)置完成。圖2-10數(shù)據(jù)庫設(shè)計器2.4.3設(shè)置字符比較方式

(1)單擊“選項”對話框中的“數(shù)據(jù)”選項卡,如圖2-11所示。

圖2-11數(shù)據(jù)庫設(shè)計器(2)從“排序序列“下拉列表框中選擇所需要的字符比較方式。如果選擇“PinYin”,進行比較時,漢字按照拼音順序比較大小,字符的大小順序為:’’<’0’<’9’<’a’<’z’<’A’<’Z’;如果選擇“Machine”,進行比較時,漢字和字符按照其存儲的機器碼的大小進行比較,其中字符的大小順序為:’’<’0’<’9’<’A’<’Z’<’a’<’z’。(3)如果選擇了“SETNEARon”復(fù)選框(對應(yīng)于“SETNEARON”命令),當FIND或SEEK命令查找不到記錄時,系統(tǒng)將記錄指針定位在匹配程度最大的記錄上。如果清除了“SETNEARon”復(fù)選框(對應(yīng)于“SETNEAROFF”命令),當FIND或SEEK命令查找不到記錄時,記錄指針定位在文件尾,即查找失敗。(4)如果選擇了“SETEXACTon”復(fù)選框(對應(yīng)于“SETEXACTON”命令),兩個字符串用等號(=)進行比較時,只有它們完全相同結(jié)果才為真,即相當于(==)比較,如“123”=“12”為假。如果清除了“SETEXACTon”復(fù)選框(對應(yīng)于“SETEXACTOFF”命令),兩個字符串用等號(=)進行比較時,只要等號右側(cè)的字符串是等號左側(cè)字符串的頭部(或全部),比較結(jié)果就為真,如“123”=“12”為真。(5)如果選擇了“SETANSIon”復(fù)選框(對應(yīng)于“SETANSION”命令),用SQL的=操作符比較字符串時,用空格填充短的字符串,使兩個字符串長度相等,然后比較,如“123”=“12”結(jié)果為假。如果清除了“SETANSIon”復(fù)選框(對應(yīng)于“SETANSIOFF”命令),用SQL的=操作符比較字符串時,比較到短字符串結(jié)束為止,如“123”=“12”結(jié)果為真,“12”=“123”的結(jié)果也為真。(6)在“數(shù)據(jù)”選項卡中依次單擊“設(shè)置為默認值”按鈕和“確定”按鈕,字符串比較方式設(shè)置完成。項目管理器2.52.5.1創(chuàng)建和打開項目

1.創(chuàng)建項目

(1)執(zhí)行VisualFoxPro系統(tǒng)“文件”菜單下的“新建”命令,則會出現(xiàn)選擇新建文件類型的“新建”窗口。(2)在“新建”窗口中,單擊“項目”選項,然后單擊“新建文件”按鈕,則彈出“創(chuàng)建”對話框窗口,如圖2-12所示。

(3)在“創(chuàng)建”對話框窗口的“項目文件”文本框中輸入項目文件名,例如“學(xué)生信息管理”,然后單擊“保存”按鈕,則打開“項目管理器”窗口,如圖2-13所示。圖2-12“創(chuàng)建”對話框圖2-13“項目管理器”窗口2.打開項目

(1)執(zhí)行系統(tǒng)“文件”菜單下的“打開”命令,則會出現(xiàn)選擇打開文件類型和指定打開文件的“打開”窗口,如圖2-14所示。(2)在“打開”窗口中的“文件類型”列表中單擊其右側(cè)的按鈕,選擇“項目”,從“搜尋”列表中選擇項目文件的保存位置,最后在文件列表中單擊選定項目文件。(3)最后,單擊“確定”按鈕,即可打開“項目管理器”窗口,打開選定的項目文件。

圖2-14“打開”對話框窗口2.5.2項目管理器窗口

“項目管理器”是VisualFoxPro系統(tǒng)提供的數(shù)據(jù)庫應(yīng)用程序開發(fā)的平臺,如圖2-15所示,提供了6個選項卡。圖2-15“數(shù)據(jù)”選項卡(1)“數(shù)據(jù)”選項卡?!皵?shù)據(jù)”選項卡主要用于組織和管理項目中包含的所有數(shù)據(jù),如數(shù)據(jù)庫、數(shù)據(jù)表和查詢等。(2)“文檔”選項卡?!拔臋n”選項卡中包含了用于數(shù)據(jù)處理所涉及的3種類型的文件:表單、報表和標簽,如圖2-16所示。(3)“類”選項卡。一般情況下,通過VisualFoxPro的基類就可以創(chuàng)建一個可靠的面向?qū)ο蟮氖录?qū)動程序。若為了實現(xiàn)特殊功能而創(chuàng)建了新類,則可在項目管理器中修改。方法是在“類”圖2-16“文檔”選項卡(4)“代碼”選項卡。“代碼”選項卡中包含了用于管理數(shù)據(jù)庫應(yīng)用系統(tǒng)的程序文件(.PRG)、API庫和應(yīng)用程序文件,如圖2-17所示。選項卡中選擇要修改的類,然后單擊“修改”按鈕即可打開系統(tǒng)提供的“類設(shè)計器”。圖2-17“代碼”選項卡(5)“其他”選項卡。“其他”選項卡主要用于應(yīng)用程序中其他文件的管理,包括文本文件、菜單文件、位圖文件和圖標文件等。(6)“全部”選項卡?!叭俊边x項卡集中了上述所有類型的文件,用于對應(yīng)用系統(tǒng)所涉及的全部文件進行管理。

2.5.3項目管理1.新建文件

(1)打開“教務(wù)管理.PJX”項目文件,在“項目管理器”窗口中選擇“數(shù)據(jù)”選項卡,單擊列表框中“數(shù)據(jù)庫”選項前的“+”號展開數(shù)據(jù)庫列表,如圖2-18所示。圖2-18數(shù)據(jù)庫列表(2)單擊“表”,選擇新建的文件類型,然后單擊“新建”按鈕,將會出現(xiàn)“新建表”對話框,單擊“新建文件”按鈕,即可啟動系統(tǒng)提供的“表設(shè)計器”,進入新表的設(shè)計過程。2.添加文件

(1)首先在項目管理器中選定需要添加的文件類型。例如,若要添加一個數(shù)據(jù)庫至項目文件中,則應(yīng)在項目管理器的“數(shù)據(jù)”選項卡中選擇數(shù)據(jù)庫。(2)單擊“添加”按鈕,則系統(tǒng)會彈出“打開”對話框,然后在“打開”對話框中選擇要添加的文件。(3)最后,單擊“確定”按鈕,系統(tǒng)便將選擇的文件添加到項目中。3.修改文件

利用項目管理器可以隨時修改項目文件中的指定文件,具體的操作步驟如下:(1)在項目管理器中打開項目,選擇需要修改的文件。例如,“教學(xué)管理.DBC”數(shù)據(jù)庫中的表Student.dbf。(2)單擊“修改”按鈕,系統(tǒng)將根據(jù)要修改的文件類型打開相應(yīng)的設(shè)計器。圖2-19是為修改表而打開的是“表設(shè)計器”窗口。圖2-19“表設(shè)計器”窗口4.移去文件

項目中所包含的文件往往是項目中需要的,若不需要項目中的某一個文件,可及時將其從項目中移去,以保證項目的整潔。具體的操作過程如下:(1)首先在項目管理器中選擇項目中需要移去的文件。(2)單擊“移取”按鈕,則系統(tǒng)將出現(xiàn)如圖2-20所示的提示框。圖2-20“移去”提示框(3)若單擊“移去”按鈕,則系統(tǒng)僅僅從項目中移去所選擇的文件,但移去的文件仍存在于原目錄中。若單擊“刪除”按鈕,系統(tǒng)不僅從項目中移去所選文件,還將其從磁盤中刪除。5.連編應(yīng)用程序

連編是將數(shù)據(jù)庫應(yīng)用系統(tǒng)的全部程序和文件連接并編譯在一起,這是大多數(shù)程序設(shè)計者都要進行的工作。若需要在項目管理器中連編窗口中的項目,生成相應(yīng)的“.EXE”文件,其操作步驟如下:(1)打開項目,在項目管理器中選擇主程序,單擊“連編”按鈕,打開如圖2-21所示的“連編選項”對話框。圖2-21“連編選項”對話框(2)在“連編選項”對話框中選擇“連編可執(zhí)行文件”選項,最后單擊“確定”按鈕即可。6.其他操作在“項目管理器”的右側(cè),除了上面介紹的“新建”、“添加”、“修改”、“移去”及“連編”按鈕之外,隨著所選文件類型的不同,按鈕所顯示的名稱將隨之發(fā)生改變練習(xí)二見書第3章數(shù)據(jù)及數(shù)據(jù)運算3.1

數(shù)據(jù)類型、常量、變量與數(shù)組3.1.1數(shù)據(jù)類型

1.字符型(C型)

字符型由字母、數(shù)字、字符、空格、符號和漢字構(gòu)成,通常表示用于顯示或打印的信息,如學(xué)生的姓名,家庭地址等。2.數(shù)值型(N型)

數(shù)值型由數(shù)字0~9以及小數(shù)點、正負號和E組成。長度不超過20個字節(jié),其中負號和小數(shù)點各占一位。3.邏輯型(L型)邏輯型只有兩個數(shù)據(jù)值:邏輯真(.T.)和邏輯假(.F.),多用于表示邏輯判斷結(jié)果。4.日期型(D型)存儲日期型數(shù)據(jù),其存儲格式為“YYYYMMDD”,占8個字節(jié)。5.日期時間型(T型)日期時間型既包含日期又包含時間的數(shù)據(jù),由年、月、日、時、分、秒組成,存儲時占用8個字節(jié)。6.貨幣型(Y型)貨幣型數(shù)據(jù)表示貨幣金額,小數(shù)位固定為4位,若超過4位,系統(tǒng)會自動對其進行舍入處理。7.備注型(M型)備注型數(shù)據(jù)用來存放簡歷、注釋等不定長的內(nèi)容。8.通用型(G型)通用型數(shù)據(jù)用于存儲OLE對象,固定寬度為4個字節(jié)。9.整數(shù)型(I型)整型用于對整數(shù)的表示,僅適用于字段的定義。10.雙精度型(B型)

與一般的數(shù)值類型相比,雙精度型提供了更高的數(shù)值精度,用于對數(shù)值精度要求較高的場合,存儲位數(shù)固定(16位有效數(shù)字),但只用于字段的定義,雙精度型數(shù)據(jù)存儲時占用8個字節(jié)。11.浮點型(F型)浮點型與數(shù)值型是完全等價的,主要是為了和不同版本的FoxPro兼容所設(shè)。3.1.2常量

1.數(shù)值型常量

由整數(shù)、小數(shù)或科學(xué)記數(shù)法表示的數(shù)都是數(shù)值型常量,例如100、-88、3.14159、1.23E6、2.34E-4等。2.字符型常量

字符型常量是用定界符括起來的字符串。3.邏輯型常量邏輯型常量只有兩個值:真和假。4.日期型常量日期型常量表示日期,默認格式是:{^yyyy-mm-dd}或{^yyyy/mm/dd},其中{}、^、-(或/)為西文半角字符。5.日期時間型常量表示既有日期又有時間的日期時間類型數(shù)據(jù),默認格式是為{^yyyy-mm-dd\[,\]\[hh\[:mm\[:ss\]\]\[a|p|am|pm\]\]}或{^yyyy/mm/dd\[,\]\[hh\[:mm\[:ss\]\]\[a|p|am|pm\]\]}。6.貨幣型常量

貨幣型常量以$開頭,后面是整數(shù)或小數(shù),但不能是用科學(xué)計數(shù)法表示的數(shù),小數(shù)部分如果超過4位,則四舍五入取4位小數(shù)。3.1.3變量1.字段變量字段變量是指數(shù)據(jù)表中已定義的任意一個字段。2.內(nèi)存變量內(nèi)存變量用于保存程序執(zhí)行過程中的中間結(jié)果與最終結(jié)果,或用于保存對數(shù)據(jù)庫進行某種分析處理后的結(jié)果。3.系統(tǒng)變量系統(tǒng)變量是VisualFoxPro自動定義生成和維護的變量。3.1.4數(shù)組

1.數(shù)組的定義數(shù)組必須先定義后使用,定義數(shù)組的命令格式是:【格式1】DECLARE<數(shù)組名1>(下標1\[,下標2\])\[,<數(shù)組名2>(下標1\[,下標2\])……\]【格式2】DIMENSION<數(shù)組名1>(下標1\[,下標2\])\[,<數(shù)組名2>(下標1\[,下標2\])……\]【功能】定義一個或多個一維或二維數(shù)組?!菊f明】①數(shù)組名的命名規(guī)則與簡單內(nèi)存變量一樣,但應(yīng)注意不要與已經(jīng)存在的簡單內(nèi)存變量重名。②下標為數(shù)值表達式,用來確定數(shù)組中元素的數(shù)目。引用數(shù)組元素時,數(shù)組的下標從1開始。③數(shù)組名后面的括號既可以用圓括號“()”,也可以用方括號“\[\]”2.數(shù)組的賦值數(shù)組被定義了以后,系統(tǒng)為每一個數(shù)組元素賦了一個初值.F.。若要改變數(shù)組元素的值,可以使用賦值命令。給數(shù)組賦值的賦值命令與簡單變量類似。【格式1】STORE<表達式>TO數(shù)組名【功能】給整個數(shù)組賦同一個表達式的值。

【例】DECLAREA(5)STORE5TOA&&將5賦給數(shù)組A中的每個元素【格式2】數(shù)組名(下標1\[,下標2\])=表達式【功能】給指定數(shù)組元素賦值?!菊f明】在VisualFoxPro6.0中,一個數(shù)組中的數(shù)據(jù)不必是同一種數(shù)據(jù)類型【例】DECLAREB(2)B(1)=201&&B(1)的類型為數(shù)值型B(2)=張三”&&B(2)的類型為字符型

運算符與表達式3.23.2.1運算符1.算術(shù)運算符

算術(shù)運算符用于處理數(shù)值型數(shù)據(jù),運算結(jié)果仍為數(shù)值型。表3-1給出了算術(shù)運算符及其優(yōu)先級。

若計算中包含有多個算術(shù)運算符時,運算規(guī)則是:先乘方,后乘除,再加減;同一級別從左到右依次運算;如果有括號“()”,先計算括號內(nèi),后計算括號外。

2.字符運算符字符運算符用于對字符型數(shù)據(jù)進行處理,運算結(jié)果為字符型或邏輯型。字符運算符只有3個:“+”、“-”和“$”,如表3-2所示。3.日期時間運算符日期時間運算符對日期和日期時間型數(shù)據(jù)進行處理,日期(或日期時間)型數(shù)據(jù)加減一個整數(shù),結(jié)果仍為日期(或日期時間)型,兩個日期(或日期時間)型數(shù)據(jù)相減,結(jié)果為整數(shù),如表3-3所示。4.關(guān)系運算符關(guān)系運算符主要用來對兩個同類型數(shù)據(jù)進行比較運算,運算結(jié)果為邏輯型,如表3-4所示。關(guān)系運算符的有關(guān)注意事項如下:①關(guān)系運算符左右兩端的數(shù)據(jù)必須是相同類型的數(shù)據(jù),否則將導(dǎo)致語法錯誤。②數(shù)值型數(shù)據(jù)按其數(shù)值大小進行比較。③字符型數(shù)據(jù)的大小由字符比較方式(詳見第2.4.3節(jié))決定。④日期、日期時間型數(shù)據(jù)的大小是:日期早的其值小,日期晚的其值大。

5.邏輯運算符邏輯運算符用于進行邏輯型數(shù)據(jù)的處理,運算結(jié)果仍為邏輯型,表3-5給出了邏輯運算符及優(yōu)先級。表3-6給出了各種邏輯運算的規(guī)則。3.2.2表達式

所謂的表達式是指用VisualFoxPro運算符將若干運算量(常量、變量、數(shù)組元素、函數(shù)、字段名等)連接起來的“合法”的式子。3.3常用內(nèi)部函數(shù)3.3.1數(shù)值處理函數(shù)

1.平方根函數(shù)SQRT()【格式】SQRT(<數(shù)值表達式>)【功能】首先計算數(shù)值表達式的值,然后求平方根并將其作為函數(shù)的返回值?!菊f明】表達式的值必須為正數(shù)?!纠??SQRT(24-8)&&顯示結(jié)果為:4.002.取對值函數(shù)ABS()

【格式】ABS(<數(shù)值表達式>)【功能】計算數(shù)值表達式的值并返回數(shù)值表達式的絕對值?!纠緼=10B=30?ABS(2*A-B)&&顯示結(jié)果為:103.取整函數(shù)INT【格式】INT(<數(shù)值表達式>)【功能】計算數(shù)值表達式并返回數(shù)值表達式值的整數(shù)部分?!纠?INT(28.48*2)&&顯示結(jié)果為:56?INT(-56.98)&&顯示結(jié)果為:-564.四舍五入函數(shù)ROUND()【格式】ROUND(<數(shù)值表達式>,<小數(shù)位數(shù)>)【功能】按指定的小數(shù)位數(shù)對<數(shù)值表達式>的值進行四舍五入處理?!菊f明】返回指定的<數(shù)值表達式>在指定位置四舍五入后的結(jié)果。<小數(shù)位數(shù)>指定四舍五入的位置。若<小數(shù)位數(shù)>大于等于0,那么它表示的是要保留的小數(shù)位數(shù);若<小數(shù)位數(shù)>小于0,那么它表示的是整數(shù)部分的舍入位數(shù)?!纠?ROUND(1234.8654,2)&&顯示結(jié)果為:1234.87?ROUND(1234.8654,0)&&顯示結(jié)果為:1235?ROUND(1234.8654,-2)&&顯示結(jié)果為:12005.取余函數(shù)MOD()【格式】MOD(<數(shù)值表達式1>,<數(shù)值表達式2>)【功能】返回兩個數(shù)相除后的余數(shù)?!菊f明】<數(shù)值表達式1>是被除數(shù),<數(shù)值表達式2>是除數(shù)。余數(shù)的正負號與除數(shù)相同。若被除數(shù)與除數(shù)同號,則函數(shù)值即為兩個數(shù)相除的余數(shù);若被除數(shù)與除數(shù)異號,則函數(shù)值即為兩個數(shù)相除的余數(shù)再加上除數(shù)的值?!纠??MOD(3*4,7)&&顯示結(jié)果為:5?MOD(7,-2)&&顯示結(jié)果為:-1

6.圓周率函數(shù)PI()【格式】PI()【功能】返回圓周率π的值(數(shù)值型)?!纠坑嬎惆霃綖?的圓面積:?2**2*PI()&&顯示結(jié)果為:12.5664?2^2*3.14&&顯示結(jié)果為:12.567.最大值函數(shù)MAX()【格式】MAX(表達式1,表達式2,…,表達式n)【功能】計算各表達式的值,并返回其中的最大值。【說明】表達式1、表達式2、…類型可以是數(shù)值型(N)、日期型(D)或字符型(C),但所有表達式的類型必須相同。

【例】?MAX(12,45,76,3)&&顯示結(jié)果為:76?MAX({^1999/12/01},{^1998/12/01}&&顯示結(jié)果為:12/01/99?MAX(,,a,z)&&顯示結(jié)果為:z8.最小值函數(shù)MIN()【格式】MIN(表達式1,表達式2,…,表達式N)【功能】計算各表達式的值,并且返回表達式中的最小值?!菊f明】表達式1、表達式2、…類型可以是數(shù)值型(N)、日期型(D)或字符型(C),但所有表達式的類型必須相同?!纠??MIN(12,45,76,3)&&顯示結(jié)果為:3?MIN({^1999/12/01},{^1998/12/01})&&顯示結(jié)果為:12/01/98?MIN(,,a,z)&&顯示結(jié)果為:13.3.2字符處理函數(shù)

1.子字符串查找函數(shù)AT|ATC()【格式】AT|ATC(<字符表達式1>,<字符表達式2>\[,<數(shù)值表達式>\])【功能】返回<字符表達式1>在<字符表達式2>中第<數(shù)值表達式>次出現(xiàn)的位置?!菊f明】①若<字符表達式1>是<字符表達式2>的子串,則返回<字符表達式1>中的首字符在<字符表達式2>中的位置。②ATC與AT的功能類似,區(qū)別在于ATC函數(shù)不區(qū)分字母的大小寫,返回值亦為數(shù)值型。③<數(shù)值表達式>指定<字符表達式1>在<字符表達式2>中第幾次出現(xiàn)。缺省<數(shù)值表達式>時,系統(tǒng)默認為1。④若在<字符表達式2>中未找到<字符表達式1>,則函數(shù)返回0。【例】?AT(“as”,“Assoonaspossible”)&&顯示結(jié)果為:9?AT(“青大”,“青島大學(xué)商學(xué)院”)&&顯示結(jié)果為:0?AT(“s”,“Assoonaspossible”,2)&&顯示結(jié)果為:4?AT(“學(xué)”,“青島大學(xué)商學(xué)院”,2)&&顯示結(jié)果為:11?ATC(“as”,“Assoonaspossible”,2)&&顯示結(jié)果為:12.字符串長度測試函數(shù)LEN()

【格式】LEN(<字符表達式>)【功能】返回字符表達式的長度值,即所包含的字符個數(shù)(字節(jié)數(shù)),函數(shù)的返回值為數(shù)值型?!纠?LEN(“VisualFoxPro6.0”)&&顯示結(jié)果為:17?LEN(“青島大學(xué)”)&&顯示結(jié)果為:8注意:一個漢字占兩個字節(jié),字符串中的一個空格亦占一個字節(jié)3.截取子字符串函數(shù)SUBSTR()【格式】SUBSTR(<字符表達式>,<數(shù)值表達式1>\[,<數(shù)值表達式2>\])【功能】從<字符表達式>中的<數(shù)值表達式1>位置開始取出<數(shù)值表達式2>個字符,函數(shù)的返回值為字符型數(shù)據(jù),即子字符串。【說明】如果缺省<數(shù)值表達式2>,則返回從<數(shù)值表達式1>位置開始到<字符表達式>最后的所有字符?!纠?SUBSTR(“青島大學(xué)”,3,2)&&顯示結(jié)果為:島?SUBSTR(“Qingdao”,3,2)&&顯示結(jié)果為:ng?SUBSTR(“青島大學(xué)”,5)&&顯示結(jié)果為:大學(xué)4.左取或右取子字符串函數(shù)LEFT()|RIGHT()【格式】LEFT|RIGHT(<字符表達式>,<數(shù)值表達式>)【功能】從<字符表達式>最左邊或最右邊開始取出含有<數(shù)值表達式>指定字符個數(shù)的子字符串。【說明】①參數(shù)<數(shù)值表達式>以字節(jié)為單位,函數(shù)返回值為字符型數(shù)據(jù)。②若<數(shù)值表達式>的值大于<字符表達式>的長度,返回<字符表達式>;若<數(shù)值表達式>的值≤0,則返回空字符串。【例】?LEFT(“青島大學(xué)”,2)&&顯示結(jié)果為:青?LEFT(“Qingdao”,2)&&顯示結(jié)果為:Qi?RIGHT(“青島大學(xué)”,2)&&顯示結(jié)果為:學(xué)?RIGHT(“Qingdao”,2)&&顯示結(jié)果為:ao5.刪除前導(dǎo)和尾隨空格函數(shù)【格式】LTRIM|RTRIM|TRIM(<字符表達式>)【功能】LTRIM刪除<字符表達式>的前導(dǎo)空格,返回值仍為字符型;RTRIM|TRIM刪除<字符表達式>的尾部空格,返回值仍為字符型?!纠?“1”+LTRIM(“2”)+“3”&&顯示結(jié)果為:123?“1”+RTRIM(“2”)+“3”&&顯示結(jié)果為:1236.刪除前導(dǎo)和尾隨空格ALLTRIM()【格式】ALLTRIM(<字符表達式>)【功能】刪除<字符表達式>的前導(dǎo)和尾部空格?!纠?“1”+ALLTRIM(“2”)+“3”&&顯示結(jié)果為:1237.產(chǎn)生空格字符串函數(shù)SPACE()【格式】SPACE(<數(shù)值表達式>)【功能】返回包含<數(shù)值表達式>個空格的字符串?!纠?“1”+SPACE(2)+“3”&&顯示結(jié)果為:138.大小寫轉(zhuǎn)換函數(shù)UPPER|LOWER()【格式】UPPER|LOWER(<字符表達式>)【功能】UPPER將<字符表達式>中的小寫字母轉(zhuǎn)換為大寫字母,LOWER將<字符表達式>中的大寫字母轉(zhuǎn)換為小寫字母?!纠浚縐PPER(“Visual”)&&顯示結(jié)果為:VISUAL?LOWER(FoxPro)&&顯示結(jié)果為:foxpro3.3.3日期及日期時間函數(shù)

1.獲取系統(tǒng)當前日期函數(shù)【格式】DATE()【功能】返回系統(tǒng)當前日期,函數(shù)值為日期型。2.獲取系統(tǒng)當前時間函數(shù)【格式】TIME()【功能】返回當前系統(tǒng)時間(24小時制),函數(shù)值為字符型。3.獲取系統(tǒng)當前日期時間函數(shù)【格式】DATETIME()【功能】返回系統(tǒng)當前日期和時間,函數(shù)值為日期時間型?4.獲取年號函數(shù)【格式】YEAR(<日期表達式>|<日期時間表達式>)【功能】返回<日期表達式>或<日期時間表達式>中的年份值,函數(shù)值為數(shù)值型?!纠?MONTH({^1999-02-12})&&顯示結(jié)果為:26.獲取日號函數(shù)【格式】DAY(<日期表達式>|<日期時間表達式>)【功能】返回<日期表達式>或<日期時間表達式>中的日號,函數(shù)值為數(shù)值型?!纠??DAY({^1999-02-12})&&顯示結(jié)果為:123.3.4數(shù)據(jù)類型轉(zhuǎn)換函數(shù)

1.字符轉(zhuǎn)換為數(shù)值函數(shù)VAL()【格式】VAL(<字符表達式>)【功能】將<字符表達式>轉(zhuǎn)換為數(shù)值型數(shù)據(jù)?!菊f明】①VAL函數(shù)按從左到右的順序處理字符表達式,直到遇到一個非數(shù)值字符(不包括科學(xué)計數(shù)法指示符E)。②如果<字符表達式>中的第一個字符不是數(shù)字,VAL函數(shù)將返回數(shù)值0。【例】?VAL(“3.1415926PI36”)&&顯示結(jié)果為:3.14?VAL(“3.1415926e36”)&&顯示結(jié)果為:3.14159260E+36?VAL(“a36”)&&顯示結(jié)果為:0.002.數(shù)值轉(zhuǎn)換為字符

【格式】STR(<數(shù)值表達式1>\[,<數(shù)值表達式2>\]\[,<數(shù)值表達式3>\]))【功能】把<數(shù)值表達式1>的值轉(zhuǎn)換為字符型數(shù)據(jù),即字符串?!菊f明】①<數(shù)值表達式2>的值決定轉(zhuǎn)換后的字符串總長度(包括小數(shù)點),<數(shù)值表達式3>決定轉(zhuǎn)換時要保留的小數(shù)位數(shù)。②如果<數(shù)值表達式2>的值大于<數(shù)值表達式1>的實際長度,則在數(shù)字串左邊補充空格。③如果<數(shù)值表達式2>小于<數(shù)值表達式1>的實際長度,但大于等于<數(shù)值表達式1>的整數(shù)部分(包括負號)

的長度,則優(yōu)先滿足整數(shù)部分而自動調(diào)整小數(shù)部分(四舍五入)④若<數(shù)值表達式2>值小于<數(shù)值表達式1>的整數(shù)部分長度,則函數(shù)將輸出星號“*”。⑤若缺省<數(shù)值表達式3>或同時缺省<數(shù)值表達式2>和<數(shù)值表達式3>,則函數(shù)只轉(zhuǎn)換整數(shù)部分(包括負號)。【例】?STR(356.14159,8,4)&&顯示結(jié)果為:356.1416?STR(356.14159,14,4)&&顯示結(jié)果為:356.1416?STR(356.14159,5,4)&&顯示結(jié)果為:356.1?STR(356.14159,2,4)&&顯示結(jié)果為:**?STR(-356.14159,8)&&顯示結(jié)果為:-356?STR(-356.14159)&&顯示結(jié)果為:-3563.字符型轉(zhuǎn)換為日期型函數(shù)

【格式】CTOD(<字符表達式>)【功能】把<字符表達式>轉(zhuǎn)換為日期型數(shù)據(jù)?!菊f明】①<字符表達式>的格式可以是:“^YY/MM/DD”、“^YY-MM-DD”、“^YY.MM.DD”,年份可以帶有世紀,也可不帶有世紀。②如果年份不帶世紀,默認為當前世紀?!纠??YEAR(CTOD(“^1999/10/13”)&&顯示結(jié)果為:19994.日期型轉(zhuǎn)換為字符型函數(shù)【格式】DTOC(<日期表達式>|<日期時間表達式>\[,1\])【功能】把<日期表達式>或<日期時間表達式>中的日期轉(zhuǎn)換為字符串?!菊f明】①缺省可選項1時,函數(shù)返回的字符格式為“MM/DD/YY”;選擇可選項1時,返回的字符格式為“YYYYMMDD”。②若設(shè)置了顯示世紀(使用SETCENTURYON命令),則年份用4位表示。【例】?DTOC({^2002/12/27})&&顯示結(jié)果為:12/27/02?DTOC({^2002/12/2715:20:38})&&顯示結(jié)果為:12/27/02?DTOC({^2002/12/27},1)&&顯示結(jié)果為:20021227?DTOC({^2002/12/2715:20:38},1)&&顯示結(jié)果為:20021227

3.3.5其他函數(shù)

1.邏輯函數(shù)IIF()【格式】IIF(<邏輯表達式>,<表達式1>,<表達式2>)【功能】根據(jù)<邏輯表達式>的值,返回<表達式1>和<表達式2>值中的某一個?!菊f明】①<邏輯表達式>指定了要計算的邏輯表達式。若其值為.T.(真),則返回<表達式1>的值,否則返回<表達式2>的值。②函數(shù)的返回值類型可以是字符型、數(shù)值型、貨幣型、日期型或日期時間型等,取決于<表達式1>或<表達式2>的類型?!纠縳=5y=7z=IIF(x>y,x-y,y-x)?z&&顯示結(jié)果為22.宏替換函數(shù)【格式】&<字符型存變量>\[.\]【功能】替換出字符型變量的內(nèi)容,即&的值是變量中的字符串?!菊f明】①&的作用是將字符型內(nèi)存變量(包括數(shù)組元素)的內(nèi)容替換出來,它的返回值的類型與字符型內(nèi)存變量的值去掉字符定界符后的值的類型一致,可以是各種數(shù)據(jù)類型。②若宏替換函數(shù)與其后的字符無明確分界,則要用“.”作函數(shù)結(jié)束標記,并且宏替換可以嵌套使用。③宏替換函數(shù)對實現(xiàn)程序的自動生成和自動變換非常有用?!纠縞Name=李小明XM=cName?&XM+你好!&&相當于cName+你好!c_nVar=254?&c_nVar+6&&相當于254+6cVar=Fox?Visual&cVar.Pro&&結(jié)果顯示為字符串“VisualFoxPro”3.返回當前默認目錄函數(shù)CURDIR()【格式】CURDIR()【功能】返回當前系統(tǒng)默認目錄,返回值類型為字符型?!纠縋ath=CURDIR()?Path4.搜索指定文件函數(shù)LOCFILE()【格式】LOCFILE(<文件名>\[,<擴展名>\])【功能】查找指定的文件,返回文件所在的目錄?!纠縞FileName=LOCFILE(Fox,bmp)?cFileName5.信息顯示函數(shù)MESSAGEBOX()若希望程序運行過程中,按Windows對話框的形式顯示一些相關(guān)信息,如提示信息、錯誤信息等,則可使用系統(tǒng)提供的MESSAGEBOX函數(shù)?!靖袷健縈ESSAGEBOX(<對話框提示文本>\[,<對話框類型>\]\[,<對話框標題>\])【功能】暫停程序的執(zhí)行,彈出Windows提示窗口,等待用戶做出選擇,返回值為數(shù)字。【說明】①<對話框提示文本>指定對話框中輸出的文本信息,而<對話框標題>指定了對話框窗口標題欄的標題文字。②<對話框類型>有多種選擇,常用類型值來指定,表3-7給出了不同對話類型值的含義?!纠肯铝袃蓚€MESSAGEBOX函數(shù)執(zhí)行結(jié)果如圖3-1和圖3-2所示。圖3-1圖3-2nMessage=MESSAGEBOX(“單擊“確定”繼續(xù)!”,0,“提示信息”)?nMessage&&打開對話框時,默認按鈕為第1個nMessage=MESSAGEBOX(“文檔已被更改,是否保存!”,3+16+256,“警告!”)?nMessage&&打開對話框時,默認按鈕為第2個注意:執(zhí)行第2個MESSAGEBOX函數(shù)所出現(xiàn)的對話框中有3個按鈕,單擊“是”按鈕返回6,單擊“否”按鈕返回7,單擊“取消”按鈕返回2。6.空值測試函數(shù)EMPTY()【格式】EMPTY(<表達式>)【功能】測試<表達式>的值是否為空,返回值為邏輯型值真.T.或假.F.?!菊f明】表達式的數(shù)據(jù)類型可以是字符、數(shù)值、日期或者邏輯型數(shù)據(jù);各種類型數(shù)據(jù)當出現(xiàn)表3-8的情況時,該函數(shù)返回.T.,否則都為假.F.?!纠?EMPTY(0)&&顯示結(jié)果為:.T.?EMPTY(1)&&顯示結(jié)果為:.F.?EMPTY(“”)&&顯示結(jié)果為:.T.?EMPTY({/})&&顯示結(jié)果為:.T.Visual0FoxPro6.0系統(tǒng)提供了幾百個函數(shù),前面只介紹了進行數(shù)據(jù)處理時最常用的幾個,另外一些與數(shù)據(jù)庫操作有關(guān)的常用函數(shù)放在后面相應(yīng)的章節(jié)中介紹。練習(xí)三見書第4章結(jié)構(gòu)化程序設(shè)計4.1VisualFoxPro程序的建立與運行4.1.1VisualFoxPro程序

利用VisualFoxPro對數(shù)據(jù)進行處理時,許多任務(wù)單靠執(zhí)行一兩條命令難以完成,往往需要執(zhí)行一組命令才能完成。4.1.2建立程序文件1.命令方式創(chuàng)建程序文件

【格式】MODIFYCOMMAND\[<程序文件名>\]【功能】打開VisualFoxPro文本編輯器窗口,輸入程序代碼?!菊f明】①運行該命令時,系統(tǒng)先在磁盤上搜索是否已有該文件,若文件尚未建立,則由該命令自動創(chuàng)建一個新文件,若該文件已經(jīng)存在,則打開該文件供用戶編輯修改。②如果命令中沒有給出<程序文件名>,系統(tǒng)會自動創(chuàng)建一個新程序文件。系統(tǒng)默認的程序文件名為程序1.prg、程序2.prg……,用戶可以在關(guān)閉編輯窗口或執(zhí)行保存程序文件操作時指定文件的存放位置和文件名。③<程序文件名>中可以只輸入文件主名。2.菜單方式創(chuàng)建程序文件利用VisualFoxPro系統(tǒng)窗口的菜單同樣可以創(chuàng)建新的程序文件。方法是:執(zhí)行“文件”菜單下的“新建”命令,在“新建”對話框中選擇文件類型為“程序”,然后單擊“新建文件”按鈕。無論采用哪種方式創(chuàng)建新的程序文件,均會打開程序編輯窗口,如圖4-1所示,直接在窗口中輸入、修改程序代碼。

圖4-1程序編輯窗口在程序編輯器窗口中,無論是修改或新建程序文件都應(yīng)注意:一行只能寫一條命令,并用回車鍵結(jié)束。一條命令可分幾行書寫,但在前一行的結(jié)尾必須用“;”續(xù)行標記,表示一條命令未完,轉(zhuǎn)入下一行。4.1.3保存程序文件

程序編輯窗口中保存文件有兩種方法:(1)執(zhí)行菜單“文件”/“保存”命令。(2)按下組合健“Ctrl+W”。如果創(chuàng)建的新程序還沒有專門指定程序文件名,系統(tǒng)會彈出“另存為”對話框,如圖4-2所示。圖4-2“另存為”對話框4.1.4運行程序文件

1.邊編譯邊執(zhí)行指定VisualFoxPro源程序按邊編譯邊執(zhí)行有多種方法:(1)執(zhí)行系統(tǒng)菜單“程序”中的“運行”命令,在隨后彈出的對話框中選取要運行的程序文件,單擊“運行”按鈕。(2)若程序文件正處于打開狀態(tài),即在程序編輯窗口中,可以直接單擊常用工具欄上的“運行”按鈕。(3)若在命令窗口或程序中,按DO<程序文件名>的格式調(diào)用程序文件并執(zhí)行。程序執(zhí)行過程中如果出現(xiàn)錯誤,系統(tǒng)會給出程序錯誤提示窗口,并提示錯誤信息,如圖4-3所示。圖4-3程序錯誤提示窗口2.先編譯后執(zhí)行

源程序文件編譯的方法是:執(zhí)行“程序”/“編譯”菜單命令。如果程序編輯窗口中打開了一個程序,系統(tǒng)自動編譯該程序,否則系統(tǒng)彈出“編譯”對話框,如圖4-4所示,選擇需要編譯的程序文件,單擊“編譯”按鈕進行編譯。圖4-4“編譯”對話框在編譯過程中,如果出現(xiàn)錯誤,同樣系統(tǒng)會給出錯誤提示窗口,并提示錯誤信息。單擊“取消”按鈕,返回到程序編輯窗口,修改出現(xiàn)錯誤的地方,存盤后再編譯修改過的程序,直到?jīng)]有錯誤為止,這時系統(tǒng)會自動生成擴展名為.FXP的文件。

程序設(shè)計的一些常用命令4.24.2.1常用的基本語句

1.注釋語句編寫程序的過程中,在程序的適當位置上添加上相應(yīng)的注釋語句是一種良好的習(xí)慣,不僅有利于自己,而且也有利于程序的交流。注釋語句只起注釋作用,程序運行的時候,被忽略。變量只是存放數(shù)據(jù)的容器,必須往其中存放數(shù)據(jù)才有意義,這稱之為賦值。2.賦值語句3.清屏命令

【格式】CLEAR【功能】清除當前系統(tǒng)主窗口中的所有信息,但不清除內(nèi)存變量。4.SETTALKON|OFF命令

【格式】SETTALKON|OFF【功能】打開/關(guān)閉返回相關(guān)命令執(zhí)行狀態(tài)信息的提示。【說明】①許多數(shù)據(jù)處理命令(如AVERAGE、SUM、SELECT等)在執(zhí)行時都會返回一些有關(guān)執(zhí)行狀態(tài)的信息并顯示在系統(tǒng)窗口、狀態(tài)欄等處。SETTALK命令用于設(shè)置是(ON)、否(OFF)顯示這些信息,默認為ON。②通常在程序頭部用SETTALKOFF關(guān)閉狀態(tài)信息的顯示,以保持系統(tǒng)窗口的整潔,而在程序尾部用SETTALKON設(shè)置狀態(tài)信息的顯示。5.RETURN語句【格式】RETURN【功能】結(jié)束當前程序的執(zhí)行,返回到命令窗口。通常作為程序中的最后一條語句。4.2.2輸入和輸出命令

1.輸入一個字符命令(WAIT)【格式】WAIT\[<字符表達式>\]\[TO<內(nèi)存變量名>\]\[WINDOW\[AT<行>,<列>\]\]\[NOWAIT\]\[TIMEOUT<數(shù)值表達式>\]【功能】暫停程序執(zhí)行,在屏幕上給出提示信息,并等待用戶輸入一個字符給<內(nèi)存變量名>中指定的變量?!菊f明】①<字符表達式>是程序暫停時在屏幕上顯示的提示信息,缺省為“按任意鍵繼續(xù)……”。②若選TO短語,內(nèi)存變量只能接收由鍵盤輸入的單個字符,即使用戶按了回車鍵,命令也認為接收到一個空字符(長度為0,ASCII碼值為0)。③提示信息一般顯示在VisualFoxPro主窗口或當前用戶自定義的窗口中。如指定了WINDOW短語,則將會出現(xiàn)一個提示窗口,用以顯示提示信息;而AT短語選項指定提示窗口在屏幕上的位置,若無則系統(tǒng)默認窗口在系統(tǒng)主窗口的右上角。④選NOWAIT后,系統(tǒng)將不等待用戶按鍵,直接往下執(zhí)行。選TIMEOUT短語后,<數(shù)值表達式>給出以秒為單位的時間,若在此時間內(nèi)用戶不鍵入任何數(shù)據(jù),WAIT語句將自動終止,繼續(xù)往下執(zhí)行。圖4-5“WAIT”使用示例【例】下述代碼將顯示如圖4-5所示的提示信息:WAIT“注意:現(xiàn)在暫停”+CHR(13)+CHR(10)+“程序的執(zhí)行10秒鐘”;WINDOWSAT10,10TIMEOUT102.輸入字符串命令(ACCEPT)

【格式】ACCEPT\[<字符表達式>\]TO<內(nèi)存變量名>【功能】暫停程序執(zhí)行,在屏幕上給出提示信息,并等待用戶從鍵盤上輸入一個字符串常量給內(nèi)存變量?!菊f明】①<字符表達式>是用戶指定的在屏幕上顯示的提示信息。②從鍵盤上輸入的字符串不得用定界符括起來,否則定界符本身也被當作字符串的一部分而輸入到內(nèi)存變量中。【例】ACCEPT“請輸入字符數(shù)據(jù):”TOCH1?CH13.輸入其他類型數(shù)據(jù)命令(INPUT)

【格式】INPUT\[<字符表達式>\]TO<內(nèi)存變量名>【功能】暫停程序的執(zhí)行,在屏幕上顯示提示信息,并等待用戶輸入數(shù)據(jù)?!菊f明】①<字符表達式>是屏幕顯示的提示信息。②可以通過鍵盤輸入數(shù)值型、字符型、日期型、邏輯型、貨幣型等數(shù)據(jù)給內(nèi)存變量。③若輸入字符型數(shù)據(jù),一定要加定界符。4.屏幕格式化輸入輸出命令【格式】@<行,列>\[SAY<表達式1>\]\[GET<變量名>\]\[DEFAULT<表達式2>\]\[VALID<關(guān)系/邏輯表達式>\]\[RANGE<下限>,<上限>\]【功能】用于在屏幕的指定位置上輸出、輸入和編輯數(shù)據(jù)。【說明】①若選SAY而不GET短語,則在規(guī)定的坐標處輸出<表達式1>的值;若選GET短語,則<表達式1>一般是字符串,作為提示信息。當執(zhí)行其后的READ命令后,可以激活GET后的變量,并進行編輯或重新輸入。②<變量名>通常是已存在的內(nèi)存變量或字段變量。對于字段變量,必須打開相應(yīng)的數(shù)據(jù)表。若變量事先不存在,需要有<表達式2>定義變量的初值,初值的大小和類型直接影響以后的編輯與輸入。③VALID<關(guān)系/邏輯表達式>用來控制有效數(shù)據(jù)的輸入。除非用戶按Esc鍵退出字段的編輯狀態(tài),否則當退出編輯區(qū)時,系統(tǒng)判斷<關(guān)系/邏輯表達式>的值,若值為.T.時,系統(tǒng)才認為輸入數(shù)據(jù)正確,否則系統(tǒng)提示“無效輸入”,直到輸入正確數(shù)據(jù)為止。④RANGE短語用來指定對輸入數(shù)據(jù)上、下限的限制。若輸入數(shù)據(jù)不在范圍之內(nèi),系統(tǒng)將給出警告框并提示應(yīng)輸入的數(shù)【格式一】?\[<表達式1>\[,<表達式2>\]…\]【格式二】??<表達式1>\[,<表達式2>\]…【功能】計算各表達式的值,并顯示結(jié)果?!菊f明】①表達式可以是常量、變量、函數(shù)或一般表達式。N型值的整數(shù)部分占10位,超出10位時按需分配,小數(shù)部分按需分配。C型值占用位數(shù)與串長相同,其他各類數(shù)據(jù)按定義的位數(shù)輸出。②“?”和“??”的區(qū)別是:“?”后可以沒有表達式,表示換行,當有<表達式>時,則換行后輸出表達式的值?!??”將不換行顯示表達式的值。4.2.3程序的基本控制結(jié)構(gòu)

1.順序結(jié)構(gòu)

順序結(jié)構(gòu)是最簡單的一種基本結(jié)構(gòu),按照語句在源程序中書寫的前后順序依次執(zhí)行,如圖4-6所示。圖4-6順序結(jié)構(gòu)2.分支結(jié)構(gòu)分支結(jié)構(gòu)是根據(jù)指定的條件表達式的取值來選擇執(zhí)行方向的。由圖4-7可以看出,如果條件成立就執(zhí)行語句序列A,否則,執(zhí)行語句序列B。圖4-7分支結(jié)構(gòu)3.循環(huán)結(jié)構(gòu)

如圖4-8所示,當條件成立時,循環(huán)結(jié)構(gòu)會重復(fù)執(zhí)行語句序列A直到條件不成立為止。圖4-8循環(huán)結(jié)構(gòu)

分支結(jié)構(gòu)4.34.3.1IFELSEENDIF結(jié)構(gòu)IF語句比較適合于組織兩分支的選擇結(jié)構(gòu),即根據(jù)條件從兩個語句序列中選擇執(zhí)行其中的一個語句序列。語句格式:【格式】IF<條件><語句序列1>\[ELSE<語句序列2>\]ENDIF【功能】根據(jù)<條件>的不同值,使程序有條件地執(zhí)行相應(yīng)的語句序列。【說明】①IF、ELSE、ENDIF必須各占一行。每一個IF都必須有一個ENDIF與其對應(yīng),即IF和ENDIF必須成對出現(xiàn)。②<條件>必須是關(guān)系或邏輯表達式,根據(jù)<條件>的邏輯值,進行判斷。如果<條件>的邏輯值為.T.,就執(zhí)行<語句序列1>,完成后轉(zhuǎn)到ENDIF之后的語句。如果<條件>的邏輯值為.F.,當ELSE子句存在時,執(zhí)行<語句序列2>,完成后轉(zhuǎn)去執(zhí)行ENDIF之后的命令;當ELSE子句不存在時,則不執(zhí)行IF和ENDIF之間的所有命令,而直接轉(zhuǎn)到ENDIF之后的語句,形成了單分支結(jié)構(gòu)。③<語句序列>是由一個或多個語句組成,其中也可以再包含若干個IF語句,但每一個IF語句都必須有一個ENDIF與其對應(yīng)。4.3.2IF語句的嵌套

IF語句的嵌套要注意IF、ELSE和ENDIF的匹配。為了提高程序的可閱讀性,輸入源程序代碼時,最好采用縮進的書寫格式。4.3.3DOCASEENDCASE結(jié)構(gòu)

在一個DOCASE結(jié)構(gòu)中,最多只能執(zhí)行一個CASE下的語句組。如果所有條件都不滿足,在沒有OTHERWISE的情況下,不執(zhí)行任何語句組,轉(zhuǎn)去執(zhí)行ENDCASE后面的語句;如果有OTHERWISE選項,則執(zhí)行OTHERWISE下面的語句組,然后再執(zhí)行ENDCASE后面的語句。多分支的控制流程如圖4-9所示。圖4-9多分支的控制流程循環(huán)結(jié)構(gòu)4.44.4.1DOWHILE…ENDDO(當型)循環(huán)

當型循環(huán)的特點是:當所給定循環(huán)條件為真時,就反復(fù)執(zhí)行其循環(huán)體中的語句;當該條件為假時,則終止執(zhí)行其循環(huán)體,而去執(zhí)行循環(huán)結(jié)構(gòu)后面的語句。4.4.2FOR…ENDFOR(步長型)循環(huán)

與當型循環(huán)相比,步長型循環(huán)特別適于構(gòu)造已知循環(huán)次數(shù)的循環(huán)。4.4.3SCAN…ENDSCAN(指針型)循環(huán)指針型循環(huán)是指根據(jù)當前表中記錄指針的位置,決定是否執(zhí)行循環(huán)體,語句格式如下:【格式】SCAN\[<范圍>\]\[FOR|WHILE<條件>\]\[語句序列\(zhòng)]ENDSCAN【功能】在當前表中移動記錄指針,如果遇到符合條件的記錄就執(zhí)行語句序列?!菊f明】①<范圍>選項用于指定記錄的查找范圍,即只查找指定<范圍>內(nèi)的記錄。<范圍>子句有:ALL、NEXTn、RECORDn和REST。若省略<范圍>,則默認為ALL。②FOR|WHILE<條件>指定只有符合條件的記錄執(zhí)行語句序列,利用該子句可以過濾掉用戶不需要的記錄。③SCANENDSCAN必須成對使用,語句序列中可以嵌套任何控制結(jié)構(gòu)的命令語句。過程和自定義函數(shù)4.54.5.1過程

過程是完成某一功能的一段程序,可供主程序調(diào)用。這樣,我們可以將一個復(fù)雜的任務(wù)分解成若干個小問題,分別寫成過程。過程既可以放在主程序的后面,也可以單獨存放在一個文件中。1.過程的編寫2.過程的調(diào)用過程只是一個程序片段,必須通過過程調(diào)用的方式來執(zhí)行它。在調(diào)用時,可能需要通過參數(shù)向過程傳遞一些數(shù)據(jù),這些可以傳遞數(shù)據(jù)的參數(shù)就是實際參數(shù),簡稱實參。4.5.2用戶自定義函數(shù)

1.自定義函數(shù)的編寫VisualFoxPro中編寫自定義函數(shù)的格式如下所示:【格式一】FUNCTION<函數(shù)名>\[(<形式參數(shù)列表>)\]<函數(shù)體>\[RETURN<表達式>\]ENDFUNC【格式二】FUNCTION<函數(shù)名>PARAMETERS<形式參數(shù)列表><函數(shù)體>\[RETURN<表達式>\]ENDFUNC【功能】創(chuàng)建一個用戶自定義函數(shù)?!菊f明】①<形式參數(shù)列表>用來接收調(diào)用它的實際參數(shù)。當有多個參數(shù)時,要用逗號將各個參數(shù)隔開。②格式一使用函數(shù)名后面的形參列表來接收實際參數(shù)的值,而格式二使用PARAMETERS后面的形參列表來接收實參的值。如果使用格式二,PARAMETERS語句必須是自定義函數(shù)內(nèi)部的第一條語句。③函數(shù)往往需要返回一個值,其返回值由RETURN命令后的<表達式>指定。在缺省情況下,函數(shù)的返回值是.T.。2.自定義函數(shù)的調(diào)用和系統(tǒng)提供的標準函數(shù)的調(diào)用方法一樣,用戶自定義函數(shù)的調(diào)用格式為:【格式】函數(shù)名\[(<實參列表>)\]【說明】<實參列表>為調(diào)用的參數(shù)。當有多個參數(shù)時,各參數(shù)之間要用“,”隔開;當沒有參數(shù)時,也必須加上小括號。4.5.3過程文件

1.建立過程文件

與程序文件一樣,過程文件也是VisualFoxPro源程序文件,其建立方法和一般的程序文件一樣,可以用MODIFYCOMMAND命令建立,擴展名是“.PRG”。2.打開過程文件

若將過程或函數(shù)放在一個單獨的過程文件中,使用它們之前,必須先打開這個過程文件,可以在調(diào)用程序中使用SETPROCEDURETO命令將其打開。3.調(diào)用過程文件中的過程打開過程文件后,可以用DO<過程名>來調(diào)用其中的過程。4.關(guān)閉過程文件

【格式1】SETPROCEDURETO【格式2】RELEASEPROCEDURE<文件名列表>【說明】①格式1用于關(guān)閉所有打開的過程文件。②格式2中的參數(shù)<文件名列表>指定要關(guān)閉的過程文件名。

變量的作用域4.64.6.1局部變量

IsualFoxPro系統(tǒng)默認凡在程序中未用PUBLIC、PRIVATE、LOCAL等說明的變量都是局部變量。4.6.2局域變量

用LOCAL定義說明的變量稱為局域變量,只能在創(chuàng)建它們的程序模塊中引用和修改,不能被其它程序模塊所使用。4.6.3私有變量

程序模塊中用PRIVATE說明的變量稱為私有變量。4.6.4全局變量

全局變量在整個程序中(包括調(diào)用的子程序)都有效。任何程序都可以改變它的值,在子程序中定義的全局變量在主程序中也有效。練習(xí)四見書第5章數(shù)據(jù)庫的設(shè)計與操作基本概念5.1從VisualFoxPro6.0開始,引入了數(shù)據(jù)庫的概念,數(shù)據(jù)庫是數(shù)據(jù)庫應(yīng)用系統(tǒng)的核心,它把相互關(guān)聯(lián)的數(shù)據(jù)庫表和相關(guān)的數(shù)據(jù)庫對象組織到一起進行管理,包括表、視圖、連接、存儲過程的容器和用于組織包含數(shù)據(jù)信息的多個表,并允許在這些相關(guān)聯(lián)的表之間建立永久關(guān)系。設(shè)計數(shù)據(jù)庫的一般步驟5.2數(shù)據(jù)庫設(shè)計的一般步驟是:(1)確定數(shù)據(jù)庫要實現(xiàn)的任務(wù),確定數(shù)據(jù)庫中需要存儲哪些信息。(2)創(chuàng)建需要的表,將信息分解為不同的相關(guān)主題。(3)設(shè)計表中需要的字段,即確定表的結(jié)構(gòu)。(4)建立表之間的關(guān)系,確定各表之間的數(shù)據(jù)應(yīng)該如何進行連接。(5)修改和優(yōu)化數(shù)據(jù)庫,發(fā)現(xiàn)問題然后進行修改。

數(shù)據(jù)庫的建立及操作5.35.3.1數(shù)據(jù)庫設(shè)計器

VisualFoxPro為了實現(xiàn)數(shù)據(jù)庫的操作專門提供了一個數(shù)據(jù)庫設(shè)計器。在數(shù)據(jù)庫設(shè)計器中,可以非常方便地創(chuàng)建、添加和刪除表,顯示數(shù)據(jù)庫中包含的全部表、視圖,建立表間的關(guān)聯(lián)關(guān)系?!皵?shù)據(jù)庫設(shè)計器”窗口如圖5-1所示。圖5-1“數(shù)據(jù)庫設(shè)計器”窗口在“數(shù)據(jù)庫設(shè)計器”窗口中,若用鼠標右擊窗口的空白,將會出現(xiàn)一個對數(shù)據(jù)庫進行操作的快捷菜單,如圖5-2所示。圖5-2數(shù)據(jù)庫快捷菜單若在數(shù)據(jù)表對象上單擊鼠標右鍵,則彈出如圖5-3所示的對選定表進行操作的快捷菜單。圖5-3數(shù)據(jù)庫操作快捷菜單5.3.2建立數(shù)據(jù)庫文件

1.菜單方式

執(zhí)行系統(tǒng)“文件”菜單中的“新建”命令,從彈出的“新建”對話框中選擇“數(shù)據(jù)庫”選項,然后單擊新建文件按鈕,進入“創(chuàng)建”對話框窗口,在“創(chuàng)建”對話框中指定新建的數(shù)據(jù)庫文件名以及保存位置,最后單擊“保存”按鈕,即可出現(xiàn)“數(shù)據(jù)庫設(shè)計器”窗口,如圖5-4所示。圖5-4“數(shù)據(jù)庫設(shè)計器”窗口2.命令方式在VisualFoxPro6.0中,我們可以在命令窗口中,很容易地用VisualFoxPro6.0中的創(chuàng)建新數(shù)據(jù)庫命令CREATEDATABASE進行操作:【格式】CREATEDATABASE\[<數(shù)據(jù)庫文件名>|?\]【功能】創(chuàng)建一個數(shù)據(jù)庫文件?!菊f明】①命令中若未指定數(shù)據(jù)庫文件名,或使用了可選項“?”,將打開“創(chuàng)建”對話框,要求輸入一個數(shù)據(jù)庫文件名并確定保存位置。②利用命令建立數(shù)據(jù)庫文件并不會自動打開數(shù)據(jù)庫設(shè)計器,還需要使用MODIFYDATABASE命令或執(zhí)行系統(tǒng)“顯示”菜單中的“數(shù)據(jù)庫設(shè)計器”命令打開數(shù)據(jù)庫設(shè)計器。5.3.3打開與關(guān)閉數(shù)據(jù)庫1.打開數(shù)據(jù)庫

(1)菜單操作。(2)命令方式。2.關(guān)閉數(shù)據(jù)庫

若針對數(shù)據(jù)庫的所有操作結(jié)束后,應(yīng)關(guān)閉數(shù)據(jù)庫文件。關(guān)閉數(shù)據(jù)庫的方法如下:【格式1】CLOSEDATABASE【功能】關(guān)閉當前的數(shù)據(jù)庫文件及其表?!靖袷?】CLOSEALL【功能】關(guān)閉所有打開的數(shù)據(jù)庫文件及其表、自由表以及各種類型的文件。5.3.4添加和移去數(shù)據(jù)表

1.添加表首先在“數(shù)據(jù)庫設(shè)計器”窗口的空白地方單擊鼠標右鍵,從彈出的快捷菜單中選擇“添加表”命令,然后從彈出的“打開”對話框中選擇要添加到當前數(shù)據(jù)庫的自由表,最后單擊“確定”按鈕。2.移去表

首先在“數(shù)據(jù)庫設(shè)計器”窗口中單擊選擇需要移去的數(shù)據(jù)庫表,執(zhí)行系統(tǒng)菜單“數(shù)據(jù)庫”中的“移去”命令,然后在彈出的提示

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論