版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第2章數(shù)據(jù)表的基本操作段云娜1、掌握六種常量的特點(diǎn)及書寫規(guī)則。2、掌握變量的分類及如何向變量賦值。3、了解一維數(shù)組及二維數(shù)組的定義及賦值語句。4、熟記表達(dá)式的概念及分類,掌握運(yùn)算符的優(yōu)先級。5、掌握函數(shù)的組成、分類及意義、熟記常用函數(shù)的拼寫。6、熟練掌握如何建立和修改數(shù)據(jù)表的表結(jié)構(gòu)。7、熟練掌握表數(shù)據(jù)的輸入方法。8、掌握數(shù)據(jù)表的維護(hù)方法。9、掌握VF命令的格式及書寫規(guī)則教學(xué)重點(diǎn)2.1.1數(shù)據(jù)類型
數(shù)據(jù)是計(jì)算機(jī)程序處理的對象,也是運(yùn)算的結(jié)果。數(shù)據(jù)的類型決定了其在計(jì)算機(jī)中的存儲方式和使用方式。在VisualFoxPro中,將數(shù)據(jù)分為七種類型:
2.1VisualFoxPro的語言基礎(chǔ)1、字符型(Character)2、數(shù)值型(N)3、日期型(Date)4、日期時間型(DateTime)5、邏輯型(Logic)6、備注型(Memo)7、通用型(General)1、字符型(Character)
字符型數(shù)據(jù)是通常表示文本類型的信息。它由中/英文字符、數(shù)字、空格和各種專用符號組成,長度是0—254個字符。用定界符括起來的字符串為字符型常量。如:“123”、‘文化’、[%%abc]。2、數(shù)值型(N)數(shù)值型數(shù)據(jù)用來表示數(shù)量的大小,包括五種類型:數(shù)值型(Numeric):最大長度20位,包括數(shù)字、正負(fù)號和小數(shù)點(diǎn),可以使用科學(xué)記數(shù)法形式書寫。浮點(diǎn)型(Float):與數(shù)值型數(shù)據(jù)等價,以浮點(diǎn)格式存儲雙精度型(Double):高精度數(shù)值型數(shù)據(jù),只用于表中類型。 浮點(diǎn)格式存儲整型(Interger):不包含小數(shù)部分的數(shù)值型數(shù)據(jù),以二進(jìn)制形式存儲貨幣型(Currency):用來表示貨幣值,格式與數(shù)值型類似 但數(shù)值前要加$符號。以4位小數(shù)存儲3、日期型(Date)
表示日期,默認(rèn)格式[mm/dd/yy],存儲長度固定8位。例如:09/05/064、日期時間型(DateTime)
存儲長度固定為8位,默認(rèn)格式[mm/dd/yyyyhh:mm:ss]
例如:09/05/200612:22:545、邏輯型(Logic)
描述客觀事物的真假,表示邏輯判斷結(jié)果。邏輯數(shù)據(jù)只有真(.t.)和假(.f.)兩個值,存儲長度為1位6、備注型(Memo)
用于存放較長的字符型數(shù)據(jù)。 只用于表中字段,字段長度固定為4位,備注型數(shù)據(jù)沒有長度限制,僅受限于現(xiàn)有的磁盤空間,它的數(shù)據(jù)內(nèi)容存放在與數(shù)據(jù)表同名的備注文件中。表中只存放一個指向這個備注文件的指針。7、通用型(General)
存儲OLE對象,可以是電子表格、文檔、圖片等,只能用于數(shù)據(jù)表中,數(shù)據(jù)存儲方式同備注型數(shù)據(jù)相同。OLE(ObjectLinkingandEmbedding對象連接與嵌入)2.1.2數(shù)據(jù)存儲數(shù)據(jù)容器:用戶存放數(shù)據(jù)的地方,包括常量、變量、數(shù)組、記錄、對象。
1、常量(6種數(shù)據(jù)類型) (1)數(shù)值型常量:由0-9、小數(shù)點(diǎn)和正負(fù)號構(gòu)成。 例:112、3.14125、-7.34、5.123E12(2)貨幣型常量:數(shù)值前加“$”符號。
如:$123.473(3)字符型常量:即字符串。定界符不能是全角;左右必須匹配;同一種定界符不能嵌套。 例:“計(jì)算機(jī)”、‘“123”’、[]、[](空串)(4)日期型常量:包括年、月、日三部分,用一對花括號括起來,各部分之間用分隔符分隔,系統(tǒng)默認(rèn)分隔符為“/”,其它還有“-”、“.”和空格。 日期型常量有傳統(tǒng)和嚴(yán)格兩種格式:傳統(tǒng)的日期格式月、日各2位,年份2位或4位,命令setcenturyon/off控制;系統(tǒng)默認(rèn)美國日期格式mm/dd/yy,由命令setdateto控制
例如:setdatetoymd{06/02/27} setdatetodmy {27/02/06}
例如:setcenturyon{09/01/2006}setcenturyoff
{09/01/06}2003/09/01setcenturyoffsetmarkto“.”setdatetomdy?{^2003-09-01}嚴(yán)格的日期格式格式:{^yyyy-mm-dd}說明:①不受setdate影響,必須有脫字符^、年份必須4
位,年月日順序不能改變;②在任何情況下使用,而傳統(tǒng)格式只能在執(zhí)行如下
命令后才能使用:
setstrictdateto0 ③若只使用嚴(yán)格日期格式,則執(zhí)行如下命令:
setstrictdateto1 ④可用命令setmarkto設(shè)定日期分隔符例:setcenturyonsetmarkto(默認(rèn)分隔符)setdatetoymd?{^2003-09-01}09.01.03(5)日期時間型常量格式:{<日期>,<時間>}。說明:日期部分也有傳統(tǒng)和嚴(yán)格兩種格式
時間部分的格式為:[hh[:mm[:ss]][a|p]]。例:SETMARKTO ?{^2003-09-0111:10:10},{^2003-09-0115:10:10}(6)邏輯型常量
邏輯型數(shù)據(jù)只有邏輯真和邏輯假兩個值。 邏輯真的常量:.T.
,.t.,.Y.和.y.。 邏輯假的常量:.F.
,.f.
,.N.和.n.
舉例:?34>45 ?123=12309/01/0311:10:10AM09/01/033:10:10PM.F..T.2.變量
分為字段變量和內(nèi)存變量兩大類。
1)內(nèi)存變量可以存不同類型數(shù)據(jù)。命名規(guī)則以字母、漢字、下劃線開頭后跟字母、漢字、下劃線、數(shù)字,長度不超過128個字符變量命名一般不與系統(tǒng)保留字同名建議第一個字母采用小寫并能表明該變量的類型 例:cName、n工資、nVal、dtime、c姓名分類:簡單內(nèi)存變量和系統(tǒng)內(nèi)存變量。
簡單內(nèi)存變量直接賦值,不必事先定義。 例:X=10給變量X賦值為10
系統(tǒng)內(nèi)存變量由VFP系統(tǒng)運(yùn)行時自動建立、使用,名字都以下劃線開頭,例:_dos,_screen等。說明:內(nèi)存變量可與字段變量重名,這時訪問變量時,系統(tǒng)會優(yōu)先認(rèn)為是字段變量,因此若訪問內(nèi)存變量時,必須在內(nèi)存變量前加前綴M.或M->。2)數(shù)組數(shù)組元素可通過數(shù)組名及相應(yīng)的下標(biāo)來訪問。
例:a(4)
每個數(shù)組元素相當(dāng)于一個簡單內(nèi)存變量,可以給各個元素分別賦值。在VisualFoxPro中,一個數(shù)組中各個元素的數(shù)據(jù)類型可以不同。
例:a(1)=34
a(2)=“數(shù)組的概念”
數(shù)組在使用前必須先定義,說明是一維還是二維數(shù)組,以及數(shù)組名和數(shù)組大?。ㄏ聵?biāo)從1開始)。數(shù)組定義后,每個數(shù)據(jù)元素的初值自動為.F.。定義數(shù)組:①DIMENSION<數(shù)組名>(<下標(biāo)上限1>[,<下標(biāo)上限2>][,……])②DECLARE<數(shù)組名>(<下標(biāo)上限1>[,<下標(biāo)上限2>][,……])
使用數(shù)組元素應(yīng)注意下列問題:一切使用簡單內(nèi)存變量的地方,均可使用數(shù)組元素;數(shù)組元素的數(shù)據(jù)類型由所賦值的數(shù)據(jù)類型決定;一個數(shù)組中各元素的數(shù)據(jù)類型可以相同,也可以不同;可以使用一維數(shù)組方式訪問二維數(shù)組;例:bb(1)—bb(1,1)、bb(4)—bb(2,1)例:DECLAREaa(5),bb(2,3)
創(chuàng)建兩個數(shù)組aa和bbaa有5個數(shù)組元素:aa(1)、aa(2)、aa(3)、aa(4)、aa(5)bb有6個數(shù)組元素:bb(1,1)、bb(1,2)、bb(1,3)bb(2,1)、bb(2,2)、bb(2,3)3.內(nèi)存變量常用命令(1)內(nèi)存變量的賦值格式1:STORE<表達(dá)式>TO<變量名表>格式2:<內(nèi)存變量名>=<表達(dá)式>功能:格式1計(jì)算表達(dá)式的值并賦給一個或多個內(nèi)存變量 格式2只能給一個變量賦值說明:給變量賦值時,如變量不存在,則自動建立 可以通過對內(nèi)存變量重新賦值來改變其內(nèi)容和類型舉例:aa=10 bb=‘word’ ?aa,bb store100tocc,dd,bb?aa,bb,cc,dddimensionarray(10)array=20?array(1)?array(2)array(1)=.f.?array(1)2020.F.10word10100100100(2)內(nèi)存變量的顯示格式1:LISTMEMORY[LIKE<通配符>][TOPRINTER|TOFILE<文件名>]格式2:DISPLAYMEMORY[LIKE<通配符>][TOPRINTER|TOFILE<文件名>]功能:顯示內(nèi)存變量的當(dāng)前信息,包括變量名、作用域、類型、取值。說明:通配符*表示任意多個字符,?表示任意一個字符
list命令滾動顯示內(nèi)存變量信息;而display則分屏顯示變量信息,超過一屏?xí)nD等待。例:listmemorylikea*displaymemory(3)內(nèi)存變量的清除格式1:CLEARMEMORY
清除所有內(nèi)存變量格式2:RELEASE<內(nèi)存變量名表>
清除指定的內(nèi)存變量格式3:RELEASEALL[EXTENDED]
清除所有內(nèi)存變量,包括程序中的公共變量格式4:RELEASEALL[LIKE<通配符>︳EXCEPT<通配符>]
清除與LIKE匹配或與EXCEPT不匹配的內(nèi)存變量例:RELEASEALLLIKEa?bRELEASEALLEXCEPTa*(4)內(nèi)存變量的保存格式:SAVETO<文件名>ALL[LIKE<通配符>︳EXCEPT<通配符>]功能:將指定范圍的內(nèi)存變量保存在內(nèi)存變量文件中,內(nèi)存變量文件的擴(kuò)展名為.mem。例:savetovarnamealllikea*(5)內(nèi)存變量的恢復(fù)格式:RESTOREFROM<文件名>[ADDITIVE]功能:把內(nèi)存變量文件中的變量送回內(nèi)存,不選ADDITIVE則送回之前先清除內(nèi)存中已有的內(nèi)存變量。例:restorefromvarnameadditive4.字段變量
字段變量的類型:數(shù)值型、浮動型(浮點(diǎn)型)、整型、雙精度型、字符型、邏輯型、日期型、日期時間型、貨幣型、備注型和通用型等當(dāng)表打開時,字段變量就可以進(jìn)行訪問,字段變量的值就是表中某個記錄中的屬性值。字段變量的命名規(guī)則:以字母、漢字開頭由字母、漢字、數(shù)字、下劃線組成,長度不超10個字符不可與系統(tǒng)保留字同名說明:函數(shù)名是系統(tǒng)規(guī)定的,函數(shù)名與括號間不能有空格自變量表可以是一個或多個以逗號分隔的自變量自變量表也可以為空,但括號不能省略函數(shù)調(diào)用后有一個運(yùn)算結(jié)果,稱為函數(shù)值或返回值2.1.3函數(shù)函數(shù)的概念函數(shù)就是針對一些常見問題預(yù)先編好的一系列子程序。當(dāng)要解決此類問題時,就可以調(diào)用相應(yīng)的函數(shù)即執(zhí)行該子程序,得到結(jié)果。函數(shù)調(diào)用的格式:函數(shù)名(<自變量表>)
MAX(27.4,98.9,-7) DATE() ABS(-78.6)1.?dāng)?shù)學(xué)函數(shù)(數(shù)值函數(shù))求絕對值函數(shù)ABS
格式:ABS(<數(shù)值表達(dá)式>)
舉例:x=abs(-5) y=-3.6?abs(45)
?x
?abs(y)求整函數(shù)INT,不進(jìn)行四舍五入 格式:INT(<數(shù)值表達(dá)式>)
舉例:?int(12.9) m=int(-13.7) 四舍五入函數(shù)ROUND
格式:ROUND(<數(shù)值表達(dá)式>,<保留小數(shù)位>)
舉例:?round(12345.6789,2) ?round(12345.6789,0) ?round(12345.6789,-1)
說明:保留小數(shù)位可以是負(fù)數(shù),此時從小數(shù)點(diǎn)向前數(shù)位數(shù)指數(shù)函數(shù)EXP、自然對數(shù)函數(shù)LOG、平方根函數(shù)SQRT、 格式:EXP|LOG|SQRT(<數(shù)值表達(dá)式>)
舉例:a=exp(0)x=1?sqrt(2) ?a?log(x)?sqrt(4)取模(求余數(shù))函數(shù)MOD
格式:MOD(<數(shù)值表達(dá)式1>,<數(shù)值表達(dá)式2>)
功能:取<數(shù)值表達(dá)式1>除以<數(shù)值表達(dá)式2>的余數(shù),符號與數(shù)值表達(dá)式2符號一致。 舉例:?mod(20,3)?mod(20,-3)?mod(-20,3)?mod(-20,-3) 2-11-2求最大值MAX、最小值MIN
格式:MAX|MIN(<表達(dá)式1>,<表達(dá)式2>,…,<表達(dá)式n>)
舉例:a=34b=65 ?max(a,b,30)?min(a,b)2.字符串函數(shù)(1)判斷子字符串函數(shù)AT格式:AT(<字符表達(dá)式1>,<字符表達(dá)式2>)功能:求<字符表達(dá)式1>在<字符表達(dá)式2>的起始位置數(shù)值。說明:<字符表達(dá)式2>中不包含<字符表達(dá)式1>,函數(shù)值為零若<字符表達(dá)式2>的值含有兩個以上的<字符表達(dá)式1>的值,則函數(shù)給出第一個值的位置。大小寫字母在檢索中視為不同。舉例:?at(“數(shù)據(jù)”,“計(jì)算機(jī)數(shù)據(jù)管理”)
?AT(“book”,“computer”),at(“a”,“Iamateacher”) ?at(“th”,“Thisisatable”)
(2)取子串函數(shù)SUBSTR格式:SUBSTR(<字符表達(dá)式>,<起始位置>[,<長度>])功能:對<字符表達(dá)式>從給定的<起始位置>開始截取指定長度的字符,生成一個新的字符串;說明:若無<長度>或<長度>大于后面剩余的字符個數(shù),則截至末尾;若<起始位置>大于字符串長度,則輸出空串
(3)取左子串函數(shù)LEFT格式:LEFT(<字符表達(dá)式>,<數(shù)值表達(dá)式>)功能:LEFT從<字符表達(dá)式>左邊截取由<數(shù)值表達(dá)式>的值指定的字符,生成一個新的字符串。
(4)取右子串函數(shù)RIGHT格式:RIGHT(<字符表達(dá)式>,<數(shù)值表達(dá)式>)功能:從<字符表達(dá)式>右邊截取由<數(shù)值表達(dá)式>的值指定的字符,生成一個新的字符串。
(5)宏代換函數(shù)&格式:&<字符型內(nèi)存變量>[.]功能:替換出<字符型內(nèi)存變量>的值。即將<字符型內(nèi)存變量>值的定界符去掉,使其可能代表一個變量名、文件名、命令、表達(dá)式等。說明:在表達(dá)式中使用該函數(shù)時,如果函數(shù)中的字符型內(nèi)存變量名與其后面的字符無明顯分界時,應(yīng)使用圓點(diǎn)將它們隔開。例如:A="北京"B="中國"
?"&A.是&B.首都"
(6)字符串長度函數(shù)LEN格式:LEN(<字符表達(dá)式>)功能:測試字符表達(dá)式的結(jié)果中包含多少個字符例如:?LEN(“FOXPRO數(shù)據(jù)庫管理系統(tǒng)!”)(7)刪除首部和尾部空格的函數(shù)格式:LTRIM|TRIM|RTRIM|ALLTRIM(<字符表達(dá)式>)功能:LTRIM是刪除字符串首部的空格;TRIM或RTRIM是刪除字符串尾部的空格;ALLTRIM刪除字符串首部和尾部的空格。
(8)構(gòu)造空格函數(shù)SPACE格式:SPACE(<數(shù)值表達(dá)式>)
功能:產(chǎn)生由<數(shù)值表達(dá)式>的值決定的空格數(shù)。(9)生成重復(fù)字符串函數(shù)REPLICATE格式:REPLICATE(<字符表達(dá)式>,<數(shù)值表達(dá)式>)功能:把<字符表達(dá)式>的值(字符串)重復(fù)由<數(shù)值表達(dá)式>
的值指定的次數(shù),生成新的字符串。(10)大小寫字母轉(zhuǎn)換函數(shù)LOWER|UPPER格式:LOWER|UPPER(<字符表達(dá)式>)功能:LOWER把<字符表達(dá)式>中的大寫字母轉(zhuǎn)換為小寫字母
UPPER把<字符表達(dá)式>中的小寫字母轉(zhuǎn)換為大寫字母(11)字符串替換函數(shù)STUFF格式:STUFF(<字符表達(dá)式1>,<起始位置>,<字符個數(shù)>,<字符表達(dá)式2>)功能:從指定位置開始,用<字符表達(dá)式2>指定的字符串替換
<字符表達(dá)式1>中<字符個數(shù)>指定的字符串。說明:<字符表達(dá)式2>中的字符個數(shù)與<字符表達(dá)式1>中的字符個數(shù)可以不等;如果<字符個數(shù)>為0,則插入<字符表達(dá)式2>;如果<字符表達(dá)式2>為空字符串,則刪除<字符表達(dá)式1>中指定字符。舉例:?stuff(’熱烈歡迎各位來我校參觀指導(dǎo)!’,9,4,[各校領(lǐng)導(dǎo)])3.日期和時間函數(shù)(1)系統(tǒng)日期和時間函數(shù)DATE|TIME|DATETIME格式:DATE()|TIME()|DATETIME()功能:DATE()返回當(dāng)前系統(tǒng)日期,函數(shù)值為日期型;
TIME()以24小時制返回當(dāng)前系統(tǒng)時間,值為字符型;
DateTime()返回當(dāng)前系統(tǒng)日期時間,為日期時間型。(3)星期函數(shù)DOW|CDOW格式1:DOW(<日期表達(dá)式>)格式2:CDOW(<日期表達(dá)式>)功能:格式1給出<日期表達(dá)式>指定的日期是一星期的第幾天。1表示星期日,2表示星期一,……,7表示星期六;格式2給出星期幾的英文名稱,函數(shù)值為字符型。(2)年、月、日函數(shù)YEAR|MONTH|DAY格式:YEAR|MONTH|DAY(<日期表達(dá)式>)功能:從<日期表達(dá)式>中求出年份、月份、日份的數(shù)值。4.類型轉(zhuǎn)換函數(shù)(1)字符轉(zhuǎn)換為數(shù)值函數(shù)VAL格式:VAL(<字符表達(dá)式>)功能:將字符型數(shù)據(jù)轉(zhuǎn)換為數(shù)值型數(shù)據(jù)。說明:若<字符表達(dá)式>由數(shù)字字符和小數(shù)點(diǎn)組成,則轉(zhuǎn)換成相 應(yīng)的數(shù)值,但只保留兩位小數(shù),其余小數(shù)四舍五入。若<字符表達(dá)式>由非數(shù)字字符打頭,則轉(zhuǎn)換為0.00。若<字符表達(dá)式>由數(shù)字字符打頭,且混有非數(shù)字字符時則轉(zhuǎn)換到第一個非數(shù)字字符為止。例:?VAL("1234.567"),VAL("Fox"),VAL("1234FOX.5678")主屏幕顯示:1234.570.001234.00(2)數(shù)值轉(zhuǎn)換為字符函數(shù)STR格式:STR(<數(shù)值表達(dá)式>[,<長度>[,<小數(shù)位數(shù)>]])功能:把<數(shù)值表達(dá)式>的運(yùn)算結(jié)果轉(zhuǎn)換為指定長度的字符串。
STR(345.678,5,2)345.7說明:<長度>應(yīng)包括小數(shù)點(diǎn)在內(nèi),不指定長度時,系統(tǒng)默認(rèn)整數(shù)位10位。
STR(123456789.56)123456790若指定<長度>小于<數(shù)值表達(dá)式>整數(shù)位數(shù),則用一串“*”號表示數(shù)據(jù)溢出,“*”的個數(shù)為長度值;若<長度>為0,則返回空字符串。
STR(123.456,2)**STR(123.567,0)轉(zhuǎn)換時要四舍五入(3)字符轉(zhuǎn)換為日期函數(shù)CTOD格式:CTOD(<字符表達(dá)式>)功能:將符合yy/mm/dd、mm/dd/yy日期格式的字符串轉(zhuǎn)換為相應(yīng)日期,不符時為“
//”。
(4)日期轉(zhuǎn)換為字符函數(shù)DTOC格式:DTOC(<日期表達(dá)式>[,1])功能:將<日期表達(dá)式>轉(zhuǎn)換為相應(yīng)的字符串。說明:不選用1時,按mm/dd/yy格式轉(zhuǎn)換;選用1時,按
yyyymmdd格式轉(zhuǎn)換。(5)ASCII碼值轉(zhuǎn)換為字符函數(shù)CHR格式:CHR(<數(shù)值表達(dá)式>)功能:將<數(shù)值表達(dá)式>表示的ASCII碼值轉(zhuǎn)換為相應(yīng)的字符。
(6)字符轉(zhuǎn)換成ASCII碼值函數(shù)ASC格式:ASC(<字符表達(dá)式>)功能:返回<字符表達(dá)式>最左邊的一個字符的ASCII碼值。5.測試函數(shù)(1)值域測試函數(shù)BETWEEN格式:BETWEEN(<表達(dá)式1>,<表達(dá)式2>,<表達(dá)式3>)功能:判斷一個表達(dá)式的值是否介于另外兩個表達(dá)式的值之間。當(dāng)<表達(dá)式1>值大于等于<表達(dá)式2>且
小于等于<表達(dá)式3>時,函數(shù)值為邏輯真(.T.),否則函數(shù)只為邏輯假(.F.)。舉例:?between(34,78,96).F.(2)空值(NULL值)測試函數(shù)ISNULL格式:ISNULL(<表達(dá)式>)功能:判斷一個表達(dá)式的運(yùn)算結(jié)果是否為NULL值,是則返回邏輯值.T.,否則返回邏輯值.F.。舉例:store.NULL.tox/storeNULLtox ?x,ISNULL(x)(3)“空”值測試函數(shù)EMPTY格式:EMPTY(<表達(dá)式1>)功能:測試表達(dá)式的運(yùn)算結(jié)果是否為空,返回邏輯真.T.
或邏輯假.F.說明:空值對C型指空串、空格、制表符、回車、換行,
D和T型是指空值,如ctod(‘’),其它型是指0值。(4)數(shù)據(jù)類型測試函數(shù)VARTYPE格式:VARTYPE(<表達(dá)式>)功能:測試<表達(dá)式>的類型,返回一個大寫字母,函數(shù)值為字符型。若<表達(dá)式>是一個數(shù)組,則根據(jù)第一個數(shù)組元素的類型返回字符串。舉例:?vartype("AAA"),vartype(234),vartype($200)(5)條件測試函數(shù)IIF格式:IIF(<邏輯表達(dá)式>,<表達(dá)式1>,<表達(dá)式2>)功能:測試<邏輯表達(dá)式>的值,若為邏輯真.T.,函數(shù)返回
<表達(dá)式1>的值,若為邏輯假.F.,函數(shù)返回<表達(dá)式2>
的值。<表達(dá)式1>和<表達(dá)式2>的類型不要求相同。
舉例:x=15?iif(x>10,x+10,x+5),iif(x<10,x+10,x+5)2.1.4表達(dá)式表達(dá)式是由常量、變量和函數(shù)等通過特定的運(yùn)算符連接起來的式子。表達(dá)式包括兩種形式:單一的對象(例如:123,X,date())由運(yùn)算符將運(yùn)算對象連接起來形成的式子(例如:x+5)表達(dá)式按運(yùn)算規(guī)則能計(jì)算出一個結(jié)果,稱表達(dá)式的值 表達(dá)式的值可以賦給變量,屏幕顯示,或參加運(yùn)算。按表達(dá)式運(yùn)算結(jié)果的不同,表達(dá)式可分為以下幾類數(shù)值表達(dá)式字符表達(dá)式日期時間表達(dá)式關(guān)系表達(dá)式和邏輯表達(dá)式1.?dāng)?shù)值表達(dá)式由算術(shù)運(yùn)算符和數(shù)值型的常量、變量、數(shù)組元素、字段、函數(shù)組成。運(yùn)算結(jié)果是數(shù)值型數(shù)據(jù)。算術(shù)運(yùn)算符及運(yùn)算優(yōu)先級如下:函數(shù)的優(yōu)先級僅次于括號2.字符表達(dá)式字符表達(dá)式由字符串運(yùn)算符將字符型數(shù)據(jù)連接起來形成,其運(yùn)算結(jié)果仍然是字符型數(shù)據(jù)。字符串運(yùn)算符有以下兩個:+:前后兩個字符串首尾連接形成一個新的字符串-:連接前后兩個字符串,并將前字符串的尾部空格移到合并后的新字符串尾部。字符串運(yùn)算符的優(yōu)先級相同舉例:a=“長春”
b=“信息經(jīng)濟(jì)學(xué)院”
?a+b,“aa”?a-b,“aa”3.日期時間表達(dá)式日期時間表達(dá)式中可以使用的運(yùn)算符也有+和-兩個。4.關(guān)系表達(dá)式關(guān)系表達(dá)式由關(guān)系運(yùn)算符和字符表達(dá)式、算術(shù)表達(dá)式、時間日期表達(dá)式組成,其運(yùn)算結(jié)果為邏輯型常量。關(guān)系成立時,表達(dá)式的結(jié)果為.T.,反之,表達(dá)式結(jié)果為.F.。關(guān)系表達(dá)式格式:<表達(dá)式1><關(guān)系運(yùn)算符><表達(dá)式2>關(guān)系運(yùn)算符的優(yōu)先級相同舉例:?2+3=6,10>-11,$10>$15 ?{^2003-01-01}>{^2002-12-28}?.T.<.F.子串包含測試
store"計(jì)算機(jī)"tos1 store"微型計(jì)算機(jī)"tos2 ?s1$s2,s2$s1字符串精確比較與EXACT設(shè)置
“==”比較兩個字符串時,只有當(dāng)兩個字符串完全相同時(包括空格及各字符的位置),運(yùn)算結(jié)果才為.T.
“=”比較兩個字符串時,運(yùn)算結(jié)果與setexacton/off有關(guān),默認(rèn)設(shè)置是SETEXACTOFF,此時,只要等號右邊的字符串與左邊字符串的前面部分內(nèi)容相同,結(jié)果為.T.
設(shè)置SETEXACTON后,比較前會在較短字符串尾部加上若干空格,使兩個字符串相等,然后再比較。5.邏輯表達(dá)式邏輯表達(dá)式由邏輯運(yùn)算符將邏輯型數(shù)據(jù)連接起來而形成,運(yùn)算結(jié)果仍是邏輯型數(shù)據(jù)。邏輯運(yùn)算符有三個:
.NOT.或?。ㄟ壿嫹牵?對后面的邏輯值求反
.AND.(邏輯與):只兩個邏輯值都為真,運(yùn)算結(jié)果為真
.OR.(邏輯或):只要有一個邏輯量為真,運(yùn)算結(jié)果為真
也可以省略兩端的點(diǎn)(省略時邏輯運(yùn)算符兩邊必須有空格)優(yōu)先級順序?yàn)椋篘OT、AND、OR。舉例:身高=1.8
體重=130 ?身高>1.7and體重>110 ?身高>1.7and體重>200?not身高>1.7and體重>200?not(身高>1.7and體重>200)?身高>1.7or體重>200?not身高>1.7or體重>2006.運(yùn)算符優(yōu)先級在每一類運(yùn)算符中,各個運(yùn)算符有一定的運(yùn)算優(yōu)先級。而不同類型的運(yùn)算也可能出現(xiàn)在同一個表達(dá)式中,這時它們的運(yùn)算優(yōu)先級順序從高到低為:
*括號
*函數(shù)
*算術(shù)運(yùn)算、字符串運(yùn)算和日期時間運(yùn)算
*關(guān)系運(yùn)算
*邏輯運(yùn)算一、賦值語句、顯示語句、表達(dá)式
a=3.14?a=4.68
姓名=“王大力”?姓名
str1=“thisisatable”?“Word”
生日={^1898-08-23}?Substr(str1,4,2)二、賦值號與比較運(yùn)算符(=)
x=23?x=3 y=46?y=46 z=x=y&&先進(jìn)行x、y的比較,將結(jié)果賦給z
?x=y=z&&比較x,y,再將比較的結(jié)果與z比較
e1=not3>4.and.y=46
?e1=not3>4.and.Y=46&&將e1與not3>4比較,再將結(jié)果與y=46的比較結(jié)果進(jìn)行求邏輯與。上機(jī)題1、指出以下左邊各變量的值及類型
A=10*2**3+100B=(10*2)**3+100 C=A=BD=A<BE1=A=B.AND.A<B E2=A=B.OR.A<BE3=.NOT.A=B.AND.A<BE4=.NOT.(A=B.AND.A<B) E5=.NOT.(A=B.OR.A<B)E6=“ABC”$BDABCD”.AND.A=B.OR.(10+5)<>10*5E7=E6.AND.“C”+”A”$“A”上機(jī)題2、在命令窗口中輸入如下命令:A=“Thisisacomputer”B=“It’smine”寫出滿足下列要求的命令:取A的第8個字符賦給C取A的左邊7個字符賦給D取A的右邊4個字符賦給E求出字符A、B的長度判斷A中是否包含D及E(兩種方法)上機(jī)題3、上機(jī)執(zhí)行下列命令,熟悉函數(shù)的功能(1)B=DTOC(DATE(),1)?“今天是:”+left(B,4)+“年”;+iif(subs(B,5,1)=“0”,subs(B,6,1),subs(b,5,2));+“月”+right(B,2)+“日”/*日子也可按月份處理方法處理(2)X=STR(12.4,4,1)(3)X=“奔騰586”Y=RIGHT(X,3)Y=“個人計(jì)算機(jī)”
Z=“&x+&y”?LEN(X),RIGHT(X,3)+Y?Z,&Z?”&X.&Y”,X+Y(4)?AT(“人民”,“中華人民共和國”)?VAL(SUBSTR(‘668899’,5,2))+1?SUBSTR(‘668899”,3)-’1’(5)DD=DATE()?str((year(dd),4)+”年”+str(month(dd,2)+”月“+str(day(dd),2)+”日”上機(jī)題數(shù)據(jù)表的概念 在VisualFoxPro中,一張二維表對應(yīng)一個數(shù)據(jù)表,稱為表文件,它是擴(kuò)展名為.dbf的文件數(shù)據(jù)表的分類
*數(shù)據(jù)庫表:包含在數(shù)據(jù)庫中的表
*自由表:不包含在任何數(shù)據(jù)庫中而獨(dú)立存在的表
自由表可以添加在數(shù)據(jù)庫中而成為數(shù)據(jù)庫表,數(shù)據(jù)庫表也可以從數(shù)據(jù)庫中移出而成為自由表。2.2.1創(chuàng)建數(shù)據(jù)表結(jié)構(gòu)
2.2創(chuàng)建數(shù)據(jù)表1)數(shù)據(jù)庫的概念把有關(guān)系的表存放在同一數(shù)據(jù)庫中,確定它們的關(guān)聯(lián)關(guān)系,數(shù)據(jù)庫中的數(shù)據(jù)才能被更充分的利用。數(shù)據(jù)庫是一個邏輯上的概念和手段,通過一組系統(tǒng)文件將相互聯(lián)系的數(shù)據(jù)表及其相關(guān)的數(shù)據(jù)庫對象進(jìn)行統(tǒng)一組織和管理。數(shù)據(jù)庫實(shí)際是一個擴(kuò)展名為dbc的文件,與之相關(guān)的還會自動建立一個擴(kuò)展名為dct的數(shù)據(jù)庫備注(memo)文件和一個擴(kuò)展名為dcx的數(shù)據(jù)庫索引文件。1.創(chuàng)建數(shù)據(jù)庫2)建立數(shù)據(jù)庫的三種方法:在項(xiàng)目管理器中建立數(shù)據(jù)庫通過“新建”對話框建立數(shù)據(jù)庫使用命令建立數(shù)據(jù)庫CREATEDATABASE[數(shù)據(jù)庫文件名|?]建立數(shù)據(jù)庫需注意的幾點(diǎn):如果指定的數(shù)據(jù)庫已經(jīng)存在,可能覆蓋已經(jīng)存在的數(shù)據(jù)庫。
setsafetyon(默認(rèn)值),出現(xiàn)警告對話框請用戶確認(rèn);
setsafetyoff則直接覆蓋同名數(shù)據(jù)庫。命令方式建立的數(shù)據(jù)庫不顯示數(shù)據(jù)庫設(shè)計(jì)器,而另兩種方式建立的數(shù)據(jù)庫會立即打開數(shù)據(jù)庫設(shè)計(jì)器。數(shù)據(jù)表的構(gòu)成表名(文件名)數(shù)據(jù)表的結(jié)構(gòu)(字段名、字段類型、字段寬度、索引)數(shù)據(jù)表的記錄字段類型和寬度
C、Y、N、F、B、I、D、T、L、M、G字段名:字段名就是關(guān)系的屬性名或表的列名。數(shù)據(jù)表中字段名的命名規(guī)則如下:自由表字段名最長10個字符數(shù)據(jù)庫表的字段名最長為128個字符必須以字母或漢字開頭、后跟字母、漢字、數(shù)字和下劃線字段名中不能包含空格2.創(chuàng)建數(shù)據(jù)表1)設(shè)計(jì)表結(jié)構(gòu)編號名稱啟用日期價格部門主要設(shè)備備注商標(biāo)016-1車床03/05/9062044.6121.T.memogen016-2車床01/15/9227132.7321.T.memogen037-2磨床07/21/90241292.1222.T.memogen038-1鉆床10/12/895275.0023.F.memogen100-1微機(jī)08/12/978810.0012.T.memogen101-1復(fù)印機(jī)06/01/9210305.0112.F.memogen210-1轎車05/08/95151000.0011.F.memogen表結(jié)構(gòu)實(shí)例:設(shè)備清單表(P33)字段名類型寬度小數(shù)位數(shù)編號字符型5名稱字符型6啟用日期日期型8價格數(shù)值型92部門字符型2主要設(shè)備邏輯型1備注備注型4商標(biāo)通用型4設(shè)備表的結(jié)構(gòu)(SB.DBF)創(chuàng)建方法:(啟動表設(shè)計(jì)器后創(chuàng)建) 2)利用表設(shè)計(jì)器創(chuàng)建表結(jié)構(gòu)(1)
使用命令的方法
格式:CREATE[<表文件名>|[.dbf]] 例:建立數(shù)據(jù)表SB.DBF時可使用命令:
CREATE[盤符\路徑\]SB(2)
在項(xiàng)目管理器中創(chuàng)建
在項(xiàng)目管理器中選擇自由表或數(shù)據(jù)庫表,單擊“新建”按鈕,打開自由表或數(shù)據(jù)庫表的表設(shè)計(jì)器.表設(shè)計(jì)器的使用說明(1)數(shù)值型數(shù)據(jù)總最大長度20位,包括小數(shù)位(2)有些數(shù)據(jù)類型的寬度是固定的,不需指定:
雙精度數(shù)固定8個字節(jié),整數(shù)固定4個字節(jié)
貨幣型數(shù)固定8個字節(jié),邏輯型固定1個字節(jié)
日期型和日期時間型固定8個字節(jié)
通用型和備注型固定4個字節(jié)(3)NULL值的確定
.NULL.表示是否充許字段值為空值,它與空串和0具有不同的意義,空值就是缺值或該值還沒確定,而不是任何意義的數(shù)據(jù)。關(guān)鍵字段不允許設(shè)為空值??罩挡皇且环N數(shù)據(jù)類型,只是一個值,輸入空值時Ctrl+0(4)設(shè)計(jì)表結(jié)構(gòu)時,不能隨便按回車鍵,否則會退出表結(jié)構(gòu)的設(shè)計(jì)狀態(tài),而應(yīng)使用光標(biāo)移動鍵。索引前:索引文件索引后:(按身高建立升序索引)索引文件示例索引值記錄號
1.62 41.63 91.65 51.67 101.7321.75 71.78 81.80 11.80 31.82 6(1)索引的基本概念一個記錄號與關(guān)鍵字索引值的列表,不改變表中所存儲記錄的順序,只改變VFP系統(tǒng)讀取記錄的順序。建立在索引文件中,一個表可建立多個索引,每一索引代表一種處理記錄的順序。分為復(fù)合索引和單索引,其對應(yīng)的索引文件的擴(kuò)展名分別是.CDX和.IDX;復(fù)合索引又分為結(jié)構(gòu)復(fù)合索引和非結(jié)構(gòu)復(fù)合索引,結(jié)構(gòu)復(fù)合索引的索引文件名與表同名,而非結(jié)構(gòu)復(fù)合索引需另外起名。索引(2)功能角度VFP系統(tǒng)的索引類型:主索引:指定字段或表達(dá)式中不允許出現(xiàn)重復(fù)值的索引,確保字段中輸入值的唯一性。一個表只能建立一個主索引(自由表沒有主索引)候選索引:與主索引類似,索引值的記錄唯一的。一個表允許建立多個候選索引。普通索引:允許表中有重復(fù)索引值的記錄。在一個表中可以加入多個普通索引。唯一索引:允許表中索引值的記錄不唯一,但索引文件中不能有相同的索引值,即對于索引值相同的記錄,只有記錄號最小的記錄號才能存于索引文件中。這是為兼容舊版本而保留的一種形式。建立結(jié)構(gòu)復(fù)合索引:(3)創(chuàng)建索引表設(shè)計(jì)器中建立將生成與表同名的索引文件,擴(kuò)展名為CDX格式:INDEXON
索引表達(dá)式TAG索引名[FOR條件表達(dá)式]
[ASCENDING│DESCENDING][UNIQUE│CANDIDATE]功能:建立一個結(jié)構(gòu)復(fù)合索引,該索引保存在CDX文件中。使用命令建立說明:索引表達(dá)式可以是字段名或包含字段名的表達(dá)式,但只能是N、C、D、L四種類型。涉及多個字段時,索引排序是按表達(dá)式中字段從左到右進(jìn)行的。一個命令只建立一個索引;ASCENDING:升序;DESCENDING:降序。默認(rèn)升序。UNIQUE:唯一索引;CANDIDATE:候選索引。默認(rèn)普通索引。新建立的索引成為邏輯排序的依據(jù),稱為當(dāng)前索引(主控索引),每個表都可以指定一個當(dāng)前索引,而且只能是一個。結(jié)構(gòu)復(fù)合索引文件在打開表時自動打開,只有表關(guān)閉時才會關(guān)閉;文件中可包括多個索引;當(dāng)索引文件打開時,在添加、更改或刪除記錄時自動維護(hù)索引.如修改表中內(nèi)容時索引文件沒有打開,則需用reindex重新索引或重新建立索引。例:usesbindexon價格tagjgdescendingindexon部門+str(價格,9,2)tagbmjgindexon-價格/1000000tagjg1candidate生成shebei.cdx文件,其中包含3個索引。設(shè)置字段屬性(1)格式用于鍵入格式表達(dá)式,從整體格式角度約束,確定字段值在瀏覽窗口或輸入時采用的格式。格式設(shè)置對已有記錄不做檢查。3)設(shè)定數(shù)據(jù)庫表的完整性舉例:
1、對“編號”字段設(shè)置格式屬性為:AT2、對“名稱”字段設(shè)置格式屬性為:M鉆床,磨床,機(jī)床,微機(jī)
3、對“價格”字段設(shè)置格式屬性為:^格式代碼含義說明A只允許是字母符號,禁止?jié)h字、空格或標(biāo)點(diǎn)E以英國日期格式編輯日期型數(shù)據(jù)L將數(shù)值型數(shù)據(jù)前面的空格位用零添充M以列表的方式為字符型字段預(yù)置多個可選項(xiàng),當(dāng)輸入或修改時用空格進(jìn)行選擇T刪除字段中的的前導(dǎo)空格和尾部空格!將字段中的小寫字母轉(zhuǎn)換為大寫字母^使用科學(xué)記數(shù)法顯示數(shù)值型字段的值格式代碼列表(2)輸入掩碼
用于“按位”指定字段的輸入格式,限制輸入數(shù)據(jù)的范圍,控制輸入的正確性,不符合規(guī)則的數(shù)據(jù)不能輸入,對已有記錄不驗(yàn)證該規(guī)則。
掩碼含義說明X可輸入任何字符9可輸入數(shù)字和正負(fù)號??奢斎霐?shù)字、空格、正負(fù)號$在指定位置顯示當(dāng)前的貨幣符號.用來指定小數(shù)點(diǎn)的位置,用來分隔小數(shù)點(diǎn)左邊的整數(shù)部分,通常作為千分位隔點(diǎn)例:1、在“編號”字段的輸入掩碼文本框中輸入“999-9”;
2、將‘$’顯示在“價格”字段的前面。(3)標(biāo)題
顯示區(qū)的標(biāo)題文本框用于為瀏覽窗口、表單或報(bào)表中的字段標(biāo)簽鍵入表達(dá)式。例:將“價格”字段的標(biāo)題文本框中輸入設(shè)備價格;(4)字段有效性規(guī)則文本框用于輸入對指定字段數(shù)據(jù)有效性進(jìn)行檢查的規(guī)則,它實(shí)際上是一個條件。用條件驗(yàn)證該字段數(shù)據(jù)合法性。信息文本框用于指定出錯提示信息,當(dāng)該字段輸入的數(shù)據(jù)違反條件時,出錯信息將照此顯示。信息內(nèi)容要定界。默認(rèn)值文本框用于指定字段的默認(rèn)值。值類型與字段一致例:(設(shè)置“啟用日期”字段)1、在有效性規(guī)則輸入啟用日期<=date()2、在信息規(guī)則中輸入“輸入日期錯誤!”3、在默認(rèn)值中輸入date()說明:
光標(biāo)離開字段時引起字段有效性的檢驗(yàn),如不符合規(guī)則,必須加以改正。該規(guī)則對已有記錄也要驗(yàn)證。(5)字段注釋字段注釋信息需用雙引號定界。當(dāng)在項(xiàng)目管理器中選擇字段時,字段注釋信息顯示在項(xiàng)目管理器的底部。
設(shè)置記錄規(guī)則(在“表”選項(xiàng)卡中設(shè)置)(1)記錄驗(yàn)證規(guī)則:用于指定記錄級有效性檢查規(guī)則。信息:用于指定出錯提示信息。出錯提示信息內(nèi)容必須用西文引號括起。說明:記錄級有效性檢查規(guī)則用來檢查同一記錄中不同字段之間的邏輯關(guān)系。記錄驗(yàn)證規(guī)則是當(dāng)記錄的值被改變后,記錄指針準(zhǔn)備離開該記錄時被激活的。記錄規(guī)則設(shè)置后對已經(jīng)存在的記錄也要驗(yàn)證。(2)觸發(fā)器
觸發(fā)器是一個在插入、刪除或更新表中記錄時被激活的表達(dá)式,用于驗(yàn)證插入、刪除或更新的記錄是否符合規(guī)則。觸發(fā)器有下面三種:插入觸發(fā)器:用于指定一個規(guī)則,每次向表中插入或追加記錄時該規(guī)則被觸發(fā),據(jù)此檢查插入的記錄是否滿足規(guī)則。更新觸發(fā)器:用于指定一個規(guī)則,每次更新記錄時觸發(fā)該規(guī)則。刪除觸發(fā)器:用于指定一個規(guī)則,每次向表中刪除記錄(打上刪除標(biāo)記)時觸發(fā)該規(guī)則。說明:觸發(fā)器設(shè)置對已經(jīng)存在的記錄不做檢查。例如:將刪除觸發(fā)器設(shè)置為“RECNO()>10”,表示只有記錄號大于10的記錄才可以被邏輯刪除。(3)長表名和表注釋 長表名最多128個字符,它出現(xiàn)在瀏覽窗口中 表注釋出現(xiàn)在項(xiàng)目管理器的底部。表數(shù)據(jù)的輸入時機(jī):
表數(shù)據(jù)就是表記錄,可以在創(chuàng)建表結(jié)構(gòu)時直接輸入表的數(shù)據(jù);也可以建立完成后追加記錄,追加記錄前必須用use命令先打開表,然后使用下面方法追加記錄。2.2.2輸入表數(shù)據(jù)輸入記錄的兩種方法(1)
使用APPEND命令
格式:APPEND|APPENDBLANK
執(zhí)行一次APPENDBLANK命令后在表尾添加一條空記錄
(2)
使用菜單方法
打開表【顯示】-【瀏覽···】菜單,出現(xiàn)“瀏覽”窗口(或用brow命令)【顯示】-【追加方式】可一次追加多條記錄 或【表】-【追加新記錄】增加一條空白記錄。記錄數(shù)據(jù)輸入說明(1)對于日期型字段,只需輸入月份、日期、兩位年份,不需輸入“/”.如setcenturyon,則輸入兩位或四位年份都可以。兩位時56以下認(rèn)為是’20--’年,以后認(rèn)為是’19--’年。(2)邏輯型字段輸入內(nèi)容時,只需輸入T或F,且不分大小寫(3)在輸入記錄的字段值時,只能輸入對字段類型有效的值。如果輸入了無效數(shù)據(jù),則在屏幕的右上角彈出一個信息框顯示出錯信息,在更正錯誤之前,無法將光標(biāo)移動到其它字段上去。(4)記錄輸入完畢后,關(guān)閉當(dāng)前窗口(也可按組合鍵Ctrl+W),保存添加的記錄信息到表文件中。若欲放棄對當(dāng)前記錄的編輯修改,可按Esc鍵。(5)備注型字段和通用型字段有特殊的輸入方法。兩字段的實(shí)際內(nèi)容保存在一個擴(kuò)展名為.FPT的文件中,在定義通用型和備注型字段時,字段寬度都只有4個字節(jié),這4個字節(jié)只存放一個指針,指向存儲實(shí)際內(nèi)容的.FPT的文件中,因此要確保.dbf和.fpt文件永遠(yuǎn)在一起。備注型數(shù)據(jù)顯示為“Memo”或“memo”,其中“Memo”表示對應(yīng)的記錄的備注字段已經(jīng)輸入了數(shù)據(jù),而“memo”表示該字段中沒有備注內(nèi)容。要為某記錄的備注字段輸入數(shù)據(jù)或修改其中的內(nèi)容,可雙擊該記錄的備注字段,進(jìn)入備注字段的編輯窗口,編輯完后按<Ctrl>+<W>或單擊窗口的“關(guān)閉”按鈕結(jié)束并保存輸入的新內(nèi)容;按<ESC>結(jié)束并不保存輸入的新內(nèi)容。通用型字段數(shù)據(jù)顯示為Gen或gen,Gen表示該字段有內(nèi)容,gen表示沒有內(nèi)容。雙擊字段進(jìn)入編輯窗口,可通過剪貼板或執(zhí)行“編輯”—“插入對象”菜單命令來插入圖形或其他對象,也可通過Ctrl+X刪除內(nèi)容。保存或放棄方法與備注型數(shù)據(jù)相同。(6)備注字段和通用型字段數(shù)據(jù)的輸入和修改
表結(jié)構(gòu)的修改范圍
表結(jié)構(gòu)修改包括:增加、刪除字段,修改字段名、字段類型、字段寬度,建立、修改刪除索引。數(shù)據(jù)庫表還可以建立、修改、刪除有效性規(guī)則等。2.2.3表結(jié)構(gòu)的修改
利用表設(shè)計(jì)器修改表結(jié)構(gòu)的兩種方法首先用use命令打開表,然后命令:MODIFYSTRUCTURE2.3.1VISUALFOXPRO命令結(jié)構(gòu)及常用子句命令的構(gòu)成:命令動詞、語句體(若干個子句)、注釋VFP命令格式:
<命令動詞>[<功能子句1>][<功能子句2>][...]&&注釋部分例:顯示命令LIST的格式:
LIST[<范圍>][[<FIELDS>]<字段名表達(dá)式表>] [FOR<條件>][WHILE<條件>][OFF] [TO<設(shè)備名|文件名|內(nèi)存變量名>]&&注釋2.3數(shù)據(jù)表的維護(hù)
1.命令動詞
表示要執(zhí)行的操作,是一個命令中必不可少的部分。2.語句體
語句體由一系列短語(子句)構(gòu)成,可使用的常用子句如下所示:
(1)FIELDS<字段名表>
用于選定操作的“字段”,<字段名表>中有多個字段時,字段名之間用逗號分隔。例:
usesblistfields名稱,部門
&&顯示表中“名稱”“部門”兩列數(shù)據(jù)(2)FOR<條件>
只對表中滿足“條件”的所有記錄進(jìn)行操作。例:
usesb listfor價格>100000
&&顯示表中價格大于10萬元的
&&所有設(shè)備記錄(3)WHILE<條件>
對滿足條件的記錄進(jìn)行操作。從表中當(dāng)前正在使用的記錄開始向下順序判斷,當(dāng)遇到第一個不滿足條件的記錄時,停止命令執(zhí)行,而不管其后是否還有滿足條件的記錄。例:listfields名稱,部門for價格>100000while主要設(shè)備=.t.
當(dāng)命令中同時有for和while子句時,要優(yōu)先滿足while條件(4)<范圍>
表示記錄的執(zhí)行范圍。
VFP系統(tǒng)對表中的記錄是逐條進(jìn)行處理的。VFP為每一個打開的表設(shè)置了一個內(nèi)部使用的記錄指針,指向正在被操作的記錄,該記錄稱為當(dāng)前記錄。記錄指針的作用是標(biāo)識表的當(dāng)前記錄。 范圍可以是以下四種參數(shù)之一:
ALL:表示全部記錄;
NEXT<n>:表示從當(dāng)前記錄開始的以下n條記錄;
RECORD<n>:表示第n號記錄;
REST:表示從當(dāng)前記錄到最后一條記錄。
(5)TO<設(shè)備名|文件名|內(nèi)存變量名>
表示操作結(jié)果的輸出去向。3.命令書寫格式說明
在書寫命令格式時,還用到一些符號,這些符號只是在書寫時使用,實(shí)際操作時并不輸入。這些符號以及它們所表示的意義如下:
<>:表示其中內(nèi)容為必選項(xiàng),實(shí)際命令中不包括它;
[]:表示其中內(nèi)容為可選項(xiàng),即可以省略該子句;
|:表示其兩側(cè)項(xiàng)目只能任選一項(xiàng);
…:表示同類項(xiàng)的多次重復(fù)。
4.命令的書寫與使用規(guī)則每條命令以命令動詞開始,以回車鍵結(jié)束,命令中各短語的順序是任意的。命令動詞、短語中的英文單詞及函數(shù)名均可縮寫為前四個字符,大小寫可混用。命令動詞、語句體及其各短語之間均以空格相隔。一行只能寫一個命令,不能將兩個命令寫在同一行。命令一行寫不下時,可以由系統(tǒng)自然換行或在行尾加分號(;),回車強(qiáng)制換行。命令行的長度小于或等于2048個字符。1、表的打開打開:將表從外存調(diào)入內(nèi)存,以便顯示或?qū)ζ洳僮鞑藛危骸疚募浚敬蜷_】(或工具欄上的“打開”按鈕)命令:Use<表名>[.dbf]&&打開默認(rèn)路徑下的表說明:USE命令打開一個新表的同時會自動關(guān)閉先打開的表2.3.2表的打開與關(guān)閉2、表的關(guān)閉use
&&關(guān)閉當(dāng)前使用的表closetables&&關(guān)閉當(dāng)前數(shù)據(jù)庫中所有打開的表closetablesall&&關(guān)閉所有打開的表closeall&&關(guān)閉所有打開的表、程序文件及表單等clearall&&關(guān)閉所有的表、程序文件及表單等,清
&&除內(nèi)存變量1.同時進(jìn)行數(shù)據(jù)瀏覽和修改的操作使用瀏覽器來瀏覽和修改數(shù)據(jù)表,打開瀏覽器的常用方法有以下幾種:首先打開要操作的表-【顯示】-【瀏覽···】。在項(xiàng)目管理器中選擇要操作的表,然后單擊“瀏覽”按鈕。在命令方式下,首先用USE命令打開要操作的表,然后鍵入BROWSE命令。BROWSE命令的格式如下:
BROWSE[<范圍>][Fields<字段名表>] [For<條件表達(dá)式>][<NOAPPEND>][<NOMODIFY>]2.3.3表數(shù)據(jù)的瀏覽和修改交互式地對當(dāng)前表記錄進(jìn)行編輯的命令:
CHANGE|EDIT[<范圍>][Fields<字段名表>] [For<條件表達(dá)式>][while<條件表達(dá)式>]2.數(shù)據(jù)的選擇顯示數(shù)據(jù)的顯示也可使用LIST和DISPLAY命令,命令格式如下:
List|Display[<范圍>];
[[Fields]<字段名表達(dá)式表>];
[For<條件表達(dá)式>][WHILE<條件表達(dá)式>];
[ToPrinter][ToFile<文件名>][off]
說明:(1)Display命令分屏顯示數(shù)據(jù),面List命令不分屏顯示(2)沒有For和While子句時,如省略<范圍>子句,則List命令認(rèn)為是All,而Display命令默認(rèn)為是當(dāng)前記錄。有For和While子句時,則都默認(rèn)為All。(3)OFF參數(shù)表示不顯示記錄號1.指定主控索引(1)命令方式格式:SETORDERTO[<數(shù)值表達(dá)式>|[TAG]索引名];
[ASCENDING|DESCENDING]]2.3.4索引文件的使用主控索引一個表可以建立或打開一個或多個索引,但同一時刻只有一個索引起作用,稱為當(dāng)前索引或主控索引。此時表的邏輯順序以主控索引的順序排列。主控索引可隨時指定。說明:
數(shù)值表達(dá)式指出索引列表中第幾個索引為主控索引指定主控索引時可以重新指定索引的升、降序
setorderto[0]取消主控索引新打開的結(jié)構(gòu)索引對表的邏輯順序不起控制作用如果某個索引不再使用了可刪除在表設(shè)計(jì)器中的“索引”選項(xiàng)卡刪除,先打開索引文件,然后使用下面命令刪除:
DELETETAGALL|<索引名列表>
其中,選擇ALL時表示刪除打開的所有索引。2.刪除索引表的邏輯結(jié)構(gòu):VFP命令對表中記錄逐條處理,一個表剛打開時,指針指向第一條記錄,此時第一條記錄是當(dāng)前記錄。表第一條記錄記為TOP;最后一條記錄記為BOTTOM。在TOP之前有一個文件起始標(biāo)識,稱為文件首BOF(BeginningofFile,簡稱BOF);在BOTTOM后有一個文件結(jié)束標(biāo)識,稱為文件尾(EndofFile,簡稱EOF)。記錄指針可以移動,移動指針就是要把指針定位在某個記錄上。2.3.5記錄指針的移動BeginningofFile(BOF)EndofFile(EOF)TOPBOTTOM1.命令方法移動指針(1)GO命令
絕對定位命令,它將記錄指針定位于指定位置。GO命令有如下兩種格式:格式1:GO[TO]TOP|BOTTOM
格式2:[GO[TO]]<數(shù)值表達(dá)式>說明:GOTOP指針定位首記錄;GOBOTTOM指針定位末記錄;
<數(shù)值表達(dá)式>的值是正整數(shù),指針定位在指定記錄(2)SKIP命令
相對定位命令,是相對于當(dāng)前記錄進(jìn)行定位的命令。格式:SKIP[<數(shù)值表達(dá)式>]說明:<數(shù)值表達(dá)式>的值取正/負(fù)整數(shù),表示指針從當(dāng)前記錄開始移動多少個記錄:值大于零時指針往文件尾移動;小于零時指針往文件頭移動;當(dāng)<數(shù)值表達(dá)式>缺省時表示1。LIST、DISPLAY、LOCATE和REPLACE等命令執(zhí)行后會移動記錄指針。
usesblistnext3//如沒有到結(jié)尾,則為當(dāng)前記錄dispnext3disprest//最后一條記錄之后list//最后一條記錄之后(1)文件結(jié)束測試函數(shù)EOF格式:EOF([<數(shù)值表達(dá)式>]│<表別名>])功能:測試<數(shù)值表達(dá)式>指定工作區(qū)中表文件記錄指針是否指向文件結(jié)束位置(表文件尾。若指向,函數(shù)值為邏輯真(.T.),否則函數(shù)值為假(.F.)。3.與指針及表相關(guān)的測試函數(shù)舉例:usesbgobottom?eof()skip ?eof()go4 list?eof()(2)文件起始測試函數(shù)BOF格式:BOF([<數(shù)值表達(dá)式>]│<表別名>])功能:測試<數(shù)值表達(dá)式>指定的工作區(qū)中表文件記錄指針是否指向起始位置。若指向,函數(shù)值為邏輯真(.T.),否則為假(.F.)。舉例:usesbgotop ?eof(),bof()skip-1?eof(),bof()(3)記錄號測試函數(shù)RECNO格式:RECNO([<數(shù)值表達(dá)式>│<表別名>])功能:給出<數(shù)值表達(dá)式>指定的工作區(qū)中打開的數(shù)據(jù)表的當(dāng)前記錄號;無參數(shù)時,給出當(dāng)前表當(dāng)前記錄號;沒有打開的表時,返回值為0;如果指針指向文件尾,函數(shù)值為表文件中的記錄數(shù)加1,如果記錄指針指向文件首,函數(shù)值為最上面記錄的記錄號舉例:usesb ?recno()skip–1 ?recno() gobottom ?recno() skip ?recno()(4)記錄數(shù)測試函數(shù)RECCOUNT格式:RECCOUNT([<數(shù)值表達(dá)式>|<表別名>])功能:測試<數(shù)值表達(dá)式>指定的工作區(qū)中數(shù)據(jù)表的記錄個數(shù) 無參數(shù)時,測試當(dāng)前工作區(qū)中數(shù)據(jù)表中的記錄個數(shù);若沒有打開的數(shù)據(jù)表,返回值為0(5)文件測試函數(shù)FILE格式:FILE(<字符表達(dá)式>)功能:測試<字符表達(dá)式>指定的磁盤文件是否存在,若存在,函數(shù)值為邏輯真(.T.),否則函數(shù)值為假(.F.)。例如:?file(‘f:\sb.dbf’)
&&文件全名,可是任意類型
(6)記錄大小測試函數(shù)RECSIZE格式:RECSIZE([<數(shù)值表達(dá)式>|<表別名>])功能:測試<數(shù)值表達(dá)式>指定的工作區(qū)中數(shù)據(jù)表記錄的長度說明:記錄長度為各字段長度之和再加1(用于存放刪除標(biāo)記),若設(shè)計(jì)表結(jié)構(gòu)時定義了充許空值,長度再加1(7)數(shù)據(jù)類型測試函數(shù)TYPE格式:TYPE(<表達(dá)式>)功能:測試<表達(dá)式>的數(shù)據(jù)類型。表達(dá)式需用定界符定界舉例: aa=10 ?type(‘a(chǎn)a’)說明:type函數(shù)判斷前先做宏替換操作,而vartype直接判斷(8)檢索測試函數(shù)FOUND格式:FOUND()功能:測試執(zhí)行LOCATE、CONTINUE、SEEK和FIND等定位命令的定位是否成功,定位成功則FOUND()的函數(shù)值為.T.,否則為.F.。舉例:locatefor名稱=“轎車”
?found()(9)記錄刪除測試函數(shù)DELETE格式:DELETED([<表的別名>∣<工作區(qū)號>])功能:測試指定的表,或在指定工作區(qū)中所打開的表,記錄指針?biāo)傅漠?dāng)前記錄是否有刪除標(biāo)記“*”。若有刪除標(biāo)記,函數(shù)值為真,否則為假。若缺省自變量,則測試當(dāng)前工作區(qū)中所打開的表。(10)表文件名測試函數(shù)DBF格式:DBF([<表的別名>∣<工作區(qū)號>])功能:測試指定的表,或在指定工作區(qū)中所打開的表在磁盤的位置。若缺省自變量,則測試當(dāng)前工作區(qū)中所打開的表。舉例: ?dbf()
(11)字段數(shù)測試函數(shù)FCOUNT格式:FCOUNT([<表的別名>∣<工作區(qū)號>])功能:測試指定的表,或在指定工作區(qū)中所打開的表的字段數(shù),若缺省自變量,則測試當(dāng)前工作區(qū)中所打開的表。1.只復(fù)制表文件結(jié)構(gòu)COPYSTRUCTURETO<文件名>[FIELDS<字段名表>]
功能:按指定的字段表復(fù)制表結(jié)構(gòu)到一個新文件,若不指定字段表,則復(fù)制與當(dāng)前表相同的結(jié)構(gòu)。說明:復(fù)制時被復(fù)制的表必須是打開的;當(dāng)被復(fù)制的表有對應(yīng)的.FTP文件時,對應(yīng)的.FTP文件會
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 協(xié)議離婚的協(xié)議書范本10篇
- 2023安全生產(chǎn)責(zé)任協(xié)議書七篇
- 萬能模板賠償協(xié)議書范本10篇
- 機(jī)械基礎(chǔ) 課件 模塊六任務(wù)二 鏈傳動
- 中醫(yī)藥基礎(chǔ)專題知識宣教
- (立項(xiàng)備案申請模板)超薄金剛石項(xiàng)目可行性研究報(bào)告參考范文
- (安全生產(chǎn))選礦廠安全生產(chǎn)標(biāo)準(zhǔn)化自評報(bào)告
- (2024)酒文化創(chuàng)意產(chǎn)業(yè)園建設(shè)項(xiàng)目可行性研究報(bào)告(一)
- 清明節(jié)緬懷先烈主題班會71
- 2023年薄板木船項(xiàng)目籌資方案
- 【基于抖音短視頻的營銷策略分析文獻(xiàn)綜述2800字(論文)】
- 2021-2022學(xué)年度西城區(qū)五年級上冊英語期末考試試題
- 《組織行為學(xué)》(本)形考任務(wù)1-4
- 廣東省廣州市白云區(qū)2022-2023學(xué)年九年級上學(xué)期期末語文試題
- 劇本-進(jìn)入黑夜的漫長旅程
- DB43-T 958.3-2023 實(shí)驗(yàn)用小型豬 第3部分:配合飼料
- 化肥購銷合同范本正規(guī)范本(通用版)
- 健康管理專業(yè)職業(yè)生涯規(guī)劃書
- 外墻巖棉板施工方案
- 吊裝葫蘆施工方案
- 自動化設(shè)備調(diào)試規(guī)范
評論
0/150
提交評論