常用VFP命令、函數及程序語句
一、主要命令:
1、CREATE
作用:建立一個新的表。
格式:CREATE [<文件>|?](注意,命令字符可取前面四個字符,後面可省略不寫,即CREA,下同;中括號表示其中的參數是可選的;|管道符號表示兩個參數隻能選擇一個,不能同時選擇,下同。)
說明:文件指建立以.dbf為擴展名的VFP數據庫文件,在命令後面加上一個問號表示系統會彈出
對話框,要求用戶輸入想要建立的表名。在命令中不加文件名或問號系統也會彈出對話框,要求用
戶輸入想要建立的表名。
2、MODIFY STRUCTURE
作用:顯示表文件結構,並允許修改此表的結構。
格式:MODIFY STRUCTURE
說明:只有在用USE命令打開表文件以後,才能顯示或修改表文件的結構。
3、APPEND
作用:在當前表的尾部(無論表中有無記錄)追加記錄(在當前表指當前正使用的表)。
格式:APPEND [BLANK]
說明:在APPEND命令後面加上BLANK參數表示在當前表的尾部添加一條空白記錄。無BLANK參數時,表示在當前表的尾部添加一條記錄並要求用戶輸入相應的字段內容。
4、INSERT
作用:在表文件中間插入一個新記錄。
格式:INSERT [BEFORE] [BLANK]
說明:INSERT 在當前記錄後插入一記錄;
INSERT BEFORE 在當前記錄前插入一記錄;
INSERT BEFORE BLANK 在當前記錄前插入一空記錄。
5、BROWSE
作用:主要用於打開瀏覽窗口,查閱表文件並同時進行修改。
格式:BROWSE
6、USE
作用:打開和關閉表文件。
格式:USE [<文件名>]
USE
說明:前一個命令用來打開<文件名>指定的表文件,該表如有備註型字段,則同時打開相應的
備註文件(.fpt文件);後一個命令關閉當前打開的表文件。
7、LIST和DISPLAY
作用:顯示表(.dbf)的內容、結構或狀態。
格式:LIST|DISPLAY [OFF] [<範圍>] [FIELDS] <表達式表> [WHILE <條件>] [FOR <條件>]
[TO PRINT|TO FILE <文件>]
LIST|DISPLAY STRUCTURE TO PRINT|TO FILE <文件>]
LIST|DISPLAY STATUS [TO PRINT|TO FILE <文件>]
說明:命令帶OFF參數表示不顯示記錄號,範圍指定對哪些記錄進行操作,範圍包括:RECORD n
第幾號記錄、NEXT n 當前記錄開始的幾個記錄、REST 自當前記錄開始至文件末尾的所有記錄、ALL
所有的記錄。不選範圍則隱含範圍為ALL;FIELDS後跟字段名,字段名與字段名之間用逗號分
隔。WHILE後跟條件,FOR後面也跟條件,區別是,WHILE後的條件如果滿足,便停止查找;FOR後的
條件查找所有滿足條件的記錄。TO PRINT和TO FILE <文件>分別表示將顯示結果在打印機上打印出
來和將顯示結果輸出到文件。DISPLAY命令在顯示記錄滿屏後,要求用戶按任意鍵繼續顯示,並且在
該命令中,如果省略範圍僅顯示當前記錄。格式中,下面兩個命令分別為顯示表結構(STRUCTURE)和工作狀態(STATUS)。
8、記錄的定位
作用:用記錄指針(POINTER)定位記錄。
格式:GO[TO] RECORD n|TOP|BOTTOM
n
SKIP [+|-]
說明:第一個命令又叫絕對定位,其中,RECORD n定位到n號記錄,TOP定位到第1個記錄,
BOTTOM定位到最後一個記錄。第二個命令定位到第n個記錄,n是一個數值。第三個命令又叫相對定
位,它以當前記錄為基準前移(-)或後移(+)n個記錄,不選任選項,則默認記錄指針後移一個記錄。
9、CHANGE和EDIT
作用:顯示要編輯或修改的字段。
格式:CHANGE|EDIT [<範圍>] [FIELDS <字段名表>] [WHILE <條件>] [FOR <條件>]
10、BROWSE
作用:打開一個「瀏覽」窗口,供用戶瀏覽或修改記錄。
格式:BROWSE [FIELDS <字段名表>]
11、REPLACE
作用:用表達式的值代替命令中與之相對應的字段的內容。
格式:REPLACE [<範圍>] <字段1> WITH <表達式1>[,<字段2> WITH <表達式2>] [FOR <條件>
] [WHILE<條件>]
12、DELETE、PACK、ZAP和RECALL
作用:分別是給要刪除的記錄作刪除標記、徹底刪除、刪除所有記錄和取消被選中的表記錄的
刪除標誌。
格式:DELETE [<範圍>] [WHILE<條件>] [FOR <條件>] (特例:DELETE FILE FILENAME.DBF,
該命令刪除指定的表文件)
PACK
ZAP
RECALL [<範圍>] [FOR <條件>] [WHILE<條件>]
13、SORT和INDEX
作用:分別是建立一個其記錄以新的物理順序排列的新表文件和對當前表根據關鍵字表達式的值
從小到大排列,並存入TO後指定的索引文件名的文件或復合索引文件的一個標識中。
格式:SORT TO <文件名> ON <字段名1> [/A] [/C] [/D][,<字段名2> [/A] [/C] [/D]]...
[ASCENDING|DESCENDING] [<範圍>] [FOR <條件>] [WHILE<條件>] [FIELDS<字段表>]
INDEX ON <關鍵字表達式> TO <文件名>
INDEX ON <關鍵字表達式> TAG <標識名> [OF <文件名>] [FOR <條件>]
說明:第1個命令中,/A按字段名升序排序,/D按字段名降序排序,/C忽略大小寫,針對字符型
關鍵字而言,ASCENDING和DESCENDING分別表示升序和降序。第1個命令建立.dbf表文件,第2個命令
建立.idx單一索引文件,第3個命令建立.cdx復合索引文件(Compound Index)。
14、USE <表文件名> INDEX <索引文件名表>、SET INDEX TO和SET ORDER TO
作用:分別是打開表文件的同時打開索引文件、打開索引文件和改變主索引。
格式:USE <表文件名> INDEX <索引文件名表>
SET INDEX TO [<索引文件名表>]
SET ORDER TO [<索引文件名>](特例:重新索引命令:REINDEX)
15、FIND、SEEK和LOCATE及CONTINUE
作用:前兩個命令FIND和SEEK是在一個已經建立了索引文件的表中,定位到關鍵字中的內容與命
令行中字符串相同的第一個記錄。後一個命令在用USE打開表文件以後,直接查詢表中字段內容。
格式:FIND <「字符串」>|<字符串>
SEEK <表達式>
LOCATE [<範圍>] [FOR <條件>] [WHILE<條件>]
CONTINUE
說明:FIND命令與SEEK命令的區別是前者後跟字符串,而後者後跟表達式。在用LOCATE命令找到
一個匹配記錄後,可用CONTINUE命令搜索表的剩餘部分來尋找其他匹配的記錄。
16、COUNT
作用:統計當前表文件中符合條件的記錄數。
格式:COUNT [<範圍>] [FOR <條件>] [WHILE<條件>] [TO <內存變量名>]
說明:內存變量名可用除參數外的任意字符。
17、SUM
作用:對當前表中選中記錄的全部或指定的數值字段或由指定字段組成的數值表達式累加求和。
格式:SUM [<範圍>] [數值<表達式>] [TO <內存變量名表>] [FOR <條件>] [WHILE<條件>]
18、AVERAGE
作用:對當前表中選中記錄的全部或部分數值型字段及其組成的表達式求平均值並顯示。
格式:AVERAGE [<範圍>] [數值<表達式>] [TO <內存變量名表>] [FOR <條件>] [WHILE<條件>]
二、常用函數
1、數學函數
函數 用途
ABS(<數值表達式>) 絕對值,|x|
CEILING(<數值表達式>) >=自變量的最小整數
EXP(<數值表達式>) 對基E的冪,e=2.71828
FLOOR(<數值表達式>) <=自變量的最大整數
INT(<數值表達式>) 取整(舍尾)自變量
LOG(<數值表達式>) 自變量的自然對數,ln x
LOG10(<數值表達式>) 自變量的普通對數,lg x
MAX(<表達式1>,<表達式2>) 兩個值的最大值
MIN(<表達式1>,<表達式2>) 兩個值的最小值
MOD(<數值表達式1>,<數值表達式2>) 求餘數
RAND([<數值表達式1>]) 返回偽隨機數
ROUND(<數值表達式1>,<數值表達式2>) 四捨五入第一個自變量
SIGN(<數值表達式>) 自變量的符號
SQRT(<數值表達式>) 平方根(正根)
2、字符串操作函數
函數 用途
&<內存變量> 用於代替內存變量內容
LEN(<字符串表達式>) 返回字符串表達式的字符個數
SPACE(<數值表達式>) 生成空格
SUBSTR(<字符串表達式>,<數值表達式n>[,<數值表達式L>]) 求子字符串,從指定的字符串表達式第n個開始,總長為L的字符串
LOWER(<字符串表達式>) 將字符串字母轉換成小寫字母
UPPER(<字符串表達式>) 將字符串字母轉換成大寫字母
TRIM(<字符串表達式>) 刪除字符串尾空格
ASC(<字符串表達式>) 返回字符串表達式最左邊的第一個字符的ASCII碼
CHR(<數值表達式>) 將數值表達式轉換成字符
AT(<字符串表達式1>,<字符串表達式2>[,<數值表達式n>]) 確定字符串表達式1在字符串表達式2中的位置,n為字符串表達式第幾次出現
STR(<數值表達式>[,<數值表達式L>][,<數值表達式n>) 將數值轉換為字符串,L為數值表達式總長,n為小數位數
VAL(<字符串表達式>) 將數字字符串轉換為數字
TYPE(<表達式>) 檢測表達式值的數據類型
LTRIM(<字符串表達式>) 刪除字符串左部空格
RTRIM(<字符串表達式>) 刪除字符串右部空格
LEFT(<字符串表達式>,<數值表達式n>) 取字符串左邊部分字符,n為返回的字符個數
RIGHT(<字符串表達式>,<數值表達式n>) 取字符串右邊部分字符,n從右邊截取字符個數
3、表(.dbf)操作函數
函數 用途
BOF([<工作區號或別名>]) 查表文件開始函數
EOF([<工作區號或別名>]) 表文件結尾測試函數
RECNO([<工作區號或別名>]) 測試當前或指定工作區表的當前記錄號
DELETED([<工作區號或別名>]) 記錄刪除測試函數
FILE(<"字符串">) 測試文件是否存在函數
DBF([<工作區號或別名>]) 檢測表的文件名函數
4、日期、時間函數
函數 用途
DATE() 查系統當前日期函數
TIME([<數值表達式>]) 查系統當前時間函數
YEAR(<日期型表達式>|<日期時間型表達式>) 由日期查年函數
MONTH(<日期型表達式>|<日期時間型表達式>) 從日期查月份函數
CMONTH(<日期型表達式>|<日期時間型表達式>) 由日期查月份名函數
DAY(<日期型表達式>|<日期時間型表達式>) 從日期查當月的日函數
DOW(<日期型表達式>|<日期時間型表達式>[,<數值表達式>]) 由日期查星期函數
CDOW(<日期型表達式>|<日期時間型表達式>) 從日期查星期名函數
DTOC(<日期型表達式>|<日期時間型表達式>) 日期轉換為字符函數
CTOD(<字符串表達式>) 字符串轉換為日期函數
CTOT(<字符串表達式>) 返回日期時間值函數
TTOC(<日期時間型表達式>) 返回字符值
5、顯示、打印位置函數
函數 用途
ROW() 判斷光標行位置函數
COL() 判斷光標列位置函數
INKEY([<數值表達式>]) 檢測用戶所擊鍵對應的ASCII碼函數,數值表達式以秒為單位等待擊鍵的時間
6、其他函數
函數 用途
DISKSPACE() 返回默認磁盤驅動器中可用字節數函數
OS() 檢測操作系統名稱的函數
VERSION() 返回VFP版本號的函數
三、主要程序語句
1、條件判斷語句
格式:(1)IF <條件>
<命令語句組>
ENDIF
說明:如果條件為真,則執行命令語句組中的各語句,否則跳過這些命令語句不執行,
而執行ENDIF後的語句。
(2)IF <條件>
<命令語句組1>
ELSE
<命令語句組2>
ENDIF
說明:如果條件為真,執行命令語句組1,否則執行命令語句組2。
(3)IF <條件1>
IF <條件2>
<命令語句組1>
ELSE
<命令語句組2>
ENDIF
...
ELSE
<命令語句組N>
ENDIF
說明:進行多重條件的嵌套選擇。
(4)DO CASE
CASE <條件1>
<命令語句組1>
CASE <條件2>
<命令語句組2>
CASE <條件3>
<命令語句組3>
...
...
CASE <條件N>
<命令語句組N>
[OTHERWISE]
[<命令語句組N+1>]
ENDCASE
說明:依次判斷條件,轉入條件為真的命令語句組中執行。當所有條件都不成立時,若有
OTHERWISE項,則執行命令語句組N+1,否則執行ENDCASE後面的語句。
2、循環語句
格式:(1)DO WHILE <條件>
<命令語句組>
[LOOP]
<命令語句組>
[EXIT]
<命令語句組>
ENDDO
說明:判斷條件是否為真,如為真就重複執行循環體中的命令語句組,直到條件為假,結束循
環。
(2)SCAN
<命令語句組>
ENDSCAN
說明:在一個表中建立一個執行命令語句組的循環,並執行對每一條記錄的操作,直到表文件
記錄完為止。
VFP常用函數使用說明
1、數值運算函數
函數 操作 例 結果
SQRT(x) 求平方根 SQRT(9) 3
INT(x) 取整數 INT(3.14) 3
ROUND(x) 四捨五入 ROUND(3.14159,4) 3.1416
MOD(x,y) 求X除以Y的餘數 MOD(25,4) 1
MAX(x,y) 求X,Y中的最大值 MAX(7,8) 8
MIN(x,y) 求X,Y中的最小值 MIN(1,2,3) 1
2、字符中操作函數
函數名 操作 例 結果
UPPER(S) 小寫字母 UPPER(abc) ABC
LOWER(S) 大寫字母 LOWER(ACD) acd
LEN(S) 求字符串的長度 LEN("中國1號") 7
AT(S1,S2) 在字符串S2,找字符串S1 AT("H","CHINA") 2
SUBSTR(S,I,N) 在S字符串中的第I個字符起取N個字符 SUBSTR('TECHNOLO',3,3) CHN
LEFT(S,N) 從字符串S左邊取N個字符 LEFT(「中國人」,4) 中國
RIGHT(S,N) 從字符串S右邊取N個字符 S=『12345』
RIGHT(S,3) 345
SPACE(N) 生成N個空格 "合計"+SPACE(2)+"123" 合計123
TRIM(S) 消除字符串尾部空格 TRIM("姓名 ") 姓名
ALLTRI(S) 消除字符串中所有空格 ALLTRIM("李 麗") 李麗
STUFF(S1,N1,N2,S2) 用字符串S2替換S1中第N1個字符起的N2個字符 STUFF("NOW",2,1,"E") NEW
& 宏替換 P=「G2」
USE &P USE G2
3、日期和時間函數
函數名 操作 例 結果
DATE() 求當前日期 DATE() 2001/11/12
DATETIME() 求當前日期和時間 DATETIME() 2001/11/12/0:22:33am
YEAR(D) 求年份 YEAR(DATE()) 2001
MONTH(D) 求月份(數值) MONTH(DATETIME()) 11
CMONTH(D) 求月份(字符) MONTH(DATETIME()) Novenber
DAY(D) 求日期 DAY(DATE()) 12
DOW(D) 求星期幾(數值) DOW(DATE()) 1
CDOW(D) 求星期幾(英文) CDOW(DATE()) sunday
TIME(D) 求當前時間 TIME(DATE()) 10:20:38am
4、數據類型轉換函數
函數名 操作 例 結果
ASC(S) 求第一個字符串的ASCII碼 ASC("what") 87
CHR(N) 求ASCII碼的字符 CHR(87) w
STR(R,L,D) 數值轉換成字符,L為長度,D為小數位數 X=3.1415
STR(X,6,2) 3.14
VAL(S) 字符串轉換為數值 VAL("123") 123.00
CTOD(S) 字符串轉日期 CTOD('11/01/2002') 11/01/2002
DTOC(D) 日期轉換成字符串 DTOC(DATE()) 11/01/2002
DTOS(D) 把日期轉成年月日式的字符串 DTOS(DATE()) 20021101
CTOT(C) 字符串轉成日期時間型 CTOT(11/01/2002 10:30:50am) 11/01/2002 10:30:50am
DTOT(D) 日期型轉為日期時間型 DTOT(DATE()) 11/25/2001 00:00:01am
TTOC(T) 日期時間型轉為字符型 TTOC(DATETIME()) 11/25/2001 00:00:01am
TTOD(T) 日期時間型轉為日期型 TTOD(DATETIME()) 11/25/2001
IIF(LE,E1,E2) 邏輯判斷 IIF(A>0,"YES","NO") YES
5、檢測函數
函數名 操作 例 結果
RECNO() 檢測當前記錄號 RECNO() 1
RECCOUNT() 檢測當前記錄數 RECCOUNT() 12
BOF() 開始記錄 BOF() 1
EOF() 最後記錄 EOF() 12
FOUND() 返回查找結果 FOUND() .T.
ROW() 返回當前行坐標 ROW() 1
COL() 返回當前列坐標 COL() 1
SYS(N) 返回系統狀態 SYS(13) 聯機狀態