vfp命令、語句等說明總結(jié).doc_第1頁
vfp命令、語句等說明總結(jié).doc_第2頁
vfp命令、語句等說明總結(jié).doc_第3頁
vfp命令、語句等說明總結(jié).doc_第4頁
vfp命令、語句等說明總結(jié).doc_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

VFP命令、函數(shù)及程序語句大全VFP提供一些簡單的程序設計語言命令, 包括賦值語句、控制語句、設置命令等,我們可根據(jù)某種功能的需要,利用這些命令及數(shù)據(jù)庫操作的有關(guān)命令構(gòu)成語句,分行存在文件中(稱為命令文件,以 PRG為擴展名,在項目管理器中標為“程序”) 或一些對象的過程或事件處理程序中。 如被調(diào)用,系統(tǒng)將一條條順序執(zhí)行各行命令,如遇到控制語句(IF,DO,CALL,F(xiàn)OR等),依據(jù)控制語句的指定,轉(zhuǎn)移到指定語句再一條條順序執(zhí)行。這些命令書寫時, 每條語句應在一行中寫完, 如不能寫完,可用分號“;”結(jié)束,表示下一行繼續(xù)。兩條語句不能寫在一行上。每條語句中命令字及選項中保留字大多數(shù)可只書寫前四個字符。一般一個簡單的VFP應用系統(tǒng)由若干模塊組成, 各自完成一定的功能,總的系統(tǒng)用一個總控模塊去控制,通過它調(diào)用子模塊,層層調(diào)用以實現(xiàn)全系統(tǒng)的功能。這種結(jié)構(gòu)如圖54所示。這種方式便于設計、調(diào)試,保證程序的正確性,也容易實現(xiàn)模塊共亭,實現(xiàn)軟件重用,提高程序設計效率。主模塊可由主封面表單、主命令文件和主菜單文件構(gòu)成;各個模塊可由過程、自定義函數(shù)、表單、表單集、應用程序或子菜單等構(gòu)成。一個表單或一個表單集中可有一到多個用戶界面,可設置一到多個命令按鈕及其他程序控件,用戶可利用按鈕及程序控件,產(chǎn)生特定的消息觸發(fā)執(zhí)行一個程序,完成一個功能。應用程序是對一個模塊編譯后的 APP執(zhí)行文件,“過程”是由命令組成的程序,以RETURN語句結(jié)束,它可為另一個程序所調(diào)用,調(diào)用執(zhí)行時遇到RETURN語句將返回其調(diào)用程序。圖 54 VFP程序總體結(jié)構(gòu)一.變量賦值與顯示語句在項目管理器中選“代碼程序新建”或在命令框利用命令MODIFY COMMAND建立命令文件。1MODIFY COMMAND意義:創(chuàng)建命令文件。命令格式:MODIFY COMMAND 文件名例如:MODIFY COMMAND PROC1執(zhí)行此命令后,將進入全屏幕編輯狀態(tài)。 如原已建立了該文件proc1,將調(diào)出該文件在屏幕上顯示,用戶可對之修改。如是新文件,則用戶可利用全屏幕編輯鍵,輸入自己的程序。新文件將自動加上擴展名PRG。2DO意義:執(zhí)行命令文件程序,有三種方法:在項目管理器中選“代碼程序選擇程序名運行”。在主菜單中選“程序運行輸入(選擇)程序名運行”。在程序中或命令窗日中使用DO命令。命令格式:DO 程序名WITH 表達式表程序名可以是上述方式建立的命令文件(.PRG文件)、可執(zhí)行文件(.EXE文件)、應用程序(.APP文件),及對.PRG文件編譯后的文件(.FXP文件)。如調(diào)用DO命令時不帶擴展名,則按.EXE文件、.APP文件、.FXP文件、.PRG文件的順序查找同名程序并執(zhí)行之。例如:DO PROC1此外,程序名還可能是菜單程序,調(diào)用時必須帶擴展名(.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運行一個程序時,包含在其中的命令一直執(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將所有內(nèi)存變量說明為局部性變量,ALLLIKEEXCEPT 通配符將變量名能與通配符相匹配的內(nèi)存變量說明為局部性變量。“ALL EXCEPT通配符”將除了能與通配符相匹配的變量名之外的內(nèi)存變量說明為局部性變量。在程序中,為了一個程序的運行結(jié)果不影響另一個程序的執(zhí)行,不希望同名變量將值從一個程序帶到另一個程序而造成干擾。為此,可將該變量定義成局部性變量。5DIMENSION意義:定義內(nèi)存變量數(shù)組命令,VFP中可定義一維或二維數(shù)組。格式:DIMENSION 數(shù)組名(數(shù)字表達式1,數(shù)字表達式2),數(shù)組名2(數(shù)字表達式1,數(shù)字表達式2)每個數(shù)組的每個元素都可單獨使用,如同一個內(nèi)存變量,稱為下標變量,下標起始值為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=意義:賦值語句。將表達式的值賦值給一個內(nèi)存變量。對變量賦值后,該變量類型也即確定為表達式返回值的類型。對一個變量可重復賦值,也可改變變量的類型。但為了保證程序的清晰和結(jié)構(gòu)完整,建議在一個系統(tǒng)中每個變量名應有確定的意義和數(shù)據(jù)類型。8STORE意義:同時對多個變量賦值命令。格式:STORE 表達式 TO變量1,變量2在程序運行時常要求用戶輸入控制參數(shù)或數(shù)據(jù),實現(xiàn)此功能語句我們稱為人機對話語句。在程序中如插入人機對話語句,用戶可借助鍵盤輸入?yún)?shù)或控制量賦值給變量??刂瞥绦蜃呦?,或用于不同數(shù)據(jù)處理。在程序執(zhí)行到這類語句時,將停止運行,在屏幕上顯示命令中附注的提示信息,同時等待用戶從鍵盤輸入數(shù)據(jù),賦給所指定的變量。完成賦值之后再接著運行下一條語句。 在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)的表達式,但變量必須是己賦值的,表達式是可以計算出確定值的。用戶輸入完后回車表示輸入結(jié)束。例: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命令不同點在于只接收從鍵盤輸入的一個字符,用戶輸入一個字符后無須回車。該命令也可用在VFP表單程序的某個事件中, 用于中斷該事件的執(zhí)行,讓屏幕顯示程序運行的中間結(jié)果,按某個鍵或單擊鼠標后再繼續(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)存變量賦值。否則按此選項中表達式對內(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ù)的字符類型及大小。功能代碼例: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ù)必須在預定范圍內(nèi),滿足條件表達式要求時,才可完成賦值操作。本語句還有設置字體、字形和顏色的選項。在VFP中, 綜合上述人機交互命令尤其是 GET命令的功能和特性,設計了文本框、編輯框等類和控件,便之應用更加方便、簡單,我們將在下一章中介紹。程序運行結(jié)果一般由輸出語句使其顯示在屏幕上或輸出到其他地方,輸出語句可將數(shù)據(jù)輸出到屏幕上顯示也可傳送給打印機或傳送存入到其他文件中。屏幕顯示語句在VFP中一般用在主控程序或調(diào)試程序時使用。 在表單程序中使用各種控件、消息框代替它們。13?|?意義:計算表達式表所指定的各表達式的值,并顯示在屏幕上。格式:?表達式1,表達式2用?時,從下一行第一列起顯示結(jié)果。用?時,從當前行當前列起顯示結(jié)果。14SAY意義:格式化輸出語句。格式:行號,列號 SAY表達式FUNCTION功能代碼 PICTURE格式代碼SIZE高度,寬度有關(guān)選項的意義與GET命令相似,此外還有關(guān)于字體,顏色設置的選項。若發(fā)出有SET DEVICE TO PRINTER命令,輸出到打印機,否則輸出至屏幕上顯示。本語句常與 GET語句合用,合用時,行號、列號指SAY內(nèi)容顯示所在行、列號,GET變量內(nèi)容框?qū)⒎胖迷赟AY內(nèi)容之后。二.程序控制命令1IFENDIF命令意義:分支條件語句,根據(jù)邏輯表達式的值,有選擇的執(zhí)行一組命令。根據(jù)條件表達式的值是.T.還是.F.控制程序流向。格式:IF 條件表達式語句序列1ELSE語句序列2ENDIFIF條件表達式語句是條件語句的開始, ENDIF語句是條件語句的終止。語句序列是若干條順序執(zhí)行的語句。執(zhí)行時首先計算條件表達式的值,如結(jié)果為“真”(.T.)則執(zhí)行語句序列l(wèi),執(zhí)行完后退出該語句。如條件表達式不滿足,且有ELSE語句和語句序列2,則執(zhí)行語句序列2。其程序流程圖如圖55所示。圖55 分支結(jié)構(gòu)程序流程圖圖5.6 主控模塊程序流程圖在一個分支控制語句塊中可以嵌套另一個IFENDIF語句塊?!纠?.7】主控模塊的程序程序流程圖如圖5.6所示。編寫程序清單如下: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.報表打印”+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 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í)行該語句時,系統(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.明細報表打印”+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結(jié)構(gòu)程序流程圖從上面兩段程序可見,對于同一個問題,用DO CASE ENDCASE 語句比IFENDIF語句要簡潔了并且邏輯關(guān)系清晰,因此不容易出錯。 在分情況語句中也可嵌入分支條件語句及分情況。它本身也可嵌入到分支條件語句中去使用。在對數(shù)據(jù)表中數(shù)據(jù)時,常常每條記錄被處理的過程是一樣的,處理語句也就大體相同,如果表中有多少記錄就寫多少條語句是十分困難的,為避免重復書寫,可使用循環(huán)。3DO WHILEENDDO意義:循環(huán)語句,可使多次重復執(zhí)行同一組語句。格式:DO WHILE條件表達式語句序列LOOPEXITENDDO其中“DO WHILE條件表達式”語句稱為循環(huán)起始語句,“ENDDO”語句稱為循環(huán)結(jié)束語句,進入此命令時首先檢查條件表達式的值是否為真(.T.)。如果是真,則執(zhí)行語句序列,然后再判斷條件表達式的結(jié)果,如仍為真,則繼續(xù)下去。如果為假(.F.)則退出循環(huán),執(zhí)行ENDDO后面的語句。如果進入本命令一開始,條件表達式的值為假,則語句序列一次也不執(zhí)行, 就直接轉(zhuǎn)入執(zhí)行ENDDO后面的語句。其中LOOP意義為結(jié)束本次循環(huán),返回循環(huán)體開始。EXIT意義為結(jié)束循環(huán),轉(zhuǎn)入執(zhí)行ENDDO后面的語句。LOOP語句和EXIT語句一般用在分支條件語句中,因而語句格式為:DO WHILE 條件表達式1語句序列1IF條件表達式2LOOPELSE語句序列2ENDIFIF條件表達式3EXITELSE語句序列3ENDIFENDDO其程序流程圖如圖58所示。在使用時必須保證經(jīng)有限次循環(huán)后條件表達式1應變?yōu)榧倩驐l件表達式3的值應變?yōu)檎?,使退出循環(huán)。否則就可能成為死循環(huán)。在條件表達式中的變量稱循環(huán)變量, 在數(shù)據(jù)庫中循環(huán)變量可能是內(nèi)存變量, 也可能是表中的指針。必須注意在每次循環(huán)過后,循環(huán)變量的值都要改變并且是向最終使條件表達式1的值為假或條件表達式3的值變真的方向變化,否則就無法滿足前述退出條件。在VFP中有兩類特殊用法。(1)循環(huán)變量是指針。 該用法中有兩種結(jié)構(gòu)指針首先指向第一條的DO WHILE結(jié)構(gòu)如圖59所示。指向滿足條件記錄的第一條的DO WHILE結(jié)構(gòu)如圖510所示。圖58 DO WHILEENDDO結(jié)構(gòu)程序流程圖圖59 指針做循環(huán)變量開始指向第一條時的DO WHILE結(jié)構(gòu)流程圖圖510 指針做循環(huán)變量開始指向滿足條件記錄的第一條時的DO WHILE結(jié)構(gòu)流程圖格式1:圖59實現(xiàn)的語句。USE(表名)SELECT工作區(qū)別名 GO TOPDO WHILE NOT EOF()語句序列SKIPENDDO在本格式中,循環(huán)變量是表中指針,首先讓指針指向表的第一條記錄,如果不是文件尾,則執(zhí)行語句序列之后讓指針下移一條,再返回判斷指針是否指向文件尾。這樣一直繼續(xù)下去直到指針指到最后一條記錄的后面,循環(huán)結(jié)束。【例58】在學生表中有少數(shù)學生更換了班級,現(xiàn)要求在屏幕上一屏一屏地顯示每個學生的數(shù)據(jù),并提問是否修改班級名稱, 如回答“Y”,則提供修改框。SET TALK OFFUSE學生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級學生,顯示其姓名則:LOCATE FOR “99”班級DO WHILE NOT EOF()?姓名CONTINUEENDDO(2)當于DO UNTIL的循環(huán)結(jié)構(gòu)。有些循環(huán)要在執(zhí)行部分語句之后再根據(jù)一個條件表達式判斷是否結(jié)束,此時循環(huán)條件可用常量.T.,見圖511所示。圖511 DO UNTIL結(jié)構(gòu)程序流程圖語句格式:DO WHILE .T.語句序列IF 條件表達式EXITENDIFENDDO【例59】求編寫學生表錄入新數(shù)據(jù)的程序,每次錄入一條記錄,之后提問是否繼續(xù),如回答不是“Y”,就停止錄入。SET TALK OFFUSE 學生KEY“ ”DO WHILE .T.APPEND BLANK3,10 SAY“姓名:” GET 姓名5,10 SAY“班級:” GET 班級7,10 SAY“出生日期:”GET 出生日期READ9,10 SAY“否繼續(xù)?YN?” GET KEYREADIF UPPER(KEY)“Y”EXITENDIFENDDOUSESET TALK ON此語句由用戶輸入Y或N控制程序結(jié)束。上述第一、二兩種格式可以用等價的SCAN循環(huán)取代。4SCANENDSCAN循環(huán)語句意義:在數(shù)據(jù)表中循環(huán)檢查或處理一條條記錄。命令格式一:SCAN語句序列ENDSCAN此句等價于前述格式1的語句。命令格式二:SCAN FOR條件表達式語句序列ENDSCAN本語序等價于前述格式2的語句。有一些循環(huán)次數(shù)是一定的,或者循環(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)結(jié)柬。如增量為負,則每循環(huán)一次,循環(huán)變量均減小,減少到小于終了值時循環(huán)結(jié)束。例58中修改班級名的程序也可寫為: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個學生的總分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(2),M(3),M(4)SET TALK ON【例511】設有商品表,結(jié)構(gòu)為商品(商品代碼,品名,單價,數(shù)量,金額),欲對其中部分商品調(diào)動單價,為此建立一個調(diào)價表,其結(jié)構(gòu)為調(diào)價(商品代碼,原單價,新單價),編寫程序用調(diào)價表中新單價數(shù)據(jù)修改商品表中單價與金額。SET TALK OFFSELE 1USE商品SELE 2USE 調(diào)價SCAN代碼1=商品代碼SELE 1LOCATE FOR商品代碼=代碼1IF NOT EOF()REPL 單價 WITH 調(diào)價.新單價、金額 WITH 單價*數(shù)量ENDIFSELE 2ENDSCANCLOSE ALLSET TALK ON 本例中設置二個工作區(qū),分別打開二個表, 首先在工作區(qū)2上利用SCAN循環(huán)遍歷調(diào)價所有記錄,對每一記錄在商品表中查找有無商品代碼標識相同的記錄,如有,則用新單價更新原單價,并修改金額。由于在非當前工作區(qū)中不能移動指針,不能查詢,不能修改數(shù)據(jù),因而在轉(zhuǎn)到商品表中查詢之前要將商品表所在工作區(qū)1設為當前工作區(qū),更新以后又轉(zhuǎn)到工作區(qū)2將調(diào)價表中指針指向下一條,再準備按第二個品種調(diào)價。在當前工作區(qū)中可讀取非當前工作區(qū)中數(shù)據(jù), 如本例中用 “調(diào)價單價”這樣的格式從工作區(qū)2的調(diào)價表中讀取其中指針所指記錄的單價, 這種方式稱為聯(lián)訪。如此對多個數(shù)據(jù)表操作十分麻煩,可采用預先建立關(guān)聯(lián)的辦法,在一個表中移動指針時,第二個表中指針按關(guān)鍵字保持一致的方式跟著移動。三.其他常用命令1SET RELATION意義:將當前數(shù)據(jù)庫和“別名”工作區(qū)中的表文件關(guān)聯(lián)在一起,當前表文件稱為主動表文件,“別名”工作區(qū)中的表文件稱為被關(guān)聯(lián)表文件,每當主動表文件中指針移動時,被關(guān)聯(lián)表文件中指針也相應移動。命令格式:SET RELATION TO 字段名 INTO 別名ADDITIVE命令中選用的“字段名”必須同時包含在兩個表文件中,且被關(guān)聯(lián)表必須以該字段建立索引文件并打開為主索引文件。每當主動表文件中記錄指針移動時,被關(guān)聯(lián)表中記錄指針根據(jù)主索引文件指引指向與之相匹配(索引字段值等于主動表當前記錄該字段的值)的第一條記錄。若找不到匹配記錄,則指針將指向文件尾,EOF()為真(.T.)如命令無ADDITIVE選項,在建立關(guān)聯(lián)時將取消當前數(shù)據(jù)庫與其他數(shù)據(jù)庫的任何關(guān)聯(lián),僅保留一個新關(guān)聯(lián)。而選了此選項,則原有關(guān)聯(lián)均保留,增加一個新關(guān)聯(lián)。要注意的是,如果對應主動表中某記錄在被關(guān)聯(lián)表中找不到匹配記錄時,主動表中數(shù)據(jù)被改為0。例511中如果調(diào)價表中商品包括商品表中全部商品,利用此命令程序可修改為:USE 調(diào)價第一個打開表默認置于1號工作區(qū)INDEX ON 商品代碼 TO INDEX1SELECT 2USE 商品SET RELATION TO 商品代碼 INTO 調(diào)價SCANREPLACE 單價 WITH 調(diào)價.新單價,金額 WITH 單價*數(shù)量ENDSCAN本例中關(guān)于被關(guān)聯(lián)表中字段名也可用“區(qū)號字段名”形式對之訪問。不過使用本程序要求兩表中內(nèi)容必須匹配, 例如例511中如商品只有部分調(diào)價,在調(diào)價表中只有商品表中部分商品,那么該程序?qū)⑹股唐繁碇胁徽{(diào)價商品單價均變?yōu)?。一般在涉及利用一個表數(shù)據(jù)修改另一個表數(shù)據(jù)時,我們以采用SQL語言中修改命令UPDATE比較好。也可采用全聯(lián)結(jié)視圖再對之操作?!?RUN 意義:在VFP環(huán)境中調(diào)用DOS命令。命令格式:RUN DOS命令或!DOS命令3LOAD命令意義:把匯編或C語言編寫并編譯的二進制文件調(diào)入內(nèi)存命令。命令格式:LOAD 二進制文件名4CALL命令意義:執(zhí)行由LOAD裝入內(nèi)存的二進制代碼文件命令。命令格式:CALL 文件名WITH 字符表達式/內(nèi)存變量其中WITH選項用于向調(diào)用程序傳遞參數(shù)。5ON ERROR意義:當出現(xiàn)錯誤時執(zhí)行的命令。命令格式:ON ERROR 命令其中命令可為任何VFP語句。在程序調(diào)試過程中, 可在程序中加入此命令,并設計命令處理程序,在其中可加入顯示ERROR(),MESSAGE(),LINENO()和PROGRAM()的語句, 將錯誤代碼、錯誤消息、錯誤行號及程序名稱顯示出來,以幫助發(fā)現(xiàn)錯誤所在,方便糾正錯誤。在應用程序中,有時可能出現(xiàn)一些不影響最終結(jié)果的錯誤,我們也可在程序中加入這類錯誤陷阱,所指定的命令可以是一條無效語句,不讓錯誤影響程序運行?!纠?12】程序出錯時的處理程序及調(diào)用方法主程序:*-Set system enviroment-clos datacleaon erro do showerro with prog(),lineno(),erro(),mess()&調(diào)用出錯程序showerro語句序列程序出錯時的處理程序:para m_prog,m_line,m_num,m_mess&傳遞參數(shù)priv m_odcons&定義局部變量m_odcons=set(cons)set cons offdefi wind erro_win from 0,0 to 14,49 ;titl 系統(tǒng)錯誤 ;colo gr+/b;shad doub;in desktopmove wind erro_win centacti wind erro_win1,4 say 錯誤警告 colo gr+/b3,8 say 當前程序無法繼續(xù),按將返回主調(diào)! colo w+/b4,4 say 程序建議:稍后再試或與軟件供應商聯(lián)系. colo w+/b6,4 say 出錯程序:+m_prog colo w+/b 7,4 say 出 錯 行:+allt(str(m_line) colo w+/b8,4 say 錯誤代碼:+allt(str(m_num) colo w+/b9,4 say 錯誤內(nèi)容:+iif(len(m_mess)=28,m_mess,subs(m_mess,1,28)+.) colo w+/b2,3 to 2,wcol()-4 colo w/b5,3 to 10,wcol()-4 colo w/b=opendbf(errosave,errosave,shar)&存放錯誤情況inse into ;dbferrosave (errodate,errotime,erroprog,erroline,errocode,erromess);valu (date(),time(),m_prog,m_line,m_num,m_mess)use in errosavem_readkey=20m_cnt=1do while m_readkey=20if mod(m_cnt,2)=01,6 say 錯誤警告 colo b/belse1,6 say 錯誤警告 colo gr+/bendiwrow()-2,wcol()/2-2 get mb_isee func *th 確定 defa 1 &colo sche 13read cycl modal time 0.4m_readkey=readkey()m_cnt=m_cnt+1enddset cons &m_odconsclea windclose dataclearetu to master&返回主程序6. 顯示文件目錄命令格式:DIR功能:顯示指定的磁盤驅(qū)動器上的文件名說明:中可帶通配符;命令中不指定文件名,則僅僅顯示指定目錄下的數(shù)據(jù)表文件名。7.清屏命令CLEAR格式:CLEAR功能:清除屏幕8.總清命令CLEARALL格式:CLEARALL功能:關(guān)閉所有打開的數(shù)據(jù)表文件、索引文件和其他各種文件,清除已有的內(nèi)存變量9.SET TALK ON/OFF四. 程序設計基礎程序的概念命令執(zhí)行方式:通過命令菜單或直接在命令窗口輸命令來執(zhí)行,執(zhí)行的結(jié)果顯示在屏幕上。程序執(zhí)行方式:以程序的方式來執(zhí)行。程序是能夠完成一定任務的命令的有序集合,這組命令存放在程序文件(.prg)中,執(zhí)行程序時,系統(tǒng)按一定的次序自動執(zhí)行包含在程序文件中的命令。程序的特點可以利用編輯器,方便地輸入、修改和保存程序??梢岳枚喾N方式、多次運行程序??梢栽谝粋€程序中調(diào)用另一個程序。程序的基本要求正確性,能實現(xiàn)算法的各個步驟,邏輯上正確,對輸入產(chǎn)生的錯誤有檢測措施。通用性,不能只解決一個問題,還考慮解決一類問題。高效率性,編寫執(zhí)行時間短,占用存儲空間少的程序??删S護性,程序應易讀、易懂、易修改。安全性,必須確保安全、可靠。程序文件的建立在項目管理器中和菜單中建立用命令方式:modify command 程序的執(zhí)行從“ 程序” 菜單中選擇“ 運行” 命令方式:do 文件名中如果沒有指定擴展名,系統(tǒng)將按下列順序?qū)ふ页绦蛭募?zhí)行: .exe-.app( 應用程序)-.fxp( 編譯程序)-.prg當程序文件被執(zhí)行時,文件中包含的命令將被依次執(zhí)行,直到所有的命令被執(zhí)行完畢中,或者執(zhí)行到以下命令:cancel ( 終止程序執(zhí)行,返回命令窗口) do( 轉(zhuǎn)去執(zhí)行另一個程序) return( 結(jié)束當前程序,返回到上級程序,若無上級程序則返回到命令窗口) quit( 退出VFP 系統(tǒng),返回到操作系統(tǒng))程序結(jié)構(gòu)(1)每個程序都必須有1個文件名,文件名由字符、數(shù)字或下劃線組成,第一個字符必須是字母或漢字,程序擴展名為.PRG(2)程序由若干行數(shù)據(jù)庫命令組成,每行最多寫2048個字符,1行只能寫1條命令,若把一個命令寫成若干行,需在該命令的第1行及中間各行的行尾寫“;”號,但最后一行不寫。(3)注釋行由“”開頭,用以說明程序的名稱、功能及其他需要說明的問題,“”是注釋命令,是非執(zhí)行語句,可以寫在程序任一位置。(4)以“set”開頭的命令為環(huán)境設置命令,一般出現(xiàn)在可執(zhí)行語句的前面。(5)每行程序的后部可以寫由“”號引導的注釋。(6)“return”命令是返回命令,表示程序結(jié)束。編寫程序的步驟舉例:編寫一個簡單的程序:給出一個整數(shù),判斷是奇數(shù)還是偶數(shù)。(1)分析任務,確定方法;(2)分解任務,

溫馨提示

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

最新文檔

評論

0/150

提交評論