Visual FoxPro語言基礎(chǔ)課件_第1頁
Visual FoxPro語言基礎(chǔ)課件_第2頁
Visual FoxPro語言基礎(chǔ)課件_第3頁
Visual FoxPro語言基礎(chǔ)課件_第4頁
Visual FoxPro語言基礎(chǔ)課件_第5頁
已閱讀5頁,還剩94頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第三章VisualFoxPro語言基礎(chǔ)

3.1數(shù)據(jù)庫和表的建立

3.1.1幾個常用符號的約定

本書使用了幾個常用符號,這些符號的含義約定如下:

(1)<>:必選參數(shù)表示符。由這一對符號括起的部分是

用戶必須要提供的參數(shù),但不要輸入這對表示符本身。

(2)[]:任選參數(shù)表示符。由這一對符號括起的部分是由

用戶決定是否選擇,可以選,也可以不選。括起的部分也稱

作選擇項(xiàng)或可選項(xiàng),但不包括這對表示符本身。

(3)/:二選一表示符。表示用戶可從本符號左右兩項(xiàng)中

選擇一項(xiàng)。

(4)/?:顯示一對話框舊選擇1

2012-10-2

3.1.2改變默認(rèn)盤和當(dāng)前路徑命令——SET

DEFAULTTO

VFP系統(tǒng)在任何時(shí)候都向用戶提供一個默認(rèn)盤,每一個盤

上都有一個當(dāng)前目錄。剛引入VFP時(shí),VFP所在盤即為默認(rèn)盤,

VFP所在目錄即為當(dāng)前目錄。用戶可利用本命令來改變默認(rèn)盤,

改變當(dāng)前目錄。

命令格式:SETDEFAULTTO卜字符表達(dá)式>]

其中〈字符表達(dá)式,可以是盤符、盤符與目錄名、子目錄名。

下列命令將使默認(rèn)盤為D盤:

SETDEFAULTTOD[:]

2

2012-10-2

若C盤為默認(rèn)盤,當(dāng)前目錄為根目錄,則以下命令將默

認(rèn)盤當(dāng)前目錄改為C:\SALES:

SETDEFAULTTOSALES

下列命令可把默認(rèn)盤根目錄改為當(dāng)前目錄:

SETDEFAULTTO\

下列命令可把默認(rèn)盤當(dāng)前目錄的上級目錄改為當(dāng)前目錄:

SETDEFAULTTO..

帶選擇項(xiàng)時(shí),本命令使VFP系統(tǒng)所在目錄成為當(dāng)前目錄:

SETDEFAULTTO

3

2012-10-2

3.1.3命令的注釋——&&子句

在命令的后面,可用&&<注釋內(nèi)容,子句為其注釋。系

統(tǒng)不執(zhí)行&&子句,它僅供用戶閱讀用。&&與前面的內(nèi)容之

間必須有空格分隔。

4

2012-10-2

3.1.4操作數(shù)據(jù)庫

1.創(chuàng)建數(shù)據(jù)庫命令----CREATEDATABASE

在開發(fā)數(shù)據(jù)庫應(yīng)用程序時(shí),首先應(yīng)該創(chuàng)建數(shù)據(jù)庫。

命令格式:CREATEDATABASE[〈庫文件名〉/?]

命令功能:創(chuàng)建一個數(shù)據(jù)庫并打開它。所建庫文件的文

件名由命令給定。若缺省路徑,所建庫文件將存入默認(rèn)盤當(dāng)

前路徑中;若缺省擴(kuò)展名,系統(tǒng)默認(rèn)其擴(kuò)展名為.DBC。若命

令中未包含可選項(xiàng)或可選項(xiàng)選擇了“?”,則將顯示一個對話

框,請求用戶指定新數(shù)據(jù)庫的存取路徑和名稱。

5

2012-10-2

若指定路徑中已有該庫文件名,則系統(tǒng)將通知用戶已存在

該文件,并詢問是否要覆蓋它。單擊“是”按鈕,則重新定義

該庫文件;單擊“否”按鈕,則保留該文件,退出CREATE

DATABASE命令,回到VFP命令窗口。

例1在C盤上建立一名為“雇員管理.DBC”的數(shù)據(jù)庫。

該例的創(chuàng)建過程為:

①啟動計(jì)算機(jī),使系統(tǒng)處于VFP命令狀態(tài)。

把數(shù)據(jù)盤插入A驅(qū)動器。

②設(shè)置C盤為默認(rèn)盤,在命令窗口中鍵入命令:SET

DEFAULTTOC

④建立“雇員管理.DBC”數(shù)據(jù)庫,鍵入命令:CREATE

DATABASE雇員管理。

6

2012-10-2

則系統(tǒng)將在A盤上創(chuàng)建該數(shù)據(jù)庫“雇員管理.DBC”。

2.打開數(shù)據(jù)庫命令----OPENDATABASE

在使用一個數(shù)據(jù)庫之前,必須先打開它。

命令格式:OPENDATABASE[<庫文件名〉/?]

命令功能:打開指定庫文件,若之前有其它庫文件打開,

則同時(shí)關(guān)閉掉原來已打開的庫文件。

若命令中缺省了庫文件名的擴(kuò)展名,系統(tǒng)默認(rèn)為.DBC。

若命令中省略了可選項(xiàng)或可選項(xiàng)選擇了“?”,則將顯示-

對話框,要求用戶指定欲打開庫文件的存取路徑和名稱。

7

2012-10-2

例2SETDEFAULTTOD

OPENDATABASE雇員管理

系統(tǒng)執(zhí)行該命令后,將打開D盤上的“雇員管理.DBC”數(shù)

據(jù)庫。

3.關(guān)閉數(shù)據(jù)庫命令——CLOSEDATABASE

在使用完數(shù)據(jù)庫之后,必須關(guān)閉它。

命令格式:CLOSEDATABASE

命令功能:關(guān)閉當(dāng)前打開的數(shù)據(jù)庫,同時(shí)也關(guān)閉了這個數(shù)

據(jù)庫中已經(jīng)打開的各種文件。

4.刪除數(shù)據(jù)庫命令---DELETEDATABASE

當(dāng)永遠(yuǎn)不再需要某個數(shù)據(jù)庫時(shí),應(yīng)當(dāng)從磁盤上刪除它。

8

2012-10-2

命令格式:DELETEDATABASEv庫文件名〉

命令功能:從磁盤上刪除指定的數(shù)據(jù)庫文件以及這個數(shù)

據(jù)庫所包含的所有文件。

9

2012-10-2

W3.1.5創(chuàng)建數(shù)據(jù)庫表——CREATE

建立一個表文件包括兩部分工作:建立表文件結(jié)構(gòu)和輸入數(shù)據(jù)。

定義表文件的文件名和每個字段的字段名、字段

類型、字段寬度的工作稱為建立表文件的結(jié)構(gòu)。

命令格式:CREATE]v表文件名〉/?]

命令功能:在當(dāng)前打開的數(shù)據(jù)庫中定義一個表文件結(jié)構(gòu),

并把該文件存入磁盤。所建表文件的文件名由命令中給定,若

缺省擴(kuò)展名,系統(tǒng)默認(rèn)其擴(kuò)展名為.DBF。

注意:在創(chuàng)建數(shù)據(jù)庫表之前,必須首先打開要創(chuàng)建表的

數(shù)據(jù)庫文件。創(chuàng)建自由表可直接建立。

10

2012-10-2

例3在數(shù)據(jù)庫例sgl.dbc”中創(chuàng)建職工情況表"xs.dbFo

首先,確定各字段結(jié)構(gòu)如下:

字段名類型寬度小數(shù)位數(shù)索引NULL

i學(xué)號、字符型-8:>1

姓名字符型

10■■

性別字符型2

生日日期型8

班級字符型5

黨員否邏輯型1

入學(xué)成績整型4

照片通用型4

備注備注型4

11

2012-10-2

在命令窗口中鍵入以下命令:

SETDEFAULTTOD&&設(shè)置D盤為默認(rèn)盤

OPENDATABASEXSGL&&打開“XSGL.DBC”

數(shù)據(jù)庫

CREATEXS&&建立“職工.DBF”表文件

系統(tǒng)執(zhí)行上述命令后,將在“XSGL.DBC”中建立表文件

“xs.DBF”,并打開表設(shè)計(jì)器。

“NULL”欄用于設(shè)置當(dāng)前字段是否可以為NULL值(空

值)。

字段表頁中還有一些關(guān)于字段高級屬性的設(shè)置,如索弓I、

顯示方式、字段標(biāo)題、驗(yàn)證規(guī)則等,我們將在第八章中詳細(xì)

介紹。____________

12

2012-10-2

圖2-1表設(shè)計(jì)器窗口

13

2012-10-2

量現(xiàn)在,光標(biāo)在“字段名”下等待用戶輸入第一個

"9段的字段名。按前面對職工表各字段的定義依次輸

入。

設(shè)計(jì)完成后,單擊“確定”按鈕,這時(shí)系統(tǒng)將顯

示如圖所示的信息框來詢問是否立即輸入記錄,選擇

“是”,則轉(zhuǎn)入輸入數(shù)據(jù)的工作;若選擇“否”,則

創(chuàng)建新表過程完成,回到VFP命令窗口,我們選擇

“否”結(jié)束創(chuàng)建工作。

只要在定義字段時(shí),定義了一個備注型字段,系

統(tǒng)就自動建立文件名與該表文件同名,擴(kuò)展名為

?FPT的備注文件。14

2012-10-2

圖2-2建立表結(jié)構(gòu)

15

2012-10-2

現(xiàn)在輸入數(shù)據(jù)記錄嗎?

是(Y)否(N)

16

2012-10-2

3.1.6打開表文件命令——USE

要使用一個表文件,必須先打開它。

USE命令格式:USEv表文件名〉

若缺省了表文件的擴(kuò)展名,系統(tǒng)默認(rèn)為,DBFo

功能:打開指定表文件,同時(shí)關(guān)閉掉原來已打開的表文件。

如果該表文件有備注型字段,則同時(shí)打開與表文件同名、擴(kuò)展

名為.FPT的備注文件。

注意:在打開表文件之前,必須首先打開它所在的數(shù)據(jù)庫文件。

例4SETDEFAULTTOD

OPENDATABASEgygl

USEXS&&打開“XS.DBF”表文件

17

2012-10-2

M.1.7記錄指針及其操作命令

GO、SKIP

打開一個表文件后,系統(tǒng)立即給這個表文件提供一個記錄

指針,簡稱指針。指針里存放的是一個十進(jìn)制數(shù),如5、18等,

它是某個記錄的記錄號,此時(shí)表明記錄指針指向了這個記錄,

而這個記錄也被稱為當(dāng)前記錄。若記錄指針為58,則說明記錄

號為58的記錄為當(dāng)前記錄。

剛打開一個表文件時(shí),記錄指針指向首記錄。目前,由于

未用索引,首記錄即為記錄號等于1的記錄,末記錄是記錄號

最大的記錄。

對表文件的操作是以當(dāng)前記錄為基準(zhǔn)的。在執(zhí)行某些命

令時(shí),會自動改變當(dāng)前記錄。在這里,我們首先介紹專門用于

改變當(dāng)前記錄的兩條命令,這就是移動指針命令。

18

2012-10-2

指針的絕對移動命令——GO、GOTO

命令格式:GO[TO][RECORD]v數(shù)值表達(dá)式〉/TOP/BOTTOM

命令字GO和GOTO的功能是相同的。若選擇TOP,指針即

指向首記錄;若選擇BOTTOM,指針指向末記錄;若選擇數(shù)值

表達(dá)式,則指向記錄號等于此表達(dá)式值的記錄。

當(dāng)GO后是一個具體數(shù)字時(shí),可以缺省此命令字。

例5USEXS

GO5&&使5#記錄成為當(dāng)前記錄

GOTOP&&使指針指向首記錄

4&&使4#記錄成為當(dāng)前記錄

GOTOBOTTOM&&末記錄成為當(dāng)前記錄

19

2012-10-2

指針的相對移動命令—SKIP

命令常用格式:SKIP[±v數(shù)值表達(dá)式>]

功能:使指針從當(dāng)前位置沿著記錄使用順序作相對移動,

移動的記錄個數(shù)等于命令中表達(dá)式的值。命令中的號表

示向記錄排列的尾部移動(“+”可缺省);“,號表示向首

部移動。當(dāng)為“+1”時(shí),可全部缺省,只留下命令字SKIP。

例6USEXS

SKIP5&&6#記錄為當(dāng)前記錄

SKIP&&7#記錄為當(dāng)前記錄

SKIP-2&&5#記錄為當(dāng)前記錄

20

2012-10-2

3.1.8追加記錄操作命令——APPEND

命令格式:APPEND[BLANK]

功能:在表文件的尾部加入新記錄。當(dāng)表文件中已有n個

記錄時(shí),新記錄號為n+1。此命令執(zhí)行步驟如下:

①指針內(nèi)容為最大記錄號加1。

②若命令中有選擇項(xiàng)BLANK,則當(dāng)前記錄為空記錄,

命令執(zhí)行完畢,增加了1個空記錄,系統(tǒng)回到VFP命令狀態(tài)

(仍在命令窗口下);若命令中無選擇項(xiàng)BLANK,則繼續(xù)

執(zhí)行步驟③。

21

2012-10-2

在屏幕上打開一個編輯窗口,在編輯窗口,豎式顯示表

文件的記錄結(jié)構(gòu),光標(biāo)停在第一字段處,等待用戶逐個字段

地輸入記錄內(nèi)容。以“職工.DBF”文件為例,現(xiàn)欲對其追加

新記錄,則在命令窗口中鍵入如下兩條命令:

USEXS

APPEND

執(zhí)行命令后,將顯示一編輯窗口,等待用戶為新記錄輸

入內(nèi)容。

當(dāng)輸入的某字段數(shù)據(jù)與該字段不符時(shí)(類型不符、超過

記錄范圍等),系統(tǒng)拒絕接受,并響鈴提醒用戶重新輸入。

22

2012-10-2

當(dāng)光標(biāo)在備注型字段時(shí),若不想輸入數(shù)據(jù),按回車鍵把

光標(biāo)下移一字段(按鍵也可)。若要輸入數(shù)據(jù),由于備

注型字段數(shù)據(jù)實(shí)際存儲在與表文件同名、擴(kuò)展名為”.FP「的

備注文件中,因此,必須先按APgDn控制鍵或用鼠標(biāo)雙擊

該字段后,系統(tǒng)立即在屏幕上顯示一個編輯備注型字段的窗

口。用戶在該窗口中為該備注型字段輸入內(nèi)容。

備注型字段內(nèi)容輸入完畢后,用人W控制鍵結(jié)束之或直

接關(guān)閉該編輯窗口。系統(tǒng)把輸入的數(shù)據(jù)存入備注文件,恢復(fù)

原記錄編輯窗口。

本記錄數(shù)據(jù)輸入完后,記錄指針內(nèi)容自動加1,在編輯窗

口上又出現(xiàn)當(dāng)前記錄結(jié)構(gòu),等待用戶繼續(xù)追加下一記錄內(nèi)容。

在追加記錄中,用戶可用PgUp、PgDn控制鍵上、下翻動

記錄。

23

2012-10-2

'全部記錄追加完畢后,用八W或八END控制鍵

結(jié)束APPEND命令。此時(shí),編輯窗口被撤消,系統(tǒng)

又回到命令窗口。(注意,必須執(zhí)行關(guān)閉表文件操

作,磁盤上該表文件才包含新追加的內(nèi)容)

對于字符型和備注型字段來說,輸入的英文

大、小寫字母是不等價(jià)的。

24

2012-10-2

3.1.9插入記錄操作命令—INSERT

插入記錄操作可分為兩部分:首先,把記錄指針移到所需

位置;然后,在此位置插入一記錄。這里,只介紹插入記錄命

令I(lǐng)NSERT。

命令格式:INSERT[BEFORE][BLANK]

當(dāng)無BEFORE任選項(xiàng)時(shí),在當(dāng)前記錄后插入新記錄;若

有BEFORE,則記錄插在當(dāng)前記錄前,且指針指向插入記錄。

當(dāng)有BLANK任選項(xiàng)時(shí),系統(tǒng)自動在規(guī)定位置插入一空記

錄,命令執(zhí)行完畢;當(dāng)無BLANK時(shí),系統(tǒng)在屏幕上開出編輯

窗口(形式與APPEND的窗口相同),等待用戶輸入記錄內(nèi)容。

25

2012-10-2

INSERT命令可以插入多條記錄,插入完畢后,用

人W或AEND控制鍵結(jié)束。

例7在“XS.DBF”庫文件中插入記錄,插在5號記錄后。

下面兩種方法略有差異,但都可達(dá)到此目的。

方法1:方法2:

USEXSUSEXS

GO5GO6

INSERTINSERTBEFORE

26

2012-10-2

^3.1.10從其它表中追加記錄命令

------APPENDFROM

本命令使系統(tǒng)自動從一指定表文件中讀出一些記錄,并追

加到當(dāng)前打開表文件中。

命令格式:APPENDFROMv表文件名

>/?[FIELDSv字段名清單>HFORv條件>]

其中,〈表文件名〉為讀出數(shù)據(jù)的表文件,也稱源文件,默

認(rèn)擴(kuò)展名為.DBFO被追加記錄的表文件是當(dāng)前打開表文件,

也稱目的表文件。

FORv條件>,簡稱條件項(xiàng),將在本章2?3.1節(jié)中介紹。若

無條件項(xiàng),則追加入源文件中的全部記錄。若條件項(xiàng)中包含了

字段名,則必須被兩個表文件共有,且類型也一致。

27

2012-10-2

若目的表文件中某字段的寬度小于源文件對應(yīng)字段的寬

度,讀入數(shù)據(jù)時(shí),字符型字段超長部分被截去,數(shù)值型字段

只加入一串…。

FIELDSv字段名清單》項(xiàng)簡稱字段名清單,若無字段名清

單,則把兩個表文件共有的字段(同名、同類型字段)全部

加入目的表文件。若選擇了字段名清單,則只追加指定的字

段。

備注型字段也同時(shí)被追加。

例8現(xiàn)有一表文件“LS.DBF”,與“職工.DBF”同結(jié)構(gòu),

但尚無任何記錄。欲輸入與“職工.DBF”相同的記錄,可采用

如下步驟:

28

2012-10-2

USELS

APPENDFROMXS

執(zhí)行命令后,“LS.DBF”表文件與“XS.DBF”

同內(nèi)容,“LS.FPT”文件也與“XS.FPT”文件同內(nèi)

容。

29

2012-10-2

3.1.11關(guān)閉表文件操作命令——USE

在內(nèi)存中被打開的表文件可能進(jìn)行了各種修改,如用

APPEND命令追加了記錄,用INSERT命令插入了記錄等,

但磁盤上的這個表文件并未同時(shí)得到修改,關(guān)閉文件意味著

用新修改過的文件去替換磁盤上的原文件。因此,對打開表

文件進(jìn)行了修改操作后,必須執(zhí)行關(guān)閉操作。

命令格式:USE

執(zhí)行了此命令后,打開的表文件將從內(nèi)存中消失。

注意:USEV表文件,命令,在打開命令中指定的表文

件時(shí),也關(guān)閉了原打開的表文件。

30

2012-10-2

03.2表文件內(nèi)容的輸出

3.2.1列表輸出命令——LIST

利用LIST命令,可以輸出表文件的結(jié)構(gòu)和記錄內(nèi)容。

1.輸出表文件結(jié)構(gòu)

命令格式:LISTSTRUCTURE[TOFILEv文件名〉/TO

PRINTER][NOCONSOLE]

此命令用來輸出打開表文件的結(jié)構(gòu):

[TOFILEv文件名>]表文件結(jié)構(gòu)將輸出到對應(yīng)的磁盤文件保存

[TOPRINTER]將輸出到打印機(jī)打印。有任選項(xiàng)

[NOCONSOLE]輸出內(nèi)容將不在VFP主窗口顯示;否則,

將在王窗口顯小O31

2012-10-2

例9輸出“xs.DBF”表結(jié)構(gòu)。

USEXS

LISTSTURCTURETOPRINTER

這個結(jié)果除列出了該表文件結(jié)構(gòu)外,還在前部給

出了表文件名、已有記錄個數(shù)、最后更改日期及備注

文件的大小。

在最后一行上給出字段總寬度。這個寬度比各字

段寬度總和還多1。這個字節(jié)是系統(tǒng)自動在每個記錄的

最前部增加的,用來存放刪除標(biāo)記。

32

2012-10-2

2.輸出記錄內(nèi)容

命令格式:LIST[OFFHv范圍>][[vFIELDS>]v字段名清單>]

[FORv條件1>][WHILEv條件2>]

[TOPRINTER/TOFILEv文件名習(xí)

[NOCONSOLE]

無[OFF]任選項(xiàng),則同時(shí)列出記錄號;否則不列出記錄號。

卜范圍刁任選項(xiàng)缺省時(shí),表示輸出全部記錄。

33

2012-10-2

Oio鍵入以下兩條命令:

USEXS

LIST

例11鍵入以下兩條命令:

USEXS

LIST學(xué)號,姓名,簡歷

備注型字段內(nèi)容也實(shí)際輸出。

34

2012-10-2次亦溝孝/孝

采用LIST命令輸出內(nèi)容時(shí),將把輸出內(nèi)容全部逐

行輸出。若使用打印機(jī)輸出,不會發(fā)生問題;但若在

顯示器上輸出,當(dāng)輸出行數(shù)超過VFP主窗口行數(shù)時(shí),

系統(tǒng)將把顯示內(nèi)容逐行上移,為后繼內(nèi)容空出區(qū)域。

當(dāng)LIST命令執(zhí)行完畢時(shí),VFP主窗口上只有整個

內(nèi)容的“尾巴”了,因此,若用戶希望分頁顯示,則

需將整個輸出內(nèi)容按VFP主窗口尺寸分頁,首先顯示

第一頁內(nèi)容,用戶看清后再顯示下一頁內(nèi)容,可用

DISPLAY命令實(shí)現(xiàn)。

35

2012-10-2

3.2.2分頁列表輸出命令——DISPLAY

與LIST命令相對應(yīng),DISPLAY也有兩種格式:

(l)DISPLAYSTRUCTURE[TOFILE<文件名>/TO

PRINTER][NOCONSOLE]

(2)DISPLAY[OFF][<范圍>][FIELDSv字段名清單

習(xí)[FORv條件l>][WHILEv條件2>][TOPRINTER/TOFILE<

文件名>][NOCONSOLE]

DISPLAY命令與LIST命令的功能完全相同,在使用時(shí)僅有兩

點(diǎn)差別:

①DISPLAY命令分頁顯示整個內(nèi)容。用戶看清一頁后,

任按一鍵,系統(tǒng)就顯示下一頁內(nèi)容,直至全部頁顯示完畢。

36

2012-10-2

②當(dāng)命令中缺省“范圍”和“條件”項(xiàng)時(shí),

DISPLAY命令只輸出當(dāng)前記錄內(nèi)容o

37

2012-10-2

3.3VFP的有關(guān)語法規(guī)定

3.3.1命令的一般格式

VFP的命令很多,各有不同的格式和形式,但其中很多命令

都具有一種類似的形式,稱為命令的一般形式。

VFP命令的一般格式為:

命令字[v范圍刁陣表達(dá)式清單>][FORv條件l>][WHILEv條件2>]

1.命令字

所有的命令都有一個命令字,它決定了此命令的性質(zhì)。

38

2012-10-2

穿7命令字是一個英文動詞,它表達(dá)了該命令所要執(zhí)行的操

作。我們已經(jīng)介紹過的命令字有:USE、CREATE、

APPEND>LIST和DISPLAY等。

當(dāng)一個命令字的字母超過4個時(shí),可從第5個字母起省略。

例如,CREATE可省略為CREA、DISPLAY可省略為DISP等。

2.FOR〈條件〉和WHILE〈條件〉項(xiàng)

V條件,是一個返回值為邏輯型的表達(dá)式,如:工資V100,

姓名="王一民”。寫成條件項(xiàng)為:FOR工資V100,WHILE姓

名="王一民“等,用FOR或WHILE開始均可。

條件項(xiàng)的含義為:只對那些使表達(dá)式返回值為真(.工)

的記錄進(jìn)行命令規(guī)定的握住一

39

2012-10-2

3.范圍項(xiàng)

范圍任選項(xiàng)指出了命令所作用的記錄范圍,其值可有如下5

種選擇:

ALL范圍為從首記錄開始的所有記錄。

NEXTn---范圍為從當(dāng)前記錄開始的n個記錄,n是一個

具體的十進(jìn)制數(shù)。

RECORDn——范圍僅為第n號記錄。

REST——范圍為從當(dāng)前記錄開始直到文件結(jié)束的所有記錄。

缺省——若條件項(xiàng)同時(shí)缺省,不同命令有不同含義,或等

價(jià)于ALL,或僅作用于當(dāng)前記錄。條件項(xiàng)以FOR開始時(shí),范圍

為ALL,以WHILE開始時(shí),范圍為從當(dāng)前記錄開始的所有記錄。

40

2012-10-2

條件項(xiàng)以FOR開始時(shí),將對范圍內(nèi)符合條件的所有記錄進(jìn)

行操作;條件項(xiàng)以WHILE開始時(shí),只要碰到一個不符合條件

的記錄,不管剩下的范圍內(nèi)是否還有符合條件的記錄,都停止

繼續(xù)執(zhí)行命令。

當(dāng)一條命令中既有FOR子句,也有WHILE子句時(shí),在

WHILE條件首次不滿足前,將對滿足FOR條件的所有記錄進(jìn)

行操作;一旦WHILE條件不滿足,則停止操作。為方便理解,

本書后面講到條件時(shí),都以FOR子句為準(zhǔn),讀者可自行試驗(yàn)以

WHILE開頭的一些差別。

命令執(zhí)行完畢時(shí),指針一般指向范圍內(nèi)最后一記錄。但當(dāng)

范圍為ALL時(shí),指針值為表文件記錄個數(shù)加1,即指向最后一

記錄的后面。

41

2012-10-2

4.表達(dá)式清單

此項(xiàng)往往是表文件中字段名清單,或是包含字段名的表

達(dá)式清單。其中各項(xiàng)用英文狀態(tài)下的”分隔。省略此項(xiàng),

一般等價(jià)于表文件中全部字段。

命令字必須是一條命令的第一項(xiàng),而各任選項(xiàng)的順序可任

意排列。

一條命令的各部分之間必須有空格(FOR/WHILE與

“條件”之間也必須有空格),但空格個數(shù)不限。

一條命令的總長度(包括命令中的所有空格)不能超過

254個字符(一個漢字以兩個字符計(jì)算)。

42

2012-10-2

”加以分隔,后跟一個回車,轉(zhuǎn)到下一

行去繼續(xù)輸入這條命令。系統(tǒng)在執(zhí)行時(shí),將把它們看作一個整

體。當(dāng)然,也可不管它,連續(xù)輸入一條命令的全部內(nèi)容,這樣

也不影響一條命令的完整性,但決不可在一行快輸滿時(shí),用回

車鍵換到下一行繼續(xù)輸入本條命令,這樣就破壞了命令的完整

性。

下面是一條標(biāo)準(zhǔn)的命令句法:

DISPNEXT25姓名,生日FOR姓名廿王大有八

命令字范圍表達(dá)式清單條件

此命令含義為:在從當(dāng)前記錄開始的共25個記錄中,把姓

名字段值是“王大有”的所有記錄分頁顯示出來,只顯示“姓

名”和"職稱”兩個字43

2012-10-2

3.3.2內(nèi)存變量、數(shù)組和常量

1.內(nèi)存變量

在VFP語言中,除了字段變量外,還有一種變量,它存在

于內(nèi)存之中,獨(dú)立于數(shù)據(jù)庫文件,稱為內(nèi)存變量。退出VFP時(shí),

內(nèi)存中的所有內(nèi)存變量都將消失,不在磁盤上自動保存。

內(nèi)存變量有字符型、數(shù)值型、貨幣型、邏輯型、日期型、

日期時(shí)間型6類。對這6類數(shù)據(jù)類型的使用與同類型字段數(shù)據(jù)類

型的使用相同。

內(nèi)存變量必須先定義后使用。VFP中,有兩種最基本的內(nèi)

存變量定義方法,它們是:

(1)STOREv表達(dá)式〉TOv內(nèi)存變量名清單,。

44

2012-10-2

(2)v內(nèi)存變量名〉=v表達(dá)式>。

格式⑴的功能是把語句中表達(dá)式的值賦給〈內(nèi)存變量名清

單》中的所有內(nèi)存變量。

格式(2)的功能是把等號右邊v表達(dá)式>的值賦給等號左邊

的一個內(nèi)存變量。表達(dá)式值的類型就是內(nèi)存變量的類型。若內(nèi)

存變量原來已經(jīng)存在,執(zhí)行了賦值語句后,原值即被取代。

例12STORE245TOA,B,C

執(zhí)行了這個命令,內(nèi)存變量A、B、C中的值均為245。

例13X=10

X=X+1

45

2012-10-2

兩條命令執(zhí)行后,內(nèi)存變量X的值為H。

用戶可直接用內(nèi)存變量名對內(nèi)存變量進(jìn)行訪問。但若內(nèi)存

變量名與某字段變量名相同時(shí),必須用如下格式訪問:

M-><內(nèi)存變量名,或M.<內(nèi)存變量名〉

2.常量

一個常量是一個命名的數(shù)據(jù)項(xiàng)。VFP對常量的表示法有一

些規(guī)定。

(1)數(shù)值型常量可直接使用。

例14X=23.6

46

2012-10-2

,(2)字符型常量必須用英文狀態(tài)下的單引號、雙引號或方

括號括起,這些符號總稱為字符括號。

例15Y="工程師”

X=[工程師]

(3)邏輯型常量必須用英文句點(diǎn)括起,而且只有.T.

和.F.兩個取值。

例16Z=T.

(4)日期型常量及日期時(shí)間型常量用花括號括起,且一般

應(yīng)嚴(yán)格按照如下格式表示:

A

{YYYY-MM-dd[?][hh[:mm[:ss]][a|p]]}

47

2012-10-2

例17STORE{A19934M2}TOXMAS

A

STORE{2000-01-01,10:00:00}TOXMAS2

也可用函數(shù)實(shí)現(xiàn),

D=CTOD(“12/25/93”)

T=CTOT(”12/25/9910:00:00amn)

3.內(nèi)存變量操作

⑴輸出內(nèi)存變量的值

最簡單的輸出內(nèi)存變量的值的命令是?和??。

基本命令格式:?/??v表達(dá)式清單,[ATv數(shù)值表達(dá)式>]

48

2012-10-2

此兩命令均為輸出命令,輸出命令中〈表達(dá)式清單〉的值。

用"?”命令時(shí),在輸出表達(dá)式值之前首先執(zhí)行一次回車換行;

使用“??”,則直接輸出。

使用[AT<數(shù)值表達(dá)式習(xí)任選項(xiàng)時(shí),該數(shù)值表達(dá)式的值決

定輸出的起始列號。

⑵顯示內(nèi)存變量情況命令——DISPLAY/LISTMEMORY

命令格式:DISPLAY/LISTMEMORY[LIKEv通配符刁

[TOPRINTER/TOFILEv文件名刁[NOCONSOLE]

DISPLAY分頁顯示,LIST則滾動顯示。

49

2012-10-2

DISPLAYMEMORY和LISTMEMORY兩條命令的功能

基本相同,都顯示當(dāng)前內(nèi)存中所有內(nèi)存變量的名、類型和當(dāng)前

值,所有數(shù)組變量名及每一個數(shù)組的下標(biāo)變量的類型和當(dāng)前值,

正在使用的變量個數(shù)、共占字節(jié)數(shù)、還可建立多少變量等。兩

命令的不同點(diǎn)在于:當(dāng)顯示內(nèi)容超過LIKEv通配符,:選用本

子句后,命令只顯示變量名與通配符相匹配的內(nèi)存變量和數(shù)組。

TOPRINTER:此子句將把命令的輸出傳給打印機(jī)。

TOFILEv文件名〉:此子句把命令的輸出傳到磁盤上指定

的文件中。

NOCONSOLE:有了此子句,命令的輸出將不在VFP主窗

口上顯示。

(3)保存變量命令

50

2012-10-2

藜命令格式:SAVETOv內(nèi)存變量文件名〉/TOMEMOv備注

型字段名〉[ALL[LIKE/EXCEPTv通配符>]]

此命令把所有符合條件的內(nèi)存變量、數(shù)組的各種信息全部

存入到一個文件或一個備注字段中去。

TOv內(nèi)存變量文件名〉:命令建立的文件,所有符合條件

的內(nèi)存變量、數(shù)組的各種信息,如變量名、類型、值等,全部

存入該文件。文件的默認(rèn)擴(kuò)展名為

TOMEMOv備注型字段名,:指定存儲變量信息的備注型

字段。

ALL:把內(nèi)存中所有的內(nèi)存變量、數(shù)組都存儲起來。

ALLLIKEv通配符,:存儲變量名與通配符匹配的內(nèi)存變

量、數(shù)組。(不匹配的不存儲。)

51

2012-10-2

ALLEXCEPTv通配符>:存儲變量名與通配符不匹配的

內(nèi)存變量、數(shù)組。(匹配的不存儲。)

例18把內(nèi)存中所有變量存入NCBL.MEM文件。

SAVETONCBL

例19把內(nèi)存中變量名以A開頭的變量全部存入

NCBM.MEM文件。

SAVETONCBMLIKEA*

例20把內(nèi)存中變量名第三個字母不為A的變量全部存入

NCBN.MEM文件。

SAVETONCBNEXCEPT??A*

⑷從內(nèi)存變量文件讀回變量

52

2012-10-2

已經(jīng)存入內(nèi)存變量文件中的變量,可以使用RESTORE

FROM命令讀回內(nèi)存。命令格式為:

RESTOREFROMv內(nèi)存變量文件名〉/FROMMEMOv備

注型字段名刁ADDITIVE]

〈內(nèi)存變量文件,:本子句規(guī)定從該文件中讀回變量,文

件的默認(rèn)擴(kuò)展名為.MEM。

FROMMEMOv備注型字段名〉:本子句規(guī)定從該字段中

讀回變量。

ADDITIVE:無此項(xiàng)時(shí),系統(tǒng)首先清除內(nèi)存中現(xiàn)有的所

有內(nèi)存變量和數(shù)組,然后再把命令中指定文件(或字段)的

所有內(nèi)存變量和數(shù)組全部讀入內(nèi)存,有ADDITIVE時(shí),不清

除內(nèi)存中現(xiàn)有內(nèi)存變量和數(shù)組,把指定文件(或字段)的所

有內(nèi)存變量和數(shù)組追加入內(nèi)存。

53

2012-10-2

僅當(dāng)新增加的內(nèi)存變量與內(nèi)存中原有的內(nèi)存變量同名時(shí),

才將內(nèi)存中原有的同名內(nèi)存變量覆蓋掉。命令執(zhí)行完后,內(nèi)

存中的變量總數(shù)不能超過限定。因此,在追加過程中,一旦

總數(shù)達(dá)到限定,以下的變量就不再讀入了。

例21把內(nèi)存變量文件NCBL.MEM中的變量讀入內(nèi)存,

不保留內(nèi)存中原有變量。

RESTOREFROMNCBL

例22把內(nèi)存變量文件NCBM.MEM中的變量讀入內(nèi)存,

保留內(nèi)存中原有的變量。

RESTOREFROMNCBMADDITIVE

⑸清除變量命令

①清除部分或彳RELEASE。54

2012-10-2犬蹄專3挈

契此命令可分為4種格式。

格式1:RELEASEv變量名表〉

此格式的RELEASE命令將從內(nèi)存中清除掉v變量名表》中

所列的全部內(nèi)存變量和數(shù)組。

格式2:RELEASEALL

采用此格式,RELEASE命令將從內(nèi)存中清除所有內(nèi)存變

量和數(shù)組。

格式3:RELEASEALLLIKEv通配符》

此格式把內(nèi)存中所有變量名與通配符相匹配的內(nèi)存變量和

數(shù)組都清除掉。(不匹配的保留。)

格式4:RELEASEALLEXCEPTv通酉己符〉

55

2012-10-2

”?”代表任何單個字符,星號“*”代表任何一個字符串。

例23清除內(nèi)存中全部內(nèi)存變量和數(shù)組。

RELEASEALL

例24清除變量名中第二個字符為A,第三個字符為C的所有

內(nèi)存變量和數(shù)組。

RELEASEALLLIKE?AC*

例25清除變量名的第三個字符不為B的所有內(nèi)存變量和數(shù)組。

RELEASEALLEXCEPT??B*

56

2012-10-2

②清除全部變量命令——CLEARMEMORYo

該命令的功能與RELEASEALL命令完全相同,清除掉內(nèi)

存中全部內(nèi)存變量和數(shù)組。

4.數(shù)組

數(shù)組是一種特殊的內(nèi)存變量。在VFP中,用戶可以使用數(shù)

組,但首先應(yīng)定義數(shù)組。

1)定義數(shù)組命令——DIMENSION

命令格式:DIMENSION<數(shù)組名1>(v數(shù)值表達(dá)式1>[,

v數(shù)值表達(dá)式2>])[,<數(shù)組名2>(v數(shù)值表達(dá)式1>[,v數(shù)值表

達(dá)式2>])...]

本命令可以定義若干個一維、二維數(shù)組。

例26DIMENSIONX(4),Y(2,3)

57

2012-10-2

穿*7執(zhí)行該命令后,將建立兩個數(shù)組X和Y。數(shù)組X由1列4行

組成,共4個單元;數(shù)組Y由2行3列組成,共6個單元。

此命令執(zhí)行后,所建數(shù)組的所有單元都賦了一個邏輯型的

初值.F.,但以后可以給各單元賦不同類型的值。

2)使用數(shù)組——下標(biāo)變量

盡管一個數(shù)組是一個變量(數(shù)組變量),但它的每一個

單元都可像一個一般變量那樣被使用。數(shù)組單元是以下標(biāo)來

區(qū)分的,也稱為下標(biāo)變量。下標(biāo)的起始值為1。

例如,在上面的例子中,數(shù)組X有4個下標(biāo):X(l),X(2),

X(3),X(4);數(shù)組Y有6個下標(biāo):Y(l,2),Y(l,3),

Y(2,l),Y(2,2),Y(2,3)O

58

2012-10-2

'J27依次執(zhí)行以下命令序列:

DIMENSIONX(2,3)

STOREnBOYnTOX(l,2)

STORE“GIRL”TOX(2,3)

X(l,l尸300

nn

STORECTOD(12/31/88)TOX(l?3)

X(2,1>.T.

DISPLAYMEMORYLIKEX

執(zhí)行結(jié)果為:

59

2012-10-2

XPubA

(1,1)N300

(1,2)CnBOYn

(1,3)D12/31/88

(2,1)L.T.

(2,2)L.F.

(2,3)C“GIRL”

總結(jié):(1)一個數(shù)組只算作一個內(nèi)存變量,但每個單元都

可像一個內(nèi)存變量一樣使用,因此,稱為下標(biāo)變量。

60

2012-10-2

數(shù)組必須先定義,后使用。定義時(shí),各下標(biāo)變量都是邏

輯型.F.,但以后可存入其它類型的值。

(3)每個字符型下標(biāo)變量需占內(nèi)存數(shù)為該字符變量的字符個

數(shù)加7,其它類型的下標(biāo)變量不增加額外的內(nèi)存空間。

(4)二維下標(biāo)變量可用單下標(biāo)方式訪問。如,二維數(shù)組

X(2,3)中,各下標(biāo)變量的存儲順序?yàn)?1,1),(1,2),(1,3),(2,1),

(2,2),(2,3)。因此,下標(biāo)變量X(2,1)可用X(4)調(diào)用。為清晰起見,

用單下標(biāo)訪問二維數(shù)組時(shí),單下標(biāo)稱為序號。

(5)定義數(shù)組時(shí),也可用方括號。方括號與圓括號完全等價(jià)。

例如,DIMENSIONAA[2,4]與DIMENSIONAA(2,4)是等價(jià)的。

61

2012-10-2

(6)可以用DIMENSION命令重新定義一個已經(jīng)存在的數(shù)

組,以改變它的維數(shù)和大小。重新定義后,只要下標(biāo)變量個

數(shù)增加了,則原數(shù)組的各下標(biāo)變量值將依次拷貝到新數(shù)組的

下標(biāo)變量中,多出來的下標(biāo)變量值為.F.;相反,若下標(biāo)變

量個數(shù)減少了,被減少的下標(biāo)變量及其內(nèi)容將被刪掉。

62

2012-10-2

3.3.3表達(dá)式

任何一個字段變量、內(nèi)存變量、常量或函數(shù)都是表達(dá)式,

用操作符把表達(dá)式正確地連接起來的式子也是表達(dá)式。表達(dá)式

值的類型稱為表達(dá)式的類型。表達(dá)式的類型與所含變量的類型

有關(guān),但還與所進(jìn)行的操作有關(guān)。變量的類型不同,所能進(jìn)行

的操作也不同。

VFP提供數(shù)值型、關(guān)系型、邏輯型和字符型等4類運(yùn)算。

1.數(shù)值型運(yùn)算

這類運(yùn)算共有以下7種操作:

①加法:+(單目運(yùn)算時(shí)為“正”號)

⑤乘法:*

63

2012-10-2

②減法:-(單目運(yùn)算時(shí)為“負(fù)”號)

③乘法*

④除法:/

⑤指數(shù):**或八

⑥括號:()

⑦取模(余數(shù)):%

格式:〈數(shù)值表達(dá)式1>%V數(shù)值表達(dá)式2>

其中,v數(shù)值表達(dá)式1>為被除數(shù),v數(shù)值表達(dá)式2>為除數(shù)。

此操作結(jié)果為兩數(shù)相除的余數(shù)。被除數(shù)的小數(shù)位數(shù)決定了結(jié)果

中的小數(shù)位數(shù)。除數(shù)值為正,結(jié)果為正;除數(shù)值為負(fù),結(jié)果值

2°J密。除數(shù)不能為零。64

數(shù)值型運(yùn)算符的運(yùn)算順序?yàn)椋孩倮ㄌ?;②單目運(yùn)算;③

指數(shù)運(yùn)算;④乘除取模運(yùn)算;⑤加減運(yùn)算。

2.關(guān)系型運(yùn)算

關(guān)系型運(yùn)算有以下6種操作:

小于:v

不等于:<>(也可用#或!=)

大于:>

大于等于:>=

等于:=

字符串精確等于:==

小于等于:<=__________

65

2012-10-2

W關(guān)系型運(yùn)算只能在數(shù)值型數(shù)據(jù)之間、字符型數(shù)據(jù)之間、

日期型數(shù)據(jù)之間或日期時(shí)間型數(shù)據(jù)之間進(jìn)行:數(shù)值型數(shù)據(jù)按

其值的大小比較;字符型數(shù)據(jù)按其ASCH碼值的大小比較;

漢字按其拼音(一級字庫)或部首(二級字庫)比較;對于

日期型或日期時(shí)間型數(shù)據(jù),日期(時(shí)間)在前的為小,日期

(時(shí)間)在后的為大。關(guān)系運(yùn)算的結(jié)果是邏輯值:“真”

(?T.)或“假”(.F.)o

3.邏輯型運(yùn)算

邏輯型運(yùn)算共有以下4種操作,結(jié)果是邏輯值:

①邏輯與:.AND.

②邏輯或:.OR.

③邏輯非:.NOT.

④括號:()

66

2012-10-2

令A(yù)、B是兩個邏輯型數(shù)據(jù),則前三種邏輯運(yùn)算符的功能

見表2-1所示。

邏輯型運(yùn)算的運(yùn)算結(jié)果是邏輯型。其運(yùn)算順序?yàn)?

①括號;②非運(yùn)算;③與運(yùn)算;④或運(yùn)算。

67

2012-10-2

"OKIOZ

*

5工

***

HHHH

?**

HH工H

?***

HF■FH

B.RO.AB.DNA.A<

4.字符型運(yùn)算

字符型運(yùn)算包括以下兩類操作:

(1)字符串連接運(yùn)算:+、-

運(yùn)算是把兩個字符串串接起來,形成一個新的字符

串。

“-”運(yùn)算也是把兩個字符串串接起來,形成一個新的字符串。

但在”(減)運(yùn)算時(shí),前一字符串若有尾部空格,則把尾

部空格移到新字符串的尾部。例如:

八最后"結(jié)果"&&得:”最后結(jié)果”

“最后"J結(jié)果”&&得:”最后結(jié)果”

69

2012-10-2

(2)字符串比較運(yùn)算:$

這個運(yùn)算用于兩個字符串表達(dá)式的比較,結(jié)果是邏輯型

值。若“$”后面的字符串包含有“$”前邊的字符串,結(jié)果為

?T.;否則為.F.o例如:

"ABCD"$"NABCDM''&&結(jié)果為.T.

"XYZF''$"XY=ZF''&&結(jié)果為.F.

對于所有這4類運(yùn)算,也有一定的優(yōu)先級別。優(yōu)先級別由

高到低依次為:數(shù)值型和字符串型、關(guān)系型、邏輯型。例如:

.NOT.5+2>10&&運(yùn)算結(jié)果為.T.

70

2012-10-2

10=3.OR..NOT.5+2>10&&運(yùn)算結(jié)果為?T.

10=3.OR.5+2>10.AND.8<>5&&運(yùn)算結(jié)果為.F.

71

2012-10-2

3.3.4基本函數(shù)

VFP提供了許多函數(shù),本節(jié)只介紹一些基本函數(shù),其它見

本教材附錄B。

1.算術(shù)運(yùn)算函數(shù)

1)ABS——絕對值函數(shù)

格式:ABS(〈數(shù)值表達(dá)式〉)

ABS函數(shù)給出〈數(shù)值表達(dá)式>值的絕對值

2)FV——零存整取函數(shù)

格式:FV(〈數(shù)值表達(dá)式1>,<數(shù)值表達(dá)式2>,<數(shù)值表達(dá)

式3>)

72

2012-10-2

例28若每月投資500元,年利率為7.5%,共4年(48個

月),則到期共可得

?FV(500,0.075/12.48)&&27887.93元

3)INT——取整函數(shù)

格式:INT(〈數(shù)值表達(dá)式,)

INT函數(shù)返回〈數(shù)值表達(dá)式〉的整數(shù)部分。

例29?INT(12.5)&&得12

?INT(-12.5)&&得-12

4)MAX——最大值函數(shù)

格式:MAX(〈表達(dá)式清單〉)

73

2012-10-2

(〈表達(dá)式清單〉)由相同類型的數(shù)值型、貨幣型、日期型、

日期時(shí)間型、字符型表達(dá)式組成。當(dāng)它是數(shù)值型或貨幣型時(shí),

函數(shù)返回最大的一個表達(dá)式值;當(dāng)它是日期型時(shí),返回最后

面的日期;當(dāng)它是日期時(shí)間型時(shí),返回最后面的日期和時(shí)間;

當(dāng)它是字符型時(shí),返回ASCII碼值最大的那個表達(dá)式。

例30?MAX(5,8,7)&&得8

?MAX({^1994-12-12},「1993-12-15})

&&得12/12/94

?MAX(”ABCD”Jabcd”)&&ABCD

AA

?MAX({1994-12-10,01:00:00}5{1993-12-20,10:10:10))

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論