VFP常用命令詳解_第1頁
VFP常用命令詳解_第2頁
VFP常用命令詳解_第3頁
VFP常用命令詳解_第4頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

VFP常用命令詳解VFP命令、函數(shù)及程序語句大全(1)VFP命令是ー種實(shí)現(xiàn)對(duì)數(shù)據(jù)庫系統(tǒng)進(jìn)行操作的動(dòng)詞或短語。VFP命令可在VFP命令窗口中單獨(dú)運(yùn)行,也可編制成程序成批運(yùn)行,由命令和函數(shù)編制的程序可對(duì)數(shù)據(jù)庫系統(tǒng)進(jìn)行自動(dòng)、復(fù)雜的操作,使數(shù)據(jù)庫系統(tǒng)應(yī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,INSERT等數(shù)據(jù)顯示類BROWSE,LIST,DISPLAY等數(shù)據(jù)統(tǒng)計(jì)類SUM,COUNT,AVERAGE,TOTAL等存變量操作類ACCEPT,INPUT,READ,SAVE等程序控制類DO,DOWHILE-ENDDO,IF-ENDIF等系統(tǒng)設(shè)置類SETTALK,SETDEFAULTTO等□命令格式VFP命令一般由命令動(dòng)詞和控制短語構(gòu)成。一般格式:命令動(dòng)詞[FROMく源文件〉][TOく目標(biāo)文件>][記錄范圍][FOR/WHILEく條件》][FIELDSく字段名表〉][]表示可選,く〉表示必選,/表示或選例如:APPENDFROMC:\RSDA.DBFFOR基本工資>100FIELDS編號(hào),姓名,職稱,基本工資。從C:\RSDA.DBF表中把基本工資大于100元的記錄添加到當(dāng)前表添加字段為:編號(hào),姓名,職稱,基本工資。COUNTFOR職稱="高工"TOGG統(tǒng)計(jì)高工的記錄數(shù)到內(nèi)存變量GG??刂贫陶Z規(guī)定了對(duì)數(shù)據(jù)庫操作的限制條件:.指向輸入輸出目標(biāo)FROM/TOAPPENDFROM,COPYFILETOく目標(biāo)文件〉.限制記錄范圍(SCOPE)ALL所有記錄NEXT<n>本記錄后的第幾個(gè)記錄RECORD<1>第1個(gè)記錄REST當(dāng)前記錄之后所有記錄.選擇字段FIELDSく字段表>選擇輸入/輸出的字段。.限制條件FOR/WHILEく條件》FOR基本工資>100.AND.基本工資く200□命令格式規(guī)則命令的行為單位,?行書寫不完,在未尾加上“;”第二行接著寫。必須以命令動(dòng)詞開頭,動(dòng)詞后的短語順序不限。命令中大小寫字母等效。命令動(dòng)詞和關(guān)鍵字可以只寫前4個(gè)字符。不得用命令動(dòng)詞或關(guān)鍵字作為自定義變量、函數(shù)、程序名。一.表結(jié)構(gòu)的操作.創(chuàng)建表結(jié)構(gòu)命令1:CREATE[路徑][表名]例子:在A盤創(chuàng)建GZ2數(shù)據(jù)表。CREATEA:GZ2命令2:CREATE[新表名]FROM[舊表名]例子:在A盤由GZ!倉リ建GZ3數(shù)據(jù)表。CREATEA:GZ3FROMA:GZ1命令3:COPYSTRUCTRUETO潞徑][表名]例子:在D盤生成一個(gè)與正在使用的表結(jié)構(gòu)相同的新表文件MYCOPYSTRUCTRUETOD:\MY.表結(jié)構(gòu)的顯示命令:USTSTRUCTUREDISPLAYSTRUCTURE例子:顯示當(dāng)前數(shù)據(jù)表在結(jié)構(gòu)。□STSTRUCTURE.表結(jié)構(gòu)的修改命令:MODIFYSTRUCTURE作用:顯示表文件結(jié)構(gòu),并允許修改此表的結(jié)構(gòu)說明:只有在用USE命令打開表文件以后,才能顯示或修改表文件的結(jié)構(gòu)。例子:修改當(dāng)前數(shù)據(jù)表的結(jié)構(gòu)。MODIFYSTRUCTURE.表文件的打開和關(guān)閉.打開命令:USE表名[INDEX索引文件名][EXCLUSIVE]例子:打開A盤GZ1數(shù)據(jù)表。USEA:\GZ1例子:以獨(dú)占方式打開當(dāng)前表文件XXUSEXXEXCLUSIVE.關(guān)閉命令:USE例子:關(guān)閉當(dāng)前打開的表。USE.記錄指針的定位.絕對(duì)定位命令:GO[TO]n|TOP|BOTTOM說明:n定位到第n條記錄,TOP定位到最上面一條記錄,BOTTOM定位到最下端一條記錄.相對(duì)定位命令:SKIP[+|-]n說明:它以當(dāng)前記錄為基準(zhǔn)前移(-)或后移(+)n個(gè)記錄,不選任選項(xiàng),則默認(rèn)記錄指針后移一條記錄..表數(shù)據(jù)的添加.記錄的追加命令:APPEND[BLANK]例子:向當(dāng)前數(shù)據(jù)表尾部追加記錄。APPEND例子:向當(dāng)前數(shù)據(jù)表尾部追加一條空記錄。APPENDBLANK.記錄的插入命令:INSERT[BLANK][BEFORE]例子:在當(dāng)前記錄后插入一條空記錄。INSERTBLANK例子:在第3條記錄前插入一條記錄.GO3INSERTBEFORE.用復(fù)制方法建新表記錄命令:COPYTO新表名[范圍][FIELDS字段表][FOR條件]例子:把當(dāng)前表中"應(yīng)發(fā)合計(jì)”大于1000元的記錄復(fù)制到新數(shù)據(jù)表GZ2中。COPYTOA:GZ2FOR應(yīng)發(fā)的>1000.從其他表取數(shù)據(jù)命令:APPENDFROM表名[FOR條件]例子:把GZ1表中“應(yīng)發(fā)合計(jì)”大于1000的記錄復(fù)制到當(dāng)前的表后面。APPENDFROMGZ1FOR應(yīng)發(fā)合計(jì)>1000.表記錄的顯示.瀏覽顯示命令:BROWSE[FIELDS字段表][FOR條件]例子:顯示當(dāng)前表中"應(yīng)發(fā)合計(jì)"大于io。。元的記錄的職エ編號(hào)、姓名、應(yīng)發(fā)合計(jì)三個(gè)字段。BROWSEFIELDS職エ編號(hào),姓名,應(yīng)發(fā)合計(jì)FOR應(yīng)發(fā)合計(jì)>1000說明:此命令的結(jié)果以瀏覽窗口的形式出現(xiàn),具有修改功能.2?顯示輸出命令:LIST|DISPLAY[OFF][<范圍>][FIELDS]く表達(dá)式表〉[WHILE〈條件>][FOR(條件〉][TOPRINT|TOFILEく文件〉]說明:(1)命令帶OFF參數(shù)表示不顯示記錄號(hào)(2)范圍指定對(duì)哪些記錄進(jìn)行操作,(范圍包括:RECORDn:第幾號(hào)記錄;NEXTn:當(dāng)前記錄開始的幾個(gè)記錄;REST:自當(dāng)前記錄開始至文件末尾的所有記錄;ALL所有的記錄。不選范圍則隱含范圍為ALL)(3)字段名表指在結(jié)果中需要出現(xiàn)的字段名,字段名與字段名之間用逗號(hào)分隔。不帶時(shí)指顯示所有字段。(4)WHILE后跟條件,FOR后面也跟條件,區(qū)別是,WHILE后的條件如果滿足,便停止査找;FOR后的條件查找所有滿足條件的記錄.(5)T0PRINT和TOFILEく文件〉分別表示將顯示結(jié)果在打印機(jī)上打印出來和將顯示結(jié)果輸出到文件。(6)DISPLAY命令在顯示記錄滿屏后,要求用戶按任意鍵繼續(xù)顯示,并且在該命令中,如果省略范圍僅顯示當(dāng)前記錄。LIST不分屏,如果省略范圍顯示所有記錄。.修改記錄內(nèi)容.編輯或修改的特定記錄命令:CHANG|EDIT[范圍田FIELDS]字段表][FOR條件][WHILE(條件〉]例子:修改第五條記錄CHANGE|EDITRECORD5.成批自動(dòng)替換記錄命令:REPLACE虛圍]字段WITH表達(dá)式[FOR條件]例子:計(jì)算各記錄"應(yīng)發(fā)合計(jì)”字段的值。REPLACEALL應(yīng)發(fā)合計(jì)WITH職務(wù)エ資+崗位津貼+保留獎(jiǎng)金+保留津貼.刪除記錄.邏輯刪除命令:DELETE[范圍][FOR條件](打刪除標(biāo)記).物理刪除命令:PACK(刪除有刪除標(biāo)記的記錄)ZAP(刪除所有記錄)例子:刪除“職エ編號(hào)"空白的記錄。DELETEALLFOR職エ編號(hào)=""PACKハ.數(shù)據(jù)表排序.物理排序,生成一個(gè)新的表文件。命令:SORTTO新表名ON字段名[/A][/D][范圍[[FOR條件]例子:把當(dāng)前表中記錄按"應(yīng)發(fā)合計(jì)"從大到小重新排序。SORTTOA:GZ3ON應(yīng)發(fā)酎/D.邏輯排序,生成一個(gè)索引文件。(-)標(biāo)準(zhǔn)索引文件:IDX命令:新建索引:INDEXON字段名表達(dá)式TO索引文件名同時(shí)打開:USE表名!NDEX索引文件名之后打開:SETINDEXTO索引文件名重新索引:INDEXON字段名表達(dá)式TO索引文イ牛名關(guān)閉索引:SETINDEXTO例子:對(duì)當(dāng)前數(shù)據(jù)表以“應(yīng)發(fā)合計(jì)"從大到小排列。INDEXONー應(yīng)發(fā)的TOGZ(二)復(fù)合索引文件:CDX命令:新建索弓I:INDEXON字段名TAG標(biāo)記[ASCEDING|DESCENDING]同時(shí)打開:USE表名ORDER[TAG]標(biāo)記改變索引:SETORDERTO[TAG]標(biāo)記重新索引:INDEXON字段名TAG標(biāo)記關(guān)閉索引:SETORDERTO刪除索引:DELETETAG標(biāo)記例子:對(duì)當(dāng)前數(shù)據(jù)表以“應(yīng)發(fā)合計(jì)"從大到小排列.INDEXON應(yīng)發(fā)酎TAGHJDESC九.查找記錄.順序查找命令:LOCATEFOR條件[范圍]繼續(xù)查找命令:CONTINUE例子:在當(dāng)前的表中查找姓"張"的記錄。LOCATEFOR姓名="張”.索引查找說明:根據(jù)當(dāng)前的索引來査找記錄。在使用命令前先要按準(zhǔn)備査找的字段建立索引或排序命令:FIND字符串SEEK表達(dá)式用FOUND。檢査找到否例子:在當(dāng)前的表中查找姓"張"的記錄。FIND張SEEK"張".査找函數(shù)說明:在使用命令前先要按準(zhǔn)備查找的字段建立索引或排序函數(shù):SEEKQ例子:在當(dāng)前的表中査找姓"張"的記錄。SEEK("張")十.統(tǒng)計(jì)數(shù)據(jù)表記錄個(gè)數(shù)命令:COUNT[范圍][FOR條件][TO變量]例子:統(tǒng)計(jì)當(dāng)前表中"應(yīng)發(fā)合計(jì)"大于1000元的人數(shù)。COUNTFOR應(yīng)發(fā)合計(jì)>1000十一.數(shù)據(jù)表數(shù)值字段的求和命令:SUM[范圍][FOR條件][TO變量]例子:統(tǒng)計(jì)當(dāng)前表中"應(yīng)發(fā)合計(jì)”字段的總和。SUM應(yīng)發(fā)合計(jì)十二.算術(shù)平均值的計(jì)算命令:AVERAGE[范圍][FOR條件][TO變量]例子:統(tǒng)計(jì)當(dāng)前表中"應(yīng)發(fā)合計(jì)”字段的平均值。AVERAGE應(yīng)發(fā)合計(jì)十三.多功能計(jì)算命令:CALCULATE表達(dá)式【范圍][FOR條件][TO變量]例子:分別統(tǒng)計(jì)當(dāng)前表中"應(yīng)發(fā)合計(jì)”字段的人數(shù)、總和、平均值。CALCULATECNT(應(yīng)發(fā)等十),SUM(應(yīng)發(fā)酎),AVG(應(yīng)發(fā)封)VFP命令、函數(shù)及程序語句大全(2)一.數(shù)值運(yùn)算函數(shù)函數(shù)操作例結(jié)果SQRT(x)求平方根SQRT(9)3INT(x)取整數(shù)INT(3.14)3ROUND(x)四舍五入ROUND(3.14159,4)3.1416MOD(x,y)求X除以Y的余數(shù)MOD(25,4)1MAX(x,y)求X,Y中的最大值MAX(7,8)8MIN(x,y)求X,Y中的最小值MIN(1,2,3)1二.字符中操作函數(shù)函數(shù)名操作例結(jié)果UPPER(S)小寫字母UPPER(abc)ABCLOWER(S)大寫字母LOWER(ACD)acdLEN(S)求字符串的長度LEN("中國1號(hào)")7AT(S1,S2)在字符串S2,找字符串S1AT("H","CHINA")2SUBSTR(S,I,N)在S字符串中的第I個(gè)字符起取N個(gè)字符SUBSTRCTECHNOLO',3,3)CHNLEFT(S,N)從字符串S左邊取N個(gè)字符LEFT(“中國人”,4)中國RIGHT(S,N)從字符串S右邊取N個(gè)字符S='12345,RIGHT(S,3)345SPACE(N)生成N個(gè)空格"合計(jì)"+SPACE(2)+"123"合計(jì)123TRIM(S)消除字符串尾部空格TRIM("姓名 ")姓名ALLTRI(S)消除字符串中所有空格ALLTRIM("李 麗")李麗STUFF(S1,N1,N2,S2)用字符串S2替換S1中第N1個(gè)字符起的N2個(gè)字符STUFF("NOW",2,1,"E")NEW

&宏替換P=“G2”USE&PUSEG2三.日期和時(shí)間函數(shù)函數(shù)名操作例結(jié)果DATE()求當(dāng)前日期DATE()2001/11/12DATETIME()求當(dāng)前日期和時(shí)間DATETIME()2001/11/12/0:22:33amYEAR(D)求年份YEAR(DATE0)2001MONTH(D)求月份(數(shù)值)MONTH(DATETIME())11CMONTH(D)求月份(字符)MONTH(DATETIME0)NovenberDAY(D)求日期DAY(DATE0)12DOW(D)求星期兒(數(shù)值)DOW(DATE())1CDOW(D)求星期幾(英文)CDOW(DATE())sundayTIME(D)求當(dāng)前時(shí)間TIME(DATE())10:20:38am四.數(shù)據(jù)類型轉(zhuǎn)換函數(shù)函數(shù)名操作例結(jié)果ASC(S)求第一個(gè)字符串的ASCII碼ASC(〃what")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)日期CTODC11/01/2002")11/01/2002DTOC(D)日期轉(zhuǎn)換成字符串DTOC(DATE())11/01/2002DTOS(D)把日期轉(zhuǎn)成年月日式的字符串DTOS(DATE())20021101CTOT(C)字符串轉(zhuǎn)成日期時(shí)間型CTOT(11/01/200211/01/2002

10:30:50am)10:30:50amDTOT(D)日期型轉(zhuǎn)為日期時(shí)間型DTOT(DATE())11/25/200100:00:01amTTOC(T)日期時(shí)間型轉(zhuǎn)為字符型TTOC(DATETIME())11/25/200100:00:01amTTOD(T)日期時(shí)間型轉(zhuǎn)為日期型TTOD(DATETIME())11/25/2001IIF(LE,E1,E2)邏輯判斷IIF(A>0,"YES","NO")YES五.檢測函數(shù)函數(shù)名操作例結(jié)果RECNO()檢測當(dāng)前記錄號(hào)RECNO〇1RECCOUNT()檢測當(dāng)前記錄數(shù)RECCOUNT〇12BOF()開始記錄BOF〇1EOF()最后記錄EOF()12FOUND()返回查找結(jié)果FOUND().T.ROW()返回當(dāng)前行坐標(biāo)ROW〇1COL()返回當(dāng)前列坐標(biāo)COL〇1SYS(N)返回系統(tǒng)狀態(tài)SYS(13)聯(lián)機(jī)狀態(tài)VFP命令、函數(shù)及程序語句大全(3)VFP提供ー些簡單的程序設(shè)計(jì)語言命令,包括賦值語句、控制語句、設(shè)置命令等,我們可根據(jù)某種功能的需要,利用這些命令及數(shù)據(jù)庫操作的有關(guān)命令構(gòu)成語句,分行存在文件中(稱為命令文件,以.PRG為擴(kuò)展名,在項(xiàng)目管理器中標(biāo)為“程序”)或ー些對(duì)象的過程或事件處理程序中。如被調(diào)用,系統(tǒng)將一條條順序執(zhí)行各行命令,如遇到控制語句(IF,DO,CALL,FOR…等),依據(jù)控制語句的指定,轉(zhuǎn)移到指定語句再一條條順序執(zhí)行。這些命令書寫時(shí),每條語句應(yīng)在一行中寫完,如不能寫完,可用分號(hào)“;”結(jié)束,表示下一行繼續(xù)。兩條語句不能寫在一行上。每條語句中命令字及選項(xiàng)中保留字大多數(shù)可只書寫前四個(gè)字符。一般ー個(gè)簡單的VFP應(yīng)用系統(tǒng)由若干模塊組成,各自完成一定的功能,總的系統(tǒng)用ー個(gè)總控模塊去捽制,通過它調(diào)用子模塊,層層調(diào)用以實(shí)現(xiàn)全系統(tǒng)的功能。這種結(jié)構(gòu)如圖5.4所示。這種方式便于設(shè)計(jì)、調(diào)試,保證程序的正確性,也容易實(shí)現(xiàn)模塊共亭,實(shí)現(xiàn)軟件重用,提高程序設(shè)計(jì)效率。主模塊可由主封面表單、主命令文件和主菜單文件構(gòu)成;各個(gè)模塊可由過程、自定義函數(shù)、表單、表單集、應(yīng)用程序或子菜單等構(gòu)成。ー個(gè)表單或ー個(gè)表單集中可有一到多個(gè)用戶界面,可設(shè)置到多個(gè)命令按鈕及其他程序控件,用戶可利用按鈕及程序控件,產(chǎn)生特定的消息觸發(fā)執(zhí)行ー個(gè)程序,完成一個(gè)功能。應(yīng)用程序是對(duì)一個(gè)模塊編譯后的.APP執(zhí)行文件,“過程”是由命令組成的程序,以RETURN語句結(jié)束,它可為另一個(gè)程序所調(diào)用,調(diào)用執(zhí)行時(shí)遇到RETURN語句將返冋其調(diào)用程序。圖5.4VFP程序總體結(jié)構(gòu)--變量賦值與顯示語句在項(xiàng)目管理器中選“代碼ー程序一新建”或在命令框利用命令MODIFYCOMMAND建立命令文件。MODIFYCOMMAND意義:創(chuàng)建命令文件。命令格式:MODIFYCOMMAND文件名例如:MODIFYCOMMANDPROCI執(zhí)行此命令后,將進(jìn)入全屏幕編輯狀態(tài)。如原已建立了該文件prod,將調(diào)出該文件在屏幕上顯示,用戶可對(duì)之修改。如是新文件,則用戶可利用全屏幕編輯鍵,輸入自己的程序。新文件將自動(dòng)加上擴(kuò)展名.PRGoDO意義:執(zhí)行命令文件程序,有三種方法:①在項(xiàng)目管理器中選“代碼f程序f選擇程序名f運(yùn)行”。②在主菜單中選“程序f運(yùn)行f輸入(選擇)程序名一運(yùn)行”。③在程序中或命令窗日中使用DO命令。命令格式:DO程序名[WITH表達(dá)式表]程序名可以是上述方式建立的命令文件(.PRG文件)、可執(zhí)行文件(.EXE文件ハ應(yīng)用程序(.APP文件),及對(duì).PRG文件編譯后的文件(.FXP文件)。如調(diào)用DO命令時(shí)不帶擴(kuò)展名,則按?EXE文件、.APP文件、.FXP文件、.PRG文件的順序查找同名程序并執(zhí)行之。例如:DOPROC1此外,程序名還可能是菜單程序,調(diào)用時(shí)必須帶擴(kuò)展名(.MPR)。例如,有菜單程序MAIN.MPR,則可如下調(diào)出執(zhí)行:DOMAIN.MPR程序名還可以是事件名或過程名。其中表達(dá)式表由多個(gè)表達(dá)式組成,用逗號(hào)分開,在執(zhí)行時(shí)首先計(jì)算各表達(dá)式的值,并帶入被調(diào)程序,被調(diào)程序第一句應(yīng)是LPARAMETERS形參表語句,形參表是以逗號(hào)分隔的多個(gè)內(nèi)存變量名,其個(gè)數(shù)應(yīng)等于調(diào)用時(shí)的表達(dá)式的個(gè)數(shù),執(zhí)行時(shí),首先用調(diào)用語句中各表達(dá)式的值對(duì)應(yīng)給它們賦值。例如:主程序中:DOPROCIWITH“AB”,21被調(diào)程序:LPARAMETERSMl,XO執(zhí)行時(shí),首先完成賦值:M1="AB”;X0=21,再往下執(zhí)行。當(dāng)使用DO運(yùn)行ー個(gè)程序時(shí),包含在其中的命令一直執(zhí)行,直到下列某一事件發(fā)生。遇到RETURN語句,返回到調(diào)用程序DO命令的下一句,遇到了CANCEL命令,返回VFP命令狀態(tài)。遇到QUIT命令退出程序并退出VFP5到達(dá)文件尾回到調(diào)用前狀態(tài);再遇到另ー個(gè)DO命令,將轉(zhuǎn)人新程序執(zhí)行。PUBLIC意義:設(shè)置全局性內(nèi)存變量命令。格式:PUBLIC變量名1[,變量名2]-在不同程序或過程或事件中,同名內(nèi)存變量的值不一定相同,如要將一個(gè)程序(過程、事件)中變量的值傳到另ー程序(過程、事件)中,可應(yīng)用上述命令將它定義成全局變量。PRIVATE意義:設(shè)置局部變量的命令。格式:PRIVATE[ALL[LIKE|EXCEPT通配符]!內(nèi)存變量表]其中選項(xiàng)意義:ALL將所有內(nèi)存變量說明為局部性變量,ALL[LIKEIEXCEPT通配符]將變量名能與通配符相匹配的內(nèi)存變量說明為局部性變量。"ALLEXCEPT通配符”將除了能與通配符相匹配的變量名之外的內(nèi)存變量說明為局部性變量。在程序中,為了一個(gè)程序的運(yùn)行結(jié)果不影響另ー個(gè)程序的執(zhí)行,不希望同名變量將值從ー個(gè)程序帶到另ー個(gè)程序而造成干擾。為此,可將該變量定義成局部性變量。DIMENSION意義:定義內(nèi)存變量數(shù)組命令,VFP中可定義ー維或二維數(shù)組。格式:DIMENSION數(shù)組名(數(shù)字表達(dá)式1[,數(shù)字表達(dá)式2])[,數(shù)組名2(數(shù)字表達(dá)式1[,數(shù)字表達(dá)式2])]…每個(gè)數(shù)組的每個(gè)元素都可單獨(dú)使用,如同一個(gè)內(nèi)存變量,稱為下標(biāo)變量,下標(biāo)起始值為lo例如,DIMENSIONARRAY1(8,20),XI(30)定義了兩個(gè)數(shù)組,數(shù)組名分別為ARRAY1和XI,前??個(gè)數(shù)組共有20X8=160個(gè)元素:ARRAY1(1,I)、ARRAY1(1,2)ARRAY1(1,20),ARRAY1(2,1)-ARRAY1(8,20)〇對(duì)各元素也可用單下標(biāo)取用其值,如用ARRAY1(1),ARRAY1(2)-ARRAY1(160)也可訪問該數(shù)組各元素,與前面雙下標(biāo)表示形式ーー對(duì)應(yīng)。PUBLICARRAY意義:定義全局性內(nèi)存變量數(shù)組。格式:PUBLICARRAY數(shù)組名(數(shù)字表達(dá)式1[,數(shù)字表達(dá)式2])[,數(shù)組名2(數(shù)字表達(dá)式1[,數(shù)字表達(dá)式2])]???=意義:賦值語句。將表達(dá)式的值賦值給ー個(gè)內(nèi)存變量。對(duì)變量賦值后,該變量類型也即確定為表達(dá)式返回值的類型。對(duì)ー個(gè)變量可重復(fù)賦值,也可改變變量的類型。但為了保證程序的清晰和結(jié)構(gòu)完整,建議在ー個(gè)系統(tǒng)中每個(gè)變量名應(yīng)有確定的意義和數(shù)據(jù)類型。STORE意義:同時(shí)對(duì)多個(gè)變量賦值命令。格式:STORE表達(dá)式T0變量”,變量2]…在程序運(yùn)行時(shí)常要求用戶輸入控制參數(shù)或數(shù)據(jù),實(shí)現(xiàn)此功能語句我們稱為人機(jī)對(duì)話語句。在程序中如插入人機(jī)對(duì)話語句,用戶可借助鍵盤輸入?yún)?shù)或控制量賦值給變量??刂瞥绦蜃呦?或用于不同數(shù)據(jù)處理。在程序執(zhí)行到這類語句時(shí),將停止運(yùn)行,在屏幕上顯示命令中附注的提示信息,同時(shí)等待用戶從鍵盤輸入數(shù)據(jù),賦給所指定的變量。完成賦值之后再接著運(yùn)行下一條語句。在VFP中這類語句可在主控程序中或在調(diào)試程序時(shí)使用,在表單程序中使用文本框等各種捽件及消息框代替它們。INPUT意義:輸入各種類型數(shù)據(jù)賦給內(nèi)存變量格式:INPUT"提示信息”TO內(nèi)存變量名本命令允許輸入字符類型、數(shù)值類型、日期類型、邏輯類型等不同類型的數(shù)據(jù),要求輸入數(shù)據(jù)是字符類型時(shí),數(shù)據(jù)兩端要加定界符,例“張平”;輸入數(shù)據(jù)是日期類型時(shí),要按{MM/DD/YY}或設(shè)定的格式,例{12/21/00};邏輯類型按.T.、.F.格式。用戶輸入還可以是包括變量名及函數(shù)在內(nèi)的表達(dá)式,但變量必須是己賦值的,表達(dá)式是可以計(jì)算出確定值的。用戶輸入完后回車表示輸入結(jié)束。例:INPUT”請輸入初始日期:"TOD1屏幕上顯示:“請輸入初始日期:”,光標(biāo)在此句之后。用戶可輸入{05/10/96}〇此時(shí)用戶如果執(zhí)行命令:?D1屏幕上將顯不:05/10/96ACCEPT意義:輸入字符串賦給變量。格式:ACCEPT[“提示內(nèi)容”]TO內(nèi)存變量名該命令和INPUT命令區(qū)別有兩點(diǎn):.輸入數(shù)據(jù)均被視為字符類型。,輸入數(shù)據(jù)兩端不需加定界符,如加了定界符,定界符被視作字符串的一部分。WAIT意義:接收單個(gè)字符賦給變量,或中斷程序,按任意鍵后繼續(xù)。格式:WAIT[“提示信息”]T0內(nèi)存變量名該命令與ACCEPT命令不同點(diǎn)在于只接收從鍵盤輸入的ー個(gè)字符,用戶輸入?ー個(gè)字符后無須回車。該命令也可用在VFP表單程序的某個(gè)事件中,用于中斷該事件的執(zhí)行,讓屏幕顯示程序運(yùn)行的中間結(jié)果,按某個(gè)鍵或單擊鼠標(biāo)后再繼續(xù)執(zhí)行。GET意義:格式化輸入數(shù)據(jù),給內(nèi)存變量賦值或修改表中當(dāng)前記錄字段內(nèi)容。格式:@行號(hào),列號(hào)GET內(nèi)存變量名或字段名[FUNCTION功能代碼][PICTURE格式代碼エDEFAULT表達(dá)式][MESSAGE提示信息][RANGE輸入值范圍下限,輸入值范圍上限][SIZE文本框高度,文本框?qū)挾萞[VALID條件表達(dá)式]該命令可用于對(duì)內(nèi)存變量賦值,也可用于修改當(dāng)前打開表中當(dāng)前記錄中指定字段的內(nèi)容。如對(duì)內(nèi)存變量賦值且省略DEFAULT選項(xiàng),在使用此語句時(shí),必須已對(duì)該內(nèi)存變量賦值。否則按此選項(xiàng)中表達(dá)式對(duì)內(nèi)存變量初始化。本命令執(zhí)行后只顯示內(nèi)存變量或字段當(dāng)前值,要到執(zhí)行命令“READ”時(shí),此語句方被激活,程序停止執(zhí)行,等待用戶從鍵盤輸入數(shù)據(jù),直待回車后オ繼續(xù)執(zhí)行。行號(hào)、列號(hào)為當(dāng)前窗口中字符行和列的位置號(hào)。行號(hào)與列號(hào)允許是小數(shù)。FUNCTION選項(xiàng)用于對(duì)輸入內(nèi)容限制或變化。功能代碼:A:只允許輸入內(nèi)容由字母字符組成,包括不允許空格和標(biāo)點(diǎn)符號(hào)。B:數(shù)值數(shù)據(jù)左對(duì)齊,默認(rèn)格式為右對(duì)齊。I:文本居中對(duì)齊。J:文本右對(duì)齊,默認(rèn)為左對(duì)齊。Sn:限定文本框中字符個(gè)數(shù)為n。如S20。T:去掉前導(dǎo)和后綴空格。Z:當(dāng)數(shù)值數(shù)據(jù)值為〇時(shí)顯示空格。!:把字母字符轉(zhuǎn)換為大寫。PICTURE選項(xiàng)用于限定輸入數(shù)據(jù)的字符類型及大小。功能代碼例:A:該位為字母或數(shù)字L:只允許邏輯數(shù)據(jù)。N:該位為字符或數(shù)字。X:任何字符。I:該位為數(shù)字,或數(shù)值數(shù)據(jù)中的符號(hào)。標(biāo)明小數(shù)點(diǎn)位置。,:用逗號(hào)分隔左右數(shù)字。!:將小寫字母轉(zhuǎn)換為大寫字符。例:@3,10GETxlDEFAULT0PICTURE“9999.99”此時(shí)在屏幕第3行的第10列位置顯示方框,其中內(nèi)容為DEFAULT規(guī)定的初始值〇.〇〇,如再發(fā)出命令:READ,將光標(biāo)落在尚未激活的第一個(gè)方框上等待輸入,只能輸入數(shù)字和符號(hào),且整數(shù)部分不多于4位,小數(shù)部分不多于2位,否則將提示“請您重新輸入”。RANGE.VALID兩個(gè)選項(xiàng)用于保證數(shù)據(jù)完整性,輸入數(shù)據(jù)必須在預(yù)定范圍內(nèi),滿足條件表達(dá)式要求時(shí),オ可完成賦值操作。本語句還有設(shè)置字體、字形和顏色的選項(xiàng)。在VFP中,綜合上述人機(jī)交互命令尤其是0…GET命令的功能和特性,設(shè)計(jì)了文本框、編輯框等類和控件,便之應(yīng)用更加方便、簡單,我們將在下一章中介紹。程序運(yùn)行結(jié)果一般由輸出語句使其顯示在屏幕上或輸出到其他地方,輸出語句可將數(shù)據(jù)輸出到屏幕上顯示也可傳送給打印機(jī)或傳送存入到其他文件中。屏幕顯示語句在VFP中?般用在主控程序或調(diào)試程序時(shí)使用。在表單程序中使用各種控件、消息框代替它們。?1??意義:計(jì)算〈表達(dá)式表〉所指定的各表達(dá)式的值,并顯示在屏幕上。格式:?表達(dá)式1[?表達(dá)式2]…用?時(shí),從下一行第一列起顯示結(jié)果。用??時(shí),從當(dāng)前行當(dāng)前列起顯示結(jié)果。SAY意義:格式化輸出語句。格式:@行號(hào),列號(hào)SAY表達(dá)式[FUNCTION功能代碼][PICTURE格式代碼][SIZE高度,寬度]有關(guān)選項(xiàng)的意義與@-GET命令相似,此外還有關(guān)于字體,顏色設(shè)置的選項(xiàng)。若發(fā)出有SETDEVICETOPRINTER命令,輸出到打印機(jī),否則輸出至屏幕上顯示。本語句常與Q…GET語句合用,合用時(shí),行號(hào)、列號(hào)指SAY內(nèi)容顯示所在行、列號(hào),GET變量內(nèi)容框?qū)⒎胖迷赟AY內(nèi)容之后。二.程序控制命令.IF...ENDIF命令意義:分支條件語句,根據(jù)邏輯表達(dá)式的值,有選擇的執(zhí)行ー組命令。根據(jù)條件表達(dá)式的值是.T.還是?F,控制程序流向.格式:IF條件表達(dá)式語句序列1[ELSE語句序列2]ENDIFIF條件表達(dá)式語句是條件語句的開始,ENDIF語句是條件語句的終止。語句序列是若干條?質(zhì)序執(zhí)行的語句。執(zhí)行時(shí)首先計(jì)算條件表達(dá)式的值,如結(jié)果為"真"(.T.)則執(zhí)行語句序列I,執(zhí)行完后退出該語句。如條件表達(dá)式不滿足,且有ELSE語句和語句序列2,則執(zhí)行語句序列2?其程序流程圖如圖5.5所示。圖5.5分支結(jié)構(gòu)程序流程圖圖5.6主控模塊程序流程圖在ー個(gè)分支控制語句塊中可以嵌套另一個(gè)IF-ENDIF語句塊?!纠?.7]主控模塊的程序程序流程圖如圖5.6所示。編寫程序清單如下:CLEAR&&清屏幕@5,27SAY“設(shè)備管理系統(tǒng)”@7,36SAY“主菜單”@10,21PROMPT“1.各種查詢、屏幕修改"+SPAC(16)@11,21PROMPT"2.數(shù)據(jù)編輯”+SPAC數(shù)6)@12,21PROMPT”3.資產(chǎn)統(tǒng)計(jì)”+SPAC(26)@13,21PROMPT”4.報(bào)表打印"+SPAC(26)@14,21PROMPT“5.系統(tǒng)維護(hù)”+SPAC(26)MENUTOm_choic &&等待用戶輸入IFLASTKEY()=27 &&按Esc鍵返回VFPRETURNENDIFIFm_choic=lDOsbcxsc.sprELSEIFm_choic=2DOsjbj_sc.sprELSEIFm_choic=3DOzctj_sc.sprELSEIFm_choic=4DObbdy_sc.sprELSEIFm_choic=5DOxtwh_pgENDIFENDIFENDIFENDIFENDIFRETURN

CASE意義:分情況語句,當(dāng)求解ー個(gè)問題存在多種情況,如要求對(duì)不同選擇執(zhí)行不同的語句序列,可采用分情況語句。該語句一句中列出許多語句成分,每個(gè)語句成分給出ー個(gè)條件表達(dá)式,每次只根據(jù)具體條件找出第一個(gè)條件表達(dá)式值為的語句成分,執(zhí)行該成分語句中的語句序列后退出該語句。命令格式:DOCASECASE條件表達(dá)式1語句序列1CASE條件表達(dá)式2語句序列2CASE條件表達(dá)式n語句序列n[OTHERWISE語句序列n+1]ENDCASE執(zhí)行該語句時(shí),系統(tǒng)逐一計(jì)算條件表達(dá)式1的值,條件表達(dá)式2的值…只要有一個(gè)條件表達(dá)式的值為.T.則執(zhí)行其后語句序列,執(zhí)行它后退出本分情況語句。如到條件表達(dá)式n的值仍均為.F,又有OTHERWISE成分,則執(zhí)行語句序列n+I,其程序流程圖如圖5.7所示。仍如上面主控程序的例子,程序可設(shè)計(jì)為:CLEAR&&清屏幕@5,27@7,36@10,21@11,21@12,21@13,21@14,21SAY“設(shè)備管理系統(tǒng)”SAY“主菜單”PROMPTPROMPTPROMPTPROMPTPROMPT“1.各種査詢、屏幕修改"+SPAC(16)”2.數(shù)據(jù)編輯”+SPAC(26)“3.資產(chǎn)統(tǒng)計(jì)”+SPAC(26)“4.明細(xì)報(bào)表打印"+SPAC(22)“5.系統(tǒng)維護(hù)"+SPAC(26)MENUTOm_choic&&等待用戶輸入IFLASTKEY()=27&&按Esc鍵返回VFPRETURNENDIFDOCASECASEmchoic=lDOsbcx_sc.sprCASEm_choic=2DOsjbj_sc.sprCASEm_choic=3DOzctj_sc.sprCASEm_choic=4DObbdy_sc.sprCASEm_choic=5DOxtwh_pgENDCASERETURN圖5.7CASE結(jié)構(gòu)程序流程圖從上面兩段程序可見,對(duì)于同一個(gè)問題,用DOCASE-ENDCASE語句比IF…ENDIF語句要簡潔了并且邏輯關(guān)系清晰,因此不容易出錯(cuò)。在分情況語句中也可嵌入分支條件語句及分情況。它本身也可嵌入到分支條件語句中去使用。在對(duì)數(shù)據(jù)表中數(shù)據(jù)時(shí),常常每條記錄被處理的過程是ー樣的,處理語句也就大體相同,如果表中有多少記錄就寫多少條語句是十分困難的,為避免重復(fù)書寫,可使用循環(huán)。DOWHILE-.ENDDO意義:循環(huán)語句,可使多次重復(fù)執(zhí)行同一組語句。格式:DOWHILE條件表達(dá)式語句序列[LOOP][EXIT]ENDDO其中“DOWHILE條件表達(dá)式”語句稱為循環(huán)起始語句,“ENDDO”語句稱為循環(huán)結(jié)束語句,進(jìn)入此命令時(shí)首先檢查條件表達(dá)式的值是否為真(.T.)〇如果是真,則執(zhí)行語句序列,然后再判斷條件表達(dá)式的結(jié)果,如仍為真,則繼續(xù)下去。如果為假(.F.)則退出循環(huán),執(zhí)行ENDDO后面的語句。如果進(jìn)入本命令一開始,條件表達(dá)式的值為假,則語句序列一次也不執(zhí)行,就直接轉(zhuǎn)入執(zhí)行ENDDO后面的語句。其中LOOP意義為結(jié)束本次循環(huán),返回循環(huán)體開始。EXIT意義為結(jié)束循環(huán),轉(zhuǎn)入執(zhí)行ENDDO后面的語句。LOOP語句和EXIT語句一般用在分支條件語句中,因而語句格式為:DOWHILE條件表達(dá)式I語句序列1[IF條件表達(dá)式2LOOPELSE語句序列2ENDIF][IF條件表達(dá)式3EXITELSE語句序列3ENDIF]ENDDO其程序流程圖如圖5.8所示。在使用時(shí)必須保證經(jīng)有限次循環(huán)后條件表達(dá)式I應(yīng)變?yōu)榧倩驐l件表達(dá)式3的值應(yīng)變?yōu)檎?使退出循環(huán)。否則就可能成為死循環(huán)。在條件表達(dá)式中的變量稱循環(huán)變量,在數(shù)據(jù)庫中循環(huán)變量可能是內(nèi)存變量,也可能是表中的指針。必須注意在每次循環(huán)過后,循環(huán)變量的值都要改變并且是向最終使條件表達(dá)式1的值為假或條件表達(dá)式3的值變真的方向變化,否則就無法滿足前述退出條件。在VFP中有兩類特殊用法。(1)循環(huán)變量是指針。該用法中有兩種結(jié)構(gòu)①指針首先指向第一條的DOWHILE結(jié)構(gòu)如圖5.9所示。②指向滿足條件記錄的第一條的DOWHILE結(jié)構(gòu)如圖5.10所示。圖5.8DOWHILE-ENDDO結(jié)構(gòu)程序流程圖圖5.9指針做循環(huán)變量開始指向第一條時(shí)的DOWHILE結(jié)構(gòu)流程

圖圖5.10指針做循環(huán)變量開始指向滿足條件記錄的第一條時(shí)的DOWHILE結(jié)構(gòu)流程圖格式1:圖5.9實(shí)現(xiàn)的語句。USE(表名)SELECT工作區(qū)別名GOTOPDOWHILENOTEOF()語句序列SKIPENDDO在本格式中,循環(huán)變量是表中指針,首先讓指針指向表的第一條記錄,如果不是文件尾,則執(zhí)行語句序列之后讓指針下移一條,再返回判斷指針是否指向文件尾。這樣一直繼續(xù)下去直到指針指到最后一條記錄的后面,循環(huán)結(jié)束?!纠?.8]在學(xué)生表中有少數(shù)學(xué)生更換了班級(jí),現(xiàn)要求在屏幕上ー屏ー屏地顯示每個(gè)學(xué)生的數(shù)據(jù),并提問是否修改班級(jí)名稱,如回答“Y”,則提供修改框。SETTALKOFFUSE學(xué)生KEY="Y"GOTOPDOWHILENOTEOF()@3,10SAY”姓名:"+姓名@5,10SAY"班級(jí):”+班級(jí)@7,10SAY“出生日期:“+DTOC(出生日期)@9,10SAY“是否修改,Y/N?'GETKEYREADIFUPPER(KEY)=“Y”@11,10SAY“請輸入改后班級(jí)名稱"GET班級(jí)READENDIFSKIPENDDOUSESETTALKON格式2:如果只按某個(gè)條件查看記錄,則可用查找語句開始。圖5.10實(shí)現(xiàn)語句:LOCATEFOR條件表達(dá)式DOWHILENOTEOF〇語句序列CONTINUEENDDO例5.8中如只查99級(jí)學(xué)生,顯示其姓名則:LOCATEFOR“99"$班級(jí)DOWHILENOTEOF()?姓名CONTINUEENDDO(2)當(dāng)于DOUNTIL的循環(huán)結(jié)構(gòu)。有些循環(huán)要在執(zhí)行部分語句之后再根據(jù)?個(gè)條件表達(dá)式判斷是否結(jié)束,此時(shí)循環(huán)條件可用常量.T.,見圖5.II所示。圖5.11DOUNTIL結(jié)構(gòu)程序流程圖語句格式:DOWHILE.T.語句序列IF條件表達(dá)式EXITENDIFENDDO【例5.9】求編寫學(xué)生表錄入新數(shù)據(jù)的程序,每次錄入一條記錄,之后提問是否繼續(xù),如回答不是“Y”,就停止錄入。SETTALKOFFUSE學(xué)生KEY="”DOWHILE.T.APPENDBLANK@3,10SAY"姓名:"GET姓名@5,10SAY“班級(jí):”GET班級(jí)@7,10SAY“出生日期:”GET出生日期READ@9,10SAY“否繼續(xù)?Y/N?”GETKEYREADIFUPPER(KEY)<〉“Y"EXITENDIFENDDOUSESETTALKON此語句由用戶輸入丫或N控制程序結(jié)束。上述第一、二兩種格式可以用等價(jià)的SCAN循環(huán)取代。SCAN-ENDSCAN循環(huán)語句意義:在數(shù)據(jù)表中循環(huán)檢查或處理一條條記錄。命令格式ー:SCAN語句序列ENDSCAN此句等價(jià)于前述格式1的語句。命令格式二:SCANFOR條件表達(dá)式語句序列ENDSCAN本語序等價(jià)于前述格式2的語句。有一些循環(huán)次數(shù)是一定的,或者循環(huán)變量的值在每次循環(huán)中增加的量是相同的,則可應(yīng)用FOR循環(huán)。FOR-ENDFOR循環(huán)語句命令格式:FOR內(nèi)存變量=初始值TO終了值[STEP增量]語句序列ENDFOR此循環(huán)以某個(gè)內(nèi)存變量為循環(huán)變量,進(jìn)入循環(huán)時(shí)首先給它賦初始數(shù)值,只要不超過終了值,則執(zhí)行語句序列。STEP語句為可選項(xiàng),指示在每次循環(huán)后循環(huán)變量的增加量。前面執(zhí)行語句序列之后,將循環(huán)變量值增加增量的值,再判斷是否超過終了值,這樣繼續(xù)下去直到超過終了值。增量可為正值也可為負(fù)值,省略時(shí)默認(rèn)值是1。如增量為正,則當(dāng)循環(huán)變量大于終了值時(shí),循環(huán)結(jié)柬。如增量為負(fù),則每循環(huán)一次,循環(huán)變量均減小,減少到小于終了值時(shí)循環(huán)結(jié)束。例5.8中修改班級(jí)名的程序也可寫為:SETTALKOFFUSE學(xué)生KEY="”N=RECCOUNT()&&記錄總條數(shù)FOR1=1TON@3,10SAY"姓名:"十姓名@5,10SAY“班級(jí):”十班級(jí)@7,10SAY“出生日期:“+DT0C(出生日期)@9、10SAY“是否修改班級(jí)名,Y/N?”GETKEYREADIFUPPER(KEY)=“Y”@11,10SAY"請輸入改后班級(jí)名稱"GET班級(jí)READENDIFENDFORUSESETTALKON使用相對(duì)指針,如果打開索引,或某些錄入、修改、查詢操作使當(dāng)前指針位置改變都可能引起錯(cuò)誤。不如本例中采用物理地址,比較可靠?!纠?.10】要求輸入N個(gè)學(xué)生的總分X,按總分分成優(yōu)、良、及格、不及格四個(gè)等級(jí),統(tǒng)計(jì)每個(gè)等級(jí)的人數(shù)。等級(jí)劃分標(biāo)準(zhǔn)為:90—100分為優(yōu),75—89分為良,60-74分為及格,59分及以下為不及格。SETTALKOFFDIMENSIONM(4)&&定義數(shù)組STORE0TOM&&M所有元素初值設(shè)為〇x=0INPUT"學(xué)生人數(shù)N=?”TON&&計(jì)數(shù)循環(huán)FOR1=1TON?“請輸入第”,I,“人的成績”@ROW〇,20SAY“X=?”GETXREADDOCASECASEx>=90M(1)=M(1)+1&&統(tǒng)計(jì)優(yōu)秀生人數(shù)CASEx>=75M(2)=M(2)+1CASEx>=60M(3)=M(3)+1CASEx<60ANDx>=0M(4)=M(4)+1OTHERWISE?“輸入數(shù)據(jù)有錯(cuò),請重輸”1=1-1ENDCASEENDFOR?“優(yōu)、良、及格、不及格人數(shù)各為",M(1),M(2),M(3),M(4)SETTALKON【例5.11】設(shè)有商品表,結(jié)構(gòu)為商品(商品代碼,品名,單價(jià),數(shù)量,金額),欲對(duì)其中部分商品調(diào)動(dòng)單價(jià),為此建立一個(gè)調(diào)價(jià)表,其結(jié)構(gòu)為調(diào)價(jià)(商品代碼,原單價(jià),新單價(jià)),編寫程序用調(diào)價(jià)表中新單價(jià)數(shù)據(jù)修改商品表中單價(jià)與金額。SETTALKOFFSELE1USE商品SELE2USE調(diào)價(jià)SCAN代碼1=商品代碼SELE1LOCATEFOR商品代碼=代碼1IFNOTEOF〇REPL單價(jià)WITH調(diào)價(jià).新單價(jià)、金額WITH單價(jià)?數(shù)量ENDIFSELE2ENDSCANCLOSEALLSETTALKON本例中設(shè)置二個(gè)工作區(qū),分別打開二個(gè)表,首先在工作區(qū)2上利用SCAN循環(huán)遍歷調(diào)價(jià)所有記錄,對(duì)每ー記錄在商品表中査找有無商品代碼標(biāo)識(shí)相同的記錄,如有,則用新單價(jià)更新原單價(jià),并修改金額。由于在非當(dāng)前工作區(qū)中不能移動(dòng)指針,不能査詢,不能修改數(shù)據(jù),因而在轉(zhuǎn)到商品表中查詢之前要將商品表所在工作區(qū)1設(shè)為當(dāng)前工作區(qū),更新以后又轉(zhuǎn)到工作區(qū)2將調(diào)價(jià)表中指針指向下一條,再準(zhǔn)備按第二個(gè)品種調(diào)價(jià)。在當(dāng)前工作區(qū)中可讀取非當(dāng)前工作區(qū)中數(shù)據(jù),如本例中用“調(diào)價(jià).單價(jià)”這樣的格式從工作區(qū)2的調(diào)價(jià)表中讀取其中指針?biāo)赣涗浀膯蝺r(jià),這種方式稱為聯(lián)訪。如此對(duì)多個(gè)數(shù)據(jù)表操作十分麻煩,可采用預(yù)先建立關(guān)聯(lián)的辦法,在一個(gè)表中移動(dòng)指針時(shí),第二個(gè)表中指針按關(guān)鍵字保持一致的方式跟著移動(dòng)。三.其他常用命令SETRELATION意義:將當(dāng)前數(shù)據(jù)庫和“別名”工作區(qū)中的表文件關(guān)聯(lián)在ー起,當(dāng)前表文件稱為主動(dòng)表文件,“別名”工作區(qū)中的表文件稱為被關(guān)聯(lián)表文件,每當(dāng)主動(dòng)表文件中指針移動(dòng)時(shí),被關(guān)聯(lián)表文件中指針也相應(yīng)移動(dòng)。命令格式:SETRELATIONTO字段名!NTO別名[ADDITIVE]命令中選用的“字段名”必須同時(shí)包含在兩個(gè)表文件中,且被關(guān)聯(lián)表必須以該字段建立索引文件并打開為主索引文件。每當(dāng)主動(dòng)表文件中記錄指針移動(dòng)時(shí),被關(guān)聯(lián)表中記錄指針根據(jù)主索引文件指引指向與之相匹配(索引字段值等于主動(dòng)表當(dāng)前記錄該字段的值)的第一條記錄。若找不到匹配記錄,則指針將指向文件尾,EOF()為真(.T.)如命令無ADDITIVE選項(xiàng),在建立關(guān)聯(lián)時(shí)將取消當(dāng)前數(shù)據(jù)庫與其他數(shù)據(jù)庫的任何關(guān)聯(lián),僅保留?個(gè)新關(guān)聯(lián)。而選了此選項(xiàng),則原有關(guān)聯(lián)均保留,增加一個(gè)新關(guān)聯(lián)。要注意的是,如果對(duì)應(yīng)主動(dòng)表中某記錄在被關(guān)聯(lián)表中找不到匹配記錄時(shí),主動(dòng)表中數(shù)據(jù)被改為〇。例5.II中如果調(diào)價(jià)表中商品包括商品表中全部商品,利用此命令程序可修改為:USE調(diào)價(jià)&&第一個(gè)打開表默認(rèn)置于I號(hào)工作區(qū)INDEXON商品代碼TOINDEX1SELECT2USE商品SETRELATIONTO商品代碼INTO調(diào)價(jià)SCANREPLACE單價(jià)WITH調(diào)價(jià).新單價(jià),金額WITH單價(jià)?數(shù)量ENDSCAN本例中關(guān)于被關(guān)聯(lián)表中字段名也可用“區(qū)號(hào).字段名”形式對(duì)之訪問。不過使用本程序要求兩表中內(nèi)容必須匹配,例如例5.11中如商品只有部分調(diào)價(jià),在調(diào)價(jià)表中只有商品表中部分商品,那么該程序?qū)⑹股唐繁碇胁徽{(diào)價(jià)商品單價(jià)均變?yōu)椹柀?般在涉及利用ー個(gè)表數(shù)據(jù)修改另一?個(gè)表數(shù)據(jù)時(shí),我們以采用SQL語言中修改命令UPDATE比較好。也可采用全聯(lián)結(jié)視圖再對(duì)之操作?!盧UN意義:在VFP環(huán)境中調(diào)用DOS命令。?命令格式:RUNDOS命令或!DOS命令LOAD命令意義:把匯編或C語言編寫并編譯的二進(jìn)制文件調(diào)入內(nèi)存命令。命令格式:LOAD二進(jìn)制文件名CALL命令意義:執(zhí)行由LOAD裝入內(nèi)存的二進(jìn)制代碼文件命令。命令格式:CALL文件名[WITH字符表達(dá)式/內(nèi)存變量]其中WITH選項(xiàng)用于向調(diào)用程序傳遞參數(shù)。ONERROR意義:當(dāng)出現(xiàn)錯(cuò)誤時(shí)執(zhí)行的命令。命令格式:ONERROR命令其中命令可為任何VFP語句。在程序調(diào)試過程中,可在程序中加入此命令,并設(shè)計(jì)命令處理程序,在其中可加入顯示ERROR〇,MESSAGE〇,LINENO〇和PROGRAM〇的語句,將錯(cuò)誤代碼、錯(cuò)誤消息、錯(cuò)誤行號(hào)及程序名稱顯示出來,以幫助發(fā)現(xiàn)錯(cuò)誤所在,方便糾正錯(cuò)誤。在應(yīng)用程序中,有時(shí)可能出現(xiàn)一些不影響最終結(jié)果的錯(cuò)誤,我們也可在程序中加入這類錯(cuò)誤陷阱,所指定的命令可以是一條無效語句,不讓錯(cuò)誤影響程序運(yùn)行。【例5.12】程序出錯(cuò)時(shí)的處理程序及調(diào)用方法主程序:* Setsystemenviroment closdatacleaonerrodoshowerrowithprog(),lineno(),erro(),mess()&&調(diào)用出錯(cuò)程序showerro語句序列程序出錯(cuò)時(shí)的處理程序:param_prog,m_line,m_num,mmess&&傳遞參數(shù)privm_odcons&&定義局部變量m_odcons=set('cons,)setconsoffdefiwinderro_winfrom0,0to14,49;titl'系統(tǒng)錯(cuò)誤’;cologr+/b;shaddoub;indesktopmovewinderro_wincentactiwinderro_win@1,4say‘錯(cuò)誤警告‘cologr+/b@3,8say’當(dāng)前程序無法繼續(xù),按く確定》將返回主調(diào)!’colow+/b@4,4say'程序建議:稍后再試或與軟件供應(yīng)商聯(lián)系.‘colow+/b@6,4say’出錯(cuò)程序:'+m_progcolow+/b@7,4say'出錯(cuò)行:'+allt(str(m_line))colow+/b@8,4say'錯(cuò)誤代碼:'+allt(str(m_num))colow+/b@9,4say'錯(cuò)誤內(nèi)容:'+iif(len(m_mess)<=28,m_mess,subs(m_mess,1,28)colow+/b@2,3to2,wcol()-4colow/b@5,3to10,wcol()-4colow/b=opendbf('errosave','errosave','shar')&&存放錯(cuò)誤情況inseinto;dbf\errosave(errodate,errotime,erroprog,erroline,errocode,erromess);valu(date(),time(),m_prog,m_line,m_num,m_mess)useinerrosavem_readkey=20m_cnt=ldowhilem_readkey=20ifmod(m_cnt,2)=0@1,6say‘錯(cuò)誤警告‘colob/belse@1,6say,錯(cuò)誤警告‘cologr+/bendi?wrow()-2,wcol()/2-2getmb_iseefunc?*th確定'defa1&&colosche13readcyclmodaltime0.4m_readkey=readkey()m_cnt=m_cnt+lenddsetcons&m_odconscleawindclosedataclearetutomaster&&返回主程序.顯示文件目錄命令格式:DIR[く驅(qū)動(dòng)器>][〈路徑>][〈文件名〉]功能:顯示指定的磁盤驅(qū)動(dòng)器上的文件名說明:〈文件名〉中可帶通配符;命令中不指定文件名,則僅僅顯示指定目錄下的數(shù)據(jù)表文件名。.清屏命令CLEAR格式:CLEAR功能:清除屏幕.總清命令CLEARALL格式:CLEARALL功能:關(guān)閉所有打開的數(shù)據(jù)表文件、索引文件和其他各種文件,清除已有的內(nèi)存變量.SETTALKON/OFF四.程序設(shè)計(jì)基礎(chǔ)程序的概念命令執(zhí)行方式:通過命令菜單或直接在命令窗口輸命令來執(zhí)行,執(zhí)行的結(jié)果顯示在屏幕上.程序執(zhí)行方式:以程序的方式來執(zhí)行。程序是能夠完成一定任務(wù)的命令的有序集合,這組命令存放在程序文件(*.prg)中,執(zhí)行程序時(shí),系統(tǒng)按一定的次序自動(dòng)執(zhí)行包含在程序文件中的命令。程序的特點(diǎn)可以利用編輯器,方便地輸入、修改和保存程序.可以利用多種方式、多次運(yùn)行程序??梢栽讴`個(gè)程序中調(diào)用另ー個(gè)程序。程序的基本要求正確性,能實(shí)現(xiàn)算法的各個(gè)步驟,邏輯上正確,對(duì)輸入產(chǎn)生的錯(cuò)誤有檢測措施。通用性,不能只解決一個(gè)問題,還考慮解決ー類問題。高效率性,編寫執(zhí)行時(shí)間短,占用存儲(chǔ)空間少的程序??删S護(hù)性,程序應(yīng)易讀、易懂、易修改。安全性,必須確保安全、可靠。程序文件的建立在項(xiàng)目管理器中和菜單中建立用命令方式:modifycommand(文件名〉程序的執(zhí)行從"程序”菜單中選擇“運(yùn)行"命令方式:do<文件名〉<文件名>中如果沒有指定擴(kuò)展名,系知

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論