VFP命令、函數(shù)及程序語句大全_第1頁
VFP命令、函數(shù)及程序語句大全_第2頁
VFP命令、函數(shù)及程序語句大全_第3頁
VFP命令、函數(shù)及程序語句大全_第4頁
VFP命令、函數(shù)及程序語句大全_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、VFP命令、函數(shù)及程序語句大全(1)VFP命令是一種實現(xiàn)對數(shù)據(jù)庫系統(tǒng)進行操作的動詞或短語。VFP命令可在VFP命令窗口中單獨運行,也可編制成程序成批運行,由命令和函數(shù)編制的程序可對數(shù)據(jù)庫系統(tǒng)進行自動、復雜的操作,使數(shù)據(jù)庫系統(tǒng)應用起來更加友好、方便。VFP常用命令分類表類別命令建立文件類CREATE,MODIFY,COPY,SAVE等數(shù)據(jù)庫操作類USE,CLOSE,COPY,MODIFYSTRUCTURE等數(shù)據(jù)編輯類BROWSE,EDIT,CHANG,REPLACE,UPDATE等記錄指針操作類GOTO,LOCATE,SEEK,FIND,SKIP等記錄操作類APPEND,DELETE,INSER

2、T等數(shù)據(jù)顯示類BROWSE,LIST,DISPLAY等數(shù)據(jù)統(tǒng)計類SUM,COUNT,AVERAGE,TOTAL等存變量操作類ACCEPT,INPUT,READ,SAVE等程序控制類DO,DO WHILEENDDO,IFENDIF等系統(tǒng)設置類SET TALK,SET DEFAULT TO等命令格式VFP命令一般由命令動詞和控制短語構成。一般格式:命令動詞FROMTO記錄范圍FOR/WHILEFIELDS 表示可選,表示必選, / 表示或選例如:(1)APPEND FROM C:RSDA.DBF FOR 基本工資100 FIELDS 編號,姓名,職稱,基本工資。從C:RSDA.DBF 表中把基本工

3、資大于100元的記錄添加到當前表添加字段為:編號,姓名,職稱,基本工資。(2)COUNT FOR 職稱=高工TO GG 統(tǒng)計高工的記錄數(shù)到內(nèi)存變量GG??刂贫陶Z規(guī)定了對數(shù)據(jù)庫操作的限制條件:1.指向輸入輸出目標FROM/TOAPPEND FROM,COPY FILE TO 2.限制記錄范圍(SCOPE)ALL所有記錄NEXT 本記錄后的第幾個記錄RECORD 第1個記錄REST 當前記錄之后所有記錄3.選擇字段FIELDS選擇輸入/輸出的字段。4.限制條件FOR/WHILEFOR 基本工資100 .AND.基本工資10004從其他表取數(shù)據(jù)命令:APPEND FROM 表名 FOR 條件例子:把

4、GZ1表中“應發(fā)合計”大于1000的記錄復制到當前的表后面。APPEND FROM GZ1 FOR 應發(fā)合計1000五.表記錄的顯示1瀏覽顯示命令:BROWSE FIELDS 字段表FOR 條件例子:顯示當前表中“應發(fā)合計”大于1000元的記錄的職工編號、姓名、應發(fā)合計三個字段。BROWSE FIELDS 職工編號,姓名,應發(fā)合計 FOR 應發(fā)合計1000說明:此命令的結果以瀏覽窗口的形式出現(xiàn),具有修改功能。2顯示輸出命令:LIST|DISPLAY OFF FIELDS WHILE FOR TO PRINT|TO FILE 說明:(1)命令帶OFF參數(shù)表示不顯示記錄號(2)范圍指定對哪些記錄進

5、行操作,(范圍包括:RECORD n :第幾號記錄;NEXT n: 當前記錄開始的幾個記錄;REST: 自當前記錄開始至文件末尾的所有記錄;ALL 所有的記錄。不選范圍則隱含范圍為ALL)(3)字段名表指在結果中需要出現(xiàn)的字段名,字段名與字段名之間用逗號分隔。不帶時指顯示所有字段。(4)WHILE后跟條件,F(xiàn)OR后面也跟條件,區(qū)別是,WHILE后的條件如果滿足,便停止查找;FOR后的條件查找所有滿足條件的記錄。(5)TO PRINT和TO FILE 分別表示將顯示結果在打印機上打印出來和將顯示結果輸出到文件。(6)DISPLAY命令在顯示記錄滿屏后,要求用戶按任意鍵繼續(xù)顯示,并且在該命令中,如

6、果省略范圍僅顯示當前記錄。LIST不分屏,如果省略范圍顯示所有記錄。六.修改記錄內(nèi)容1 編輯或修改的特定記錄命令:CHANG|EDIT 范圍FIELDS字段表FOR 條件 WHILE 例子:修改第五條記錄CHANGE|EDIT RECORD 52成批自動替換記錄命令:REPLACE 范圍 字段 WITH 表達式 FOR 條件例子:計算各記錄“應發(fā)合計”字段的值。REPLACE ALL 應發(fā)合計 WITH 職務工資+崗位津貼+保留獎金+保留津貼七.刪除記錄1邏輯刪除命令:DELETE 范圍FOR 條件 (打刪除標記)2物理刪除命令:PACK (刪除有刪除標記的記錄)ZAP (刪除所有記錄)例子:

7、刪除“職工編號”空白的記錄。DELETE ALL FOR 職工編號=PACK八.數(shù)據(jù)表排序1物理排序,生成一個新的表文件。命令:SORT TO 新表名 ON 字段名 /A/D 范圍FOR 條件例子:把當前表中記錄按“應發(fā)合計”從大到小重新排序。SORT TO A:GZ3 ON 應發(fā)合計 /D2邏輯排序,生成一個索引文件。(一)標準索引文件:IDX命令:新建索引:INDEX ON 字段名表達式 TO 索引文件名同時打開:USE 表名 INDEX 索引文件名之后打開:SET INDEX TO 索引文件名重新索引:INDEX ON 字段名表達式 TO 索引文件名關閉索引:SET INDEX TO例子

8、:對當前數(shù)據(jù)表以“應發(fā)合計”從大到小排列。INDEX ON -應發(fā)合計 TO GZ(二)復合索引文件:CDX命令:新建索引:INDEX ON 字段名 TAG 標記 ASCEDING|DESCENDING同時打開:USE 表名 ORDER TAG 標記改變索引:SET ORDER TO TAG 標記重新索引:INDEX ON 字段名 TAG 標記關閉索引:SET ORDER TO刪除索引:DELETE TAG 標記例子:對當前數(shù)據(jù)表以“應發(fā)合計”從大到小排列。INDEX ON 應發(fā)合計 TAG HJ DESC九.查找記錄1順序查找命令:LOCATE FOR 條件 范圍繼續(xù)查找命令:CONTINU

9、E例子:在當前的表中查找姓“張”的記錄。LOCATE FOR 姓名=張2.索引查找說明:根據(jù)當前的索引來查找記錄。在使用命令前先要按準備查找的字段建立索引或排序命令:FIND 字符串SEEK 表達式用FOUND()檢查找到否例子:在當前的表中查找姓“張”的記錄。FIND 張SEEK 張3.查找函數(shù)說明: 在使用命令前先要按準備查找的字段建立索引或排序函數(shù):SEEK()例子:在當前的表中查找姓“張”的記錄。SEEK(張)十.統(tǒng)計數(shù)據(jù)表記錄個數(shù)命令:COUNT 范圍FOR 條件TO 變量例子:統(tǒng)計當前表中“應發(fā)合計”大于1000元的人數(shù)。COUNT FOR 應發(fā)合計1000十一.數(shù)據(jù)表數(shù)值字段的求

10、和命令:SUM 范圍FOR 條件TO 變量例子:統(tǒng)計當前表中“應發(fā)合計”字段的總和。SUM 應發(fā)合計十二.算術平均值的計算命令:AVERAGE 范圍FOR 條件TO 變量例子:統(tǒng)計當前表中“應發(fā)合計”字段的平均值。AVERAGE 應發(fā)合計十三.多功能計算命令:CALCULATE 表達式 范圍FOR 條件TO 變量例子:分別統(tǒng)計當前表中“應發(fā)合計”字段的人數(shù)、總和、平均值。CALCULATE CNT(應發(fā)合計),SUM(應發(fā)合計),AVG(應發(fā)合計)VFP命令、函數(shù)及程序語句大全(2)一.數(shù)值運算函數(shù)函數(shù)操作例結果 SQRT(x)求平方根 SQRT(9)3 INT(x)取整數(shù) INT(3.14)

11、3 ROUND(x)四舍五入 ROUND(3.14159,4)3.1416 MOD(x,y)求X除以Y的余數(shù) MOD(25,4)1 MAX(x,y)求X,Y中的最大值 MAX(7,8)8 MIN(x,y)求X,Y中的最小值 MIN(1,2,3)1二.字符中操作函數(shù)函數(shù)名操作例結果UPPER(S)小寫字母UPPER(abc)ABCLOWER(S)大寫字母LOWER(ACD)acdLEN(S)求字符串的長度LEN(中國1號)7AT(S1,S2)在字符串S2,找字符串S1AT(H,CHINA)2SUBSTR(S,I,N)在S字符串中的第I個字符起取N個字符SUBSTR(TECHNOLO,3,3)CH

12、NLEFT(S,N)從字符串S左邊取N個字符LEFT(“中國人”,4)中國RIGHT(S,N)從字符串S右邊取N個字符S=12345RIGHT(S,3)345SPACE(N)生成N個空格合計+SPACE(2)+123合計123TRIM(S)消除字符串尾部空格TRIM(姓名 )姓名ALLTRI(S)消除字符串中所有空格ALLTRIM(李 麗)李麗STUFF(S1,N1,N2,S2)用字符串S2替換S1中第N1個字符起的N2個字符STUFF(NOW,2,1,E)NEW&宏替換P=“G2”USE &PUSEG2三.日期和時間函數(shù)函數(shù)名操作例結果DATE()求當前日期DATE()2001/11/12D

13、ATETIME()求當前日期和時間DATETIME()2001/11/12/0:22:33amYEAR(D)求年份YEAR(DATE()2001MONTH(D)求月份(數(shù)值)MONTH(DATETIME()11CMONTH(D)求月份(字符)MONTH(DATETIME()NovenberDAY(D)求日期DAY(DATE()12DOW(D)求星期幾(數(shù)值)DOW(DATE()1CDOW(D)求星期幾(英文)CDOW(DATE()sundayTIME(D)求當前時間TIME(DATE()10:20:38am四.數(shù)據(jù)類型轉(zhuǎn)換函數(shù)函數(shù)名操作例結果ASC(S)求第一個字符串的ASCII碼ASC(wh

14、at)87CHR(N)求ASCII碼的字符CHR(87)wSTR(R,L,D)數(shù)值轉(zhuǎn)換成字符,L為長度,D為小數(shù)位數(shù)X=3.1415STR(X,6,2)3.14VAL(S)字符串轉(zhuǎn)換為數(shù)值VAL(123)123.00CTOD(S)字符串轉(zhuǎn)日期CTOD(11/01/2002)11/01/2002DTOC(D)日期轉(zhuǎn)換成字符串DTOC(DATE()11/01/2002DTOS(D)把日期轉(zhuǎn)成年月日式的字符串DTOS(DATE()20021101CTOT(C)字符串轉(zhuǎn)成日期時間型CTOT(11/01/2002 10:30:50am)11/01/2002 10:30:50amDTOT(D)日期型轉(zhuǎn)為日

15、期時間型DTOT(DATE()11/25/2001 00:00:01amTTOC(T)日期時間型轉(zhuǎn)為字符型TTOC(DATETIME()11/25/2001 00:00:01amTTOD(T)日期時間型轉(zhuǎn)為日期型TTOD(DATETIME()11/25/2001IIF(LE,E1,E2)邏輯判斷IIF(A0,YES,NO)YES五.檢測函數(shù)函數(shù)名操作例結果RECNO()檢測當前記錄號RECNO()1RECCOUNT()檢測當前記錄數(shù)RECCOUNT()12BOF()開始記錄BOF()1EOF()最后記錄EOF()12FOUND()返回查找結果FOUND().T.ROW()返回當前行坐標ROW(

16、)1COL()返回當前列坐標COL()1SYS(N)返回系統(tǒng)狀態(tài)SYS(13)聯(lián)機狀態(tài)VFP命令、函數(shù)及程序語句大全(3)VFP提供一些簡單的程序設計語言命令, 包括賦值語句、控制語句、設置命令等,我們可根據(jù)某種功能的需要,利用這些命令及數(shù)據(jù)庫操作的有關命令構成語句,分行存在文件中(稱為命令文件,以 PRG為擴展名,在項目管理器中標為“程序”) 或一些對象的過程或事件處理程序中。 如被調(diào)用,系統(tǒng)將一條條順序執(zhí)行各行命令,如遇到控制語句(IF,DO,CALL,F(xiàn)OR等),依據(jù)控制語句的指定,轉(zhuǎn)移到指定語句再一條條順序執(zhí)行。這些命令書寫時, 每條語句應在一行中寫完, 如不能寫完,可用分號“;”結束

17、,表示下一行繼續(xù)。兩條語句不能寫在一行上。每條語句中命令字及選項中保留字大多數(shù)可只書寫前四個字符。一般一個簡單的VFP應用系統(tǒng)由若干模塊組成, 各自完成一定的功能,總的系統(tǒng)用一個總控模塊去控制,通過它調(diào)用子模塊,層層調(diào)用以實現(xiàn)全系統(tǒng)的功能。這種結構如圖54所示。這種方式便于設計、調(diào)試,保證程序的正確性,也容易實現(xiàn)模塊共亭,實現(xiàn)軟件重用,提高程序設計效率。主模塊可由主封面表單、主命令文件和主菜單文件構成;各個模塊可由過程、自定義函數(shù)、表單、表單集、應用程序或子菜單等構成。一個表單或一個表單集中可有一到多個用戶界面,可設置一到多個命令按鈕及其他程序控件,用戶可利用按鈕及程序控件,產(chǎn)生特定的消息觸發(fā)

18、執(zhí)行一個程序,完成一個功能。應用程序是對一個模塊編譯后的 APP執(zhí)行文件,“過程”是由命令組成的程序,以RETURN語句結束,它可為另一個程序所調(diào)用,調(diào)用執(zhí)行時遇到RETURN語句將返回其調(diào)用程序。圖54 VFP程序總體結構一.變量賦值與顯示語句在項目管理器中選“代碼程序新建”或在命令框利用命令MODIFYCOMMAND建立命令文件。1MODIFY COMMAND意義:創(chuàng)建命令文件。命令格式:MODIFY COMMAND 文件名例如:MODIFY COMMAND PROC1執(zhí)行此命令后,將進入全屏幕編輯狀態(tài)。 如原已建立了該文件proc1,將調(diào)出該文件在屏幕上顯示,用戶可對之修改。如是新文件,

19、則用戶可利用全屏幕編輯鍵,輸入自己的程序。新文件將自動加上擴展名PRG。2DO意義:執(zhí)行命令文件程序,有三種方法:在項目管理器中選“代碼程序選擇程序名運行”。在主菜單中選“程序運行輸入(選擇)程序名運行”。在程序中或命令窗日中使用DO命令。命令格式:DO 程序名WITH 表達式表程序名可以是上述方式建立的命令文件(.PRG文件)、可執(zhí)行文件(.EXE文件)、應用程序(.APP文件),及對.PRG文件編譯后的文件(.FXP文件)。如調(diào)用DO命令時不帶擴展名,則按.EXE文件、.APP文件、.FXP文件、.PRG文件的順序查找同名程序并執(zhí)行之。例如:DO PROC1此外,程序名還可能是菜單程序,調(diào)

20、用時必須帶擴展名(.MPR)。例如,有菜單程序MAIN.MPR,則可如下調(diào)出執(zhí)行:DO MAIN.MPR程序名還可以是事件名或過程名。其中表達式表由多個表達式組成,用逗號分開,在執(zhí)行時首先計算各表達式的值,并帶入被調(diào)程序,被調(diào)程序第一句應是LPARAMETERS形參表語句,形參表是以逗號分隔的多個內(nèi)存變量名,其個數(shù)應等于調(diào)用時的表達式的個數(shù),執(zhí)行時,首先用調(diào)用語句中各表達式的值對應給它們賦值。例如:主程序中:DO PROC1 WITH “AB”,21被調(diào)程序:LPARAMETERS M1,X0執(zhí)行時,首先完成賦值:M1=“AB”;X0=21,再往下執(zhí)行。當使用DO運行一個程序時,包含在其中的命

21、令一直執(zhí)行,直到下列某一事件發(fā)生。遇到RETURN語句,返回到調(diào)用程序DO命令的下一句,遇到了CANCEL命令,返回VFP命令狀態(tài)。遇到QUIT命令退出程序并退出VFP;到達文件尾回到調(diào)用前狀態(tài);再遇到另一個DO命令,將轉(zhuǎn)人新程序執(zhí)行。3PUBLIC意義:設置全局性內(nèi)存變量命令。格式:PUBLIC 變量名1,變量名2在不同程序或過程或事件中,同名內(nèi)存變量的值不一定相同,如要將一個程序(過程、事件)中變量的值傳到另一程序(過程、事件)中,可應用上述命令將它定義成全局變量。4PRIVATE意義:設置局部變量的命令。格式:PRIVATEALLLIKEEXCEPT 通配符內(nèi)存變量表其中選項意義:ALL

22、將所有內(nèi)存變量說明為局部性變量,ALLLIKEEXCEPT 通配符將變量名能與通配符相匹配的內(nèi)存變量說明為局部性變量?!癆LL EXCEPT通配符”將除了能與通配符相匹配的變量名之外的內(nèi)存變量說明為局部性變量。在程序中,為了一個程序的運行結果不影響另一個程序的執(zhí)行,不希望同名變量將值從一個程序帶到另一個程序而造成干擾。為此,可將該變量定義成局部性變量。5DIMENSION意義:定義內(nèi)存變量數(shù)組命令,VFP中可定義一維或二維數(shù)組。格式:DIMENSION 數(shù)組名(數(shù)字表達式1,數(shù)字表達式2),數(shù)組名2(數(shù)字表達式1,數(shù)字表達式2)每個數(shù)組的每個元素都可單獨使用,如同一個內(nèi)存變量,稱為下標變量,下

23、標起始值為1。例如,DIMENSION ARRAY1(8,20),X1(30)定義了兩個數(shù)組,數(shù)組名分別為ARRAY1和X1,前一個數(shù)組共有208160個元素:ARRAY1(l,l)、ARRAY1(l,2) ARRAY1(l,20),ARRAY1(2,1)ARRAY1(8,20)。對各元素也可用單下標取用其值,如用ARRAY1(l),ARRAY1(2)ARRAY1(160)也可訪問該數(shù)組各元素,與前面雙下標表示形式一一對應。6PUBLIC ARRAY意義:定義全局性內(nèi)存變量數(shù)組。格式:PUBLIC ARRAY 數(shù)組名(數(shù)字表達式1,數(shù)字表達式2),數(shù)組名2(數(shù)字表達式1,數(shù)字表達式2)7=意義

24、:賦值語句。將表達式的值賦值給一個內(nèi)存變量。對變量賦值后,該變量類型也即確定為表達式返回值的類型。對一個變量可重復賦值,也可改變變量的類型。但為了保證程序的清晰和結構完整,建議在一個系統(tǒng)中每個變量名應有確定的意義和數(shù)據(jù)類型。8STORE意義:同時對多個變量賦值命令。格式:STORE 表達式 TO變量1,變量2在程序運行時常要求用戶輸入控制參數(shù)或數(shù)據(jù),實現(xiàn)此功能語句我們稱為人機對話語句。在程序中如插入人機對話語句,用戶可借助鍵盤輸入?yún)?shù)或控制量賦值給變量。控制程序走向,或用于不同數(shù)據(jù)處理。在程序執(zhí)行到這類語句時,將停止運行,在屏幕上顯示命令中附注的提示信息,同時等待用戶從鍵盤輸入數(shù)據(jù),賦給所指定

25、的變量。完成賦值之后再接著運行下一條語句。在VFP中這類語句可在主控程序中或在調(diào)試程序時使用,在表單程序中使用文本框等各種控件及消息框代替它們。9INPUT意義:輸入各種類型數(shù)據(jù)賦給內(nèi)存變量格式:INPUT “提示信息” TO 內(nèi)存變量名本命令允許輸入字符類型、數(shù)值類型、日期類型、邏輯類型等不同類型的數(shù)據(jù),要求輸入數(shù)據(jù)是字符類型時,數(shù)據(jù)兩端要加定界符,例“張平”;輸入數(shù)據(jù)是日期類型時,要按MM/DD/YY或設定的格式,例12/21/00;邏輯類型按.T.、.F.格式。用戶輸入還可以是包括變量名及函數(shù)在內(nèi)的表達式,但變量必須是己賦值的,表達式是可以計算出確定值的。用戶輸入完后回車表示輸入結束。例

26、:INPUT“請輸入初始日期:” TO D1屏幕上顯示:“請輸入初始日期:”,光標在此句之后。用戶可輸入05/10/96。此時用戶如果執(zhí)行命令:?D1屏幕上將顯示:05/10/9610ACCEPT意義:輸入字符串賦給變量。格式:ACCEPT“提示內(nèi)容”TO內(nèi)存變量名該命令和INPUT命令區(qū)別有兩點:輸入數(shù)據(jù)均被視為字符類型。輸入數(shù)據(jù)兩端不需加定界符,如加了定界符,定界符被視作字符串的一部分。11WAIT意義:接收單個字符賦給變量,或中斷程序,按任意鍵后繼續(xù)。格式:WAIT “提示信息” TO 內(nèi)存變量名該命令與ACCEPT命令不同點在于只接收從鍵盤輸入的一個字符,用戶輸入一個字符后無須回車。該

27、命令也可用在VFP表單程序的某個事件中, 用于中斷該事件的執(zhí)行,讓屏幕顯示程序運行的中間結果,按某個鍵或單擊鼠標后再繼續(xù)執(zhí)行。12GET意義:格式化輸入數(shù)據(jù),給內(nèi)存變量賦值或修改表中當前記錄字段內(nèi)容。格式: 行號,列號 GET 內(nèi)存變量名或字段名FUNCTION功能代碼PICTURE格式代碼DEFAULT表達式MESSAGE提示信息RANGE輸入值范圍下限,輸入值范圍上限SIZE文本框高度,文本框?qū)挾萔ALID 條件表達式該命令可用于對內(nèi)存變量賦值,也可用于修改當前打開表中當前記錄中指定字段的內(nèi)容。如對內(nèi)存變量賦值且省略DEFAULT選項,在使用此語句時,必須已對該內(nèi)存變量賦值。否則按此選項中

28、表達式對內(nèi)存變量初始化。本命令執(zhí)行后只顯示內(nèi)存變量或字段當前值,要到執(zhí)行命令“READ”時,此語句方被激活,程序停止執(zhí)行,等待用戶從鍵盤輸入數(shù)據(jù),直待回車后才繼續(xù)執(zhí)行。行號、列號為當前窗口中字符行和列的位置號。行號與列號允許是小數(shù)。FUNCTION選項用于對輸入內(nèi)容限制或變化。功能代碼:A:只允許輸入內(nèi)容由字母字符組成,包括不允許空格和標點符號。B:數(shù)值數(shù)據(jù)左對齊,默認格式為右對齊。I:文本居中對齊。J:文本右對齊,默認為左對齊。Sn:限定文本框中字符個數(shù)為n。如S20。T:去掉前導和后綴空格。Z:當數(shù)值數(shù)據(jù)值為0時顯示空格。?。喊炎帜缸址D(zhuǎn)換為大寫。PICTURE選項用于限定輸入數(shù)據(jù)的字符類

29、型及大小。功能代碼例:A:該位為字母或數(shù)字L:只允許邏輯數(shù)據(jù)。N:該位為字符或數(shù)字。X:任何字符。I:該位為數(shù)字,或數(shù)值數(shù)據(jù)中的符號。-:標明小數(shù)點位置。,:用逗號分隔左右數(shù)字。!:將小寫字母轉(zhuǎn)換為大寫字符。例:3,10 GET x1 DEFAULT 0 PICTURE“999999”此時在屏幕第3行的第10列位置顯示方框,其中內(nèi)容為DEFAULT規(guī)定的初始值000,如再發(fā)出命令:READ, 將光標落在尚未激活的第一個方框上等待輸入,只能輸入數(shù)字和符號,且整數(shù)部分不多于4位,小數(shù)部分不多于2位,否則將提示“請您重新輸入”。RANGE、VALID兩個選項用于保證數(shù)據(jù)完整性,輸入數(shù)據(jù)必須在預定范圍

30、內(nèi),滿足條件表達式要求時,才可完成賦值操作。本語句還有設置字體、字形和顏色的選項。在VFP中, 綜合上述人機交互命令尤其是 GET命令的功能和特性,設計了文本框、編輯框等類和控件,便之應用更加方便、簡單,我們將在下一章中介紹。程序運行結果一般由輸出語句使其顯示在屏幕上或輸出到其他地方,輸出語句可將數(shù)據(jù)輸出到屏幕上顯示也可傳送給打印機或傳送存入到其他文件中。屏幕顯示語句在VFP中一般用在主控程序或調(diào)試程序時使用。在表單程序中使用各種控件、消息框代替它們。13?|?意義:計算表達式表所指定的各表達式的值,并顯示在屏幕上。格式:?表達式1,表達式2用?時,從下一行第一列起顯示結果。用?時,從當前行當

31、前列起顯示結果。14SAY意義:格式化輸出語句。格式:行號,列號 SAY表達式FUNCTION功能代碼 PICTURE格式代碼SIZE高度,寬度有關選項的意義與GET命令相似,此外還有關于字體,顏色設置的選項。若發(fā)出有SET DEVICE TO PRINTER命令,輸出到打印機,否則輸出至屏幕上顯示。本語句常與 GET語句合用,合用時,行號、列號指SAY內(nèi)容顯示所在行、列號,GET變量內(nèi)容框?qū)⒎胖迷赟AY內(nèi)容之后。二.程序控制命令1IFENDIF命令意義:分支條件語句,根據(jù)邏輯表達式的值,有選擇的執(zhí)行一組命令。根據(jù)條件表達式的值是.T.還是.F.控制程序流向。格式:IF 條件表達式語句序列1E

32、LSE語句序列2ENDIFIF條件表達式語句是條件語句的開始, ENDIF語句是條件語句的終止。語句序列是若干條順序執(zhí)行的語句。執(zhí)行時首先計算條件表達式的值,如結果為“真”(.T.)則執(zhí)行語句序列l(wèi),執(zhí)行完后退出該語句。如條件表達式不滿足,且有ELSE語句和語句序列2,則執(zhí)行語句序列2。其程序流程圖如圖55所示。圖55 分支結構程序流程圖圖5.6 主控模塊程序流程圖在一個分支控制語句塊中可以嵌套另一個IFENDIF語句塊。【例5.7】主控模塊的程序程序流程圖如圖5.6所示。編寫程序清單如下:CLEAR &清屏幕 5,27 SAY “設備管理系統(tǒng)” 7,36 SAY “主菜單”10,21 PRO

33、MPT “1.各種查詢、屏幕修改”+SPAC(16)11,21 PROMPT “2.數(shù)據(jù)編輯”+SPAC(26)12,21 PROMPT “3.資產(chǎn)統(tǒng)計”+SPAC(26)13,21 PROMPT “4.報表打印”+SPAC(26)14,21 PROMPT “5.系統(tǒng)維護”+SPAC(26)MENU TO m_choic &等待用戶輸入IF LASTKEY()=27 &按Esc鍵返回VFPRETURNENDIFIF m_choic=1DO sbcx_sc.sprELSEIF m_choic=2DO sjbj_sc.sprELSEIF m_choic=3DO zctj_sc.sprELSEIF

34、m_choic=4DO bbdy_sc.sprELSEIF m_choic=5DO xtwh_pgENDIFENDIFENDIFENDIFENDIFRETURN2CASE意義:分情況語句,當求解一個問題存在多種情況,如要求對不同選擇執(zhí)行不同的語句序列,可采用分情況語句。該語句一句中列出許多語句成分,每個語句成分給出一個條件表達式,每次只根據(jù)具體條件找出第一個條件表達式值為.T.的語句成分,執(zhí)行該成分語句中的語句序列后退出該語句。命令格式:DO CASECASE條件表達式1語句序列1CASE條件表達式2語句序列2CASE條件表達式n語句序列nOTHERWISE語句序列n+1END CASE執(zhí)行該

35、語句時,系統(tǒng)逐一計算條件表達式1的值,條件表達式2的值只要有一個條件表達式的值為.T.則執(zhí)行其后語句序列, 執(zhí)行它后退出本分情況語句。如到條件表達式n的值仍均為.F.又有OTHERWISE成分, 則執(zhí)行語句序列n+l,其程序流程圖如圖57所示。仍如上面主控程序的例子,程序可設計為:CLEAR &清屏幕 5,27 SAY “設備管理系統(tǒng)” 7,36 SAY “主菜單”10,21 PROMPT “1.各種查詢、屏幕修改”+SPAC(16)11,21 PROMPT “2.數(shù)據(jù)編輯”+SPAC(26)12,21 PROMPT “3.資產(chǎn)統(tǒng)計”+SPAC(26)13,21 PROMPT “4.明細報表打

36、印”+SPAC(22)14,21 PROMPT “5.系統(tǒng)維護”+SPAC(26)MENU TO m_choic &等待用戶輸入IF LASTKEY()=27 &按Esc鍵返回VFPRETURNENDIFDO CASECASE m_choic=1DO sbcx_sc.sprCASE m_choic=2DO sjbj_sc.sprCASE m_choic=3DO zctj_sc.sprCASE m_choic=4DO bbdy_sc.sprCASE m_choic=5DO xtwh_pgENDCASERETURN圖57 CASE結構程序流程圖從上面兩段程序可見,對于同一個問題,用DO CASE

37、ENDCASE 語句比IFENDIF語句要簡潔了并且邏輯關系清晰,因此不容易出錯。在分情況語句中也可嵌入分支條件語句及分情況。它本身也可嵌入到分支條件語句中去使用。在對數(shù)據(jù)表中數(shù)據(jù)時,常常每條記錄被處理的過程是一樣的,處理語句也就大體相同,如果表中有多少記錄就寫多少條語句是十分困難的,為避免重復書寫,可使用循環(huán)。3DO WHILEENDDO意義:循環(huán)語句,可使多次重復執(zhí)行同一組語句。格式:DO WHILE條件表達式語句序列LOOPEXITENDDO其中“DO WHILE條件表達式”語句稱為循環(huán)起始語句,“ENDDO”語句稱為循環(huán)結束語句,進入此命令時首先檢查條件表達式的值是否為真(.T.)。如

38、果是真,則執(zhí)行語句序列,然后再判斷條件表達式的結果,如仍為真,則繼續(xù)下去。如果為假(.F.)則退出循環(huán),執(zhí)行ENDDO后面的語句。如果進入本命令一開始,條件表達式的值為假,則語句序列一次也不執(zhí)行,就直接轉(zhuǎn)入執(zhí)行ENDDO后面的語句。其中LOOP意義為結束本次循環(huán),返回循環(huán)體開始。EXIT意義為結束循環(huán),轉(zhuǎn)入執(zhí)行ENDDO后面的語句。LOOP語句和EXIT語句一般用在分支條件語句中,因而語句格式為:DO WHILE 條件表達式1語句序列1IF條件表達式2LOOPELSE語句序列2ENDIFIF條件表達式3EXITELSE語句序列3ENDIFENDDO其程序流程圖如圖58所示。在使用時必須保證經(jīng)有

39、限次循環(huán)后條件表達式1應變?yōu)榧倩驐l件表達式3的值應變?yōu)檎妫雇顺鲅h(huán)。否則就可能成為死循環(huán)。在條件表達式中的變量稱循環(huán)變量, 在數(shù)據(jù)庫中循環(huán)變量可能是內(nèi)存變量,也可能是表中的指針。必須注意在每次循環(huán)過后,循環(huán)變量的值都要改變并且是向最終使條件表達式1的值為假或條件表達式3的值變真的方向變化,否則就無法滿足前述退出條件。在VFP中有兩類特殊用法。(1)循環(huán)變量是指針。 該用法中有兩種結構指針首先指向第一條的DO WHILE結構如圖59所示。指向滿足條件記錄的第一條的DO WHILE結構如圖510所示。圖58 DO WHILEENDDO結構程序流程圖圖59 指針做循環(huán)變量開始指向第一條時的DO W

40、HILE結構流程圖圖510 指針做循環(huán)變量開始指向滿足條件記錄的第一條時的DO WHILE結構流程圖格式1:圖59實現(xiàn)的語句。USE(表名)SELECT工作區(qū)別名GO TOPDO WHILE NOT EOF()語句序列SKIPENDDO在本格式中,循環(huán)變量是表中指針,首先讓指針指向表的第一條記錄,如果不是文件尾,則執(zhí)行語句序列之后讓指針下移一條,再返回判斷指針是否指向文件尾。這樣一直繼續(xù)下去直到指針指到最后一條記錄的后面,循環(huán)結束?!纠?8】在學生表中有少數(shù)學生更換了班級,現(xiàn)要求在屏幕上一屏一屏地顯示每個學生的數(shù)據(jù),并提問是否修改班級名稱, 如回答“Y”,則提供修改框。SET TALK OFF

41、USE學生KEY“Y”GO TOPDO WHILE NOT EOF()3,10 SAY“姓名:”姓名5,10 SAY“班級:”班級7,10 SAY“出生日期:”DTOC(出生日期)9,10 SAY“是否修改,YN?GET KEYREADIF UPPER(KEY)=“Y”11,10 SAY“請輸入改后班級名稱” GET 班級READENDIFSKIPENDDOUSESET TALK ON格式2:如果只按某個條件查看記錄,則可用查找語句開始。圖510實現(xiàn)語句:LOCATE FOR條件表達式DO WHILE NOT EOF()語句序列CONTINUEENDDO例58中如只查99級學生,顯示其姓名則:

42、LOCATE FOR “99”班級DO WHILE NOT EOF()?姓名CONTINUEENDDO(2)當于DO UNTIL的循環(huán)結構。有些循環(huán)要在執(zhí)行部分語句之后再根據(jù)一個條件表達式判斷是否結束,此時循環(huán)條件可用常量.T.,見圖511所示。圖511 DO UNTIL結構程序流程圖語句格式:DO WHILE .T.語句序列IF 條件表達式EXITENDIFENDDO【例59】求編寫學生表錄入新數(shù)據(jù)的程序,每次錄入一條記錄,之后提問是否繼續(xù),如回答不是“Y”,就停止錄入。SET TALK OFFUSE 學生KEY“ ”DO WHILE .T.APPEND BLANK3,10 SAY“姓名:”

43、 GET 姓名5,10 SAY“班級:” GET 班級7,10 SAY“出生日期:”GET 出生日期READ9,10 SAY“否繼續(xù)?YN?” GET KEYREADIF UPPER(KEY)“Y”EXITENDIFENDDOUSESET TALK ON此語句由用戶輸入Y或N控制程序結束。上述第一、二兩種格式可以用等價的SCAN循環(huán)取代。4SCANENDSCAN循環(huán)語句意義:在數(shù)據(jù)表中循環(huán)檢查或處理一條條記錄。命令格式一:SCAN語句序列ENDSCAN此句等價于前述格式1的語句。命令格式二:SCAN FOR條件表達式語句序列ENDSCAN本語序等價于前述格式2的語句。有一些循環(huán)次數(shù)是一定的,或

44、者循環(huán)變量的值在每次循環(huán)中增加的量是相同的,則可應用FOR循環(huán)。5FORENDFOR循環(huán)語句命令格式:FOR內(nèi)存變量=初始值 TO 終了值STEP 增量語句序列ENDFOR此循環(huán)以某個內(nèi)存變量為循環(huán)變量,進入循環(huán)時首先給它賦初始數(shù)值,只要不超過終了值,則執(zhí)行語句序列。STEP語句為可選項,指示在每次循環(huán)后循環(huán)變量的增加量。 前面執(zhí)行語句序列之后,將循環(huán)變量值增加增量的值,再判斷是否超過終了值,這樣繼續(xù)下去直到超過終了值。增量可為正值也可為負值,省略時默認值是1。如增量為正,則當循環(huán)變量大于終了值時,循環(huán)結柬。如增量為負,則每循環(huán)一次,循環(huán)變量均減小,減少到小于終了值時循環(huán)結束。例58中修改班級

45、名的程序也可寫為:SET TALK OFFUSE 學生KEY“ ”NRECCOUNT()記錄總條數(shù)FOR I=1 TO N3,10 SAY“姓名:”十姓名5,10 SAY“班級:”十班級7,10 SAY“出生日期:”DTOC(出生日期)9、10 SAY“是否修改班級名,YN?” GET KEYREADIF UPPER(KEY)=“Y”11,10 SAY“請輸入改后班級名稱” GET 班級READENDIFENDFORUSESET TALK ON使用相對指針,如果打開索引,或某些錄入、修改、查詢操作使當前指針位置改變都可能引起錯誤。不如本例中采用物理地址,比較可靠?!纠?10】要求輸入N個學生的

46、總分X, 按總分分成優(yōu)、良、及格、不及格四個等級,統(tǒng)計每個等級的人數(shù)。等級劃分標準為:90100分為優(yōu),7589分為良,60-74分為及格,59分及以下為不及格。SET TALK OFFDIMENSION M(4)定義數(shù)組STORE 0 TO MM所有元素初值設為0x0INPUT“學生人數(shù) N?” TO N計數(shù)循環(huán)FOR I=1 TO N?“請輸入第”,I,“人的成績”ROW(),20 SAY “X?” GET XREADDO CASECASE x=90M(l)=M(1)+1統(tǒng)計優(yōu)秀生人數(shù)CASE x=75M(2)=M(2)+1CASE x=60M(3)=M(3)+lCASE x=0M(4)=M(4)+1OTHERWISE?“輸入數(shù)據(jù)有錯,請重輸”II-1ENDCASEENDFOR?“優(yōu)、良、及格、不及格人數(shù)各為”,M(1),M

溫馨提示

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

評論

0/150

提交評論