第一篇:VFP命令、函數(shù)及程序語句大全解讀
VFP命令、函數(shù)及程序語句大全(1 學(xué)過VFP(Microsoft Visual FoxPro的朋友都知道它是微軟公司開發(fā)的數(shù)據(jù)庫管理系統(tǒng)。它
經(jīng)歷了從dBASE、FoxBASE、FoxPro直到VFP的發(fā)展過程。本文便以VFP 6.0為例介紹它的命令、函數(shù)
及程序語句,為學(xué)習(xí)VFP的朋友提供必要的學(xué)習(xí)參考,也為已經(jīng)精通VFP的朋友提供復(fù)習(xí)的好機(jī)會。
一、主要命令:
1、CREATE 作用:建立一個新的表。
格式:CREATE [<文件>|?](注意,命令字符可取前面四個字符,后面可省略不寫,即CREA,下
同;中括號表示其中的參數(shù)是可選的;|管道符號表示兩個參數(shù)只能選擇一個,不能同時選擇,下
同。
說明:文件指建立以.dbf為擴(kuò)展名的VFP數(shù)據(jù)庫文件,在命令后面加上一個問號表示系統(tǒng)會彈出
對話框,要求用戶輸入想要建立的表名。在命令中不加文件名或問號系統(tǒng)也會彈出對話框,要求用
戶輸入想要建立的表名。
2、MODIFY STRUCTURE
作用:顯示表文件結(jié)構(gòu),并允許修改此表的結(jié)構(gòu)。格式:MODIFY STRUCTURE 說明:只有在用USE命令打開表文件以后,才能顯示或修改表文件的結(jié)構(gòu)。
3、APPEND 作用:在當(dāng)前表的尾部(無論表中有無記錄追加記錄(在當(dāng)前表指當(dāng)前正使用的表。
格式:APPEND [BLANK] 說明:在APPEND命令后面加上BLANK參數(shù)表示在當(dāng)前表的尾部添加一條空白記錄。無BLANK 參數(shù)
時,表示在當(dāng)前表的尾部添加一條記錄并要求用戶輸入相應(yīng)的字段內(nèi)容。
4、INSERT 作用:在表文件中間插入一個新記錄。格式:INSERT [BEFORE] [BLANK] 說明:INSERT 在當(dāng)前記錄后插入一記錄;INSERT BEFORE 在當(dāng)前記錄前插入一記錄;INSERT BEFORE BLANK 在當(dāng)前記錄前插入一空記錄。INSERT-SQL命令追加記錄
INSERT INTO 表名[(字段1[,字段2…]];VALUES(表達(dá)式1[,表達(dá)式2…]
例:INSERT INTO XS(XH,XM,XB,XIMING VALUES(“950106”,“高山”,“男”,“”
5、UPDATE 作用:修改數(shù)據(jù)
update <表名> set <字段1=表達(dá)式1>,<字段2=表達(dá)式2...> where <條件> 例: update <表名> set <字段1,字段2...>=<表達(dá)式1,表達(dá)式2...> where <條件>
6、BROWSE 作用:主要用于打開瀏覽窗口,查閱表文件并同時進(jìn)行修改。格式:BROWSE 作用:打開一個“瀏覽”窗口,供用戶瀏覽或修改記錄。格式:BROWSE [FIELDS <字段名表>]
7、USE 作用:打開和關(guān)閉表文件。格式:USE [<文件名>] USE 說明:前一個命令用來打開<文件名>指定的表文件,該表如有備注型字段,則同時打開相應(yīng)的
備注文件(.fpt文件;后一個命令關(guān)閉當(dāng)前打開的表文件。
8、LIST和DISPLAY
作用:顯示表(.dbf的內(nèi)容、結(jié)構(gòu)或狀態(tài)。
格式:LIST|DISPLAY [OFF] [<范圍>] [FIELDS] <表達(dá)式表> [WHILE <條件>] [FOR <條件>] [TO PRINT|TO FILE <文件>] LIST|DISPLAY STRUCTURE TO PRINT|TO FILE <文件> LIST|DISPLAY STATUS [TO PRINT|TO FILE <文件>] 說明:命令帶OFF參數(shù)表示不顯示記錄號,范圍指定對哪些記錄進(jìn)行操作,范圍包括:RECORD n 第幾號記錄、NEXT n 當(dāng)前記錄開始的幾個記錄、REST 自當(dāng)前記錄開始至文件末尾的所有記錄、ALL 所有的記錄。不選范圍則隱含范圍為ALL;FIELDS后跟字段名,字段名與字段名之間用逗號分
隔。WHILE后跟條件,FOR后面也跟條件,區(qū)別是,WHILE后的條件如果不滿足,便停止查找;FOR后的條件查找所有滿足條件的記錄。TO PRINT和TO FILE <文件>分別表示將顯示結(jié)果在打印機(jī)上打印出
來和將顯示結(jié)果輸出到文件。
格式中,下面兩個命令分別為顯示表結(jié)構(gòu)(STRUCTURE和工作狀態(tài)(STATUS。注:LIST命令一次連續(xù)顯示完所有記錄內(nèi)容。DISPLAY命令在顯示記錄滿屏后,要求用戶按
任意鍵繼續(xù)顯示。如果LIST與DISPLAY都無任何選擇項時,LIST顯示文件的全部記錄, DISPLAY僅顯示當(dāng)前記錄。
9、記錄的定位
作用:用記錄指針(POINTER定位記錄。格式: 1GO[TO] RECORD n|TOP|BOTTOM 命令定位 GO [RECORD] N GO BOTTOM GO TOP 2n 3SKIP [+|-] n 說明:第一個命令又叫絕對定位,其中,RECORD n定位到n號記錄,TOP定位到第1個記錄, BOTTOM定位到最后一個記錄。第二個命令定位到第n個記錄,n是一個數(shù)值。第三個命令又叫相對定
位,它以當(dāng)前記錄為基準(zhǔn)前移(-或后移(+n個記錄,不選任選項,則默認(rèn)記錄指針后移一個記
錄。
LOCATE [<范圍>] FOR <表達(dá)式> 范圍: ALL NEXT N RECORD N
REST
10、CHANGE和EDIT 作用:顯示要編輯或修改的字段。
格式:CHANGE|EDIT [<范圍>] [FIELDS <字段名表>] [WHILE <條件>] [FOR <條件>]
11、REPLACE 作用:用表達(dá)式的值代替命令中與之相對應(yīng)的字段的內(nèi)容。
格式:REPLACE [<范圍>] <字段1> WITH <表達(dá)式1>[,<字段2> WITH <表達(dá)式2>] [FOR <條件> ] [WHILE<條件>] 例:USE B2-1 REPLACE ALL 工資 WITH 工資+200 FOR 工資<1000 BROW
12、DELETE、PACK、ZAP和RECALL 作用:分別是給要刪除的記錄作刪除標(biāo)記、徹底刪除、刪除所有記錄和取消被選中的表記錄的
刪除標(biāo)志。
格式:DELETE [<范圍>] [WHILE<條件>] [FOR <條件>](特例:DELETE FILE FILENAME.DBF,該命令刪除指定的表文件
PACK
ZAP RECALL [<范圍>] [FOR <條件>] [WHILE<條件>]
13、SORT和INDEX 1SORT 作用:是建立一個其記錄以新的物理順序排列的新表文件,原文件不變.格式:SORT TO <文件名> ON <字段名1> [/A] [/C] [/D][,<字段名2> [/A] [/C] [/D>...[ASCENDING|DESCENDING] [<范圍>] [FOR <條件>] [WHILE<條件>] [FIELDS<字段表>] 2INDEX 作用: 對當(dāng)前表根據(jù)關(guān)鍵字表達(dá)式的值從小到大排列,并存入TO后指定的索引文件名的文件或復(fù)合索引文件的一個標(biāo)識中。
格式: INDEX ON <關(guān)鍵字表達(dá)式> TO <文件名> INDEX ON <關(guān)鍵字表達(dá)式> TAG <標(biāo)識名> [OF <文件名>] [FOR <條件>] 說明:第1個命令中,/A按字段名升序排序,/D按字段名降序排序,/C忽略大小寫,針對字符型
關(guān)鍵字而言,ASCENDING和DESCENDING分別表示升序和降序。第1個命令建立.dbf表文件,第2個命令建立.idx單一索引文件,第3個命令建立.cdx復(fù)合索引文件(Compound Index。
刪除索引
DELETE TAG ALL [OF 復(fù)合索引文件名]
DELETE TAG 索引標(biāo)識1 [OF 復(fù)合索引文件名1][,索引標(biāo)識2 [OF 復(fù)合索引文件名2>…
14、USE <表文件名> INDEX <索引文件名表>、SET INDEX TO和SET ORDER TO 作用:分別是打開表文件的同時打開索引文件、打開索引文件和改變主索引。并確定第一個索引文件為主控索引文件.(當(dāng)前起作用的索引文件稱為主控索引文件, 當(dāng)前起作用的索引標(biāo)識稱為主控索引
格式:USE <表文件名> INDEX <索引文件名表> SET INDEX TO [<索引文件名表>] 作用:打開當(dāng)前表的一個或多個索引文件并確定第一個索引文件為主控索引文件,該命令用于單索引文件.格式:SET INDEX TO [<索引文件表>] [ADDITIVE] 說明:(1[<索引文件表>]中第一個索引文件為主控索引文件.(2若缺省ADDITIVE選項,則在用本命令打開索引文件時,除結(jié)構(gòu)復(fù)合索引文件以外的索引文件均被關(guān)閉
SET ORDER TO [<數(shù)值表達(dá)式>]|[<單索引文件名>]|[TAG] <索引標(biāo)識> [ASCENDING|DESCENDING>(特例:重新索引命令:REINDEX 作用:對于打開表時自動打開的復(fù)合索引文件確定主索引,也能確定主索引文件.(1 數(shù)值表達(dá)式表示已打開的索引的序號.系統(tǒng)先為單索引文件編號,故結(jié)構(gòu)復(fù)合索引文件的序號比單索引文件大.(2 SET ORDER TO 或 SET ORDER TO 0命令取消主索引和主索引文件,表中記錄將按物理記錄輸出.15、CLOSE INDEX 或 SET INDEX TO 單獨關(guān)閉索引文件,并不關(guān)閉與之相關(guān)的表文件
16、FIND、SEEK和LOCATE及CONTINUE 作用:前兩個命令FIND和SEEK是在一個已經(jīng)建立了索引文件的表中,定位到關(guān)鍵字中的內(nèi)容與命
令行中字符串相同的第一個記錄。后一個命令在用USE打開表文件以后,直接查詢表中字段內(nèi)容。
格式:FIND <“字符串”>|<字符串> SEEK <表達(dá)式>(表達(dá)式的數(shù)據(jù)類型可為字符型、數(shù)字型、日期型和邏輯型。LOCATE [<范圍>] [FOR <條件>] [WHILE<條件>] CONTINUE 說明:FIND命令與SEEK命令的區(qū)別是前者后跟字符串,而后者后跟表達(dá)式。在用LOCATE命令找到
一個匹配記錄后,可用CONTINUE命令搜索表的剩余部分來尋找其他匹配的記錄。
例:SET ORDER TO NL ?確定索引關(guān)鍵字為NL(年齡 FIND 28 ?找年齡字段為“28“的記錄 DISPLAY ?顯示當(dāng)前記錄
SET ORDER TO NL ?確定索引關(guān)鍵字為NL(年齡 SEEK “28”?找年齡字段為“28“的記錄
DISPLAY 17.從磁盤上刪除任意文件:(1ERASE filename|?(2DELETE FILE [filename|?]
18、COUNT 作用:統(tǒng)計當(dāng)前表文件中符合條件的記錄數(shù)。
格式:COUNT [<范圍>] [FOR <條件>] [WHILE<條件>] [TO <內(nèi)存變量名>] 說明:內(nèi)存變量名可用除參數(shù)外的任意字符。
19、SUM 作用:對當(dāng)前表中選中記錄的全部或指定的數(shù)值字段或由指定字段組成的數(shù)值表達(dá)式累加求和。
格式:SUM [<范圍>] [數(shù)值<表達(dá)式>] [TO <內(nèi)存變量名表>] [FOR <條件>] [WHILE<條件>] 20、AVERAGE 作用:對當(dāng)前表中選中記錄的全部或部分?jǐn)?shù)值型字段及其組成的表達(dá)式求平均值并顯示。
格式:AVERAGE [<范圍>] [數(shù)值<表達(dá)式>] [TO <內(nèi)存變量名表>] [FOR <條件>] [WHILE<條件>]
21、TOTAL 作用:分類匯總命令,按<表達(dá)式>做過索引或排序的表文件的數(shù)字型字段進(jìn)行分類匯總。它把與<表達(dá)式>值相同的所有記錄中的數(shù)字字段的值分別進(jìn)行求和,并各
自作為一條記錄存放在由文件指定的文件中去。在新生成的記錄中,還將包括與<表達(dá)式>值相同的所有記錄中的首項記錄的其他字段內(nèi)容。
格式:TOTAL TO <文件名> ON <表達(dá)式>[FIELDS <數(shù)值型字段名表>][<范圍>][FOR <邏輯表達(dá)式1>][WHILE <邏輯表達(dá)式2>] 例:USE B2-1 INDEX ON 職稱 TO ZC TATOL ON 職稱 TO B2-1T FILEDS 工資 22.APPEND FROM 作用:從其他文件向表文件添加數(shù)據(jù)。數(shù)據(jù)來源文件既可以是表文件,也可是文本文件或其他符合規(guī)定的文件。
格式:APPEND FROM <文件名>|?[FIELDS <字段名表>][FOR <邏輯表達(dá)式>] FIELDS <字段名表>和FOR <邏輯表達(dá)式>,用于源文件為表文件時,指定追加記錄的字段和條件。在字段名表和邏輯表達(dá)式中的字段名,必須是在來源和目的兩個文件中公有的,共注意寬度和類型匹配。實際應(yīng)用中,數(shù)據(jù)來源文件常為表文件(.DBF和ASCII碼文本文件(.TXT 對于文本文件又有標(biāo)準(zhǔn)格式(SDF和通用格式(DELIMITED之分.例: USE B2-1 APPE FROM S3-1.TXT SDF BROWSE 23.COPY(選擇表的部分內(nèi)容生成一個新表
作用:把打開的表文件結(jié)構(gòu)及數(shù)據(jù)復(fù)制成由<文件名>所指定的并符合規(guī)定要求的文件。如果默認(rèn)全部選擇項和文件名的擴(kuò)展名,則結(jié)構(gòu)及全部數(shù)據(jù)都被復(fù)制,且其文件擴(kuò)展名由系統(tǒng)規(guī)定為“.DBF”。
格式:COPY TO<文件名> [FIELDS <字段名表>][<范圍>][FOR <邏輯表達(dá)式1>][WHILE <邏輯表達(dá)式2>] 格式中的或用來為新表建立一個與原表相同的結(jié)構(gòu)索引.例1: COPY TO B3-2 COPY TO S3-2.TXT SDF 例2: USE RS COPY TO RS3 FIELDS 姓名,基本工資,獎金 USE RS3 LIST 24.COPY FILE復(fù)制數(shù)據(jù)整表:(可用于復(fù)制任何類型文件 COPY FILE 原文件名 TO 目標(biāo)文件名
注:復(fù)制表時,還應(yīng)當(dāng)復(fù)制和它相配的備注文件(.FPT,如有備注字段和結(jié)構(gòu)復(fù)合索引文件。
當(dāng)前表應(yīng)關(guān)閉。(如果已打開表:COPY TO 新文件名 例:將RS.DBF復(fù)制為RS1.DBF COPY FILE RS.DBF TO RS1.DBF 或USE RS
COPY TO RS1 USE RS1 LIST 25.COPY STRUCTURE(只復(fù)制結(jié)構(gòu)不復(fù)制數(shù)據(jù)
作用:表文件結(jié)構(gòu)復(fù)制,生成一個指定文件名和包括指定字段的表文件結(jié)構(gòu);如有CDX或PRODUCTION選擇項還將為新表建立一個與源表相同的結(jié)構(gòu)索引.格式: COPY STRUCTURE TO<文件名> [FIELDS <字段名表>] 例: COPY STRUCTURE TO B3-3 FIELDS 編號,姓名,何時工作,職稱 26.copy to建立結(jié)構(gòu)擴(kuò)展文件
作用:把已打開的表文件的結(jié)構(gòu)作為數(shù)據(jù)記錄復(fù)制到由<文件名>指定的庫文件中去.格式: COPY TO<文件名> STRUCTURE EXTENDED 例: USE B3-3 COPY TO B3-4 STRUCTURE EXTENDED USE B3-4 BROW 該命令可以用于測試表文件結(jié)構(gòu),也可以用于順序方式建立庫文件結(jié)構(gòu).新庫文件的結(jié)構(gòu)是一個由系統(tǒng)規(guī)定的標(biāo)準(zhǔn)結(jié)構(gòu),它由4個字段構(gòu)成: FIELD_NAME 字段名
FIELD_TYPE 字段類型 FIELD_LEN 字段寬度 FIELD_DEC 小數(shù)位數(shù) 27.常用命令: 庫表
建立數(shù)據(jù)庫: CREATE DATABASE 庫文件名.DBC 建立表: CREATE 表文件名.DBF CREATE TABLE/DBF 表名(各個字段屬性 打開數(shù)據(jù): OPEN DATABASE 庫文件名 打開表: USE 表文件名
使用非前庫的表:USE 庫名!表名 打開索引表:USE 表名 INDEX 索引名 顯示庫信息:DISP DATABASE [TO PRINTER] 顯示記錄:LIST(快速查看 BROWSE(分屏瀏覽可修改 DISP(顯示當(dāng)前記錄
關(guān)閉數(shù)據(jù)庫:CLOSE ALL(關(guān)閉所有庫、表、索引 關(guān)閉表: USE
CLOSE DATABASES(關(guān)閉當(dāng)前庫、表 CLOSE TABLES(關(guān)閉當(dāng)前表,不關(guān)庫 CLOSE INDEXES(關(guān)閉當(dāng)前索引
修改庫:MODI DATA 庫名 [NOWAIT] [NOEDIT] 修改表結(jié)構(gòu):MODI STRU ALTER TABLE 表名 ADD 字段名 ALTER TABLE 表名 ALTER 字段名 ALTER TABLE 表名 DROP 字段名 添加表:ADD TABLE 表名追加記錄: INSERT INTO 表名(字段名列表 VALUES(對應(yīng)數(shù)值 APPEND APPEND FROM 源文件 移去表:REMOVE TABLE 表名
刪除記錄:DELETE ALL FOR [條件](邏輯刪除 PACK(物理刪除 ZAP(全部徹底刪除
刪除庫:DELETE DATABASE 庫名(先關(guān)閉庫 刪除表:DELETE FILE 表名(先關(guān)閉表 VFP命令、函數(shù)及程序語句大全(2
二、常用函數(shù)
1、數(shù)學(xué)函數(shù) 函數(shù)用途
ABS(<數(shù)值表達(dá)式>絕對值,|x| CEILING(<數(shù)值表達(dá)式> >=自變量的最小整數(shù) EXP(<數(shù)值表達(dá)式>對基E的冪,e=2.71828 FLOOR(<數(shù)值表達(dá)式> <=自變量的最大整數(shù) INT(<數(shù)值表達(dá)式>取整(舍尾自變量
LOG(<數(shù)值表達(dá)式>自變量的自然對數(shù),ln x LOG10(<數(shù)值表達(dá)式>自變量的普通對數(shù),lg x MAX(<表達(dá)式1>,<表達(dá)式2>兩個值的最大值 MIN(<表達(dá)式1>,<表達(dá)式2>兩個值的最小值 MOD(<數(shù)值表達(dá)式1>,<數(shù)值表達(dá)式2>求余數(shù) RAND([<數(shù)值表達(dá)式1>]返回偽隨機(jī)數(shù)
ROUND(<數(shù)值表達(dá)式1>,<數(shù)值表達(dá)式2>四舍五入第一個自變量 SIGN(<數(shù)值表達(dá)式>自變量的符號 SQRT(<數(shù)值表達(dá)式>平方根(正根
2、字符串操作函數(shù) 函數(shù)用途
&<內(nèi)存變量> 用于代替內(nèi)存變量內(nèi)容
LEN(<字符串表達(dá)式>返回字符串表達(dá)式的字符個數(shù) SPACE(<數(shù)值表達(dá)式>生成空格
SUBSTR(<字符串表達(dá)式>,<數(shù)值表達(dá)式n>[,<數(shù)值表達(dá)式L>]求子字符串,從指定的字符串表達(dá)式第n個開始,總長為L的字符串
LOWER(<字符串表達(dá)式>將字符串字母轉(zhuǎn)換成小寫字母 UPPER(<字符串表達(dá)式>將字符串字母轉(zhuǎn)換成大寫字母 TRIM(<字符串表達(dá)式>刪除字符串尾空格
ASC(<字符串表達(dá)式>返回字符串表達(dá)式最左邊的第一個字符的ASCII碼 CHR(<數(shù)值表達(dá)式>將數(shù)值表達(dá)式轉(zhuǎn)換成字符
AT(<字符串表達(dá)式1>,<字符串表達(dá)式2>[,<數(shù)值表達(dá)式n>] 確定字符串表達(dá)式1在字符串表達(dá)式2中的位置,n為字符串表達(dá)式第幾次出現(xiàn) STR(<數(shù)值表達(dá)式>[,<數(shù)值表達(dá)式L>][,<數(shù)值表達(dá)式n>將數(shù)值轉(zhuǎn)換為字符串,L為數(shù)值表達(dá)式總長,n為小數(shù)位數(shù)
VAL(<字符串表達(dá)式>將數(shù)字字符串轉(zhuǎn)換為數(shù)字 TYPE(<表達(dá)式>檢測表達(dá)式值的數(shù)據(jù)類型 LTRIM(<字符串表達(dá)式>刪除字符串左部空格 RTRIM(<字符串表達(dá)式>刪除字符串右部空格
LEFT(<字符串表達(dá)式>,<數(shù)值表達(dá)式n>取字符串左邊部分字符,n為返回的字符個數(shù)
RIGHT(<字符串表達(dá)式>,<數(shù)值表達(dá)式n>取字符串右邊部分字符,n從右邊截取字符個數(shù)
3、表(.dbf操作函數(shù)
函數(shù)用途
BOF([<工作區(qū)號或別名>]查表文件開始函數(shù) EOF([<工作區(qū)號或別名>]表文件結(jié)尾測試函數(shù)
RECNO([<工作區(qū)號或別名>]測試當(dāng)前或指定工作區(qū)表的當(dāng)前記錄號 DELETED([<工作區(qū)號或別名>]記錄刪除測試函數(shù) FILE(<“字符串”>測試文件是否存在函數(shù) DBF([<工作區(qū)號或別名>]檢測表的文件名函數(shù)
4、日期、時間函數(shù) 函數(shù)用途
DATE(查系統(tǒng)當(dāng)前日期函數(shù)
TIME([<數(shù)值表達(dá)式>]查系統(tǒng)當(dāng)前時間函數(shù)
YEAR(<日期型表達(dá)式>|<日期時間型表達(dá)式>由日期查年函數(shù) MONTH(<日期型表達(dá)式>|<日期時間型表達(dá)式>從日期查月份函數(shù) CMONTH(<日期型表達(dá)式>|<日期時間型表達(dá)式>由日期查月份名函數(shù) DAY(<日期型表達(dá)式>|<日期時間型表達(dá)式>從日期查當(dāng)月的日函數(shù)
DOW(<日期型表達(dá)式>|<日期時間型表達(dá)式>[,<數(shù)值表達(dá)式>]由日期查星期函數(shù)
CDOW(<日期型表達(dá)式>|<日期時間型表達(dá)式>從日期查星期名函數(shù) DTOC(<日期型表達(dá)式>|<日期時間型表達(dá)式>日期轉(zhuǎn)換為字符函數(shù)
CTOD(<字符串表達(dá)式>字符串轉(zhuǎn)換為日期函數(shù) CTOT(<字符串表達(dá)式>返回日期時間值函數(shù) TTOC(<日期時間型表達(dá)式>返回字符值
5、顯示、打印位置函數(shù) 函數(shù)用途
ROW(判斷光標(biāo)行位置函數(shù) COL(判斷光標(biāo)列位置函數(shù)
INKEY([<數(shù)值表達(dá)式>]檢測用戶所擊鍵對應(yīng)的ASCII碼函數(shù),數(shù)值表達(dá)式以秒為單位等待擊鍵的時間
6、其他函數(shù) 函數(shù)用途
DISKSPACE(返回默認(rèn)磁盤驅(qū)動器中可用字節(jié)數(shù)函數(shù) OS(檢測操作系統(tǒng)名稱的函數(shù) VERSION(返回VFP版本號的函數(shù) VFP命令、函數(shù)及程序語句大全(3
三、主要程序語句
1、條件判斷語句 格式:(1IF <條件> <命令語句組>
ENDIF 說明:如果條件為真,則執(zhí)行命令語句組中的各語句,否則跳過這些命令語句不執(zhí)行, 而執(zhí)行ENDIF后的語句。(2IF <條件> <命令語句組1> ELSE <命令語句組2> ENDIF 說明:如果條件為真,執(zhí)行命令語句組1,否則執(zhí)行命令語句組2。(3IF <條件1> IF <條件2> <命令語句組1> ELSE <命令語句組2> ENDIF...ELSE <命令語句組N>
ENDIF 說明:進(jìn)行多重條件的嵌套選擇。(4DO CASE CASE <條件1> <命令語句組1> CASE <條件2> <命令語句組2> CASE <條件3> <命令語句組3>......CASE <條件N> <命令語句組N> [OTHERWISE] [<命令語句組N+1>] ENDCASE 說明:依次判斷條件,轉(zhuǎn)入條件為真的命令語句組中執(zhí)行。當(dāng)所有條件都不成立時,若有
OTHERWISE項,則執(zhí)行命令語句組N+1,否則執(zhí)行ENDCASE后面的語句。
2、循環(huán)語句
格式:(1DO WHILE <條件> <命令語句組> [LOOP] <命令語句組> [EXIT] <命令語句組> ENDDO 說明:判斷條件是否為真,如為真就重復(fù)執(zhí)行循環(huán)體中的命令語句組,直到條 件為假,結(jié)束循環(huán)。(2)SCAN <命令語句組> ENDSCAN 說明:在一個表中建立一個執(zhí)行命令語句組的循環(huán),并執(zhí)行對每一條記錄的操 作,直到表文件 記錄完為止。
第二篇:VFP常用函數(shù)整理范文
VFP常用函數(shù)大全整理
一.字符及字符串處理函數(shù):字符及字符串處理函數(shù)的處理對象均為字符型數(shù)據(jù),但其返回值類型各異.1.取子串函數(shù):
格式:substr(c,n1,n2)
功能:取字符串C第n1個字符起的n2個字符.返回值類型是字符型.例:取姓名字符串中的姓.store “王小風(fēng)” to xm
?substr(xm,1,2)
結(jié)果為:王
2.刪除空格函數(shù):以下3個函數(shù)可以刪除字符串中的多余空格,3個函數(shù)的返回值均為字符型.trim(字符串):刪除字符串的尾部空格
alltrim(字符串):刪除字符串的前后空格
ltrim(字符串):刪除字符串的前面的空格
例:去掉第一個字符串的尾空格后與第二個字符串連接
store “abcd ” to x
store “efg” to y
?trim(x)+y
abcdefg
3.空格函數(shù):
格式:space(n)
說明:該函數(shù)的功能是產(chǎn)生指定個數(shù)的空格字符串(n用于指定空格個數(shù)).例:定義一個變量dh,其初值為8個空格
store space(8)to dh
4.取左子串函數(shù):
格式:left(c,n)功能:取字符串C左邊n個字符.5.取右子串函數(shù):
格式:right(c,n)
功能:取字符串c右邊的n個字符
例:a=“我是中國人”
?right(a,4)
國人
322 &&隱含四舍五入取整轉(zhuǎn)換為字符型數(shù)據(jù)
?left(a,2)
我
6.empty(c):用于測試字符串C是否為空格.7.求子串位置函數(shù):
格式:At(字符串1,字符串2)
功能:返回字符串1在字符串2的位置
例:?At(“教授”,“副教授”)
8.大小寫轉(zhuǎn)換函數(shù):
格式:
lower(字符串)
upper(字符串)
功能:lower()將字符串中的字母一律變小寫;upper()將字符串中的字母一律變大寫
例:
bl=“FoxBASE”
?lower(bl)+space(2)+upper(bl)
foxbase FOXBASE
9.求字符串長度函數(shù):
格式:len(字符串)
功能:求指定字符串的長度
例:a=“中國人”
?len(a)
二.數(shù)學(xué)運算函數(shù):
1.取整函數(shù):
格式:int(數(shù)值)
功能:取指定數(shù)值的整數(shù)部分.例:取整并顯示結(jié)果
?int(25.69)
2.四舍五入函數(shù):
格式:round(數(shù)值表達(dá)式,小數(shù)位
數(shù))
功能:根據(jù)給出的四舍五入小數(shù)位數(shù),對數(shù)值表達(dá)式的計算結(jié)果做四舍五入處理
例:對下面給出的數(shù)四舍五入并顯示其結(jié)果
?round(3.14159,4),round(2048.9962,0),round(2048.9962,-3)
3.1416 2049 2000
3.求平方根函數(shù):
格式:sqrt(數(shù)值)
?str(321.56,6,2)
321.56
功能:求指定數(shù)值的算術(shù)平方根
例:?sqrt(100)
4.最大值、最小值函數(shù):
格式:
Max(數(shù)值表達(dá)式1,數(shù)值表達(dá)式2)
Min(數(shù)值表達(dá)式1,數(shù)值表達(dá)式2)
功能:返回兩個數(shù)值表達(dá)式中的最大值和最小值
例:
x1=123.456
x2=234.567
?max(x1,x2)
234.567
?min(x1,x2)
123.456
5.求余數(shù)函數(shù):
格式:mod(表達(dá)式1,表達(dá)式2)
功能:求表達(dá)式1對表達(dá)式
2的余數(shù)
例:
?mod(10,3)
6.求指數(shù)、對數(shù)函數(shù):
格式:
exp(數(shù)值表達(dá)式)
log(數(shù)值表達(dá)式)
功能:
(1).exp()計算自然數(shù)e?表達(dá)式的值為指數(shù)的冪
(2).log()計算表達(dá)式值的自然對數(shù),返回lnx的值.例:
x=1
y=exp(x)
?exp(x),log(x)
2.72 1 三.轉(zhuǎn)換函數(shù):
1.數(shù)值轉(zhuǎn)數(shù)字字符串函數(shù):
格式:str(n,n1,n2)
功能:將數(shù)值n轉(zhuǎn)換為字符串,n1為總長度,n2為小數(shù)位
例:?str(321.56)
2.字符轉(zhuǎn)數(shù)值函數(shù):
格式:val(s)
功能:將數(shù)字字符串s轉(zhuǎn)換為數(shù)值
例:x=“23”
y=“76”
?val(x)+val(y)
3.字符轉(zhuǎn)日期函數(shù):
格式:ctod(c)
功能:將日期字符串c轉(zhuǎn)換為日期
例:set date ansi &&日期格式設(shè)為美國標(biāo)準(zhǔn)化協(xié)會格式
?ctod(“^2005.11.14”)
2005.11.14
4.日期轉(zhuǎn)字符函數(shù):
格式:dtoc(d)
功能:將日期d轉(zhuǎn)化為日期字符串
例:將日期型數(shù)據(jù)轉(zhuǎn)化為字符型日期數(shù)據(jù)并顯示漢字日期.set century on &&開啟世紀(jì)前綴,即日期中年份用4位表示
set date ansi
rq={^2005.11.14}
rq=dtoc(rq)
?substr(rq,1,4)+“年”+substr(rq,6,2)+“月”+substr(rq,9,2)+“日”
2005年11月14日
5.時間轉(zhuǎn)字符函數(shù):
格式:ttoc(時間)
功能:將時間轉(zhuǎn)為時間字符串
6.字符轉(zhuǎn)時間函數(shù):
格式:ctot(c)
功能:將時間字符串轉(zhuǎn)化為時間
7.字符串替換函數(shù):
格式:stuff(<字符表達(dá)式1>,<起始位置>,<字符個數(shù)>,<字符表達(dá)式2>)
功能:從指定位置開始,用<表達(dá)式2>的值去替換<表達(dá)式1>中指定個數(shù)字符.若<字符個數(shù)>為零,直接插入;若<表達(dá)式2>為空字符串,則刪除<表達(dá)式1>中指定個數(shù)的字符.例:X=“祝大家新年好!”
?stuff(X,7,4,“春節(jié)”)
祝大家春節(jié)好
?stuff(X,11,0,“春節(jié)”)
祝大家新年春節(jié)好
?stuff(x,7,4,“ ”)
祝大家好
8.字符轉(zhuǎn)ASCⅡ碼函數(shù):
格式:Asc(<字符表達(dá)式>)
功能:把<字符表達(dá)式>左邊第一個字符轉(zhuǎn)成相應(yīng)的ASCⅡ碼值
例:x=“Foxpro”
?Asc(x),Asc(lower(x))
102
9.ASCⅡ碼值轉(zhuǎn)字符函數(shù):
格式:chr(數(shù)值表達(dá)式)
功能:把數(shù)值轉(zhuǎn)成相應(yīng)的ASCⅡ碼字符,返回值為字符型
例:?chr(70)+chr(111)+chr(111+9)
Fox
四.日期函數(shù):
1.系統(tǒng)日期函數(shù):
格式:date()
功能:給出系統(tǒng)的當(dāng)前日期,返回值是日期型數(shù)據(jù).例:顯示系統(tǒng)日期
?date()
11/14/05
set date ansi
set century on
?date()
2005.11.14
2.年、月、日函數(shù):
格式:(1).year(日期表達(dá)式):從
日期表達(dá)式中返回一個由四位數(shù)字表示的年份.(2).month(日期表達(dá)式):從日期表達(dá)式中返回一個用數(shù)字表示的月份.(3).day(日期表達(dá)式):從日期表達(dá)式中返回一個用數(shù)字表示的日數(shù).例:測試系統(tǒng)日期
rq=date()
?year(rq),month(rq),day(rq)
2005 11 14
3.系統(tǒng)時間函數(shù):
格式:time()
功能:得到當(dāng)前時間字符串
例:?time()
20:32:26
4.系統(tǒng)日期時間函數(shù):
格式:datetime()
功能:得到當(dāng)前日期時間
例:?datetime()
2005.11.14 08:35:12 PM
5.星期函數(shù):
格式:dow(日期表達(dá)式)
cdow(日期表達(dá)式)
功能:dow用數(shù)字表示星期,1表示星期日,7為星期六;cdow用英文表示星期
例:?date()
2005.11.15
?dow(date()),cdow(date())Tuesday
五.測試函數(shù):
1.測試文件尾函數(shù):
格式:eof([n])
說明:
(1).n指定被測工作區(qū)號,其范圍為1~32767
(2).該函數(shù)用于測試指定工作區(qū)中的表的記錄指針是否指向文件尾,是則返回真值;否則返回假值;省略可選項指當(dāng)前工作區(qū).例:測試文件記錄指針是否指向文件尾
use 職工檔案
go bottom
?eof()
.F.skip
?eof()
.T.2.測試文件頭函數(shù):
格式:bof([n])
說明:
(1).n指定被測工作區(qū)號,其范
圍為1~32767
(2).用于測試指定工作區(qū)中的表的記錄指針是否指向文件頭,是則返回真值;否則返回假值;省略可選項指當(dāng)前工作區(qū).例:測試記錄指針是否指向文件頭
use 職工檔案
go top
?bof()
.f.skip-1
?bof()
.t.3.測試當(dāng)前記錄號函數(shù):
格式:recno()
功能:得到當(dāng)前的記錄號
例:
use 職工檔案
?recno()
skip
?recno()
4.測試表文件記錄數(shù)函數(shù):
格式:reccount()
功能:得到表的記錄數(shù)
例:測試“職工檔案”表的記錄數(shù)
use 職工檔案
?reccount()
5.測試表字段數(shù)函數(shù):
格式:fcount()功能:得到當(dāng)前的字段數(shù)
例:測試“職工檔案”表共有多少個字段
use 職工檔案
?fcount()
6.測試查找記錄是否成功函數(shù):
格式:found()
功能:測試find、seek和locate命令查找記錄是否成功.如成功則返回真值,否則為假值.例:在“職工檔案”表中查找“小剛”的文化程度
use 職工檔案
locate for 姓名=“小剛”
?found()
.t.display
7.文件測試函數(shù):
格式:file(字符表達(dá)式)
功能:測試字符表達(dá)式指定的文件是否存在
例:?file(“e:myvfp職工檔案.dbf”)
.t.8.數(shù)據(jù)類型測試函數(shù):
格式:type(字符表達(dá)式)功能:測試表達(dá)式的數(shù)據(jù)類型,返回大寫字母:N(數(shù)值)、C(字符)、L(邏輯)、D(日期)、M(備注)
例:
x=1236
y=“hello”
?type(“x”)
N
?type(“y”)
C
9.測試工作區(qū)函數(shù):
格式:select()
功能:返回當(dāng)前工作區(qū)的區(qū)號
10.測試別名函數(shù):
格式:alias()
功能:測試當(dāng)前工作區(qū)的別名
例:
select 1
use 職工檔案 alias zgda
select 2
use 工資情況
?alias()
工資情況 &&打開表時,不指定別名,表名即為別名
select zgda &&通過別名選擇工作區(qū)
?select()
11.表文件名函數(shù):
格式:dbf()
功能:返回當(dāng)前工作區(qū)打開的表名
例:
use 工資情況
?dbf()
e:myvfp工資情況 六.其它函數(shù):
1.宏替換函數(shù):
格式:&變量名
說明:vfp中只有宏替換函數(shù)沒有括號.功能是返回指定字符型變量中所存放的字符串.例:為“工資情況”表中每個人加100元工資
gz=“工資”
use 工資情況
replace all &gz with &gz+100
2.條件函數(shù):
格式:iif(表達(dá)式,表達(dá)式1,表達(dá)式2)
功能:若表達(dá)式值為真,則返回表達(dá)式1的值;否則返回表達(dá)式2的值;函數(shù)返回值類型與表達(dá)式1或表達(dá)式2類型一致
a=3
b=5
?iif(a>b,“高興”,“開心”)
開心
3.消息框函數(shù):
格式:messagebox(提示文本[,對話框類型[,對話框標(biāo)題文本]])
功能:顯示提示對話框
說明:
(1)對話框類型見表1:
對話框類型功能
0僅“確定”按鈕
1“確定”和“取消”按鈕
2“終止”,“重試”和“忽略”按鈕
3“是”,“否”和“取消”按鈕
4“是”和“否”按鈕
5“重試”和“取消”按鈕
16stop圖標(biāo)
32?圖標(biāo)
48!圖標(biāo)
64i圖標(biāo)
0默認(rèn)第1個按鈕
256默認(rèn)第2個按鈕
512默認(rèn)第3個按鈕
(2).返回值見表2:
返回值按鈕
1確定
2取消
3終止
4重試
5忽略
6是
7否
例:分析messagebox(“您確實要退出系統(tǒng)嗎?”,4+64,“提示信息”)會彈出什么樣的窗口.分析:回頭觀察此函數(shù)的格式,彈出的對話框中的提示文本是“您確實要退出系統(tǒng)嗎”,對話框標(biāo)題是“提示信息”,函數(shù)中間有“4+64”,其中4指定對話框中出現(xiàn)“是”和“否”兩個按鈕(見表1),64指定對話框中出現(xiàn)i圖標(biāo)(見表2)
ok,我們在命令窗口依次執(zhí)行下列命令:
tui=messagebox(“您確實要退出系統(tǒng)嗎?”,4+64,“提示信息”)
&&變量tui用于接收messagebox函數(shù)的返回值,彈出的窗口如圖1
?tui
&&變量tui值取決于運行時用戶點了哪個按鈕,如果點了“是”,返回6,如果點了“否”,返回7,見表2
說明:實際應(yīng)用中,我們常在系統(tǒng)菜單或在表單的“退出”按鈕中添加如下代碼:
tui=messagebox(“您確實要退出系統(tǒng)嗎?”,4+64,“提示信息”)
if tui=6 &&如果此條件成立,說明用戶點了“是”按鈕,執(zhí)行quit命令,安全退出
quit
endif
第三篇:vfp命令、語句等說明總結(jié)
VFP命令、函數(shù)及程序語句大全
VFP提供一些簡單的程序設(shè)計語言命令,包括賦值語句、控制語句、設(shè)置命令等,我們可根據(jù)某種功能的需要,利用這些命令及數(shù)據(jù)庫操作的有關(guān)命令構(gòu)成語句,分行存在文件中(稱為命令文件,以. PRG為擴(kuò)展名,在項目管理器中標(biāo)為“程序”)或一些對象的過程或事件處理程序中。如被調(diào)用,系統(tǒng)將一條條順序執(zhí)行各行命令,如遇到控制語句(IF,DO,CALL,F(xiàn)OR?等),依據(jù)控制語句的指定,轉(zhuǎn)移到指定語句再一條條順序執(zhí)行。
這些命令書寫時,每條語句應(yīng)在一行中寫完,如不能寫完,可用分號“;”結(jié)束,表示下一行繼續(xù)。兩條語句不能寫在一行上。每條語句中命令字及選項中保留字大多數(shù)可只書寫前四個字符。
一般一個簡單的VFP應(yīng)用系統(tǒng)由若干模塊組成,各自完成一定的功能,總的系統(tǒng)用一個總控模塊去控制,通過它調(diào)用子模塊,層層調(diào)用以實現(xiàn)全系統(tǒng)的功能。這種結(jié)構(gòu)如圖5.4所示。這種方式便于設(shè)計、調(diào)試,保證程序的正確性,也容易實現(xiàn)模塊共亭,實現(xiàn)軟件重用,提高程序設(shè)計效率。
主模塊可由主封面表單、主命令文件和主菜單文件構(gòu)成;各個模塊可由過程、自定義函數(shù)、表單、表單集、應(yīng)用程序或子菜單等構(gòu)成。
一個表單或一個表單集中可有一到多個用戶界面,可設(shè)置一到多個命令按鈕及其他程序控件,用戶可利用按鈕及程序控件,產(chǎn)生特定的消息觸發(fā)執(zhí)行一個程序,完成一個功能。應(yīng)用程序是對一個模塊編譯后的. APP執(zhí)行文件,“過程”是由命令組成的程序,以RETURN語句結(jié)束,它可為另一個程序所調(diào)用,調(diào)用執(zhí)行時遇到RETURN語句將返回其調(diào)用程序。
圖 5.4 VFP程序總體結(jié)構(gòu)
一.變量賦值與顯示語句
在項目管理器中選“代碼→程序→新建”或在命令框利用命令MODIFY COMMAND建立命令文件。
1.MODIFY COMMAND
意義:創(chuàng)建命令文件。
命令格式:MODIFY COMMAND 文件名
例如:MODIFY COMMAND PROC1
執(zhí)行此命令后,將進(jìn)入全屏幕編輯狀態(tài)。如原已建立了該文件proc1,將調(diào)出該文件在屏幕上顯示,用戶可對之修改。如是新文件,則用戶可利用全屏幕編輯鍵,輸入自己的程序。新文件將自動加上擴(kuò)展名.PRG。
2.DO
意義:執(zhí)行命令文件程序,有三種方法:①在項目管理器中選“代碼→程序→選擇程序名→運行”。②在主菜單中選“程序→運行→輸入(選擇)程序名→運行”。③在程序中或命令窗日中使用DO命令。命令格式:DO 程序名[WITH 表達(dá)式表]
程序名可以是上述方式建立的命令文件(.PRG文件)、可執(zhí)行文件(.EXE文件)、應(yīng)用程序(.APP文件),及對.PRG文件編譯后的文件(.FXP文件)。如調(diào)用DO命令時不帶擴(kuò)展名,則按.EXE文件、.APP文件、.FXP文件、.PRG文件的順序查找同名程序并執(zhí)行之。
例如:DO PROC1
此外,程序名還可能是菜單程序,調(diào)用時必須帶擴(kuò)展名(.MPR)。例如,有菜單程序MAIN.MPR,則可如下調(diào)出執(zhí)行:
DO MAIN.MPR
程序名還可以是事件名或過程名。
其中表達(dá)式表由多個表達(dá)式組成,用逗號分開,在執(zhí)行時首先計算各表達(dá)式的值,并帶入被調(diào)程序,被調(diào)程序第一句應(yīng)是LPARAMETERS形參表語句,形參表是以逗號分隔的多個內(nèi)存變量名,其個數(shù)應(yīng)等于調(diào)用時的表達(dá)式的個數(shù),執(zhí)行時,首先用調(diào)用語句中各表達(dá)式的值對應(yīng)給它們賦值。
例如:主程序中:DO PROC1 WITH “AB”,21
被調(diào)程序:LPARAMETERS M1,X0
執(zhí)行時,首先完成賦值:M1=“AB”;X0=21,再往下執(zhí)行。
當(dāng)使用DO運行一個程序時,包含在其中的命令一直執(zhí)行,直到下列某一事件發(fā)生。遇到RETURN語句,返回到調(diào)用程序DO命令的下一句,遇到了CANCEL命令,返回VFP命令狀態(tài)。遇到QUIT命令退出程序并退出VFP;到達(dá)文件尾回到調(diào)用前狀態(tài);再遇到另一個DO命令,將轉(zhuǎn)人新程序執(zhí)行。
3.PUBLIC
意義:設(shè)置全局性內(nèi)存變量命令。
格式:PUBLIC 變量名1[,變量名2]?
在不同程序或過程或事件中,同名內(nèi)存變量的值不一定相同,如要將一個程序(過程、事件)中變量的值傳到另一程序(過程、事件)中,可應(yīng)用上述命令將它定義成全局變量。
4.PRIVATE
意義:設(shè)置局部變量的命令。
格式:PRIVATE[ALL[LIKE∣EXCEPT 通配符]∣內(nèi)存變量表]
其中選項意義:ALL將所有內(nèi)存變量說明為局部性變量,ALL[LIKE∣EXCEPT 通配符]將變量名能與通配符相匹配的內(nèi)存變量說明為局部性變量。“ALL EXCEPT通配符”將除了能與通配符相匹配的變量名之外的內(nèi)存變量說明為局部性變量。在程序中,為了一個程序的運行結(jié)果不影響另一個程序的執(zhí)行,不希望同名變量將值從一個程序帶到另一個程序而造成干擾。為此,可將該變量定義成局部性變量。
5.DIMENSION
意義:定義內(nèi)存變量數(shù)組命令,VFP中可定義一維或二維數(shù)組。
格式:DIMENSION 數(shù)組名(數(shù)字表達(dá)式1[,數(shù)字表達(dá)式2])[,數(shù)組名2(數(shù)字表達(dá)式1[,數(shù)字表達(dá)式2])]?
每個數(shù)組的每個元素都可單獨使用,如同一個內(nèi)存變量,稱為下標(biāo)變量,下標(biāo)起始值為1。
例如,DIMENSION ARRAY1(8,20),X1(30)定義了兩個數(shù)組,數(shù)組名分別為ARRAY1和X1,前一個數(shù)組共有20×8=160個元素:ARRAY1(l,l)、ARRAY1(l,2)?? ARRAY1(l,20),ARRAY1(2,1)?ARRAY1(8,20)。對各元素也可用單下標(biāo)取用其值,如用ARRAY1(l),ARRAY1(2)?ARRAY1(160)也可訪問該數(shù)組各元素,與前面雙下標(biāo)表示形式一一對應(yīng)。
6.PUBLIC ARRAY
意義:定義全局性內(nèi)存變量數(shù)組。
格式:PUBLIC ARRAY 數(shù)組名(數(shù)字表達(dá)式1[,數(shù)字表達(dá)式2])[,數(shù)組名2(數(shù)字表達(dá)式1[,數(shù)字表達(dá)式2])]?
7.=
意義:賦值語句。
將表達(dá)式的值賦值給一個內(nèi)存變量。對變量賦值后,該變量類型也即確定為表達(dá)式返回值的類型。對一個變量可重復(fù)賦值,也可改變變量的類型。但為了保證程序的清晰和結(jié)構(gòu)完整,建議在一個系統(tǒng)中每個變量名應(yīng)有確定的意義和數(shù)據(jù)類型。
8.STORE
意義:同時對多個變量賦值命令。
格式:STORE 表達(dá)式 TO變量1[,變量2]?
在程序運行時常要求用戶輸入控制參數(shù)或數(shù)據(jù),實現(xiàn)此功能語句我們稱為人機(jī)對話語句。在程序中如插入人機(jī)對話語句,用戶可借助鍵盤輸入?yún)?shù)或控制量賦值給變量??刂瞥绦蜃呦颍蛴糜诓煌瑪?shù)據(jù)處理。在程序執(zhí)行到這類語句時,將停止運行,在屏幕上顯示命令中附注的提示信息,同時等待用戶從鍵盤輸入數(shù)據(jù),賦給所指定的變量。完成賦值之后再接著運行下一條語句。在VFP中這類語句可在主控程序中或在調(diào)試程序時使用,在表單程序中使用文本框等各種控件及消息框代替它們。
9.INPUT
意義:輸入各種類型數(shù)據(jù)賦給內(nèi)存變量
格式:INPUT “提示信息” TO 內(nèi)存變量名
本命令允許輸入字符類型、數(shù)值類型、日期類型、邏輯類型等不同類型的數(shù)據(jù),要求輸入數(shù)據(jù)是字符類型時,數(shù)據(jù)兩端要加定界符,例“張平”;輸入數(shù)據(jù)是日期類型時,要按{MM/DD/YY}或設(shè)定的格式,例{12/21/00};邏輯類型按.T.、.F.格式。
用戶輸入還可以是包括變量名及函數(shù)在內(nèi)的表達(dá)式,但變量必須是己賦值的,表達(dá)式是可以計算出確定值的。用戶輸入完后回車表示輸入結(jié)束。
例:INPUT“請輸入初始日期:” TO D1
屏幕上顯示:“請輸入初始日期:”,光標(biāo)在此句之后。用戶可輸入{05/10/96}。
此時用戶如果執(zhí)行命令:?D1
屏幕上將顯示:05/10/96
10.ACCEPT
意義:輸入字符串賦給變量。
格式:ACCEPT[“提示內(nèi)容”]TO內(nèi)存變量名
該命令和INPUT命令區(qū)別有兩點:
.輸入數(shù)據(jù)均被視為字符類型。
.輸入數(shù)據(jù)兩端不需加定界符,如加了定界符,定界符被視作字符串的一部分。
11.WAIT
意義:接收單個字符賦給變量,或中斷程序,按任意鍵后繼續(xù)。
格式:WAIT [“提示信息”] TO 內(nèi)存變量名
該命令與ACCEPT命令不同點在于只接收從鍵盤輸入的一個字符,用戶輸入一個字符后無須回車。該命令也可用在VFP表單程序的某個事件中,用于中斷該事件的執(zhí)行,讓屏幕顯示程序運行的中間結(jié)果,按某個鍵或單擊鼠標(biāo)后再繼續(xù)執(zhí)行。
12.GET
意義:格式化輸入數(shù)據(jù),給內(nèi)存變量賦值或修改表中當(dāng)前記錄字段內(nèi)容。
格式:@ 行號,列號 GET 內(nèi)存變量名或字段名
[FUNCTION功能代碼][PICTURE格式代碼][DEFAULT表達(dá)式][MESSAGE提示信息]
[RANGE輸入值范圍下限,輸入值范圍上限][SIZE文本框高度,文本框?qū)挾萞[VALID 條件表達(dá)式]
該命令可用于對內(nèi)存變量賦值,也可用于修改當(dāng)前打開表中當(dāng)前記錄中指定字段的內(nèi)容。如對內(nèi)存變量賦值且省略DEFAULT選項,在使用此語句時,必須已對該內(nèi)存變量賦值。否則按此選項中表達(dá)式對內(nèi)存變量初始化。
本命令執(zhí)行后只顯示內(nèi)存變量或字段當(dāng)前值,要到執(zhí)行命令“READ”時,此語句方被激活,程序停止執(zhí)行,等待用戶從鍵盤輸入數(shù)據(jù),直待回車后才繼續(xù)執(zhí)行。行號、列號為當(dāng)前窗口中字符行和列的位置號。行號與列號允許是小數(shù)。FUNCTION選項用于對輸入內(nèi)容限制或變化。功能代碼:
A:只允許輸入內(nèi)容由字母字符組成,包括不允許空格和標(biāo)點符號。
B:數(shù)值數(shù)據(jù)左對齊,默認(rèn)格式為右對齊。
I:文本居中對齊。
J:文本右對齊,默認(rèn)為左對齊。
Sn:限定文本框中字符個數(shù)為n。如S20。
T:去掉前導(dǎo)和后綴空格。
Z:當(dāng)數(shù)值數(shù)據(jù)值為0時顯示空格。
?。喊炎帜缸址D(zhuǎn)換為大寫。
PICTURE選項用于限定輸入數(shù)據(jù)的字符類型及大小。功能代碼例:
A:該位為字母或數(shù)字
L:只允許邏輯數(shù)據(jù)。
N:該位為字符或數(shù)字。
X:任何字符。
I:該位為數(shù)字,或數(shù)值數(shù)據(jù)中的符號。
-:標(biāo)明小數(shù)點位置。,:用逗號分隔左右數(shù)字。
!:將小寫字母轉(zhuǎn)換為大寫字符。
例:@3,10 GET x1 DEFAULT 0 PICTURE“9999.99”
此時在屏幕第3行的第10列位置顯示方框,其中內(nèi)容為DEFAULT規(guī)定的初始值0.00,如再發(fā)出命令:READ,將光標(biāo)落在尚未激活的第一個方框上等待輸入,只能輸入數(shù)字和符號,且整數(shù)部分不多于4位,小數(shù)部分不多于2位,否則將提示“請您重新輸入”。
RANGE、VALID兩個選項用于保證數(shù)據(jù)完整性,輸入數(shù)據(jù)必須在預(yù)定范圍內(nèi),滿足條件表達(dá)式要求時,才可完成賦值操作。本語句還有設(shè)置字體、字形和顏色的選項。
在VFP中,綜合上述人機(jī)交互命令尤其是@? GET命令的功能和特性,設(shè)計了文本框、編輯框等類和控件,便之應(yīng)用更加方便、簡單,我們將在下一章中介紹。
程序運行結(jié)果一般由輸出語句使其顯示在屏幕上或輸出到其他地方,輸出語句可將數(shù)據(jù)輸出到屏幕上顯示也可傳送給打印機(jī)或傳送存入到其他文件中。屏幕顯示語句在VFP中一般用在主控程序或調(diào)試程序時使用。在表單程序中使用各種控件、消息框代替它們。
13.?|??
意義:計算<表達(dá)式表>所指定的各表達(dá)式的值,并顯示在屏幕上。
格式:?表達(dá)式1[,表達(dá)式2]?
用?時,從下一行第一列起顯示結(jié)果。用??時,從當(dāng)前行當(dāng)前列起顯示結(jié)果。
14.SAY
意義:格式化輸出語句。
格式:@行號,列號 SAY表達(dá)式[FUNCTION功能代碼] [PICTURE格式代碼][SIZE高度,寬度]
有關(guān)選項的意義與@?GET命令相似,此外還有關(guān)于字體,顏色設(shè)置的選項。若發(fā)出有SET DEVICE TO PRINTER命令,輸出到打印機(jī),否則輸出至屏幕上顯示。
本語句常與@? GET語句合用,合用時,行號、列號指SAY內(nèi)容顯示所在行、列號,GET變量內(nèi)容框?qū)⒎胖迷赟AY內(nèi)容之后。二.程序控制命令
1.IF?ENDIF命令
意義:分支條件語句,根據(jù)邏輯表達(dá)式的值,有選擇的執(zhí)行一組命令。根據(jù)條件表達(dá)式的值是.T.還是.F.控制程序流向。
格式:
IF 條件表達(dá)式
語句序列1
[ELSE
語句序列2]
ENDIF
IF條件表達(dá)式語句是條件語句的開始,ENDIF語句是條件語句的終止。語句序列是若干條順序執(zhí)行的語句。執(zhí)行時首先計算條件表達(dá)式的值,如結(jié)果為“真”(.T.)則執(zhí)行語句序列l(wèi),執(zhí)行完后退出該語句。如條件表達(dá)式不滿足,且有ELSE語句和語句序列2,則執(zhí)行語句序列2。其程序流程圖如圖5.5所示。
圖5.5 分支結(jié)構(gòu)程序流程圖
圖5.6 主控模塊程序流程圖
在一個分支控制語句塊中可以嵌套另一個IF?ENDIF語句塊?!纠?.7】主控模塊的程序
程序流程圖如圖5.6所示。編寫程序清單如下: CLEAR &&清屏幕
@ 5,27 SAY “設(shè)備管理系統(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)維護(hù)”+SPAC(26)MENU TO m_choic &&等待用戶輸入
IF LASTKEY()=27 &&按Esc鍵返回VFP
RETURN ENDIF
IF m_choic=1
DO sbcx_sc.spr
ELSE
IF m_choic=2
DO sjbj_sc.spr
ELSE
IF m_choic=3
DO zctj_sc.spr
ELSE
IF m_choic=4
DO bbdy_sc.spr
ELSE
IF m_choic=5
DO xtwh_pg
ENDIF
ENDIF
ENDIF
ENDIF ENDIF RETURN
2.CASE
意義:分情況語句,當(dāng)求解一個問題存在多種情況,如要求對不同選擇執(zhí)行不同的語句序列,可采用分情況語句。該語句一句中列出許多語句成分,每個語句成分給出一個條件表達(dá)式,每次只根據(jù)具體條件找出第一個條件表達(dá)式值為.T.的語句成分,執(zhí)行該成分語句中的語句序列后退出該語句。
命令格式:
DO CASE
CASE條件表達(dá)式1
語句序列1
CASE條件表達(dá)式2
語句序列2
?
CASE條件表達(dá)式n
語句序列n
[OTHERWISE
語句序列n+1]
END CASE
執(zhí)行該語句時,系統(tǒng)逐一計算條件表達(dá)式1的值,條件表達(dá)式2的值?只要有一個條件表達(dá)式的值為.T.則執(zhí)行其后語句序列,執(zhí)行它后退出本分情況語句。
如到條件表達(dá)式n的值仍均為.F.又有OTHERWISE成分,則執(zhí)行語句序列n+l,其程序流程圖如圖5.7所示。
仍如上面主控程序的例子,程序可設(shè)計為:
CLEAR &&清屏幕
@ 5,27 SAY “設(shè)備管理系統(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.明細(xì)報表打印”+SPAC(22)@14,21 PROMPT “5.系統(tǒng)維護(hù)”+SPAC(26)MENU TO m_choic &&等待用戶輸入
IF LASTKEY()=27 &&按Esc鍵返回VFP
RETURN ENDIF
DO CASE
CASE m_choic=1
DO sbcx_sc.spr
CASE m_choic=2
DO sjbj_sc.spr
CASE m_choic=3
DO zctj_sc.spr
CASE m_choic=4
DO bbdy_sc.spr
CASE m_choic=5
DO xtwh_pg
ENDCASE
RETURN
圖5.7 CASE結(jié)構(gòu)程序流程圖
從上面兩段程序可見,對于同一個問題,用DO CASE ?ENDCASE 語句比IF?ENDIF語句要簡潔了并且邏輯關(guān)系清晰,因此不容易出錯。在分情況語句中也可嵌入分支條件語句及分情況。它本身也可嵌入到分支條件語句中去使用。
在對數(shù)據(jù)表中數(shù)據(jù)時,常常每條記錄被處理的過程是一樣的,處理語句也就大體相同,如果表中有多少記錄就寫多少條語句是十分困難的,為避免重復(fù)書寫,可使用循環(huán)。
3.DO WHILE?.ENDDO
意義:循環(huán)語句,可使多次重復(fù)執(zhí)行同一組語句。格式:
DO WHILE條件表達(dá)式
語句序列
[LOOP]
[EXIT]
ENDDO
其中“DO WHILE條件表達(dá)式”語句稱為循環(huán)起始語句,“ENDDO”語句稱為循環(huán)結(jié)束語句,進(jìn)入此命令時首先檢查條件表達(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語句一般用在分支條件語句中,因而語句格式為:
DO WHILE 條件表達(dá)式1
語句序列1
[IF條件表達(dá)式2
LOOP
ELSE
語句序列2
ENDIF]
[IF條件表達(dá)式3
EXIT
ELSE
語句序列3
ENDIF]
ENDDO
其程序流程圖如圖5.8所示。
在使用時必須保證經(jīng)有限次循環(huán)后條件表達(dá)式1應(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)①指針首先指向第一條的DO WHILE結(jié)構(gòu)如圖5.9所示。②指向滿足條件記錄的第一條的DO WHILE結(jié)構(gòu)如圖5.10所示。
圖5.8 DO WHILE?ENDDO結(jié)構(gòu)程序流程圖
圖5.9 指針做循環(huán)變量開始指向第一條時的DO WHILE結(jié)構(gòu)流程圖
圖5.10 指針做循環(huán)變量開始指向滿足條件記錄的第一條時 的DO WHILE結(jié)構(gòu)流程圖
格式1:圖5.9實現(xiàn)的語句。
USE(表名)
SELECT工作區(qū)別名
GO TOP
DO WHILE NOT EOF()
語句序列
SKIP
ENDDO
在本格式中,循環(huán)變量是表中指針,首先讓指針指向表的第一條記錄,如果不是文件尾,則執(zhí)行語句序列之后讓指針下移一條,再返回判斷指針是否指向文件尾。這樣一直繼續(xù)下去直到指針指到最后一條記錄的后面,循環(huán)結(jié)束。
【例5.8】在學(xué)生表中有少數(shù)學(xué)生更換了班級,現(xiàn)要求在屏幕上一屏一屏地顯示每個學(xué)生的數(shù)據(jù),并提問是否修改班級名稱,如回答“Y”,則提供修改框。
SET TALK OFF
USE學(xué)生
KEY=“Y”
GO TOP
DO WHILE NOT EOF()
@3,10 SAY“姓名:”+姓名
@5,10 SAY“班級:”+班級
@7,10 SAY“出生日期:”+DTOC(出生日期)
@9,10 SAY“是否修改,Y/N?’GET KEY
READ
IF UPPER(KEY)=“Y”
@11,10 SAY“請輸入改后班級名稱” GET 班級
READ
ENDIF
SKIP
ENDDO
USE
SET TALK ON
格式2:如果只按某個條件查看記錄,則可用查找語句開始。圖5.10實現(xiàn)語句:
LOCATE FOR條件表達(dá)式
DO WHILE NOT EOF()
語句序列
CONTINUE
ENDDO
例5.8中如只查99級學(xué)生,顯示其姓名則:
LOCATE FOR “99”$班級
DO WHILE NOT EOF()
?姓名
CONTINUE
ENDDO
(2)當(dāng)于DO UNTIL的循環(huán)結(jié)構(gòu)。
有些循環(huán)要在執(zhí)行部分語句之后再根據(jù)一個條件表達(dá)式判斷是否結(jié)束,此時循環(huán)條件可用常量.T.,見圖5.11所示。
圖5.11 DO UNTIL結(jié)構(gòu)程序流程圖
語句格式: DO WHILE.T.語句序列
IF 條件表達(dá)式
EXIT ENDIF
ENDDO
【例5.9】求編寫學(xué)生表錄入新數(shù)據(jù)的程序,每次錄入一條記錄,之后提問是否繼續(xù),如回答不是“Y”,就停止錄入。
SET TALK OFF
USE 學(xué)生
KEY=“ ”
DO WHILE.T.APPEND BLANK
@3,10 SAY“姓名:” GET 姓名
@5,10 SAY“班級:” GET 班級
@7,10 SAY“出生日期:”GET 出生日期
READ
@9,10 SAY“否繼續(xù)?Y/N?” GET KEY
READ
IF UPPER(KEY)<>“Y”
EXIT
ENDIF
ENDDO
USE
SET TALK ON
此語句由用戶輸入Y或N控制程序結(jié)束。
上述第一、二兩種格式可以用等價的SCAN循環(huán)取代。
4.SCAN?ENDSCAN循環(huán)語句
意義:在數(shù)據(jù)表中循環(huán)檢查或處理一條條記錄。
命令格式一:
SCAN
語句序列
ENDSCAN
此句等價于前述格式1的語句。
命令格式二:
SCAN FOR條件表達(dá)式
語句序列
ENDSCAN
本語序等價于前述格式2的語句。有一些循環(huán)次數(shù)是一定的,或者循環(huán)變量的值在每次循環(huán)中增加的量是相同的,則可應(yīng)用FOR循環(huán)。
5.FOR?ENDFOR循環(huán)語句
命令格式:
FOR內(nèi)存變量=初始值 TO 終了值[STEP 增量]
語句序列
ENDFOR
此循環(huán)以某個內(nèi)存變量為循環(huán)變量,進(jìn)入循環(huán)時首先給它賦初始數(shù)值,只要不超過終了值,則執(zhí)行語句序列。STEP語句為可選項,指示在每次循環(huán)后循環(huán)變量的增加量。前面執(zhí)行語句序列之后,將循環(huán)變量值增加增量的值,再判斷是否超過終了值,這樣繼續(xù)下去直到超過終了值。增量可為正值也可為負(fù)值,省略時默認(rèn)值是1。如增量為正,則當(dāng)循環(huán)變量大于終了值時,循環(huán)結(jié)柬。如增量為負(fù),則每循環(huán)一次,循環(huán)變量均減小,減少到小于終了值時循環(huán)結(jié)束。
例5.8中修改班級名的程序也可寫為:
SET TALK OFF
USE 學(xué)生
KEY=“ ”
N=RECCOUNT()&&記錄總條數(shù)
FOR I=1 TO N
@3,10 SAY“姓名:”十姓名
@5,10 SAY“班級:”十班級
@7,10 SAY“出生日期:”+DTOC(出生日期)
@
9、10 SAY“是否修改班級名,Y/N?” GET KEY
READ
IF UPPER(KEY)=“Y”
@11,10 SAY“請輸入改后班級名稱” GET 班級
READ
ENDIF
ENDFOR
USE
SET TALK ON
使用相對指針,如果打開索引,或某些錄入、修改、查詢操作使當(dāng)前指針位置改變都可能引起錯誤。不如本例中采用物理地址,比較可靠。
【例5.10】要求輸入N個學(xué)生的總分X,按總分分成優(yōu)、良、及格、不及格四個等級,統(tǒng)計每個等級的人數(shù)。等級劃分標(biāo)準(zhǔn)為:90-100分為優(yōu),75-89分為良,60-74分為及格,59分及以下為不及格。
SET TALK OFF
DIMENSION M(4)&&定義數(shù)組
STORE 0 TO M&&M所有元素初值設(shè)為0
x=0
INPUT“學(xué)生人數(shù) N=?” TO N&&計數(shù)循環(huán)
FOR I=1 TO N
?“請輸入第”,I,“人的成績”
@ROW(),20 SAY “X=?” GET X
READ
DO CASE
CASE x>=90
M(l)=M(1)+1&&統(tǒng)計優(yōu)秀生人數(shù)
CASE x>=75
M(2)=M(2)+1
CASE x>=60
M(3)=M(3)+l
CASE x<60 AND x>=0
M(4)=M(4)+1
OTHERWISE
?“輸入數(shù)據(jù)有錯,請重輸”
I=I-1
ENDCASE
ENDFOR
?“優(yōu)、良、及格、不及格人數(shù)各為”,M(1),M(2),M(3),M(4)SET TALK ON
【例5.11】設(shè)有商品表,結(jié)構(gòu)為商品(商品代碼,品名,單價,數(shù)量,金額),欲對其中部分商品調(diào)動單價,為此建立一個調(diào)價表,其結(jié)構(gòu)為調(diào)價(商品代碼,原單價,新單價),編寫程序用調(diào)價表中新單價數(shù)據(jù)修改商品表中單價與金額。
SET TALK OFF
SELE 1
USE商品
SELE 2
USE 調(diào)價
SCAN
代碼1=商品代碼
SELE 1
LOCATE FOR商品代碼=代碼1
IF NOT EOF()
REPL 單價 WITH 調(diào)價.新單價、金額 WITH 單價*數(shù)量
ENDIF
SELE 2
ENDSCAN
CLOSE ALL
SET TALK ON
本例中設(shè)置二個工作區(qū),分別打開二個表,首先在工作區(qū)2上利用SCAN循環(huán)遍歷調(diào)價所有記錄,對每一記錄在商品表中查找有無商品代碼標(biāo)識相同的記錄,如有,則用新單價更新原單價,并修改金額。由于在非當(dāng)前工作區(qū)中不能移動指針,不能查詢,不能修改數(shù)據(jù),因而在轉(zhuǎn)到商品表中查詢之前要將商品表所在工作區(qū)1設(shè)為當(dāng)前工作區(qū),更新以后又轉(zhuǎn)到工作區(qū)2將調(diào)價表中指針指向下一條,再準(zhǔn)備按第二個品種調(diào)價。
在當(dāng)前工作區(qū)中可讀取非當(dāng)前工作區(qū)中數(shù)據(jù),如本例中用 “調(diào)價.單價”這樣的格式從工作區(qū)2的調(diào)價表中讀取其中指針?biāo)赣涗浀膯蝺r,這種方式稱為聯(lián)訪。如此對多個數(shù)據(jù)表操作十分麻煩,可采用預(yù)先建立關(guān)聯(lián)的辦法,在一個表中移動指針時,第二個表中指針按關(guān)鍵字保持一致的方式跟著移動。
三.其他常用命令
1.SET RELATION
意義:將當(dāng)前數(shù)據(jù)庫和“別名”工作區(qū)中的表文件關(guān)聯(lián)在一起,當(dāng)前表文件稱為主動表文件,“別名”工作區(qū)中的表文件稱為被關(guān)聯(lián)表文件,每當(dāng)主動表文件中指針移動時,被關(guān)聯(lián)表文件中指針也相應(yīng)移動。
命令格式:SET RELATION TO 字段名 INTO 別名[ADDITIVE]
命令中選用的“字段名”必須同時包含在兩個表文件中,且被關(guān)聯(lián)表必須以該字段建立索引文件并打開為主索引文件。每當(dāng)主動表文件中記錄指針移動時,被關(guān)聯(lián)表中記錄指針根據(jù)主索引文件指引指向與之相匹配(索引字段值等于主動表當(dāng)前記錄該字段的值)的第一條記錄。若找不到匹配記錄,則指針將指向文件尾,EOF()為真(.T.)
如命令無ADDITIVE選項,在建立關(guān)聯(lián)時將取消當(dāng)前數(shù)據(jù)庫與其他數(shù)據(jù)庫的任何關(guān)聯(lián),僅保留一個新關(guān)聯(lián)。而選了此選項,則原有關(guān)聯(lián)均保留,增加一個新關(guān)聯(lián)。
要注意的是,如果對應(yīng)主動表中某記錄在被關(guān)聯(lián)表中找不到匹配記錄時,主動表中數(shù)據(jù)被改為0。例5.11中如果調(diào)價表中商品包括商品表中全部商品,利用此命令程序可修改為:
USE 調(diào)價&&第一個打開表默認(rèn)置于1號工作區(qū)
INDEX ON 商品代碼 TO INDEX1
SELECT 2
USE 商品
SET RELATION TO 商品代碼 INTO 調(diào)價
SCAN
REPLACE 單價 WITH 調(diào)價.新單價,金額 WITH 單價*數(shù)量
ENDSCAN
本例中關(guān)于被關(guān)聯(lián)表中字段名也可用“區(qū)號.字段名”形式對之訪問。
不過使用本程序要求兩表中內(nèi)容必須匹配,例如例5.11中如商品只有部分調(diào)價,在調(diào)價表中只有商品表中部分商品,那么該程序?qū)⑹股唐繁碇胁徽{(diào)價商品單價均變?yōu)?。
一般在涉及利用一個表數(shù)據(jù)修改另一個表數(shù)據(jù)時,我們以采用SQL語言中修改命令UPDATE比較好。也可采用全聯(lián)結(jié)視圖再對之操作?!?/p>
2.RUN
意義:在VFP環(huán)境中調(diào)用DOS命令。·
命令格式:RUN DOS命令或!DOS命令
3.LOAD命令
意義:把匯編或C語言編寫并編譯的二進(jìn)制文件調(diào)入內(nèi)存命令。
命令格式:LOAD 二進(jìn)制文件名
4.CALL命令
意義:執(zhí)行由LOAD裝入內(nèi)存的二進(jìn)制代碼文件命令。命令格式:CALL 文件名[WITH 字符表達(dá)式/內(nèi)存變量] 其中WITH選項用于向調(diào)用程序傳遞參數(shù)。
5.ON ERROR
意義:當(dāng)出現(xiàn)錯誤時執(zhí)行的命令。
命令格式:ON ERROR 命令
其中命令可為任何VFP語句。在程序調(diào)試過程中,可在程序中加入此命令,并設(shè)計命令處理程序,在其中可加入顯示ERROR(),MESSAGE(),LINENO()和PROGRAM()的語句,將錯誤代碼、錯誤消息、錯誤行號及程序名稱顯示出來,以幫助發(fā)現(xiàn)錯誤所在,方便糾正錯誤。在應(yīng)用程序中,有時可能出現(xiàn)一些不影響最終結(jié)果的錯誤,我們也可在程序中加入這類錯誤陷阱,所指定的命令可以是一條無效語句,不讓錯誤影響程序運行。
【例5.12】程序出錯時的處理程序及調(diào)用方法 主程序:
*---Set system enviroment------
clos data
clea
on 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 off
defi wind erro_win from 0,0 to 14,49;
titl ' 系統(tǒng)錯誤 ';
colo gr+/b;
shad doub;
in desktop
move wind erro_win cent
acti wind erro_win
@1,4 say ' 錯誤警告' colo gr+/b
@3,8 say '當(dāng)前程序無法繼續(xù),按<確定>將返回主調(diào)!' colo w+/b
@4,4 say '程序建議:稍后再試或與軟件供應(yīng)商聯(lián)系.' colo w+/b
@6,4 say '出錯程序:'+m_prog colo w+/b
@7,4 say '出 錯 行:'+allt(str(m_line))colo w+/b
@8,4 say '錯誤代碼:'+allt(str(m_num))colo w+/b
@9,4 say '錯誤內(nèi)容:'+iif(len(m_mess)<=28,m_mess,subs(m_mess,1,28)+'...')colo w+/b
@2,3 to 2,wcol()-4 colo w/b
@5,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 errosave
m_readkey=20
m_cnt=1
do while m_readkey=20
if mod(m_cnt,2)=0
@1,6 say ' 錯誤警告' colo b/b
else
@1,6 say ' 錯誤警告' colo gr+/b
endi
@wrow()-2,wcol()/2-2 get mb_isee func '*th 確定' defa 1 &&colo sche 13
read cycl modal time 0.4
m_readkey=readkey()
m_cnt=m_cnt+1
endd
set cons &m_odcons
clea wind
close data
clea
retu to master&&返回主程序
6.顯示文件目錄命令
格式:DIR [<驅(qū)動器>][<路徑>][<文件名>] 功能:顯示指定的磁盤驅(qū)動器上的文件名
說明:<文件名>中可帶通配符;命令中不指定文件名,則僅僅顯示指定目錄下的數(shù)據(jù)表文件名。7.清屏命令CLEAR 格式:CLEAR 功能:清除屏幕 8.總清命令CLEAR ALL 格式:CLEAR ALL 功能:關(guān)閉所有打開的數(shù)據(jù)表文件、索引文件和其他各種文件,清除已有的內(nèi)存變量 9.SET TALK ON/OFF
四.程序設(shè)計基礎(chǔ)
程序的概念
命令執(zhí)行方式:通過命令菜單或直接在命令窗口輸命令來執(zhí)行,執(zhí)行的結(jié)果顯示在屏幕上。程序執(zhí)行方式:以程序的方式來執(zhí)行。
程序是能夠完成一定任務(wù)的命令的有序集合,這組命令存放在程序文件(*.prg)中,執(zhí)行程序時,系統(tǒng)按一定的次序自動執(zhí)行包含在程序文件中的命令。
程序的特點
可以利用編輯器,方便地輸入、修改和保存程序??梢岳枚喾N方式、多次運行程序??梢栽谝粋€程序中調(diào)用另一個程序。
程序的基本要求
正確性,能實現(xiàn)算法的各個步驟,邏輯上正確,對輸入產(chǎn)生的錯誤有檢測措施。通用性,不能只解決一個問題,還考慮解決一類問題。高效率性,編寫執(zhí)行時間短,占用存儲空間少的程序。可維護(hù)性,程序應(yīng)易讀、易懂、易修改。安全性,必須確保安全、可靠。
程序文件的建立
在項目管理器中和菜單中建立
用命令方式:modify command <文件名>
程序的執(zhí)行
從“ 程序” 菜單中選擇“ 運行” 命令方式:do < 文件名> <文件名>中如果沒有指定擴(kuò)展名,系統(tǒng)將按下列順序?qū)ふ页绦蛭募?zhí)行:.exe-->.app(應(yīng)用程序)-->.fxp(編譯程序)-->.prg
當(dāng)程序文件被執(zhí)行時,文件中包含的命令將被依次執(zhí)行,直到所有的命令被執(zhí)行完畢中,或者執(zhí)行到以下命令:
cancel(終止程序執(zhí)行,返回命令窗口)do(轉(zhuǎn)去執(zhí)行另一個程序)return(結(jié)束當(dāng)前程序,返回到上級程序,若無上級程序則返回到命令窗口)quit(退出VFP 系統(tǒng),返回到操作系統(tǒng))
程序結(jié)構(gòu)
(1)每個程序都必須有1個文件名,文件名由字符、數(shù)字或下劃線組成,第一個字符必須是字母或漢字,程序擴(kuò)展名為.PRG(2)程序由若干行數(shù)據(jù)庫命令組成,每行最多寫2048個字符,1行只能寫1條命令,若把一個命令寫成若干行,需在該命令的第1行及中間各行的行尾寫“;”號,但最后一行不寫。(3)注釋行由“*”開頭,用以說明程序的名稱、功能及其他需要說明的問題,“*”是注釋命令,是非執(zhí)行語句,可以寫在程序任一位置。
(4)以“set”開頭的命令為環(huán)境設(shè)置命令,一般出現(xiàn)在可執(zhí)行語句的前面。(5)每行程序的后部可以寫由“&&”號引導(dǎo)的注釋。(6)“return”命令是返回命令,表示程序結(jié)束。
編寫程序的步驟
舉例:編寫一個簡單的程序:給出一個整數(shù),判斷是奇數(shù)還是偶數(shù)。(1)分析任務(wù),確定方法;(2)分解任務(wù),描述算法;(3)編寫程序,認(rèn)真檢查;(4)上機(jī)調(diào)試,糾正錯誤
流程圖
流程圖符號的使用規(guī)則: 流程線的方向是從左到右,自上而下,非標(biāo)準(zhǔn)流向的流程線要用箭頭表示。流程線就盡量避免交叉。
流程圖符號內(nèi)的文字一律從左到右,自上而下書寫。流程圖符號的注釋應(yīng)寫在符號右側(cè)。
出入口處的連接符應(yīng)使用相同名稱,表示把它們連接起來。
子程序、過程和自定義函數(shù)
模塊化:按適當(dāng)?shù)脑瓌t把一個情況復(fù)雜、規(guī)模較大的程序系統(tǒng)劃分為一個個較小的、功能相關(guān)而又相對獨立的模塊的過程。
模塊:一個在結(jié)構(gòu)上相對獨立的程序段??梢允亲映绦颉⑦^程或自定義函數(shù)。
子程序的基本概念
子程序:總被其它程序調(diào)用的,一般不單獨運行的一個程序段。
子程序與主程序的關(guān)系:是一種調(diào)用和被調(diào)用的關(guān)系。主程序是能調(diào)用其他子程序,而不被其他程序調(diào)用的程序,凡能被調(diào)用的程序都稱為子程序。程序中至少應(yīng)有一個主程序,可以有一個或若干個子程序。子程序的使用
①使用模塊化程序設(shè)計方法編寫程序時,把各個功能劃分成若干個功能子模塊,把子模塊寫成一個子程序。
②需要反復(fù)調(diào)用的情況下,可以寫成一個子程序,以節(jié)省存儲空間。
編寫子程序
調(diào)用子程序命令格式:
do <子程序名>[ WITH<參數(shù)表>] 子程序返回命令
return [ to master ] 表示返回到上一級子程序或主程序。帶參數(shù)to master表示無論在哪級子程序上,均立即返回主程序。
例
1、對任意給的正整數(shù)A、B、C,編寫程序計算S=A!+(3/5)B?。–!/2)調(diào)試子程序 聯(lián)合調(diào)試:當(dāng)主程序和子程序分別編輯完成之后,直接運行主程序。若主程序或子程序有錯,再進(jìn)行編輯、調(diào)試、重新運行,直到輸出正確結(jié)果為止。單獨調(diào)試:編輯一個模塊,調(diào)試一個模塊,各個模塊都調(diào)試成功后,加入主程序聯(lián)調(diào)。例
2、根據(jù)數(shù)據(jù)庫student.dbf編寫一個菜單程序main.prg,完成對數(shù)據(jù)庫查詢程序cx.prg和刪除程序sc.prg的調(diào)用
過程與過程文件
過程是一段程序,它與子程序不同之處在于,子程序是一個獨立文件,而過程是過程文件的一個組成部分,可以把多個過程寫在一個過程文件中。過程的結(jié)構(gòu):
procedure <過程名> <過程體> return [to master/to <程序名>] 過程名由用戶定義,供調(diào)用過程時使用,過程體是一個語句序列,是過程的核心部分,選擇to <程序名>表示返回到“程序名”指定的程序。過程文件的結(jié)構(gòu)
procedure <過程名1> <過程體1> return [to master/to <程序名>] procedure <過程名2> <過程體2> return [to master/to <程序名>] ??
procedure <過程名n> <過程體n> return [to master/to <程序名>] 過程文件的調(diào)用
在主程序中,調(diào)用過程前,首先要打開過程文件。
命令格式:set proc to <過程文件名>
調(diào)用后,要關(guān)閉過程文件。
命令格式:set procedure to 或 close procedure 過程的調(diào)用
格式:do <過程名> 例
3、根據(jù)數(shù)據(jù)庫student.dbf編寫一個菜單程序gczxc.prg,用過程形式完成對數(shù)據(jù)庫查詢程序cx.prg和刪除程序sc.prg的調(diào)用。
自定義函數(shù)命令
命令格式:(1)function <函數(shù)名>(2)return <表達(dá)式> 基本格式:
function<函數(shù)名> parameters <參數(shù)表> <語句序列>
return <表達(dá)式>
主程序與自定義函數(shù)的組織形式:
舉例計算組合數(shù)的值
編寫K!的函數(shù)。作業(yè)
1、從鍵盤輸入五個數(shù)組,每組有六個數(shù)據(jù),分別用子程序、過程、自定義函數(shù)的方法,輸出每組數(shù)的最大值和最小值。
2、用子程序、過程、自定義函數(shù)三種不同形式對student.dbf數(shù)據(jù)庫編寫一個菜單程序:
系統(tǒng)主菜單
1??追加記錄
2??修改記錄
3??插入記錄
4??刪除記錄
5??輸出記錄
6??退
出
第四篇:VFP程序題
VFP程序題 第一套題
一、運行結(jié)果題
1、以下程序運行結(jié)果是
SET TALK OFF
CLEAR
A = 5
B = 12
C = 18 IF MAX(A , B)< C
? MAX(A, B)
ELSE IF MIN(A , B)< C
? C
ELSE
? MIN(A , B)
ENDIF
ENDIF SET TALK ON
RETURN
2、以下程序運行結(jié)果是
SET TALK OFF CLEAR USE STCJ
DO WHILE ,NOT, EOF()
REPLACE 總分 WITH 高數(shù) + 計算機(jī) + 英語 SKIP
ENDDO GO BOTTOM
? 學(xué)號,總分
USE
RETURN
3、以下程序運行結(jié)果是
SET TALK OFF
SET HEADINGS OFF SELECT 2 USE STCJ
INDEX ON 編號
TO GZ21
REPLACE ALL 總分
WITH 高數(shù) + 計算機(jī) + 英語 SELECT 1 USE STDA
SET RELATION TO 編號
INTO B DISPLAY FIELDS 姓名,B.總分
FOR 四級通過
OFF CLOSE ALL RETURN
4、以下程序運行結(jié)果是
SET TALK OFF SET SAFETY OFF USE STDA INDEX ON 民族
TO XBSY TOTAL ON 民族
TO GZHZ USE GZHZ COUNT TO N ? N
SET SAFETY ON SET
TALK
ON RETURN
5、以下程序運行結(jié)果是
SET TALK OFF SET DELETED ON USE STDA DELETE FOR 性別 = “ 男 ” COUNT TO A SET DELETED OFF COUNT TO B DELETE ALL PACK COUNT TO C ? A , B , C SET TALK ON RETURN
6、以下程序運行結(jié)果是
SET TALK OFF USE STDA
INDEX ON 獎學(xué)金
TO GZSY SKIP 2
? 姓名,獎學(xué)金 USE
SET TALK ON RETURN
7、以下程序運行結(jié)果是
SET TALK OFF
SET PROCEDURN TO SP S = 0
DO SP1 WITH 5 , S ? S
SET TPROCEDURE
TO RETURN * SP PRG PROCEDURE
PARAMETERS X , Y N = 1 Y = 1
DO WHILE N < X
Y = Y + N
N = N + 1
ENDDO
RETURN
8、以下程序運行結(jié)果是
SET TALK OFF DIMENSION X(2 ,2)X = 5 FOR I = 1 TO 2 FOR J = 1 TO 2 IF I = J
X(I , J)ENDIF ?? X(I , J)ENDFOR ENDFOR SET TALK ON RETURN
二、完善程序
1、下列程序計算機(jī) S =1!+ 2!+3!+4!+5!中,填空完成程序。
S = 0 FOR N = 1
TO 5
FOR I = 1 TO N
P = P * I
ENDFOR
ENDFOR
? “SUN =” , S
2、用下列程序找出所有的水仙花數(shù),所謂水仙花數(shù),是指這樣一
個三位數(shù),其各位數(shù)字的立方和等于該數(shù)本身,如 153 = 1^3 +5^3 +3^3,對以下程序填空完成該功能。FOR N = 100 TO 999
A = INT(N / 100)
B =
C = N – INT(N / 10)* 10 IF N = A^3 +B^3 +C^3
? N
ENDIF
ENDFOR
RETURN
3、將新表 DB2.DBF 文件中學(xué)號重復(fù)的記錄刪掉(只保留一個)SET TALK OFF SET SAFETY
OFF
USE STDA
COPY TO DB2 USE DB2
INDEX ON 學(xué)號
TO XH DO WHILE.NOT.EOF()XH = 學(xué)號 SKIP
DELETE ENDIF ENDDO
CLEAR ALL
4、顯示STDA.DBF 文件中男同學(xué)的記錄
SET
TALK
OFF
SET
HEADING
OFF
USE
STDA
DO
WHILE
.NOT.EOF()
IF
ENDIF
DISPLAY
WAIT
ENDDO
USE
SET
TALK ON
RETURN
5、將STDA.DBF 表中未通過英語四級考試學(xué)生的將賞金取消,通過者獎學(xué)金加50元,并顯示姓名和獎學(xué)金額。SET TALK OFF
CLEAR USE STDA DO WHILE.NOT.EOF()IF.NOT.四級通過
REPLACE 獎學(xué)
WITH 0
ELSE
? 姓名,獎學(xué)金
ENDIF
SKIP
ENDDO
USE
SET TALK ON
RETURN
6、按學(xué)號查詢成績
SET TALK OFF CLEAR SELECT 1 USE STDA
INDEX ON 學(xué)號 TO IXH SELECT 2 USE STCJ
INDEX ON 學(xué)號 TO ICJ
ACCEPT “請輸入查詢學(xué)號:” TO XH SEEK
XH IF
FOUND()
DISPLAY
學(xué)號,A->姓名,總分
ELSE
? “ 查無此人!”
ENDIF
USE RETURN
7、請閱讀下列判斷一個自然數(shù)是否為質(zhì)數(shù)的程序,并將程序填寫完整。
SET
TALK
OFF
INPUT
“ 請輸入一個大于1 的自然數(shù):”
TO N
K = 0
J = 2
DO
WHILE
J < N IF MOD(N , J)
J = J +1
LOOP
ELSE
K = 1
EXIT
ENDIF
ENDDO
IF
K = 0
?
+ “ 素數(shù)”
ENDIF
? “ 再見!” SET TALK ON
RETURN
8、修改數(shù)據(jù)表文件 STDA.DBF 中指定同學(xué)的四級通過情況。SET TALK OFF USE STDA
INDEX TO ISY
DO
WHILE.T.CLEAR
ACCEPT “ 輸入待學(xué)生的姓名” TO XM SEEK XM
IF
FOUND()
@ 10 , 10 SAY “ 修改” + XM + “ 的四級通過情況:” GET 四級通過
WAIT
“ 繼續(xù)修改?(Y / N)”
TO N IF
ENDIF ENDDO USE RETURN
9、將數(shù)據(jù)表文件STDA.DBF 中的第三條記錄與第四條記錄的內(nèi)容互換,并顯示第三條記錄。
SET
TALK
OFF
CLEAR
USE
STDA
GO
SCATTER
TO
A
GO
SCATTER
TO
B
GO
GATHER
FROM
B
DISPLAY
GO
USE
SET
TALK
ON
RETURN
10、如下程序根據(jù)鍵入的學(xué)號使用SQL SELECT 語句顯示學(xué)生的學(xué)號、姓名和平均成績。請在下劃線處填寫適當(dāng)?shù)膬?nèi)容,使程序能正確的運行。
DO
WHILE.T.CLEAR
ACCEPT
“請輸入學(xué)號:” TO KEYNO
SELECT
STDA.學(xué)號,姓名,(高數(shù) +計算機(jī) +英語)/3 AS平均成績;FROM STDA.STCJ WHERE
WAIT
“如果退出,請按【Y】鍵!”
TO KEY
IF
UPPER(KEY)= “ Y”
ENDIF ENDDO USE RETURN
三、程序改錯題
1、在STDA.DBF 中,查詢某人英語四級通過情況,若通過了,則授予學(xué)位,否則不授予學(xué)位。(1)SET
TALK OFF(2)USE
STDA
(3)ACCEPT “請輸入姓名:”
TO XM(4)SEEK
FOR 姓名 = XM(5)IF
EOF()
(6)? “查無此人!”(7)RETURN(8)ENDIF
(9)IF
英語四級通過
(10)?姓名 + “英語四級通過,授予學(xué)位”(11)ELSE
(12)?姓名 + “英語四級沒通過,不授予學(xué)位”(13)ENDIF(14)USE
(15)SET
TALK
ON(16)RETURN 錯誤的行是 改為:
2、顯示 STCJ.DBF 中總分不低于190分的所有學(xué)生的姓名和總分字段的值。
(1)
SET
TALK OFF
(2)
SET
HEAD
OFF
(3)
USE
STCJ
(4)
DO
WHILE
RECNO()< = RECCOUNT()
(5)
REPL
總分
WITH
高數(shù) +計算機(jī) +英語
(6)
IF
總分> = 190
(7)
DISP
學(xué)號,總分 OFF
(8)
ENDIF
(9)
LOOP
(10)
ENDDO
(11)
RETURN 錯誤的行是: 改為:
3、在STDA.DBF 中,快速查詢性別為“男”,“09/12/92”出生的人
(1)
SET
TALK OFF
(2)
USE
STDA
(3)
INDEX
ON 性別 +入學(xué)時間
TO LKL
(4)
SEEK “男” + “09/12/92”
(5)
IF
.NOT.EOF()
(6)
DISPLAY
(7)
ELSE
(8)
? “查無此人!”
(9)
ENDIF
(10)
USE
(11)
SET
TALK ON
(12)
RETURN 錯誤的行是: 改為:
4、求出 STCJ 表中總成績的最大值和最小值。(1)
SET
TALK
OFF
(2)
USE
STCJ
(3)
DO
WHILE
.NOT.EOF()
(4)
REPLACE
總分
WITH 高數(shù) +計算機(jī)+英語
(5)
SKIP
(6)
ENDDO
(7)
GO
TOP
(8)
STORE
總分
TO MAX , MIN
(9)
DO
WHILE
.NOT.EOF()
(10)
IF MAX >總分
(11)
MAX = 總分
(12)
ENDIF
(13)
IF MIN <總分
(14)
MIN = 總分
(15)
ENDIF
(16)
SKIP
(17)
ENDDO
(18)
? “最高分:” ,MAX ,”最低分:” , MIN
(19)SET
TALK
ON
(20)RETURN 錯誤的行是: 改為:
第九套題
一、完善程序題
1、將“職工”表中的數(shù)據(jù)按工資降序排列后生成新表,程序如下:
CLOSE
ALL
SET
TALK
OFF CLEAR USE 職工
TO 職工1 ON
工資/D USE 職工1 DISPLAY ALL USE
RETURN
2、在“職工”表中查找且顯示“孫大鵬”的信息,程序如下:
SET TALK OFF CLEAR USE 職工 LOCATE
IF
FOUND()DISPLAY ENDIF USE
3、顯示“職工”表中女職工的工資和,程序如下:
SET
TALK
OFF CLEAR SELECT
FROM 職工 RETURN
1、設(shè)計一個查詢表單BD.SCX,其界面如圖所示,其中文本框控件
名為TEXT1,表格控件名為GRID1。當(dāng)在其中輸入職工姓名并單擊“查詢”按鈕時,將下邊的表格內(nèi)顯示該職工的信息。“查詢”按鈕的Click 事件代碼應(yīng)如下:
THISFORM.GRID1.RECORDSOURCETYPE=4
THISFORM.GRID1.FRCORDSOURCE=”SELECT
* FORM 職工
WHERE
姓名
= = ”
5、將“職工”表中第6條記錄的“出生日期”改為“12/12/1972”,程序如下:
SET TALK OFF CLEAR USE 職工 SKIP 5
出生日期
WITH {^1972/12/12} DISPLAY USE
RETURN
第五篇:vfp程序題總結(jié)
五.程序題 在Text1中輸入一個3位自然數(shù),分解求和的結(jié)果存入Text2中
x= thisform.text1.value a=int【1 】
b=int 【 2】
c=【 3】
s=【 4】
thisform.text2.value=【5 】
x/100(x-a*100)/10 x-a*100-b*10 a+b+c s 2 文本框Text1中輸入的值與文本框Text2中輸入的值交換
a= thisform.text1.value b= thisform.text2.value d=【1 】
【2 】
【3 】=d thisform.text1.value=【4 】
thisform.text2.value=【 5】
a a=b b a b 3 已知任意一個三角形的三條邊為a、b、c,求其面積。
a=thisform.text1.value b=【 1】
c=【 2】
p=(a+b+c)/【3 】
s=【 4】(p*(p-a)*(p-b)*(p-c))thisform.text4.value=【5 】
thisform.text2.value thisform.text3.value 2 sqrt s 4 判斷一個學(xué)生的計算機(jī)考試成績x屬于哪個分?jǐn)?shù)段之間(0-59,60-69,70-79,80-89,90-100)Command1_click事件代碼如下:
x= thisform.text1.value store 0 to h5,h6,h7,h8,h9 do case case x>=0 and x<=59 h5=h5+1 case 【1 】 and x<=69 h6=h6+1 case x>=70 and x<=79 【 2】
case 【3 】 and x<=89 h8=h8+1 case x>=90 and 【 4】
h9=h9+1 【 5】
thisform.label1.caption=str(h5)+ str(h6)+str(h7)+str(h8)+str(h9)x>=60 h7=h7+1 x>=80 x<=100 endcase 5 假設(shè)表單與第二題中的表文件zgqk.dbf 建立了數(shù)據(jù)環(huán)境,在其中按姓名查找職工情況,找到后將其情況在表單上顯示,否則在信息框中顯示“查無此人”。試完成下面程序。
【 1】 zgqk xm=thisform.text1.value locate for【2 】
if 【 3】eof()thisform.【4 】
else 【5 】(“查無此人”)Endif use xm=姓名 not refresh messagebox 6 求s=1/1^2+1/2^2+?+1/n^2 【 1】
n=thisform.text1.【2 】
FOR i=1 TO 【3 】
s=s+【4 】
next THISFORM.Label3.Caption=【5 】
s=0 value n 1/i^2 str(s)7 計算1+3+5+??99,并將結(jié)果存入文本框Text1中,請?zhí)羁?/p>
【 1】
FOR N=1 TO 【 2】 step 【 3】
s=s+n end【4 】
【5 】
s=0 99 2 for thisform.text1.value=str(s)8 計算1+3+5+??99,并將結(jié)果存入文本框Text1中,請?zhí)羁?/p>
【 1】
FOR N=1 TO 【 2】
if 【 3】(n/2)<> n/2 s=s+n endif end【 4】
【5 】 s=0 99 int for thisform.text1.value=str(s)9 計算2+4+6+??100,并將結(jié)果存入文本框Text1中,請?zhí)羁?/p>
【1 】
FOR N=2 TO 【2 】step 1 if int(n/2)=【 3】
s=s+n 【4 】
endfor 【 5】
s=0 100 n/2 endif thisform.text1.value=str(s)10 求所有的3位正整數(shù)除以99的商和余數(shù),并輸出。
for i= 【1 】to 【2 】
a= 【 3】
b=【4 】
?【5 】
Endfor 100 999 int(i/99)i%99 a, b 11 求1!+2!+3!+4!+5!。
S=0 For i=1 to【1 】
t=【2 】
for k=1 to 【 3】
t=t*【4 】
endfor s=s+【 5】
endfor 5 1 I k t 12 計算1+2+3+??100,并將結(jié)果存入文本框Text1中,請?zhí)羁?/p>
【 1】
FOR N=1 TO【 2】step 【 3】
s=s+n 【 4】for 【5 】
s=0 100 1 end thisform.text1.value=str(s)13 統(tǒng)計1至100之間能被7整除的數(shù)的個數(shù)并求其和,結(jié)果用信息框(對話框)輸出。Command1_click事件代碼如下:
k=0 s=0 for i=1 to 100 if 【1 】(I,7)=0 k=k+【 2】
s=s+【3 】
endif endfor a=messagebox(【 4】+【 5】)mod 1 I str(k)str(s)14 在文本框Text1中輸入一個字符串,統(tǒng)計其中數(shù)字字符的個數(shù),結(jié)果存入文本框Text2中。Command1_click事件代碼如下: k=0 x=allt(thisform.text1.value)n=【1 】
for i=1 to 【 2】
if subs(x,i,1)>”0” and【3 】
【 4】
endif endfor thisform.text2.value=【 5】
len(x)n subs(x,i,1)>”9” k=k+1 str(k)15.s=求1!+2!+3!+...+20!【1 】
for n=1 to 20 t=1 for m=1 to 【 2】
t=t*【3 】
endfor 【 4】
endfor THISFORM.Text1.Value=【 5】
s=0 n m s=s+t s 16.找出2010至2100之間所有閏年的年份
FOR i=【 1】 TO 【2 】
if i%4=0 AND i%100!=0 OR i%【3 】
? 【4 】
endif 【5 】
2010 2100 400=0 I ENDFOR 17.設(shè)計一個求t=n!的自定義函數(shù)
【 1】f(x)t=【 2】
FOR j = 1 to 【3】 t=t*【4 】 endfor return 【 5】
function[###]func 1 x j t 18.求 Fibonacci 數(shù)列(1,1,2,3,5?)的前n(n>3)項,并輸出
input “n=” to n 【 1】 a(n)a(1)=1 a(2)=1 ? a(1),a(2)for i=3 to 【 2】
a(i)=【 3】+【 4】
?? a(i-1),a(i-2)end【 5】
dime n a(i-1)a(i-2)for 19.輸出zgqk.dbf的基本工資大于600的記錄
【 1】zgqk do while not 【 2】
if 【 3】
【 4】
endif 【5 】
enddo use eof()基本工資>600 disp[###]display skip 1.在Text1中輸入一個3位自然數(shù),分解求和的結(jié)果存入Text2中 2.文本框Text1中輸入的值與文本框Text2中輸入的值交換 3.已知任意一個三角形的三條邊為a、b、c,求其面積。
4.判斷一個學(xué)生的計算機(jī)考試成績x屬于哪個分?jǐn)?shù)段之間(0-59,60-69,70-79,80-89,90-100)287 5.求s=1/1^2+1/2^2+?+1/n^2 6.計算1+3+5+??99,并將結(jié)果存入文本框Text1中,7.計算1+3+5+??99,并將結(jié)果存入文本框Text1中 8.計算2+4+6+??100,并將結(jié)果存入文本框Text1中,9.求所有的3位正整數(shù)除以99的商和余數(shù),并輸出。
10.編寫程序計算:s=1+1/2!+1/3!+?+1/n!,說明:在表單中有一個文本框控件:Text1,用來接收n的值,有一個標(biāo)簽控件:Label1,用來顯示S的值,試編寫表單的單擊事件,實現(xiàn)計算與顯示功能,只要求寫出事件的主要代碼,事件過程的起始語句和結(jié)束語句可略去。11.編寫程序計算:S=1X2+2X3+?+NX(N+1)。0
12.編寫程序計算多項式:1^1+2^2+3^3+?+10^10 0
13.編寫程序在表單上顯示出:1~15之間的偶數(shù) 0
14.編寫程序在表單上顯示出:5/6+4/5+3/4+2/3+1/2 15.假設(shè)表單與第二題中的表文件zgqk.dbf 建立了數(shù)據(jù)環(huán)境,在其中按姓名查找職工情況,找到后將其情況在表單上顯示,否則在信息框中顯示“查無此人”