分類:電腦學習 |
常量類型包括:
數(shù)值型
貨幣型:加一個前置美元符號($),以示與數(shù)值型區(qū)分
字符型(也稱字符串):定界符為半角單引號、又引號、或方括號。注意""不等于" "
日期型:定界符為一對花括號,第一個字符必須是脫字符
日期時間型
邏輯型:定界符是兩個句點,以示與變量名區(qū)分
表達式的顯示:?為換行輸出,??為跟行輸出
日期格式的設置命令:
SET MARK TO <日期分隔符> &&設置分隔符的格式,默認值是斜杠
SET DATE TO MDY|DMY|YMD
SET CENTURY ON|OFF|TO
變量:
無論是值還是類型都可以隨時改變。分字段變量和內(nèi)存變量兩種。同名時默認為字段變量,內(nèi)存變量用M.<變量名>區(qū)分。類型有:數(shù)值型、字符型、貨幣型、日期型、日期時間型、邏輯型
簡單內(nèi)存變量:定義或賦值的命令格式:
<內(nèi)存變量名>=<表達式>
STORE<表達式> to <內(nèi)存變量名表(各變量之間必須用逗號分開)>
數(shù)組:
是內(nèi)存中連續(xù)一片存儲區(qū)域。
數(shù)組創(chuàng)建命令格式
DIMANSION<數(shù)組名>(<下標>)
DECLARE<數(shù)組名>(<下標>)
數(shù)組創(chuàng)建后,系統(tǒng)自動給每個數(shù)組元素賦以邏輯假.F.
內(nèi)存變量的顯示:
LIST MEMORY [LIKE<通配符>] [TO
DISPLAY MEMORY [LIKE<通配符>] [ TO printer | TO file<文件名>](分屏顯示)
內(nèi)存變量的清除:
CLEAR MEMORY (清除所有的)
RELEASE MEMORY (清除指定的)
表與數(shù)組之間的數(shù)據(jù)傳遞:
1)將表的當前記錄復制到數(shù)組:
SCATTER [FIELDS<字段名表>] [MEMO] TO <數(shù)組名> [BLANK]
SCATTER [FIELDS LIKE<通配符> |FIELD EXCEPT<通配符>] [MEMO] TO
注:FIELD指范圍;BLANK產(chǎn)生一個空數(shù)組;MEMO同時復制備注型字段;EXCEPT指除...之外;LIKE指跟...一樣。
2)將數(shù)組復制到表的當前記錄:
GATHER FROM<數(shù)組名>[FIELDS <字段名表>][MEMO]
GATHER FROM<數(shù)組名>[FIELDS LIKE<通配符>|FIELDS EXCEPT<通配符>][MEMO]
表達式:
數(shù)值表達式、字符表達式、日期時間表達式、邏輯表達式(大多是帶比較運算符的關系表達式)
數(shù)值表達式:將數(shù)值型常量、變量及數(shù)值型函數(shù)連接起來形成,結(jié)果仍然是數(shù)值型數(shù)據(jù)。運算符:()、**或^、*、/、%或MOD()、+、-。
字符表達式:字符型數(shù)據(jù)連接起來,結(jié)果仍然是字符型數(shù)據(jù)。運算符:+、-。
日期時間表達式:日期和日期、日期時間和日期時間,只能相減,不能相加。運算符+、-。
關系表達式:<表達式1><關系運算符><表達式2>。關系運算符:<、>、=、<>或#或!=、<=、>=、==(字符串精確比較)、$(右串包含左串為真),運算優(yōu)先級相同。結(jié)果為邏輯型數(shù)據(jù)。
設置字符排序次序的命令:SET COLLATE(對照、核對) TO "<排序次序名>"
字符串精確比較與EXACT設置:
SET EXACT ON/OFF (設置為ON,先在較短字符尾部加上若干空格,使其長度相等,然后再進行精確比較;設置為OFF,只要右邊字符串與左邊字符串的前面部分相匹配,即可得到邏輯真.T.
邏輯表達式:邏輯運算符連接起來,結(jié)果仍然是邏輯型數(shù)據(jù)。優(yōu)先級為NOT(單目運算符)/AND/OR
不同類型運算符優(yōu)先級:算術(shù)運算符、字符串運算符、日期時間運算符、關系運算符、邏輯運算符。圓括號的優(yōu)先級最高。
函數(shù):
數(shù)值函數(shù):
絕對值函數(shù):ABS()
符號函數(shù):SIGN()
取整函數(shù):INT()
圓周率函數(shù):PI()
取余函數(shù):MOD()
求最大值函數(shù):MAX()
求最小值函數(shù):MIN()
四舍五入函數(shù):ROUND()
求平方根函數(shù):SQRT()
字符函數(shù):
字符長度函數(shù):LEN(<字符表達式>)
空串生成函數(shù):SPACE(<數(shù)值表達式>)
刪除空格函數(shù):TTRIM(<字符表達式>)、LTRIM(<字符表達式>)、ALLTRIM(<字符表達式>)
取字符串函數(shù):LEFT(<字符表達式>,<長度>)、RIGHT(<字符表達式>,<長度>)、SUBSTR(<字符表達式>,<起始位置>[,<長度>])
字符串匹配函數(shù):LIKE(<字符表達式1>,<字符表達式2>)
子串替換函數(shù):STUFF(<字符表達式1>,<起始位置>,<長度>,<字符表達式2>)
字符替換函數(shù):CHRTRAN(<字符表達式1>,<字符表達式2>,<字符表達式3>)
計算字串出現(xiàn)次數(shù)函數(shù):OCCURS(<字符表達式1>,<字符表達式2>)
求字串位置函數(shù):AT(<字符表達式1>,<字符表達式2>[,<數(shù)值表達式>])、ATC(<字符表達式1>,<字符表達式2>[,<數(shù)值表達式>]) 注:ATC不區(qū)分字符母大小寫
大小寫轉(zhuǎn)換函數(shù):LOWER(<字符表達式>)、UPPER(<字符表達式>)
日期時間函數(shù):
日期函數(shù):DATE() 值為日期型
時間函數(shù):TIME() 值為字符型
日期時間函數(shù):DATETIME() 值為日期時間型
年YEAR() 值為數(shù)值型
月MONTH() 值為數(shù)值型
日DAY() 值為數(shù)值型
時HOUR() 值為數(shù)值型
分MINUTE 值為數(shù)值型
秒SEC() 值為數(shù)值型
轉(zhuǎn)換函數(shù):
數(shù)值轉(zhuǎn)換字符:STR()
字符轉(zhuǎn)換數(shù)值:VAL()
日期轉(zhuǎn)換字符:DTOC()
日期時間轉(zhuǎn)換字符:TTOC()
字符轉(zhuǎn)換日期:CTOD()
字符轉(zhuǎn)換日期時間:CTOT
宏函數(shù):&()
測試函數(shù):
值域測試:BETWEEN(<表達式1>,<表達式2>,<表達式3>)
空值測試:ISNULL()
“空”值測試:EMPTY()
表文件頭測試:BOF()
表文件尾測試:EOF()
記錄號測試:RECNO()
記錄個數(shù)測試:RECCOUNT()
刪除測試:DELETE()
數(shù)值類型測試:VARTYPE()
條件測試:IIF()
程序的基本結(jié)構(gòu):
選擇結(jié)構(gòu):
簡單選擇結(jié)構(gòu)語句格式:
IF <條件>
ENDIF
一般形式的條件語句格式:
IF <條件>
ELSE
ENDIF
多分支語句格式:
DO CASE
ENDCASE
循環(huán)結(jié)構(gòu):
do while<條件>
<命令序列>
enddo
for <循環(huán)變量>=<初值>to<終值>[storp=<步長>]
endfor|next
模塊:
可以是命令文件,也可以是過程。
過程定義的語法格式:
PROCEDURE | FUNCTION <過程名>
[EDNPROC |ENDFUNC]
過程文件建立命令:
MODIFY COMMAND
擴展名仍是.PRG
模塊的調(diào)用格式:
格式1:使用DO命令
DO <文件名>|<過程名>
格式2:在名字后面加一對小括號
<文件名>|<過程名> ( )
打開過程文件:
SET PROCEDURE TO [<過程文件1>[,<過程文件n>,……][ADDITIVE]
選用ADDITIVE是不關閉已打開的過程文件
關閉所有過程文件:
SET PROCEDURE TO
關閉指定的過程文件:
RELEACSE PROCEDURE <過程文件1>[,過程文件2,……]
建立數(shù)據(jù)庫的命令格式:
CREATE DATABASE[DatabaseName|?]
如果指定數(shù)據(jù)庫已經(jīng)存在,很可能覆蓋掉已經(jīng)存在的數(shù)據(jù)庫。這要看SAFETY(安全、保險)的設置,如果設置為OFF會直接覆蓋,設置為ON會提示。
打開數(shù)據(jù)庫的命令格式:
OPEN DATABASE[FileName | ?]
[EXCLUSEVE | SHARED](獨占還是共享方式)
[NOUPDATE](只讀方式)
[VALIDATE](檢查數(shù)據(jù)庫中引用的對象是否合法)
可以同時打開多個數(shù)據(jù)庫,但只有一個是當前數(shù)據(jù)庫,指定為當前數(shù)據(jù)庫的命令:
SET DATABASE TO [database name]
都不是當前數(shù)據(jù)庫的命令:
SET DATABASE TO
刪除數(shù)據(jù)庫的命令:
delete database databasename | ? [deletetables](同時刪除表)[recycle](放入回收站)
在數(shù)據(jù)庫打開的情況下建立數(shù)據(jù)庫表:
creat tablename
打開表:use tablename(如果不加名字則關閉表,如果當前沒有打開的表則什么都不做)
修改表結(jié)構(gòu):
modify structure
追加表記錄命令:
APPEND [blank]
INSERT [before] [blank]
刪除表記錄的命令:
DELETE FOR [邏輯表達式]
恢復表記錄的命令:
RECALL FOR [邏輯表達式]
物理刪除有刪除標記的記錄:
PACK
物理刪除表中的所有記錄,不管有沒有刪除標記:
ZAP
修改表中的記錄:
EDIT和CHANGE交互修改
REPLACE直接替換。格式:REPLACE fieldname1 WITH expression_r1[,fieldname2 WITH expression_r2]...[FOR expression_r1]
顯示記錄的命令:
list/display[FIELDS] Fieldlist] [FOR expression_rl][OFF]
[TO PRINTER[PROMPT] | TO FILE Filename]
查詢定位命令:
直接定位:GOTO/GO
邏輯定位:SKIP
條件定位:LOCATE FOR [expression_r條件表達式]
常見條件定位的結(jié)構(gòu):
LOCATE FOR [條件表達式]
主索引(候選索引):字段值惟一
惟一索引:索引項惟一
普通索引:字段值、索引項都不惟一
主索引只能有一個,其它索引可以有多個
建立索引的命令:
INDEX ON expression_r TO IDXfilename(單獨的臨時的索引,與以前版本兼容) | TAG Tagname [OF CDXfilename(復合結(jié)構(gòu)索引)]
[FOR expression_r(給出過濾條件)] [COMPACT(壓縮)]
[ASCENDING/DESCENDING]
[UNIQUE(惟一索引) | CANDIDATE(候選索引)]
[ADDITIVE](使新建索引成為當前索引(添加))
使用索引:
SET ORDER TO [Indexname(索引名)] | [TAG] Tagname] [ASCENDING/DESCENDING]
添加自由表到數(shù)據(jù)庫的命令格式:
ADD TABLE
將表從數(shù)據(jù)庫中移出:
REMOVE TABLE
指定工作區(qū)的命令:
SELECT nWorkarea(工作區(qū)) |cTableAlias(表別名)
為表指定別名:
USE (表名) IN 1 ALIAS (別名)
在表間建立臨時聯(lián)系:
SET RELATION TO exprenssion INTO nworkarea | tablealias
排序命令:
SORT TO Tablename ON fieldname1 [/A |/D][/C] [,fieldname2[/A |/D] [/C]...]
[ASCENDING |DESCENDING] [FOR expression_r]
[FIELDS Fieldnamelist]
打印或預覽報表命令格式:
REPORT FORM <報表文件名> [PREVIEW]
VFP的基類有32個,每個類至少有四種屬性。
ACTIVEDOC 活動文檔
COMMANDBUTTON 命令按鈕
CUSTOM 定制
GRID 表格
LABEL 標簽
Oleboundcontrol OLE綁定控件 OPTIONBUTTON 選項按鈕
PAGEFRAME 頁框
SPINNER 微調(diào)控件
四種屬性:
Clase
Baseclase 基類名,當前類從哪個Visual FoxPro基類派生出來
Claselibrary 類庫名,當前類存放在哪個類庫中
ParentClase 父類名,當前類從哪個類直接派生出來
基于某個類的對象用如下函數(shù)生成:
CREATE OBJECT(<類名>[<參數(shù)1>,<參數(shù)2>,......])
對象屬性以及對象方法調(diào)用的基本格式如下:
<對象引用>.<對象屬性>
<對象引用>.<對象方法>[(參數(shù)列表)]
容器層次中的對象引用屬性或關鍵字:
Parent 當前對象的直接容器對象
This 當前對象
ThisForm 當前對象所在的表單
ThisFornSet 當前對象所在的表單集
對象引用:
this
thisform
this.prent
thisformset
事件引發(fā):
load 裝載
unload 卸載
init 初始化
click 單擊
dbclick 雙擊
rightclick 右擊
error 出錯
啟動表單設計器:
create form <文件名> &&創(chuàng)建新的表單
modify form <文件名> &&打開一個已有的表單
數(shù)據(jù)環(huán)境的常用屬性:
AutoOpenTables 當運行或打開表單時,是否打開數(shù)據(jù)環(huán)境中的表和視圖
AutoCloseTables 當釋放或關閉表單時,是否關閉數(shù)據(jù)環(huán)境指定的表和視圖
常用的關系屬性:
RelationalExpr 用于指定基于主表的關聯(lián)表達式
ParentAlias 用于指定主表的別名
ChildAlias 用于指定子表的別名
ChildOrder 用于指定子表中與關聯(lián)表達式相匹配的控制索引
OenToMany 用于指明關系是否為一對多關系
表單常用屬性:
name 字串 表單名,用于程序代碼
caption 字串 表單標題/窗口標題
autocenter .t. .f. 為真時,表單居中打開
backcolor RGB三色 表單背景色
closable .t. .f. 是否可以用控制菜單和按鈕關閉窗口
controlbox .t. .f. 是否有控制圖標和控制按鈕
left/right 數(shù)值 表單左上角坐標
height/width 數(shù)值 表單的高寬
windowstate 0,1,2 表單的初始狀態(tài):0:普通;1:最小化;2,最大化
movable .t. .f. 表單是否允許移動
picture bmp文件 用該文件作為表單背景
屬性賦值有兩種:
絕對引用:
包含對象的各層容器名.對象名.屬性名=值
相對引用:
this.屬性名=值
或:
thisform.表單內(nèi)包含對象的各層容器名.對象名.屬性名=值
命令按鈕組常用屬性:
buttocount:命令按鈕的數(shù)目
buttons:存取命令按鈕組中每個命令按鈕的數(shù)組,代碼中可以通過該數(shù)組訪問命令按鈕組中的各個按鈕
value:默認情況下,命令按鈕組中的各個按鈕被自動賦予一個編號,如1、2、3等,當運行表單時,一旦用戶單擊某個按鈕,則value將保存該按鈕的編號,于是在程序中通過檢測value的值,就可以為相應的按鈕編寫特定的程序代碼。如果在設計時,給value賦予一個字符型數(shù)據(jù),當運行表單時,一旦用戶單擊某個按鈕,則value將保存該按鈕的caption屬性值
對按鈕組中各對象的引用可采用兩種方法:
1)直接引用按鈕名:thisform.commandgroup1.command1.enabled=.f.
2)按照按鈕的順序號來引用:
for i=1 go 4
thisform.mycmdgoup.button(i).forecolor=rgb(255,0,0)
endfor
這里,button是命令按鈕組的一個方法,為按鈕列表數(shù)組,button(i)表示按鈕組中的第i個按鈕。
文本框控件常用屬性:
controlsource:設置文本框的數(shù)據(jù)來源。一般情況下,可以利用該屬性為文本框指定一個字段或內(nèi)存變量。
value:保存文本框的當前內(nèi)容,如果沒有為controlsource屬性指定數(shù)據(jù)源,可以通過該屬性訪問文本框的內(nèi)容。它的初值決定文本框中值的類型。如果為controlsource屬性指定了數(shù)據(jù)源,該屬性值與controlsource屬性指定的變量或字段的值相同。
passwordchar:設置輸入口令時顯示的字符。
readonly:確定文本框是否為只讀,為.t.時,文本框的值不可修改。
“登錄”表單中“確定”按鈕的代碼:
if thisform.text1.value="user1" and thisform.text2.value="123456"
do form mainform
form2.release
else
messagebox ("密碼或用戶名錯誤",0,"提示")
endif
“登錄”表單中“取消”按鈕的代碼:
nanswer=messagebox("你決定退出系統(tǒng)嗎?",4,"提示")
do case
messagebox("請輸入用戶名和密碼",0,"提示")
編輯框的常用屬性:
controlsource:設置編輯框的數(shù)據(jù)源,一般為數(shù)據(jù)表的備注字段。
value:保存編輯框中的內(nèi)容,可以通過該屬性來訪問編輯框中的內(nèi)容。
sellength:返回用戶在文本輸入?yún)^(qū)中所選定字符的數(shù)目。
seltxet:返回用戶在編輯區(qū)內(nèi)選定的文本,如果沒有選定任何文本,則返回空串。
readonly:確定用戶是否能修改編輯框中的內(nèi)容。
scroolbars:指定編輯框是否具有滾動條,當屬性值為0時,編輯框沒有滾動條,當屬性值為2時(默認值),編輯框包含垂直滾動條。
復選框常用屬性:
value:用來指明復選框的當前狀態(tài)
controlsource:用于指定復選框的數(shù)據(jù)源
選項組常用屬性:
buttoncount:指定選項組中選項按鈕的數(shù)目
value:用于指定選項組中哪個選項按鈕被選中
buttons:用于存取選項組中每個選項的數(shù)組
controlsource:指定選項組數(shù)據(jù)源。
列表框(listbox)常用屬性:
rowsourcetype:指明列表框的數(shù)據(jù)源類型
rowsource:指定列表框的數(shù)據(jù)源
list:用于存取列表框中數(shù)據(jù)條目的字符串數(shù)組
listcount:列表框中數(shù)據(jù)條目的數(shù)目
columncount:指定列表框的列數(shù)
value:返回列表框中被選中的條目
controlsource:該屬性在列表框中的用法與在其他控件中的用法有所不同。在這里,用戶可以通過該屬性指定一個字段或變量用以保存用戶從列表框中選擇的結(jié)果
selected:該屬性是一個邏輯型數(shù)組,第N個數(shù)組元素代表第N個數(shù)據(jù)項是否為選定狀態(tài)
multiselect:指定用戶能否在列表框控件內(nèi)進行多重選定
列表框的事件過程:
常用的過程有:click event,dbclick event,additem(添加),removeitem(移動)
表格(grid)控件常用屬性:
recordsourcetype:指明表格數(shù)據(jù)源的類型
recordsource指定數(shù)據(jù)的來源
columncount:指定表格的列數(shù)
linkmaster:用于指定表格控件中所顯示的子表的父表名稱
childorader:指定子表的索引
relationalexpr:確定基于主表字段的關聯(lián)表達式
allowaddnew:為真,運行時允許添加新記錄,否則不能添加新記錄
allowrowsizing:為真,運行時用戶可以改變行高
allowheadersizing:為真,運行時用戶可以改變列寬
常用的列屬性:
controlsource:指定在列中顯示的數(shù)據(jù)源
currentcontrol:指定列對象中顯示和接收數(shù)據(jù)的控件
sparse:用于確定currentcontrol屬性影響列中的所有單元格還是只影響活動單元格
常用的標頭(header)屬性:
caption:指定標頭對象的標題文本,顯示于列頂部。默認為對應字段的字段名
alignment:指定標題文本在對象中顯示的對齊方式
頁面控件常用屬性:
pagecount:指定一個頁框?qū)ο蟀捻搶ο蟮臄?shù)量
pages:存取頁框中的某個頁對象
tabs:是否顯示頁面標簽
tabstretch:頁面標題顯示屬性(0,1)
activepage:返回頁框中活動的頁號
打開類設計器的命令:
create class
修改類的命令:
modify class <類名> of <類庫名>
創(chuàng)建類庫:
create classlib <類庫名>
復制類:
add class <類名> [fo <類庫1>] to
刪除類:
remove class <類名> of <類庫名>
重命名類:
rename class <類名1> of <類庫名> to <類名2>
打開類庫:
set classlib to <類庫名> [additive] [alias <別名>]
關閉所有的類:
set classlib to
關閉當前處于打開狀態(tài)的類庫文件:
release classlib <類庫名1> | alias <別名1>