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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第三章VisualFoxPro語言基礎

3.1數據庫和表的建立

3.1.1幾個常用符號的約定

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

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

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

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

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

作選擇項或可選項,但不包括這對表示符本身。

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

選擇一項。

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

2012-10-2

3.1.2改變默認盤和當前路徑命令——SET

DEFAULTTO

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

上都有一個當前目錄。剛引入VFP時,VFP所在盤即為默認盤,

VFP所在目錄即為當前目錄。用戶可利用本命令來改變默認盤,

改變當前目錄。

命令格式:SETDEFAULTTO卜字符表達式>]

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

下列命令將使默認盤為D盤:

SETDEFAULTTOD[:]

2

2012-10-2

若C盤為默認盤,當前目錄為根目錄,則以下命令將默

認盤當前目錄改為C:\SALES:

SETDEFAULTTOSALES

下列命令可把默認盤根目錄改為當前目錄:

SETDEFAULTTO\

下列命令可把默認盤當前目錄的上級目錄改為當前目錄:

SETDEFAULTTO..

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

SETDEFAULTTO

3

2012-10-2

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

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

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

間必須有空格分隔。

4

2012-10-2

3.1.4操作數據庫

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

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

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

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

件名由命令給定。若缺省路徑,所建庫文件將存入默認盤當

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

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

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

5

2012-10-2

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

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

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

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

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

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

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

把數據盤插入A驅動器。

②設置C盤為默認盤,在命令窗口中鍵入命令:SET

DEFAULTTOC

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

DATABASE雇員管理。

6

2012-10-2

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

2.打開數據庫命令----OPENDATABASE

在使用一個數據庫之前,必須先打開它。

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

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

則同時關閉掉原來已打開的庫文件。

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

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

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

7

2012-10-2

例2SETDEFAULTTOD

OPENDATABASE雇員管理

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

據庫。

3.關閉數據庫命令——CLOSEDATABASE

在使用完數據庫之后,必須關閉它。

命令格式:CLOSEDATABASE

命令功能:關閉當前打開的數據庫,同時也關閉了這個數

據庫中已經打開的各種文件。

4.刪除數據庫命令---DELETEDATABASE

當永遠不再需要某個數據庫時,應當從磁盤上刪除它。

8

2012-10-2

命令格式:DELETEDATABASEv庫文件名〉

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

據庫所包含的所有文件。

9

2012-10-2

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

建立一個表文件包括兩部分工作:建立表文件結構和輸入數據。

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

類型、字段寬度的工作稱為建立表文件的結構。

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

命令功能:在當前打開的數據庫中定義一個表文件結構,

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

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

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

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

10

2012-10-2

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

首先,確定各字段結構如下:

字段名類型寬度小數位數索引NULL

i學號、字符型-8:>1

姓名字符型

10■■

性別字符型2

生日日期型8

班級字符型5

黨員否邏輯型1

入學成績整型4

照片通用型4

備注備注型4

11

2012-10-2

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

SETDEFAULTTOD&&設置D盤為默認盤

OPENDATABASEXSGL&&打開“XSGL.DBC”

數據庫

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

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

“xs.DBF”,并打開表設計器。

“NULL”欄用于設置當前字段是否可以為NULL值(空

值)。

字段表頁中還有一些關于字段高級屬性的設置,如索弓I、

顯示方式、字段標題、驗證規(guī)則等,我們將在第八章中詳細

介紹。____________

12

2012-10-2

圖2-1表設計器窗口

13

2012-10-2

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

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

入。

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

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

“是”,則轉入輸入數據的工作;若選擇“否”,則

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

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

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

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

?FPT的備注文件。14

2012-10-2

圖2-2建立表結構

15

2012-10-2

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

是(Y)否(N)

16

2012-10-2

3.1.6打開表文件命令——USE

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

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

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

功能:打開指定表文件,同時關閉掉原來已打開的表文件。

如果該表文件有備注型字段,則同時打開與表文件同名、擴展

名為.FPT的備注文件。

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

例4SETDEFAULTTOD

OPENDATABASEgygl

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

17

2012-10-2

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

GO、SKIP

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

指針,簡稱指針。指針里存放的是一個十進制數,如5、18等,

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

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

號為58的記錄為當前記錄。

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

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

最大的記錄。

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

令時,會自動改變當前記錄。在這里,我們首先介紹專門用于

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

18

2012-10-2

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

命令格式:GO[TO][RECORD]v數值表達式〉/TOP/BOTTOM

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

指向首記錄;若選擇BOTTOM,指針指向末記錄;若選擇數值

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

當GO后是一個具體數字時,可以缺省此命令字。

例5USEXS

GO5&&使5#記錄成為當前記錄

GOTOP&&使指針指向首記錄

4&&使4#記錄成為當前記錄

GOTOBOTTOM&&末記錄成為當前記錄

19

2012-10-2

指針的相對移動命令—SKIP

命令常用格式:SKIP[±v數值表達式>]

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

移動的記錄個數等于命令中表達式的值。命令中的號表

示向記錄排列的尾部移動(“+”可缺?。弧?,號表示向首

部移動。當為“+1”時,可全部缺省,只留下命令字SKIP。

例6USEXS

SKIP5&&6#記錄為當前記錄

SKIP&&7#記錄為當前記錄

SKIP-2&&5#記錄為當前記錄

20

2012-10-2

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

命令格式:APPEND[BLANK]

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

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

①指針內容為最大記錄號加1。

②若命令中有選擇項BLANK,則當前記錄為空記錄,

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

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

執(zhí)行步驟③。

21

2012-10-2

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

文件的記錄結構,光標停在第一字段處,等待用戶逐個字段

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

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

USEXS

APPEND

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

入內容。

當輸入的某字段數據與該字段不符時(類型不符、超過

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

22

2012-10-2

當光標在備注型字段時,若不想輸入數據,按回車鍵把

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

注型字段數據實際存儲在與表文件同名、擴展名為”.FP「的

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

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

口。用戶在該窗口中為該備注型字段輸入內容。

備注型字段內容輸入完畢后,用人W控制鍵結束之或直

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

原記錄編輯窗口。

本記錄數據輸入完后,記錄指針內容自動加1,在編輯窗

口上又出現(xiàn)當前記錄結構,等待用戶繼續(xù)追加下一記錄內容。

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

記錄。

23

2012-10-2

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

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

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

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

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

大、小寫字母是不等價的。

24

2012-10-2

3.1.9插入記錄操作命令—INSERT

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

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

令INSERT。

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

當無BEFORE任選項時,在當前記錄后插入新記錄;若

有BEFORE,則記錄插在當前記錄前,且指針指向插入記錄。

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

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

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

25

2012-10-2

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

人W或AEND控制鍵結束。

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

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

方法1:方法2:

USEXSUSEXS

GO5GO6

INSERTINSERTBEFORE

26

2012-10-2

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

------APPENDFROM

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

加到當前打開表文件中。

命令格式:APPENDFROMv表文件名

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

其中,〈表文件名〉為讀出數據的表文件,也稱源文件,默

認擴展名為.DBFO被追加記錄的表文件是當前打開表文件,

也稱目的表文件。

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

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

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

27

2012-10-2

若目的表文件中某字段的寬度小于源文件對應字段的寬

度,讀入數據時,字符型字段超長部分被截去,數值型字段

只加入一串…。

FIELDSv字段名清單》項簡稱字段名清單,若無字段名清

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

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

段。

備注型字段也同時被追加。

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

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

如下步驟:

28

2012-10-2

USELS

APPENDFROMXS

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

同內容,“LS.FPT”文件也與“XS.FPT”文件同內

容。

29

2012-10-2

3.1.11關閉表文件操作命令——USE

在內存中被打開的表文件可能進行了各種修改,如用

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

但磁盤上的這個表文件并未同時得到修改,關閉文件意味著

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

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

命令格式:USE

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

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

件時,也關閉了原打開的表文件。

30

2012-10-2

03.2表文件內容的輸出

3.2.1列表輸出命令——LIST

利用LIST命令,可以輸出表文件的結構和記錄內容。

1.輸出表文件結構

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

PRINTER][NOCONSOLE]

此命令用來輸出打開表文件的結構:

[TOFILEv文件名>]表文件結構將輸出到對應的磁盤文件保存

[TOPRINTER]將輸出到打印機打印。有任選項

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

將在王窗口顯小O31

2012-10-2

例9輸出“xs.DBF”表結構。

USEXS

LISTSTURCTURETOPRINTER

這個結果除列出了該表文件結構外,還在前部給

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

文件的大小。

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

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

最前部增加的,用來存放刪除標記。

32

2012-10-2

2.輸出記錄內容

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

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

[TOPRINTER/TOFILEv文件名習

[NOCONSOLE]

無[OFF]任選項,則同時列出記錄號;否則不列出記錄號。

卜范圍刁任選項缺省時,表示輸出全部記錄。

33

2012-10-2

Oio鍵入以下兩條命令:

USEXS

LIST

例11鍵入以下兩條命令:

USEXS

LIST學號,姓名,簡歷

備注型字段內容也實際輸出。

34

2012-10-2次亦溝孝/孝

采用LIST命令輸出內容時,將把輸出內容全部逐

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

顯示器上輸出,當輸出行數超過VFP主窗口行數時,

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

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

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

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

第一頁內容,用戶看清后再顯示下一頁內容,可用

DISPLAY命令實現(xiàn)。

35

2012-10-2

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

與LIST命令相對應,DISPLAY也有兩種格式:

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

PRINTER][NOCONSOLE]

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

習[FORv條件l>][WHILEv條件2>][TOPRINTER/TOFILE<

文件名>][NOCONSOLE]

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

點差別:

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

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

36

2012-10-2

②當命令中缺省“范圍”和“條件”項時,

DISPLAY命令只輸出當前記錄內容o

37

2012-10-2

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

3.3.1命令的一般格式

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

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

VFP命令的一般格式為:

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

1.命令字

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

38

2012-10-2

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

作。我們已經介紹過的命令字有:USE、CREATE、

APPEND>LIST和DISPLAY等。

當一個命令字的字母超過4個時,可從第5個字母起省略。

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

2.FOR〈條件〉和WHILE〈條件〉項

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

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

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

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

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

39

2012-10-2

3.范圍項

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

種選擇:

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

NEXTn---范圍為從當前記錄開始的n個記錄,n是一個

具體的十進制數。

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

REST——范圍為從當前記錄開始直到文件結束的所有記錄。

缺省——若條件項同時缺省,不同命令有不同含義,或等

價于ALL,或僅作用于當前記錄。條件項以FOR開始時,范圍

為ALL,以WHILE開始時,范圍為從當前記錄開始的所有記錄。

40

2012-10-2

條件項以FOR開始時,將對范圍內符合條件的所有記錄進

行操作;條件項以WHILE開始時,只要碰到一個不符合條件

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

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

當一條命令中既有FOR子句,也有WHILE子句時,在

WHILE條件首次不滿足前,將對滿足FOR條件的所有記錄進

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

本書后面講到條件時,都以FOR子句為準,讀者可自行試驗以

WHILE開頭的一些差別。

命令執(zhí)行完畢時,指針一般指向范圍內最后一記錄。但當

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

記錄的后面。

41

2012-10-2

4.表達式清單

此項往往是表文件中字段名清單,或是包含字段名的表

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

一般等價于表文件中全部字段。

命令字必須是一條命令的第一項,而各任選項的順序可任

意排列。

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

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

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

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

42

2012-10-2

”加以分隔,后跟一個回車,轉到下一

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

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

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

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

性。

下面是一條標準的命令句法:

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

命令字范圍表達式清單條件

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

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

名”和"職稱”兩個字43

2012-10-2

3.3.2內存變量、數組和常量

1.內存變量

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

于內存之中,獨立于數據庫文件,稱為內存變量。退出VFP時,

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

內存變量有字符型、數值型、貨幣型、邏輯型、日期型、

日期時間型6類。對這6類數據類型的使用與同類型字段數據類

型的使用相同。

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

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

(1)STOREv表達式〉TOv內存變量名清單,。

44

2012-10-2

(2)v內存變量名〉=v表達式>。

格式⑴的功能是把語句中表達式的值賦給〈內存變量名清

單》中的所有內存變量。

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

的一個內存變量。表達式值的類型就是內存變量的類型。若內

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

例12STORE245TOA,B,C

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

例13X=10

X=X+1

45

2012-10-2

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

用戶可直接用內存變量名對內存變量進行訪問。但若內存

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

M-><內存變量名,或M.<內存變量名〉

2.常量

一個常量是一個命名的數據項。VFP對常量的表示法有一

些規(guī)定。

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

例14X=23.6

46

2012-10-2

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

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

例15Y="工程師”

X=[工程師]

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

和.F.兩個取值。

例16Z=T.

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

應嚴格按照如下格式表示:

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

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

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

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

3.內存變量操作

⑴輸出內存變量的值

最簡單的輸出內存變量的值的命令是?和??。

基本命令格式:?/??v表達式清單,[ATv數值表達式>]

48

2012-10-2

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

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

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

使用[AT<數值表達式習任選項時,該數值表達式的值決

定輸出的起始列號。

⑵顯示內存變量情況命令——DISPLAY/LISTMEMORY

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

[TOPRINTER/TOFILEv文件名刁[NOCONSOLE]

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

49

2012-10-2

DISPLAYMEMORY和LISTMEMORY兩條命令的功能

基本相同,都顯示當前內存中所有內存變量的名、類型和當前

值,所有數組變量名及每一個數組的下標變量的類型和當前值,

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

命令的不同點在于:當顯示內容超過LIKEv通配符,:選用本

子句后,命令只顯示變量名與通配符相匹配的內存變量和數組。

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

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

的文件中。

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

口上顯示。

(3)保存變量命令

50

2012-10-2

藜命令格式:SAVETOv內存變量文件名〉/TOMEMOv備注

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

此命令把所有符合條件的內存變量、數組的各種信息全部

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

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

的內存變量、數組的各種信息,如變量名、類型、值等,全部

存入該文件。文件的默認擴展名為

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

字段。

ALL:把內存中所有的內存變量、數組都存儲起來。

ALLLIKEv通配符,:存儲變量名與通配符匹配的內存變

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

51

2012-10-2

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

內存變量、數組。(匹配的不存儲。)

例18把內存中所有變量存入NCBL.MEM文件。

SAVETONCBL

例19把內存中變量名以A開頭的變量全部存入

NCBM.MEM文件。

SAVETONCBMLIKEA*

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

NCBN.MEM文件。

SAVETONCBNEXCEPT??A*

⑷從內存變量文件讀回變量

52

2012-10-2

已經存入內存變量文件中的變量,可以使用RESTORE

FROM命令讀回內存。命令格式為:

RESTOREFROMv內存變量文件名〉/FROMMEMOv備

注型字段名刁ADDITIVE]

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

件的默認擴展名為.MEM。

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

讀回變量。

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

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

所有內存變量和數組全部讀入內存,有ADDITIVE時,不清

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

有內存變量和數組追加入內存。

53

2012-10-2

僅當新增加的內存變量與內存中原有的內存變量同名時,

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

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

總數達到限定,以下的變量就不再讀入了。

例21把內存變量文件NCBL.MEM中的變量讀入內存,

不保留內存中原有變量。

RESTOREFROMNCBL

例22把內存變量文件NCBM.MEM中的變量讀入內存,

保留內存中原有的變量。

RESTOREFROMNCBMADDITIVE

⑸清除變量命令

①清除部分或彳RELEASE。54

2012-10-2犬蹄專3挈

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

格式1:RELEASEv變量名表〉

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

所列的全部內存變量和數組。

格式2:RELEASEALL

采用此格式,RELEASE命令將從內存中清除所有內存變

量和數組。

格式3:RELEASEALLLIKEv通配符》

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

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

格式4:RELEASEALLEXCEPTv通酉己符〉

55

2012-10-2

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

例23清除內存中全部內存變量和數組。

RELEASEALL

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

內存變量和數組。

RELEASEALLLIKE?AC*

例25清除變量名的第三個字符不為B的所有內存變量和數組。

RELEASEALLEXCEPT??B*

56

2012-10-2

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

該命令的功能與RELEASEALL命令完全相同,清除掉內

存中全部內存變量和數組。

4.數組

數組是一種特殊的內存變量。在VFP中,用戶可以使用數

組,但首先應定義數組。

1)定義數組命令——DIMENSION

命令格式:DIMENSION<數組名1>(v數值表達式1>[,

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

達式2>])...]

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

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

57

2012-10-2

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

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

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

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

2)使用數組——下標變量

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

單元都可像一個一般變量那樣被使用。數組單元是以下標來

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

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

X(3),X(4);數組Y有6個下標: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í)行結果為:

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”

總結:(1)一個數組只算作一個內存變量,但每個單元都

可像一個內存變量一樣使用,因此,稱為下標變量。

60

2012-10-2

數組必須先定義,后使用。定義時,各下標變量都是邏

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

(3)每個字符型下標變量需占內存數為該字符變量的字符個

數加7,其它類型的下標變量不增加額外的內存空間。

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

X(2,3)中,各下標變量的存儲順序為(1,1),(1,2),(1,3),(2,1),

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

用單下標訪問二維數組時,單下標稱為序號。

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

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

61

2012-10-2

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

組,以改變它的維數和大小。重新定義后,只要下標變量個

數增加了,則原數組的各下標變量值將依次拷貝到新數組的

下標變量中,多出來的下標變量值為.F.;相反,若下標變

量個數減少了,被減少的下標變量及其內容將被刪掉。

62

2012-10-2

3.3.3表達式

任何一個字段變量、內存變量、常量或函數都是表達式,

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

值的類型稱為表達式的類型。表達式的類型與所含變量的類型

有關,但還與所進行的操作有關。變量的類型不同,所能進行

的操作也不同。

VFP提供數值型、關系型、邏輯型和字符型等4類運算。

1.數值型運算

這類運算共有以下7種操作:

①加法:+(單目運算時為“正”號)

⑤乘法:*

63

2012-10-2

②減法:-(單目運算時為“負”號)

③乘法*

④除法:/

⑤指數:**或八

⑥括號:()

⑦取模(余數):%

格式:〈數值表達式1>%V數值表達式2>

其中,v數值表達式1>為被除數,v數值表達式2>為除數。

此操作結果為兩數相除的余數。被除數的小數位數決定了結果

中的小數位數。除數值為正,結果為正;除數值為負,結果值

2°J密。除數不能為零。64

數值型運算符的運算順序為:①括號;②單目運算;③

指數運算;④乘除取模運算;⑤加減運算。

2.關系型運算

關系型運算有以下6種操作:

小于:v

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

大于:>

大于等于:>=

等于:=

字符串精確等于:==

小于等于:<=__________

65

2012-10-2

W關系型運算只能在數值型數據之間、字符型數據之間、

日期型數據之間或日期時間型數據之間進行:數值型數據按

其值的大小比較;字符型數據按其ASCH碼值的大小比較;

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

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

(時間)在后的為大。關系運算的結果是邏輯值:“真”

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

3.邏輯型運算

邏輯型運算共有以下4種操作,結果是邏輯值:

①邏輯與:.AND.

②邏輯或:.OR.

③邏輯非:.NOT.

④括號:()

66

2012-10-2

令A、B是兩個邏輯型數據,則前三種邏輯運算符的功能

見表2-1所示。

邏輯型運算的運算結果是邏輯型。其運算順序為:

①括號;②非運算;③與運算;④或運算。

67

2012-10-2

"OKIOZ

*

5工

***

HHHH

?**

HH工H

?***

HF■FH

B.RO.AB.DNA.A<

4.字符型運算

字符型運算包括以下兩類操作:

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

運算是把兩個字符串串接起來,形成一個新的字符

串。

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

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

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

八最后"結果"&&得:”最后結果”

“最后"J結果”&&得:”最后結果”

69

2012-10-2

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

這個運算用于兩個字符串表達式的比較,結果是邏輯型

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

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

"ABCD"$"NABCDM''&&結果為.T.

"XYZF''$"XY=ZF''&&結果為.F.

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

高到低依次為:數值型和字符串型、關系型、邏輯型。例如:

.NOT.5+2>10&&運算結果為.T.

70

2012-10-2

10=3.OR..NOT.5+2>10&&運算結果為?T.

10=3.OR.5+2>10.AND.8<>5&&運算結果為.F.

71

2012-10-2

3.3.4基本函數

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

本教材附錄B。

1.算術運算函數

1)ABS——絕對值函數

格式:ABS(〈數值表達式〉)

ABS函數給出〈數值表達式>值的絕對值

2)FV——零存整取函數

格式:FV(〈數值表達式1>,<數值表達式2>,<數值表達

式3>)

72

2012-10-2

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

月),則到期共可得

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

3)INT——取整函數

格式:INT(〈數值表達式,)

INT函數返回〈數值表達式〉的整數部分。

例29?INT(12.5)&&得12

?INT(-12.5)&&得-12

4)MAX——最大值函數

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

73

2012-10-2

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

日期時間型、字符型表達式組成。當它是數值型或貨幣型時,

函數返回最大的一個表達式值;當它是日期型時,返回最后

面的日期;當它是日期時間型時,返回最后面的日期和時間;

當它是字符型時,返回ASCII碼值最大的那個表達式。

例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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論