版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第3章VisualFoxPro6.。語言基礎(chǔ)
1
3.1數(shù)據(jù)類型、常量及變量
3.1.1數(shù)據(jù)類型
數(shù)據(jù)是DBS的操作和管理對象.
數(shù)據(jù)內(nèi)容:指所描述客觀事物的具體特性,即數(shù)據(jù)值.
數(shù)據(jù)形式:數(shù)據(jù)存儲形式和運(yùn)算方式,即數(shù)據(jù)類型,每一個(gè)
數(shù)據(jù)都有一定的類型.
為使用戶建立和操作數(shù)據(jù)庫更加方便,在VFP系統(tǒng)中提供
了多種不同的數(shù)據(jù)類型。下面主要介紹11中常用的數(shù)據(jù)類型。
1)字符型(Character,C)
字符型(Character)數(shù)據(jù)是由中英文字符、數(shù)字
字符和其他ASCII字符組成的字符序列
2)數(shù)值型(Numeric,N)
數(shù)值型數(shù)據(jù)由數(shù)字。?9以及正負(fù)號(+和-)和小
數(shù)點(diǎn)(.)組成。
3)浮點(diǎn)型(Float,F)
與數(shù)值型數(shù)據(jù)完全等價(jià),只是在存儲形式上采
取浮點(diǎn)格式且數(shù)據(jù)的精度要比數(shù)值型數(shù)據(jù)高。只能
用于字段定義.
4)貨幣型(Currency,Y)
數(shù)據(jù)的第一個(gè)數(shù)字前冠一個(gè)貨幣符號($)。默認(rèn)小數(shù)位4位,
小數(shù)位超過4個(gè)字符的數(shù)據(jù),系統(tǒng)將會(huì)按四舍五入原則自動(dòng)截取。
占8個(gè)字節(jié).
5)雙精度型(Double,B)
它只用于數(shù)據(jù)表中的字段類型的定義,并采用固定長度浮點(diǎn)
格式存儲。
6)整型(Integer,I)
只用于數(shù)據(jù)表中的字段類型的定義,不帶小數(shù)點(diǎn)的數(shù)值類型,
占4個(gè)字節(jié)。只能用于字段定義。在表中整型數(shù)據(jù)以二進(jìn)制形式
存儲。
7)日期型(date,D)
長度固定為8個(gè)字節(jié)。日期型數(shù)據(jù)包括年、月、日三個(gè)部分,
每部分間用規(guī)定的分隔符分開。A
8)日期時(shí)間型(dateTime,T)
描述日期和時(shí)間的數(shù)據(jù),長度固定為8個(gè)字節(jié)。除包括日期數(shù)據(jù)的
年、月、日夕卜,還包括時(shí)、分、秒以及上午、下午等內(nèi)容。
9)邏輯型(Logic,L)
邏輯型數(shù)據(jù)是描述客觀事物真假的數(shù)據(jù),用于表示邏輯判斷結(jié)果。
邏輯型數(shù)據(jù)只有真和假兩種值,長度固定為1個(gè)字節(jié)。
10)備注型
用于存放較長的字符型數(shù)據(jù)類型。備注型數(shù)據(jù)沒有數(shù)據(jù)長度限制,
僅受限于現(xiàn)有的磁盤空間。其字段長度固定為4個(gè)字符,用于存儲備
注文件的地址(指針),而實(shí)際數(shù)據(jù)被存放在與數(shù)據(jù)表文件同名的備注
文件(*.dpt)中,長度根據(jù)數(shù)據(jù)的內(nèi)容而定。只能用于字段定義
11)通用型(General,G)
通用型數(shù)據(jù)是用于存儲OLE對象的數(shù)據(jù)。通用型數(shù)據(jù)中的OLE(對
象鏈接嵌入)對象可以是電子表格、文檔、圖片等。只能用于字段定
義.
通用型數(shù)據(jù)長度固定為4個(gè)字符,實(shí)際數(shù)據(jù)長度僅受限于現(xiàn)有的
磁盤空間。只能用于字段定義.
根據(jù)處理數(shù)據(jù)的形式來劃分,VF中有常量,變量,表達(dá)式和函數(shù)四
種形式的數(shù)據(jù).
3.1.2常量
常量用以表示一個(gè)具體的、不變的值.
1)數(shù)值型常量
表示一個(gè)數(shù)量的大小,由數(shù)字0?9、小數(shù)點(diǎn)和正負(fù)號構(gòu)成。用
科學(xué)記數(shù)法形式表示很大或很小的數(shù)值型常量.數(shù)值型數(shù)據(jù)在內(nèi)存中
用8個(gè)字節(jié)表示.
■
?2)貨幣型常量
用來表示貨幣量,書寫時(shí)須加上前置的符號($)采用4位小數(shù)。
如一個(gè)貨幣型常量多于4位小數(shù),那么系統(tǒng)會(huì)自動(dòng)將多余的小數(shù)位四
舍五人。如$123.456789將存儲為$123.4568,沒有科學(xué)記數(shù)法形式,
在內(nèi)存中占用8個(gè)字節(jié)。
3)字符型常量
?表示一系列字符序列
?定界符:單引號、雙引號或方括號。許多常量都有定界符,不作為
常量本身的內(nèi)容,但它規(guī)定了常量的類型以及常量的起始和終止界
限。
注:(1)定界符必須成對匹配,不能一邊用單引號而另一邊用雙
相號.(2)空串(不包含任何字符的字符串其長度為零)和空格串(包
含若干空格的字符串)是有區(qū)別的。即”"”
4)日期型常量
?定界符:一對花括號{}。
?花括號內(nèi)包括年、月、日三部分內(nèi)容,各部分內(nèi)容之間用分隔
符分隔。分隔符可是斜杠(/)、連字號(-)、句點(diǎn)(.)和空格,其中
是系統(tǒng)在顯示日期型數(shù)據(jù)時(shí)使用的默認(rèn)分隔符。
日期型常量的格式:
①傳統(tǒng)的日期格式
系統(tǒng)默認(rèn)的日期型數(shù)據(jù)為美國日期格式“mm/dd/yy”(月/日/年),
傳統(tǒng)日期格式中的月、日各為2位數(shù)字,而年份可是2位也可是4位
數(shù)字,如{10/08/06}、{10-08-06}.{10.08.2006}
②嚴(yán)格的日期格式:{Ayyyy-mm—dd}
花括號內(nèi)第一個(gè)字符必須是脫字符O;年份必須用4位(如
2001、1999等);年月日的次序不能顛倒、不能缺省。如{八2006-
10-08}
③影響日期格式的設(shè)置命令
命令格式:setmarkto[日期分隔符]
命令功能:用于設(shè)置顯示日期型數(shù)據(jù)時(shí)使用的分隔符,如
?命令格式:setdateto
命令功能:設(shè)置日期顯示的格式
?命令格式:setcenturyon/off
命令功能:用于設(shè)置顯示日期型數(shù)據(jù)時(shí)是否顯示世紀(jì)即是否
用4位數(shù)字顯示年份
?命令格式:setstrictdateto[01112]
命令功能:用于設(shè)置是否對日期格式進(jìn)行檢查。0表示不進(jìn)行嚴(yán)
格的日期格式檢查:1表示進(jìn)行嚴(yán)格的日期格式檢查,它是系統(tǒng)
默認(rèn)的設(shè)置;2表示進(jìn)行嚴(yán)格的日期格式檢查,并且對ctod()和
ctot()函數(shù)的格式也有效。
10
「■常用日期格式
短語格式短語格式
AMERICANmm/dd/yyBRITISHdd/mm/yy
FRANCE
MDYmm/dd/yyDMYdd/min/yy
USAmm-dd-yyGERMANdd.mm.yy
ITALIANdd-mm-yy
JAPANyy/mm/ddANSIyy.mm.dd
YMDyy/mm/dd
■
1一
yU"5)日期時(shí)間型常量
日期時(shí)間型常量包括日期和時(shí)間兩部分內(nèi)容:
{〈日期〉,〈時(shí)間》?!慈掌冢┎糠峙c日期型常量相似,也有傳
統(tǒng)的和嚴(yán)格的兩種格式。
〈時(shí)間》部分的格式為:[hh[:mm[:ss]][aIp]].其中hh、mm和ss
分別代表時(shí)、分和秒,默認(rèn)值分別為12、0和0。AM和PM分別代表上
午和下午,默認(rèn)值為AM。如果指定的時(shí)間大于等于12,則自然為下
午的時(shí)間。
【例3.1]設(shè)置不同的日期格式。
SETCENTURYON&&設(shè)置4位數(shù)字年份
SETMARKTO&&恢復(fù)系統(tǒng)默認(rèn)的斜杠日期分隔符
SETDATETOYMD&&設(shè)置為“年/月/日”格式
?{八2006-05-15,09:25:45a}
主窗口顯示:2006/05/1509:25:45AM
1
6)邏輯型常量
邏輯型數(shù)據(jù)只有邏輯真和邏輯假兩個(gè)值.
邏輯真:.T.、.t.、.Y.和.y.
邏輯假:.F.、.f.、.N.和.n.
注:前后兩個(gè)句點(diǎn)作為邏輯型常量的定界符是必不可少的,
否則會(huì)被誤認(rèn)為變量名。
■V3,13變量
?定義:在命令執(zhí)行過程中,其值可變化的量稱為變量。變量值在使用
過程中可改變.
?分類:在VFP中變量分為系統(tǒng)變量、字段變量和內(nèi)存變量。
字段變量:字段變量就是表中的字段名,其值是表中對應(yīng)的記錄值。
內(nèi)存變量:它是一種臨時(shí)變量
注意:若字段變量名與內(nèi)存變量相同,則默認(rèn)訪問字段變量,要
訪問內(nèi)存變量,則采用M.內(nèi)存變量或者M(jìn)一內(nèi)存變量
1.變量命名規(guī)則
?以字母或漢字或下劃線開頭的字母,下劃線,漢字和數(shù)字的組
合;
?避免使用VFP的保留字;
2字段變量
與其他變量不同的是,字段變量是定義在表中的變量,隨表的
存取而存取,因而是永久性變量。字段名就是變量名;字段變量
的數(shù)據(jù)類型為VisualFoxPro中13種數(shù)據(jù)類型中的任意數(shù)據(jù)類型,
字段值就是變量值。不參與運(yùn)算的數(shù)字定義為C。
3.內(nèi)存變量
(1)內(nèi)存變量的數(shù)據(jù)類型(6種)
內(nèi)存變量的數(shù)據(jù)類型包括:數(shù)值型、字符型、貨幣型、邏輯
型、日期型和日期時(shí)間型;
(2)內(nèi)存變量的賦值
命令格式1:STORE〈表達(dá)式》TO〈內(nèi)存變量表)
功能:把一個(gè)相同的值同時(shí)賦值給多個(gè)內(nèi)存變量。
命令格式2:<內(nèi)存變量>=<表達(dá)式)
功能:計(jì)算<表達(dá)式》的值并賦值給指定一個(gè)內(nèi)存變量。
注:內(nèi)存變量的類型為最后賦值的值的類型。
內(nèi)存變量的類型取決于變量值的類型變量的類型可以改變,
可把不同類型的數(shù)據(jù)賦給同一個(gè)內(nèi)存變量。
■
學(xué)【例3.2]變量賦值。
在命令窗口輸入命令:
aa="abcdef"
STORE"DFASDFAS"TOaa
STORE1TOsi,s2,s3
?si,s2,s3,aa
主窗口顯示:111DFASDFAS
用5101^和=都可以賦值,但是用STORE可以一次給
多個(gè)內(nèi)存變量賦值。在上面的例子中,aa、si、s2、s3都
是內(nèi)存變量。aa的數(shù)據(jù)類型為字符型,而si、s2、s3是數(shù)
值型內(nèi)存變量。
,(3)內(nèi)存變量值的輸出
格式:?I??<表達(dá)式表〉[AT<列號>]
?:先回車換行,再計(jì)算并輸出表達(dá)式的值;
??:在屏幕上當(dāng)前位置,計(jì)算并直接輸出表達(dá)式的值;
<表達(dá)式表):用逗號兩兩分隔的表達(dá)式,各表達(dá)式的值輸出時(shí),
以空格分隔;
AT〈列號>子句指定表達(dá)式值從指定列開始顯示輸出。AT的定位
只對它前面的一個(gè)表達(dá)式有效,多個(gè)表達(dá)式必須用多個(gè)AT子句分別定
位輸出。
(4)內(nèi)存變量的顯示(顯示變量名,作用域,類型,值)
格式:list|displaymemory
Listmemory一次顯示與通配符匹配的所有內(nèi)存變量,
displaymemory分屏顯示與通配符匹配的所有內(nèi)存變量,如內(nèi)存變量
多,顯示一屏后暫停,按任意鍵之后再繼續(xù)顯示下一屏。
(5).內(nèi)存變量的清除
格式1:clearmemory
功能:清除所有內(nèi)存變量
格式2:release<內(nèi)存變量名表》
功能:清除指定的內(nèi)存變量
格式3:releaseal1[1ike<通配符>Iexcept〈通配符>]
功能:選用LIKE短語清除與通配符相配的內(nèi)存變量,選用except短
語清除與通配符不相匹配的內(nèi)存變量。
VF中有兩個(gè)通配符:?代表任意一個(gè)字符
*代表任意個(gè)字符
格式4:clearal1
功能:清除所有的內(nèi)存變量,并關(guān)閉所有打開的庫文件及相關(guān)文件,
設(shè)置1區(qū)為當(dāng)前工作區(qū)。
⑹內(nèi)存變量的存儲與恢復(fù)
由于內(nèi)存變量是建立在內(nèi)存中的,一旦退出VFP系統(tǒng)或關(guān)
機(jī),內(nèi)存變量便消失了。為了保存內(nèi)存變量,以備以后再使用,
VFP系統(tǒng)提供了建立和恢復(fù)內(nèi)存變量文件的命令。
①建立內(nèi)存變量文件
格式:SAVETO<內(nèi)存變量文件名>ITOMEM0<備注字段名》[ALL
LIKE|EXCEPT<通配式>]
功能:將內(nèi)存變量保存到內(nèi)存變量文件或指定的備注字段中去。系統(tǒng)自
動(dòng)給內(nèi)存變量文件加上擴(kuò)展名.MEMO
②恢復(fù)內(nèi)存變量文件
格式:RESTOREFROM內(nèi)存變量文件名〔FROMMEMO備注字段名
[ADDITIVE]
功能:從指定的內(nèi)存變量文件或備注字段中,將保存的內(nèi)存變
量恢復(fù)到內(nèi)存中來。若無ADDITIVE選項(xiàng),則先清除當(dāng)前內(nèi)存中
的全部內(nèi)存變量后,再恢復(fù);否則不清除,只將同名的內(nèi)存變
量覆蓋。
4.數(shù)組變量
數(shù)組變量被定義為一組變量的集合,它是具有相同名稱而下標(biāo)不
同的一組有序內(nèi)存變量,這些變量可以具有不同的數(shù)據(jù)類型。VFP允
許定義一維和二維數(shù)組,在使用數(shù)組時(shí)應(yīng)遵循先定義后使用的原則。
(1)數(shù)組定義
格式:DIMENSIONRJB<1|]DECLARE<數(shù)組名1>(〈下標(biāo)上界1>[,
<下標(biāo)上界2>])[,<數(shù)組名2》(<下標(biāo)上界3>[,〈下標(biāo)上界
功能:定義一個(gè)或多個(gè)一維數(shù)組或二維數(shù)組。
說明:
①下標(biāo)上界是一數(shù)量值,下標(biāo)的下界由系統(tǒng)統(tǒng)一規(guī)定為1。
②命令DIMENSION和DECLARE的功能完全相同。數(shù)組一旦定義,數(shù)組的每
個(gè)元素的初值均為邏輯值.F.o
③在定義數(shù)組時(shí),數(shù)組名不能與同一環(huán)境下的簡單變量同名。
■(2)數(shù)組元素的賦值與引用y
■數(shù)組下標(biāo)應(yīng)使用圓括號,二維數(shù)組的下標(biāo)之間使用逗號隔開。
■數(shù)組的下標(biāo)可以是常量、變量和表達(dá)式,如A(l)、A(bl)、A(a+b)o
■數(shù)組元素的類型為最近一次被賦值的類型。
■每個(gè)數(shù)組元素可通過數(shù)組名及相應(yīng)的下標(biāo)來訪問
DIMENSIONx⑸,y(2,3)命令定義了兩個(gè)數(shù)組:
一維數(shù)組x含5個(gè)元素:x(l)、x(2)、x(3)、x(4)、x(5)o
二維數(shù)組y含6個(gè)元素:y(1,1),y(1,2),y(1,3),y(2,1),y(2,2),y(2,3)
y(1),y(2),y(3),y(4),y(5),y(6)
-在賦值語句中也可使用數(shù)組名將同一個(gè)值賦給數(shù)組的所有元素。
■可用一維數(shù)組的形式訪問二維數(shù)組。例如上面定義的數(shù)組y中的各元
素用一維數(shù)組形式可依次表示為:y(l)y(2)y(3)y(4)y(5)y(6)o
其中y(4)與y(2,1)引用的是同一變量。
【例3.3]定義數(shù)組、賦值并輸出。
DIMENSIONA(2),B(2,2),C(2)
A(1)=,,ABCD"
A(2)=T.
B(1,2)=A(1)
B(2,2)=123
B(2,1)=11.1
C=2
?A⑴,A⑵,B(1,2),B(2,2),C⑴,C⑵
主窗口顯示:ABCD.T.ABCD12322
一
系統(tǒng)變量
系統(tǒng)變量是由VFP系統(tǒng)自動(dòng)生成的變量,它的名字是系統(tǒng)
已定義好的,均以“J(下劃線)字符開頭。例如.CLIPTEXT表示接
受文本并送入剪貼板。
系統(tǒng)變量與一般變量有相同的使用方法。在定義內(nèi)存變
量名時(shí),不要以“丁字符開頭以避免重名。合理地運(yùn)用系統(tǒng)變量,
會(huì)給數(shù)據(jù)庫系統(tǒng)的操作、管理帶來許多方便。在使用DISPLAY
MEMORY命令顯示內(nèi)存變量時(shí),可以看到這些系統(tǒng)變量的當(dāng)前值。
■孟
3.2運(yùn)算符與表達(dá)式
運(yùn)算符:是在VFP中用來進(jìn)行運(yùn)算的符號。
表達(dá)式:就是常量,變量和函數(shù)用運(yùn)算符連接起來的式子,
根據(jù)運(yùn)算對象的數(shù)據(jù)類型不同,表達(dá)式可以分為算術(shù)表達(dá)式、字
符表達(dá)式、日期和時(shí)間表達(dá)式、關(guān)系表達(dá)式和邏輯表達(dá)式。
常量、變量和函數(shù)本身可以就是一個(gè)表達(dá)式。
3
3.2.1算術(shù)表達(dá)式
數(shù)值表達(dá)式由算術(shù)運(yùn)算符與數(shù)值型常量、變量、函數(shù)構(gòu)成,運(yùn)
算結(jié)果仍為數(shù)值型。又稱數(shù)值表達(dá)式,其運(yùn)算對象和運(yùn)算結(jié)果均為
數(shù)值型數(shù)據(jù)。數(shù)值運(yùn)算符的功能及運(yùn)算優(yōu)先順序,如下表所示:
優(yōu)先級運(yùn)算符說明
1()形成表達(dá)式內(nèi)的子
表達(dá)式
2**人乘方運(yùn)算
3*、/、%乘、除運(yùn)算、求余
運(yùn)算
4+、-加、減運(yùn)算
27
gm.m7
【例3.4]寫出數(shù)學(xué)式.2所對應(yīng)的算術(shù)表達(dá)式
2+r
提示:在書寫VFP表達(dá)式時(shí),需將數(shù)學(xué)式子中的所有運(yùn)算符
和運(yùn)算量改寫為VPF所規(guī)定的運(yùn)算符和運(yùn)算量,并將所有的字
符寫在同一水平線上。同時(shí)為保證數(shù)學(xué)式子和VFP的表達(dá)式的
一致性,需在必要時(shí)需加()。為此,該數(shù)學(xué)式子對應(yīng)的VFP
算術(shù)表達(dá)式為:
g*ml*m2/(2+r**2)或g*ml*m2/(2+rA2)
或g*ml*m2/(2+r*r)
3
3.3.2字符表達(dá)式
字符表達(dá)式由字符運(yùn)算符與字符型常量、變量、函數(shù)構(gòu)成,
運(yùn)算結(jié)果仍為字符型。VFP字符運(yùn)算有兩類:連接運(yùn)算和包含運(yùn)算。
它們的優(yōu)先級相同:
1)連接運(yùn)算
連接運(yùn)算符有完全連接運(yùn)算符和不完全連接運(yùn)算符“-"2種。
十:前后兩個(gè)字符串首尾連接形成一個(gè)新的字符串。
-:連接前后兩個(gè)字符串,并將前字符串的尾部空格移到合并后的
新字符串尾部。
29
【例3.5]字符連接運(yùn)算示例。
字符串表達(dá)式運(yùn)算結(jié)果
〃計(jì)算機(jī)世界〃計(jì)算機(jī)世界
,,inhavenannn+,,BooknI□have□a□□Book
"計(jì)算機(jī)口□"-"世界"計(jì)算機(jī)世界口□
Hinhavennann-"BooknIDhaveDDaBookn
注:表中“口”表示空格。
■
2)包含運(yùn)算
“$”是字符串的包含運(yùn)算符,其運(yùn)算的結(jié)果是邏輯值。
如果字符串1包含在字符串2中,則運(yùn)算結(jié)果為真(.T.),否
則為假(.F.)o
【例3.6】字符串包含運(yùn)算示例。
字符串表達(dá)式運(yùn)算結(jié)果
〃計(jì)算機(jī)"$"計(jì)算機(jī)世界〃.T.
"TYPE"$"IhaveaBook".F.
3.2.3日期表達(dá)式和日期時(shí)間表達(dá)式
日期和日期時(shí)間運(yùn)算符分為“+〃和”-〃兩種,其作用分別是在
日期數(shù)據(jù)上增加或減少天數(shù),在日期時(shí)間數(shù)據(jù)上增加或減少秒數(shù)。
兩個(gè)運(yùn)算的優(yōu)先級別相同。
格式結(jié)果及類型
V日期〉+V天數(shù)〉日期型。指定日期若干天后的日期
V天數(shù)〉+V日期〉日期型。指定日期若干天后的日期
V日期〉-V天數(shù)〉日期型。指定日期若干天前的日期
V日期〉-V日期〉數(shù)值型。兩個(gè)指定日期相差的天數(shù)
V日期時(shí)間〉+V秒數(shù)〉日期時(shí)間型。指定日期時(shí)間若干秒后的日
期時(shí)間
V秒數(shù)〉+V日期時(shí)間〉日期時(shí)間型。指定日期時(shí)間若干秒后的日
期時(shí)間
V日期時(shí)間〉-V秒數(shù)〉日期時(shí)間型。指定日期時(shí)間若干秒前的日
期時(shí)間
V日期時(shí)間》-〈日期時(shí)間)數(shù)值型。兩個(gè)指定日期時(shí)間相差的秒數(shù).
注意:日期型不能和日期型數(shù)據(jù)相加
【例3.7】日期和日期時(shí)間表達(dá)式運(yùn)算示例。
d2=DATE()+2
d3=DATE()-2
?d2-d3
主窗口顯示:4
.
3.2.4關(guān)系表達(dá)式
由關(guān)系運(yùn)算符連接兩個(gè)同類數(shù)據(jù)對象進(jìn)行關(guān)系比較的運(yùn)算式稱
為關(guān)系表達(dá)式。關(guān)系表達(dá)式的返回值為邏輯值,關(guān)系表達(dá)式成立則
其值為“真”,否則為“假”。關(guān)系運(yùn)算符具有相同的優(yōu)先級。
運(yùn)算符說明運(yùn)算符說明
<小于<=小于等于
>大于>=大于等于
—等于——字符串精確比較
<>>#、!=不等于
1一
注:運(yùn)算符==(精確比較)僅適用于字符型數(shù)據(jù),其他運(yùn)算符
適用于任何類型的數(shù)據(jù),但前后兩個(gè)運(yùn)算對象的數(shù)據(jù)類型要一
致。
各種類型數(shù)據(jù)的比較規(guī)則如下:
■數(shù)值型和貨幣型數(shù)據(jù)根據(jù)其代數(shù)值的大小進(jìn)行比較。
■日期型和日期時(shí)間型數(shù)據(jù)進(jìn)行比較時(shí),離現(xiàn)在日期或時(shí)間越近
的日期或時(shí)間越大。
■邏輯型數(shù)據(jù)比較時(shí),.T.比.F.大。
.
■字符型數(shù)據(jù)(字符串)比較時(shí),對于西文字符,按其ASCH碼值的大小進(jìn)行
排列;對于漢字字符,在默認(rèn)狀態(tài)下,根據(jù)它們的拼音順序比較大小。字
符串比較時(shí),先將2個(gè)字符串的第一個(gè)字符比較,若兩者不等,其大小就決
定了2個(gè)字符串的大小。若相等,則再將第2個(gè)字符比較,以次類推,直到
最后,若每個(gè)字符都相等,貝|2個(gè)字符串相等。
■當(dāng)運(yùn)算對象為字符型時(shí),可用命令SETEXACTON/OFF來設(shè)置“=”是否為
精確比較。在非精確比較時(shí),在關(guān)系表達(dá)式的格式中,只要后一個(gè)表達(dá)
式是前一個(gè)表達(dá)式的前綴,其結(jié)果便為真。
1
【例3.8】關(guān)系運(yùn)算示例。
SETEXACTOFF&&設(shè)置字符串為非精確比較
?1244.33>22&&.T.
?aa>bb&&.T.或者.F.,取決于變量aa和bb的內(nèi)容
?"A">"BU&&,F.
?“助教”>“教授”&&,T.
zc="教授口□〃
?zc="教授","教授"=zc,"教授"==LEFT(zc,4),zc=="教授"
主窗口顯示:.T..F..T..F
注意:在非精確比較狀態(tài)下,條件zc="教授"與條件〃教授』
zc不等價(jià)。
3.2.5邏輯表達(dá)式
由邏輯運(yùn)算符將邏輯型數(shù)據(jù)對象連接而成的式子稱為邏輯表達(dá)
式。邏輯表達(dá)式的運(yùn)算對象與運(yùn)算結(jié)果均為邏輯型數(shù)據(jù)。邏輯運(yùn)算
符前后一般要加圓點(diǎn)".〃標(biāo)記,以示區(qū)別,也可省略。
運(yùn)算符功能優(yōu)先級別
0圓括號最高
.NOT.或!邏輯非1
.AND.邏輯與1
最低
.OR.邏輯或
航
邏輯運(yùn)算真值表
ABA.AND.BA.OR.B.NOT.A
.T..T..T..T..F.
.T..F..F..T..F.
.F..T..F..T..T.
.E.F..F..F..T.
當(dāng)一個(gè)表達(dá)式包含多種運(yùn)算時(shí),其運(yùn)算的優(yōu)先
級由高到低排列為:算術(shù)運(yùn)算T字符串運(yùn)算T日期
和時(shí)間運(yùn)算-關(guān)系運(yùn)算一邏輯運(yùn)算。
39
【例3.9]邏輯運(yùn)算示例。
x=8
y=15
?x>5,y<10,x>5ORy<10,x>5ANDRKG*2]y<10,NOTy<10
主窗口顯示:.T..F..T..F..T.
3.3VisualFoxPro6.0常用函數(shù)
為了增強(qiáng)系統(tǒng)的功能和方便使用,VFP提供了許多函數(shù),每
個(gè)函數(shù)實(shí)現(xiàn)某個(gè)特定的功能或完成某種運(yùn)算。函數(shù)就像命令一
樣,是系統(tǒng)內(nèi)部“編制”好的一段程序,只要調(diào)用它,就能得
到相應(yīng)的函數(shù)結(jié)果。
函數(shù)具有特定的功能,分為系統(tǒng)函數(shù)和自定義函數(shù)兩類。
VFP提供了200多個(gè)函數(shù)。函數(shù)具有函數(shù)名、參數(shù)和函數(shù)值三個(gè)
要素,有的函數(shù)缺省參數(shù)。在使用函數(shù)時(shí)要了解函數(shù)值的類型,
免得發(fā)生數(shù)據(jù)類型不一致的錯(cuò)誤。
函數(shù)調(diào)用的一般形式為:函數(shù)名([參數(shù)表])
,3.3.1數(shù)值處理函數(shù)一
數(shù)值函數(shù)用于數(shù)值運(yùn)算,其自變量與函數(shù)值都是數(shù)值型數(shù)據(jù)。
1)取絕對值函數(shù)
格式:人8$(<數(shù)值表達(dá)式))
功能:求數(shù)值型表達(dá)式的絕對值。
2)求符號函數(shù)
格式:SIGN(<數(shù)值表達(dá)式》)
功能:求指定數(shù)值表達(dá)式的符號。當(dāng)表達(dá)式的運(yùn)算結(jié)果為正、
負(fù)和零時(shí),函數(shù)值分別為1、-1和0。
3)求平方根函數(shù)
格式:SQRT(<數(shù)值表達(dá)式))
功能:求數(shù)值型表達(dá)式的算術(shù)平方根,數(shù)值型表達(dá)式的值應(yīng)
不小于零。函數(shù)值為數(shù)值型。
4)求指數(shù)函數(shù)
格式:£乂「(<數(shù)值表達(dá)式))
功能:羽1數(shù)值型表達(dá)式的值作為指數(shù)x,求出爐的值。
5)求對數(shù)函數(shù)
格式:LOG(<數(shù)值表達(dá)式》)
1/)610(<數(shù)值表達(dá)式》)
功能:LOG求數(shù)值表達(dá)式的自然對數(shù),LOG10求數(shù)值型表達(dá)式的常
用對數(shù),數(shù)值型表達(dá)式的值必須大于零。
?3
6)取整函數(shù)
格式:1附(<數(shù)值表達(dá)式))
CEILING(〈數(shù)值表達(dá)式))
FLOOR(〈數(shù)值表達(dá)式》)
功能:INT取數(shù)值型表達(dá)式的整數(shù)部分。CEILING取大于
或等于指定表達(dá)式值的最小整數(shù)。FLOOR取小于或等于指定
表達(dá)式值的最大整數(shù)。
【例3.10】INTO、CEILING().FLOOR()函數(shù)的使用。
x=56.72
?INT(x),INT(-x),CEILING(x),CEILING(-
x),FLOOR(x),FLOOR(-x)
輸出的函數(shù)值依次為56,-56,57,-56,56,-57。
44
7)求余數(shù)函數(shù)
格式:MOD(〈數(shù)值表達(dá)式1>,<數(shù)值表達(dá)式2>)
功能:求<數(shù)值表達(dá)式1>除以<數(shù)值表達(dá)式2>所得出的余數(shù)。余
數(shù)的符號與表達(dá)式2相同。如果被除數(shù)與除數(shù)同號,那么函數(shù)值即
為兩數(shù)相除的余數(shù);如果被除數(shù)與除數(shù)異號,則函數(shù)值為兩數(shù)相
除的余數(shù)再加上除數(shù)的值。
例如:函數(shù)MOD(25,7)的值為4,MOD(25,-7)的值為-3,MOD(-
25,7)的值為3,MOD(-25,-7)的值為-4。
L
【例3.11]MOD()函數(shù)和INTO函數(shù)的使用。
x=521
xl=INT(x/100)&&x的百位數(shù)字
x2=INT(MOD(x,100)/10)&&x的十位數(shù)字
x3=M0D(x,10)&&x的個(gè)位數(shù)字
?xl+10*x2+100*x3
其輸出結(jié)果為125
由此可見,利用MOD()函數(shù)和INTO函數(shù)可將3位整數(shù)x的百、
十、個(gè)位數(shù)字分離出來。在許多數(shù)值問題處理中,均可利用這兩
個(gè)函數(shù)實(shí)現(xiàn),如判斷一個(gè)整數(shù)能否被另一個(gè)整數(shù)整除。-
8)四舍五入函數(shù)
格式:ROUND(<數(shù)值表達(dá)式1>,<數(shù)值表達(dá)式2>)
功能:對〈數(shù)值表達(dá)式1>的值按照<數(shù)值表達(dá)式2>指定的位置
進(jìn)行四舍五入。若〈數(shù)值表達(dá)式2>的值n大于0,它表示的是要保
留的小數(shù)位數(shù)為n,則對小數(shù)點(diǎn)后第n+1位小數(shù)進(jìn)行四舍五入;若
<數(shù)值表達(dá)式2>的值n小于0,它表示的是對〈數(shù)值表達(dá)式1>之值的
小數(shù)點(diǎn)前n位四舍五入。
【例3.12】ROUND()函數(shù)的使用。
x=234.628
?ROUND(x,4-2),ROUND(x,1),ROUND(x,0),ROUND(x,-l),ROUND(123.4567,-2)
主窗口顯示:234.63234.6235230100
9)求最大值和最小值函數(shù)。
格式:MAX(〈表達(dá)式1>,<表達(dá)式2>[,<表達(dá)式3>」)
MIN(<表達(dá)式1>,<表達(dá)式2>[,<表達(dá)式3>.」)
功能:MAX()是計(jì)算各表達(dá)式的值,并返回其中的最大值;
MIN()計(jì)算各表達(dá)式的值,并返回其中的最小值。表達(dá)式的類型
可以是數(shù)值型、字符型、貨幣型、雙精度型、浮點(diǎn)型、日期型和
日期時(shí)間型,但所有表達(dá)式的類型必須相同。
10)兀函數(shù)
格式:PI0
功能:返回圓周率兀的近似值3.14。
■
格式:DISKSPACE()
功能:求指定磁盤所剩余的可用空間的字節(jié)數(shù)。
12)求字段數(shù)函數(shù)
格式:FCOUNT(\[<數(shù)值型表達(dá)式>\])
功能:求指定工作區(qū)表文件的字段數(shù)。若指定工作區(qū)無表文
件打開,則返回0。若未指定〈數(shù)值型表達(dá)式》,則對當(dāng)前工作區(qū)操作。
【例3.13]FCOUNTO函數(shù)的使用。
USEXSDA&&假定XSDA表有10個(gè)字段
?FCOUNT()
主窗口顯示:10
13)求字段名函數(shù)
格式:FIELD([<數(shù)值型表達(dá)式1>[,<數(shù)值型表達(dá)式2>]]
功能:求<數(shù)值型表達(dá)式2>指定的工作區(qū)中的表文件,由<數(shù)值
型表達(dá)式1>指定位置的字段名。若<數(shù)值型表達(dá)式1>的值超出表文件
的字段個(gè)數(shù),則返回空串。若指定工作區(qū)無文件打開,則返回空串。
若省略<數(shù)值型表達(dá)式2》,則對當(dāng)前工作區(qū)操作。
【例3.14]FIELD。函數(shù)的使用。
USEXSDA&&假定XSDA表有10個(gè)字段,第2個(gè)字段為“姓名”
?FIELD(2)
主窗口顯示:姓名
?3.3.2字符串處理函數(shù)
字符串處理函數(shù)主要是對字符型數(shù)據(jù)進(jìn)行運(yùn)算。使用這些函數(shù)可
以很方便地進(jìn)行各種字符串的運(yùn)算,是實(shí)現(xiàn)文字編輯的重要手段。函
數(shù)中涉及的字符型數(shù)據(jù)項(xiàng),均以cExp表示。
1)求字符串長度函數(shù)
格式:LEN(<字符串表達(dá)式》)
功能:求字符串的長度,即字符串所包含的字符個(gè)數(shù)。若是空串,
則長度為0。函數(shù)值為數(shù)值型。
2)生成空格字符函數(shù)
格式:SPACE(<數(shù)值型表達(dá)式》)
功能:生成若干個(gè)空格,空格的個(gè)數(shù)由數(shù)值型表達(dá)式的值決定。
包
3)大小寫字母轉(zhuǎn)換函數(shù)
格式:LOWER(<字符串表達(dá)式》)
UPPER《字符串表達(dá)式》)
功能:LOWER()將指定字符串表達(dá)式中的大寫字母轉(zhuǎn)換成小
寫字母,其他字符不變。
UPPER()將指定字符串表達(dá)式中的小寫字母轉(zhuǎn)換成大
寫字母,其他字符不變。
【例3.15】大小寫字母轉(zhuǎn)換函數(shù)的使用。
?LOWER(/Xly2ABG,),UPPER(/n=l,),LEN(SPACE(8)),LEN("中文
VisualFoxPro6.0")
主窗口顯示:xly2abgN=1819
航
4)刪除字符串前后空格函數(shù)—
格式:RTRIM(<字符串表達(dá)式》)
LIRIM(〈字符串表達(dá)式》)
ALLTRIM(<字符串表達(dá)式》)
功能:RTRIMO刪除字符串的尾部空格。RTRIM可以寫成TRIM。
LTRIM()刪除字符串的前導(dǎo)空格。
ALLTRIM()刪除字符串中的前導(dǎo)和尾部空格。
【例3.16】RTRIMO、LTRIMO.ALLTRIM()函數(shù)的使用。
STORESPACE(1)+"TEST"+SPACE(3)TOSS
?RTRIM(SS)+LTRIM(SS)+ALLTRIM(SS)
主窗口顯示:□TESTTESTEIIZIZTEST
?LEN(SS),LEN(RTRIM(SS)),LEN(LTRIM(SS)),LEN(ALLTRIM(SS))
主窗口顯示:85744
■5)求子串位置函數(shù)
格式:AT(<字符串表達(dá)式1>,〈字符串表達(dá)式2>[,<數(shù)值表達(dá)式>])
ATC(〈字符串表達(dá)式1>,<字符串表達(dá)式2>[,<數(shù)值表達(dá)式>])
功能:如果〈字符串表達(dá)式1>是〈字符串表達(dá)式2>的子串,則返回〈字
符串表達(dá)式1>在〈字符串表達(dá)式2>中的起始位置;若不是子串,則
返回0。AT()的函數(shù)值為數(shù)值型,ATCO與AT()功能類似,但在子
串比較時(shí)不區(qū)分字母大小寫。
<數(shù)值表達(dá)式)用于指明搜索<字符串表達(dá)式1>在<字符串表達(dá)式2》中是
第幾次出現(xiàn)的,其默認(rèn)值是1。
【例3.171AT().ATCO函數(shù)的使用。
STORE"ThisisVisualFoxPro"TOx
?AT("FOX",x),ATC("fox",x),AT("is",x,3),AT("xo",x)
主窗口顯示:016100
6)取子串函數(shù)
格式:LEFT(<字符串表達(dá)式),<數(shù)值表達(dá)式))
RIGHT(<字符串表達(dá)式),<數(shù)值表達(dá)式》)
SUBSTR(<字符串表達(dá)式》,〈起始位置〉[,<數(shù)值表達(dá)式>])
功能:LEFT()從<字符串表達(dá)式)左邊第一個(gè)字符開始截取子串。
RIGHT()從<字符串表達(dá)式)右邊第一個(gè)字符開始截取子串,其子
串的長度由<數(shù)值表達(dá)式)的值所決定。若<數(shù)值表達(dá)式)的值大于字符串的長
度,則給出整個(gè)字符串。
°SUBSTR()是從〈字符串表達(dá)式〉中取出指定〈起始位置〉
開始截取的子串,子串的長度由<數(shù)值表達(dá)式)的值所決定。若<
數(shù)值表達(dá)式)省略,則截取的子串從〈起始位置〉開始到〈字符
串表達(dá)式〉的最后一個(gè)字符;若<起始位置>或<數(shù)值表達(dá)式)為0
,則函數(shù)值為空串。顯然,SUBSTR函數(shù)可以代替LEFT函數(shù)和
RIGHT函數(shù)的功能。
【例3.18】取子串函數(shù)的使用。
STORE"GOODBYE!"TOX
?LEFT(X,2),SUBSTR(X,6,2)+SUBSTR(X,6),RIGHT(X,3)
主窗口顯示:GOBYBYE!YE!
■
格式:OCCURS(<字符串表達(dá)式1>,<字符串表達(dá)式2>)
功能:返回第一個(gè)字符串在第二個(gè)字符串中出現(xiàn)的次數(shù),
函數(shù)值為數(shù)值型。若第1個(gè)字符串不是第2個(gè)字符串的子串,則函
數(shù)值為0。
【例3.19】OCCURS()函數(shù)的使用。
STOREzabracadabra7TOs
?OCCURSCa\s),OCCURSCbz,s),OCCURS(zcz,s),OCCURSCez,s)
主窗口顯示:5210
航
8)字符串替換函數(shù)
格式:STUFF(<字符串表達(dá)式1>,<起始位置),<長度),<字符串
表達(dá)式2>)
功能:用<字符串表達(dá)式2>值替換<字符串表達(dá)式1>中由<起始
位置>和<長度>指明的一個(gè)子串。替換和被替換的字符個(gè)數(shù)不一定相等。
如果<長度>值是0,<字符串表達(dá)式2>則插在<起始位置)指定的字符前面;
如果〈字符串表達(dá)式2>值是空串,那么<字符串表達(dá)式1>中由《起始位置》
和<長度》指明的子串被刪去。
【例3.20]STUFF()函數(shù)的使用。
STORE〃中國重慶〃TOs
?STUFF(s,5,4,“北京F
主窗口顯示:中國北京
格式:LIKE(〈字符串表達(dá)式1>,<字符串表達(dá)式2>)
功能:比較2個(gè)字符串對應(yīng)位置上的字符,若對應(yīng)字符都相匹
配,函數(shù)返回邏輯值真(.T.),否則返回邏輯值假(.F.)?!醋址?/p>
達(dá)式1>中可以包含通配符和“?”。號可與任何數(shù)目的字符
相匹配,“?”可以與任何單個(gè)字符相匹配。
【例3.21】字符串匹配函數(shù)的使用。
STORE"abc"TOx
STORE"abed"TOy
?LIKE("ab",x),LIKE("ab*",y),LIKE(x,y),LIKE("7b?",
x),LIKE("Abe",x)
主窗口顯示:.F..T..F..T..F.
10)產(chǎn)生重復(fù)字符函數(shù)
格式:REPLICATE(<字符型表達(dá)式>,<數(shù)值型表達(dá)式》)
功能:重復(fù)給定字符串若干次,次數(shù)由數(shù)值型表達(dá)式的值決定。
【例3.22]REPLICTAE()函數(shù)的使用。
?REPLICATEC6)
主口顯*******
11)宏替換函數(shù)
格式:&<字符型內(nèi)存變量》[.]
功能:替換出字符型變量的內(nèi)容,即&的值是變量中的字符串。
若<字符型變量)與后面的字符無空格分界,則&函數(shù)后的”必須有。
宏替換可以嵌套使用。
【例3.23】宏替換函數(shù)的使用。
m="245*SQRT(4)"
?INT(34.15+&m)&&等價(jià)于“?34.15+490.00”
主窗口顯示:524
i=T'
j=,2'
xl2=,,Good"
Good="makeinchina"
?x&i.&j,&xl2&&等價(jià)于“?x&i&j,&xl2”
主窗口顯示:Goodmakeinchina
日期型數(shù)據(jù)用dExp表示或日期時(shí)間型數(shù)據(jù)用tExp表示。
1)系統(tǒng)日期和系統(tǒng)時(shí)間函數(shù)
格式:DATE()
TIME()
DATETIME()
功能:DATE。返回當(dāng)前系統(tǒng)日期,函數(shù)值為日期型。
TIME()返回當(dāng)前系統(tǒng)時(shí)間,函數(shù)值為字符型。
DATETIME()返回當(dāng)前系統(tǒng)日期時(shí)間,函數(shù)值為日期時(shí)間型。
【例3.24】系統(tǒng)日期和時(shí)間函數(shù)的使用。
?DATE(),TIME(),DATETIME()
主窗口顯示:05/15/0615:47:1805/15/0603:47:18PM
'/W2)求年份、月份和天數(shù)函數(shù)
格式:YEAR(〈日期表達(dá)式>|〈日期時(shí)間表達(dá)式》)
MONTH(〈日期表達(dá)式>|<日期時(shí)間表達(dá)式》)
DAY(<日期表達(dá)式>|〈日期時(shí)間表達(dá)式》)
功能:YEAR()從指定的日期表達(dá)式或日期時(shí)間表達(dá)式中返回年份,以4位
敏值型數(shù)據(jù)表示(如2006年)。
MONTH()從指定的日期表達(dá)式或日期時(shí)間表達(dá)式中返回月份。
DAY()從指定的日期表達(dá)式或日期時(shí)間表達(dá)式中返回月里面的天數(shù)。
這3個(gè)函數(shù)的返回值都為數(shù)值型。
【例3.25】YEAR。、MONTH().DAY()函數(shù)的使用。
STORE{八2006-05-15}TOd
?YEAR(d),MONTH(d),DAY(d)
主窗口顯示:2006515
3)求時(shí)、分和秒函數(shù)
格式:HOUR(<日期時(shí)間表達(dá)式》)
MINUTE?日期時(shí)間表達(dá)式〉)
SEC(<日期時(shí)間表達(dá)式》)
功能:HOUR()從指定日期時(shí)間表達(dá)式中返回小時(shí)數(shù)(24小時(shí)制)。
MINUTE()從指定日期時(shí)間表達(dá)式中返回分鐘數(shù)。
SEC()從指定日期時(shí)間表達(dá)式中返回秒數(shù)。
這3個(gè)函數(shù)的返回值都為數(shù)值型。
【例3.26】時(shí)、分、秒函數(shù)的使用。
STORE{A2006-05-1503:30:45P}TOt
?HOUR(t),MINUTE(t),SEC(t)
主窗口顯示:153045
格式:DOW(<日期型表達(dá)式》)
CDOW(<日期型表達(dá)式》)
功能:DOW()求出日期表達(dá)式值對應(yīng)一周的第幾天。星期日
為一周的第1天,星期六為一周的第7天。
CDOW()返回星期幾的英文名稱。
【例3.27]星期函數(shù)的使用。
?DATE()
05/15/06
?DOW(DATE()),CDOW(DATE())
主窗口顯示:2Monday
3.3.4數(shù)據(jù)類型轉(zhuǎn)換函數(shù)
在數(shù)據(jù)庫應(yīng)用的過程中,經(jīng)常要將不同數(shù)據(jù)類型的數(shù)據(jù)進(jìn)行相
應(yīng)轉(zhuǎn)換,滿足實(shí)際應(yīng)用的需要。VFP系統(tǒng)提供了若干個(gè)轉(zhuǎn)換函數(shù),較
好地解決了數(shù)據(jù)類型轉(zhuǎn)換的問題。
1)字符串轉(zhuǎn)換為數(shù)值函數(shù)
格式:丫人以<數(shù)字字符串))
功能:將數(shù)字字符串(包括正負(fù)號、小數(shù)點(diǎn))轉(zhuǎn)換為對應(yīng)的數(shù)
值型數(shù)據(jù)。若字符串內(nèi)出現(xiàn)非數(shù)字,字符就停止轉(zhuǎn)換;若字符串的
首字符為非數(shù)字符,則返回值為0,但忽略前導(dǎo)空格。
【例3.28]VAL()函數(shù)的使用。
?VAL("XYZ"),VAL("-567.85"),VAL("34A79")
主窗口顯示:0.00-567.8534.00
2)數(shù)值轉(zhuǎn)換成字符串函數(shù)
格式:STR(<數(shù)值型表達(dá)式>\[,<長度>,\[,<小數(shù)位數(shù)>\]\])
功能:將〈數(shù)值型表達(dá)式)的值轉(zhuǎn)換成字符串,轉(zhuǎn)換時(shí)根據(jù)需要自
動(dòng)四舍五入。轉(zhuǎn)換后字符串的理想長度L應(yīng)該是<數(shù)值型表達(dá)式>值的整數(shù)
部分的位數(shù)加上<小數(shù)位數(shù))值,再加上一位小數(shù)點(diǎn)。如果〈長度〉值大于L,
則字符串加前導(dǎo)空格以滿足規(guī)定的<長度》要求;如果<長度)值大于等于<
數(shù)值型表達(dá)式)值的整數(shù)部分位數(shù)(包括負(fù)號)但又小于L,則優(yōu)先滿足整
數(shù)部分而自動(dòng)調(diào)整小數(shù)位數(shù);如果<長度)值小于<數(shù)值型表達(dá)式>值的整數(shù)
部分位數(shù),則返回一串星號(*)?!葱?shù)位數(shù))的默認(rèn)值為0,<長度)的默
認(rèn)值為10。
3
【例3.29]STR()函數(shù)的使用。
STORE-123.456TOn
?"n="+STR(n,8,3)
n=-123.456
?STR(n,9,2),STR(n,6,2),STR(n,3),STR(n,6),STR(n)
主窗口顯示:123.46-123.5***123
□□□□□□-123
n=1234.587
?STR(n,10,2),STR(n,10,4),STR(n,7,2),STR(n,7),STR(n,3),
STR(n)
主窗口顯示:口口口1234.59D1234.58701234.59
□□□1235***□□□□□□1235
3)字符與ASCH之間的轉(zhuǎn)換函數(shù)
格式:ASC(v字符型表達(dá)式,)
CHR(〈數(shù)值型表達(dá)式〉)
功能:ASC()函數(shù)給出指定字符串最左邊的一個(gè)字符的
ASCII碼值。函數(shù)值為數(shù)值型。
CHR()函數(shù)將數(shù)值表達(dá)式的值作為ASCII碼,轉(zhuǎn)換為對
應(yīng)的字符。函數(shù)值為字符型。
【例3.30】字符與ASCII碼之間的轉(zhuǎn)換函數(shù)的使用。
ch1="M"
ch2=CHR(ASC(ch1)+ASC("a")-ASC("A"))
?ch2
王茵口顯小:m
此例說明,若ch1的值為某個(gè)大寫字母,則利用求ch2的
表達(dá)式可求出對應(yīng)的小寫字母。
注意:在ASCH表中,字母是連續(xù)排列的,任何一個(gè)字
母其大小寫ASCII碼值之差是相等的。
■
格式:CTOD(<字符型表達(dá)式》)
CTOT(<字符型表達(dá)式》)
功能:CTOD()將(<字符型表達(dá)式))值轉(zhuǎn)換成日期型數(shù)據(jù)。
CTOT()將(<字符型表達(dá)式》)值轉(zhuǎn)換成日期時(shí)間型數(shù)據(jù)。
字符串中的日期部分格式要與SETDATETO命令設(shè)置的格式一
致。其中的年份可以用4位,也可以用2位。如果用2位,則世紀(jì)值由SET
CENTURYOFF語句指定。
【例3.31]CTOD()和CTOT()函數(shù)的使用。
SETDATETOYMD
SETCENTURYON&&顯示日期時(shí),用4位數(shù)顯示年份
dl=CTOD("2006/05/15")
tl=CTOT(,,2006/05/15,,+""+TIMEO)
?dl,tl,CTOD("10/01/01"),CTOD("50/01/01")
主窗口顯示:
2006/05/152006/05/1513:30:50PM2010/01/012050/01/01
5)日期或日期時(shí)間轉(zhuǎn)換成字符串
格式:DTOC(<日期表達(dá)式>|〈日期時(shí)間表達(dá)式>[,1])
TTOC(<日期時(shí)間表達(dá)式>[,1])
功能:DTOC()將日期型數(shù)據(jù)或日期時(shí)間型數(shù)據(jù)的日期部分轉(zhuǎn)換
成字符串。
TTOC()將日期時(shí)間型數(shù)據(jù)轉(zhuǎn)換成字符串。
字符串中日期部分的格式與SETDATETO語句的設(shè)置和SET
CENTURYON|OFF(ON為4位數(shù)年份,OFF為2位數(shù)年份)語句的設(shè)置有關(guān)。
時(shí)間部分的格式受SETHOURSTO12|24語句的設(shè)置影響。
對DTOCO來說,如果使用選項(xiàng)1,則字符串的格式總是為
YYYYMMDD,共8個(gè)字符。對TTOCO來說,如果使用選項(xiàng)1,則字符串的格
式總是為YYYYMMDDHHMMSS,采用24h制,共14個(gè)字符。
【例3.32】DTOCO、TTOCO函數(shù)的使用。
STOREDATETIME()TOt
?t
05/16/06RKG*2]10:44:20AM
?DTOC(t),DTOC(t,1),TTOC(t),TTOC(t,1)
主窗口顯示:05/16/062006051605/16/06EKG1310:44:20AM
20060516104420
.
3.3.5測試函數(shù)
在數(shù)據(jù)庫操作過程中,需要了解操作對象的類型、狀態(tài)
性。例如,要使用的文件是否存在、數(shù)據(jù)庫當(dāng)前記錄的記錄號、是否
訪問到文件尾、檢索是否成功、某工作區(qū)中記錄指針?biāo)傅漠?dāng)前記錄
是否有刪除標(biāo)記等信息。尤其是在運(yùn)行應(yīng)用程序時(shí),常常需要根據(jù)測
試結(jié)果來決定下一步的處理方法或程序走向。
1)NULL值測試函數(shù)
格式:ISNULL(<表達(dá)式))
功能:判斷表達(dá)式的運(yùn)算結(jié)果是否為NULL值,若是NULL值返回
邏輯真(.T.),否則返回邏輯假(.F.)o
【例3.331ISNULLO函數(shù)的使用。
STORE.NULL.TOx
?x,ISNULL(x)
主窗口顯示:.NULL..T.
旦一1
(2)空值測試函數(shù)
格式:EMPTY(<表達(dá)式))
功能:根據(jù)指定表達(dá)式的運(yùn)算結(jié)果是否為“空”值,返回邏
輯真(.T.)或邏輯假(.F.)o
說明:①該函數(shù)中所指的“空”值與NULL值是兩個(gè)不同的概念。
函數(shù)EMPTY(.NULL.)的返回值為邏輯假(.F.)。
②該函數(shù)自變量表達(dá)式的類型除了可以是數(shù)值型之外,還
可以是字符型、邏輯型、日期型等類型。不同類型數(shù)據(jù)的“空”
值,有不同的規(guī)定,如下表所示。
折
不同類型的數(shù)據(jù)“空”值的規(guī)定如下表
數(shù)據(jù)類型''空"值數(shù)據(jù)類型''空"值
數(shù)值型0雙精度型0
字符型空串、空格、制表符、日期型空(如CTODC"1))
回車、換行
貨幣型0日期時(shí)間型空(如CTOT("”))
浮點(diǎn)型0邏輯型.F.
整型0備注字段空(無內(nèi)容)
77
1
3)數(shù)據(jù)類型測試函數(shù)
格式:VARTYPE(<表達(dá)式>,<邏輯表達(dá)式》)
功能:測試<表達(dá)式)的類型,返回一個(gè)大寫字母,函
數(shù)值為字符型。字母的含義如下表所示。
返回的字母數(shù)據(jù)類型返回的字母數(shù)據(jù)類型
C字符型或備G通用型
注型
N數(shù)值型、整D日期型
型、浮點(diǎn)型
或雙精度型
Y貨幣型T日期時(shí)間型
L邏輯型XNull值
0對象型U未定義
.
1
若〈表達(dá)式)是一個(gè)數(shù)組,則根據(jù)第一個(gè)數(shù)組元素的類型返回字
符串。若〈表達(dá)式)的運(yùn)算結(jié)果是NULL值,則根據(jù)<邏輯表達(dá)式》值決定是
否返回<表達(dá)式>的類型;如果<邏輯表達(dá)式)值為.T.,就返回〈表達(dá)式》
的原數(shù)據(jù)類型;如果<邏輯表達(dá)式)值為.F.或缺省,則返回X以表明<表達(dá)
式)的運(yùn)算結(jié)果是NULL值。
【例3.34]VARTYPE()函數(shù)的使用。
X="AAA"
STORE10TOy
STORE.NULL.TOx
STORE100.22TOz
7VARTYPE(x),VARTYPE(X,.T.),VARTYPE(y),VARTYPE(z)
主窗口顯示:XCNN
,
4)表頭表尾的測試函數(shù)
系統(tǒng)對表中的記錄是逐條進(jìn)行處理的。對于一個(gè)打開的表文件來
說,在某一時(shí)刻只能處理一條記錄。VFP為每一個(gè)打開的表設(shè)置了一個(gè)內(nèi)
部使用的記錄指針,它指向正在被操作的記錄,該記錄稱為當(dāng)前記錄。
記錄指針的作用是標(biāo)識表的當(dāng)前記錄。
表文件的邏輯結(jié)構(gòu)如下圖所示。第一條記錄稱為首記錄,記為
TOP,最后一條記錄稱為尾記錄,記為BOTTOM。在首記錄之前有一個(gè)文件
起始標(biāo)識,稱為BOF(BeginofFile);在尾記錄的后面有一個(gè)文件結(jié)束
標(biāo)識,稱為E0F(EndofFile)o使用測試函數(shù)能夠得到指針的位置。岡U
剛打開表時(shí),記錄指針總是指向首記錄。
.
表文件的邏輯結(jié)構(gòu):
文件起始標(biāo)識(BOF)
首記錄(TOP)
第2個(gè)記錄
打揖其第i個(gè)記錄
尾記錄(BOTTOM)
文件結(jié)束標(biāo)志(EOF)
格式:BOF([<工作區(qū)號>|<別名>])
功能:測試指定或當(dāng)前工作區(qū)中的表文件的記錄指針是否指向文
件起始標(biāo)識,若是返回邏輯真.T.,否則返回邏輯假.F.。
格式:EOF(,工作區(qū)號>|<別名>])
功能:測試指定或當(dāng)前工作區(qū)中的表文件的記錄指針是
溫馨提示
- 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)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東理工學(xué)院《畜牧機(jī)械》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東科技學(xué)院《譜學(xué)導(dǎo)論》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東江門幼兒師范高等??茖W(xué)?!恫厮幉脑耘鄬W(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東行政職業(yè)學(xué)院《人力資源綜合實(shí)訓(xùn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東工程職業(yè)技術(shù)學(xué)院《創(chuàng)意傳播管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東第二師范學(xué)院《Photoshop圖像處理》2023-2024學(xué)年第一學(xué)期期末試卷
- 《高效績團(tuán)隊(duì)》課件
- 廣安職業(yè)技術(shù)學(xué)院《房地產(chǎn)開發(fā)》2023-2024學(xué)年第一學(xué)期期末試卷
- 贛州職業(yè)技術(shù)學(xué)院《翻譯概論》2023-2024學(xué)年第一學(xué)期期末試卷
- 保潔消防培訓(xùn)課件
- 膠囊劑生產(chǎn)工藝流程圖
- 肝膽外科出科考試試卷
- 制藥廠安全事故應(yīng)急救援預(yù)案匯編
- 塔吊運(yùn)行作業(yè)方案
- 上市公司信息披露制度的跨國比較及借鑒
- 重慶中考數(shù)學(xué)最新26題練習(xí)及答案
- 飛機(jī)起落架緩沖器的設(shè)計(jì)航空專業(yè)
- 江蘇衛(wèi)視跨年演唱會(huì)電視轉(zhuǎn)播技術(shù)方案-209年精選文檔
- 石化公司裝置管道無損檢測施工方案A0
- 水電工程施工機(jī)械臺時(shí)費(fèi)定額(2004年版)
- 鋼鐵企業(yè)安全生產(chǎn)事故案例匯編
評論
0/150
提交評論