第二章VisualFoxPro中的數(shù)據(jù)與運算_第1頁
第二章VisualFoxPro中的數(shù)據(jù)與運算_第2頁
第二章VisualFoxPro中的數(shù)據(jù)與運算_第3頁
第二章VisualFoxPro中的數(shù)據(jù)與運算_第4頁
第二章VisualFoxPro中的數(shù)據(jù)與運算_第5頁
已閱讀5頁,還剩62頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第2章

VisualFoxPro中的數(shù)據(jù)與運算

目錄上一頁下一頁退出1

本章要點2.1VisualFoxPro的數(shù)據(jù)類型

2.2VisualFoxPro的常量與變量

2.3VisualFoxPro的函數(shù)

2.4VisualFoxPro的表達式

思考題22.1VisualFoxPro中的數(shù)據(jù)類型

數(shù)據(jù)是反映現(xiàn)實世界中客觀事物屬性的記錄,它包括兩個方面:數(shù)據(jù)內容與數(shù)據(jù)形式。數(shù)據(jù)內容就是數(shù)據(jù)的值,數(shù)據(jù)形式就是數(shù)據(jù)的存儲形式和操作使用方式,也稱為數(shù)據(jù)類型。VFP6系統(tǒng)為使用戶建立和操作數(shù)據(jù)庫更加方便,將系統(tǒng)中所有操作、處理的數(shù)據(jù),分為幾種不同數(shù)據(jù)類型:字符型、數(shù)值型、日期型、日期時間型、邏輯型、備注型、通用型、貨幣型、二進制字符型和二進制備注型。

3

2.1.1

字符型字符型(Character)數(shù)據(jù)是不具計算能力的文字數(shù)據(jù)類型,用字母C表示。字符型數(shù)據(jù)包括中文字符、英文字符、數(shù)字字符和其他ASCII字符,其長度(即字符個數(shù))范圍是0~254個字符。

4

2.1.2數(shù)值型數(shù)值型數(shù)據(jù)是表示數(shù)量、可以進行數(shù)值運算的數(shù)據(jù)類型。數(shù)值型數(shù)據(jù)由數(shù)字、小數(shù)點、正負號和表示乘冪的字母E組成,數(shù)值精度達16位。在VisualFoxPro系統(tǒng)中,按存儲、表示形式與取值范圍不同,數(shù)值型數(shù)據(jù)又分為四種不同類型。

1.數(shù)值型數(shù)值型(Numeric)數(shù)據(jù)由數(shù)字、小數(shù)點、正負號和字母E組成,用字母N表示。數(shù)值型數(shù)據(jù)的取值范圍是:

-0.9999999999E+19~0.9999999999E+20,包括正負號、小數(shù)點和字母E在內,其長度(數(shù)據(jù)位數(shù))最大20位。通常用于表示實數(shù)。如23,-103.45,1.3E-5(即1.3×10-5)等;52.浮點型浮點型(Float)數(shù)據(jù)是數(shù)值型數(shù)據(jù)的一種,用字母F表示。它與數(shù)值型數(shù)據(jù)完全等價,只是在存儲形式上采用浮點格式,主要是為了得到較高的計算精度。3.雙精度型雙精度型(Double)數(shù)據(jù)是具有更高精度的一種數(shù)值型數(shù)據(jù),用字母B表示。它采用固定長度浮點格式存儲,占用8個字節(jié),其取值范圍是:+/-4.94065645841247E-324~+/-8.9884656743115E307。4.整型整型(Integer)數(shù)據(jù)是不包含小數(shù)部分的數(shù)值型數(shù)據(jù),用字母I表示。整型數(shù)據(jù)只用來表示整數(shù),以二進制形式存儲,占用4個字節(jié)。其取值范圍是:-21474836~21474836。6

2.1.3日期型日期型(Date)數(shù)據(jù)是表示日期的數(shù)據(jù),用字母D表示。日期的默認格式是{mm/dd/yyyy},其中mm表示月份,dd表示日期,yyyy表示年度,固定長度8位。如{09/16/2002}表示2002年9月16日這一日期數(shù)據(jù)。

2.1.4日期時間型日期時間型(DateTimes)數(shù)據(jù)是表示日期和時間的數(shù)據(jù),用字母T表示。日期時間的默認格式是{mm/dd/yyyyhh:mm:ss},其中mm、dd、yyyy的意義與日期型相同,而hh表示小時,mm表示分鐘,ss表示秒數(shù)。日期時間型數(shù)據(jù)也是采用固定長度8位,取值范圍是:日期為01/01/0001~12/31/9999,時間為00:00:00~23:59:59。如{10/01/200210:30:30}表示2002年10月1日10時30分30秒這一日期時間數(shù)據(jù)。

7

2.1.5邏輯型邏輯型(Logic)數(shù)據(jù)是描述客觀事物真假的數(shù)據(jù)類型,表示邏輯判斷的結果,用字母L表示。邏輯型數(shù)據(jù)只有真(.t.或.y.)和假(.f.或.n.)兩種,固定長度1位。為區(qū)別其他數(shù)據(jù)類型,一般需在表示邏輯值的字母t、y、f、n的前后加圓點符“.”。

2.1.6備注型備注型(Memo)數(shù)據(jù)是表示、存放較多字符的數(shù)據(jù)類型??梢园阉闯墒亲址蛿?shù)據(jù)的特殊形式,用字母M表示。備注型數(shù)據(jù)沒有數(shù)據(jù)長度限制,僅受限于磁盤空間。它只用于表中字段類型的定義,字段長度固定為10位,實際數(shù)據(jù)存放在與表文件同名的備注文件(.FPT)中,長度根據(jù)數(shù)據(jù)的內容而定。82.1.7通用型通用型(General)數(shù)據(jù)是存儲OLE(對象鏈接嵌入)對象的數(shù)據(jù)類型,用字母G表示。通用型數(shù)據(jù)中的OLE對象可以是電子表格、文檔、圖形圖片等。它只用于表中字段類型的定義。通用型數(shù)據(jù)字段長度固定為4位,實際數(shù)據(jù)長度僅受限于磁盤空間。OLE對象的實際內容、類型和數(shù)據(jù)量則取決于鏈接或嵌入OLE對象的操作方式。如果采用鏈接OLE對象的方式,則表中只包含對OLE對象的引用說明,以及對創(chuàng)建該OLE對象的應用程序的引用說明;如果采用嵌入OLE對象方式,則表中除包含對創(chuàng)建該OLE對象的應用程序的引用說明,還包含OLE對象中的實際數(shù)據(jù)。9

2.1.8貨幣型

貨幣型(Currency)數(shù)據(jù)是為存儲美元金額而使用的一種稱為貨幣(Currency)的數(shù)據(jù)類型,其取值范圍是:-922337203685477.5808~922337203685477.5807,默認保留4位小數(shù),占據(jù)8字節(jié)存儲空間。貨幣型數(shù)據(jù)用字母Y表示。

2.1.9二進制字符型和二進制備注型這兩類數(shù)據(jù)是以二進制格式存儲的數(shù)據(jù)類型,只能用在表中字段數(shù)據(jù)的定義。所存儲的數(shù)據(jù)不受代碼頁改變的影響。2.1.10數(shù)據(jù)類型的應用范圍以上數(shù)據(jù)類型均可應用于表中字段數(shù)據(jù)類型的定義,但其中雙精度型、浮點型、通用型、整型、備注型、二進制字符型和二進制備注型只能應用于字段,其余則可以用于變量、數(shù)組和字段。102.2VisualFoxPro的常量與變量

在VisualFoxPro系統(tǒng)中,數(shù)據(jù)可用常量、變量、數(shù)組表示,數(shù)據(jù)還可以用字段、記錄和對象中,由它們存儲、容納各種類型的數(shù)據(jù)。因此,常把這些供數(shù)據(jù)存儲的常量、變量、數(shù)組、字段、記錄和對象等稱為數(shù)據(jù)存儲容器。用戶正是利用不同的數(shù)據(jù)存儲容器,在VisualFoxPro系統(tǒng)中表示、存儲、操作、處理各種類型的數(shù)據(jù),實現(xiàn)數(shù)據(jù)處理的應用。

112.2.1常量常量是在命令或程序中可直接引用、具有具體值的命名數(shù)據(jù)項,其特征是在整個操作過程中它的值和表現(xiàn)形式保持不變。VisualFoxPro按常量取值的數(shù)據(jù)類型,將常量分為6種類型數(shù)值型常量、浮點型常量、字符型常量、邏輯型常量、日期型常量、日期時間型常量。12

1.數(shù)值型常量由數(shù)字、小數(shù)點和正負號組成,表示整數(shù)或實數(shù)值。如;100,-21,15.31,-21092.5041等分別是數(shù)值型常量中的整數(shù)和實數(shù)。

2.浮點型常量以浮點格式表示的數(shù)值常量。通常用來表示那些絕對值很大或很小、而有效位數(shù)不太長的一些數(shù)值,對應于日常應用中的科學記數(shù)法。如中國的人口數(shù)接近13億,以實數(shù)形式表示是1,300,000,000,以科學記數(shù)法的乘冪形式表示是1.3×109。顯然用科學記數(shù)法形式表示比較簡短、方便、適用,對應在VisualFoxPro中采用浮點型常量表示為1.3E+9,其中,1.3稱為尾數(shù),表示有效數(shù)字,9稱為階碼,表示冪指數(shù)。階碼只能是整數(shù),尾數(shù)可以是整數(shù),也可以是小數(shù);尾數(shù)與階碼均可正可負。13

3.字符型常量由任意ASCII字符、漢字和漢字字符組成的字符型數(shù)據(jù),字符型常量又稱為字符串。為與其他類型常量、變量和標識符相區(qū)別,VisualFoxPro要求將字符串中所有字符,用一對雙引號“"”或單引號“'”或方括號“[]”作為定界符對括起來。如“Iamastudent..”,‘中華人民共和國’,[VisualFoxPro6.0系統(tǒng)]都是字符串。

4.邏輯型常量邏輯型常量就是表示邏輯判斷結果“真”或“假”的邏輯值。邏輯常量只有真和假兩種值,分別用(.t.或.y.)和(.f.或.n.)表示真和假。一般應在表示邏輯常量的字母左右加注圓點符“.”以示區(qū)別。14

5.日期型常量日期型常量是表示日期值的數(shù)據(jù),其默認格式是{mm/dd/[yy]yy}。如{10/01/02}和{10/01/2002}均表示2002年10月1日這一日期常量值。6.日期時間型常量VisualFoxPro系統(tǒng)中增加了一種表示日期和時間值的日期時間型常量,其默認格式是:

{mm/dd/[yy]yy[,]hh:mm:ss[a|p]}其中a和p分別表示AM(上午)和PM(下午)。日期值和日期時間值的輸入格式與輸出格式并不完全相同,特別是輸出格式受系統(tǒng)環(huán)境設置的影響,用戶可根據(jù)應用需要進行相應調整、設置。

15(1)日期格式中的世紀值通常日期格式中用2位數(shù)表示年份,但涉及到世紀問題就不便區(qū)分。VisualFoxPro提供設置命令對此進行相應設置。命令格式:SETCENTURYON|OFF|TO[nCentury]命令功能:ON:日期數(shù)據(jù)顯示10位,其中年份4位,即日期值輸出時顯示年份值;OFF:(默認值)。日期數(shù)據(jù)顯示8位,年份2位,即日期值輸出時不顯示年份值;

TO[nCentury]:指定日期數(shù)據(jù)所對應的世紀值。nCentury是一個1~99的整數(shù),代表世紀數(shù)。

16(2)設置日期顯示格式用戶可以調整、設置日期值和時間值的顯示輸出格式。既可以用命令方式設置,也可以用菜單方式設置。命令格式:SETDATE[TO]AMERICAN|ANSI|BRITISH|FRENCH|GERMAN|ITLIAN|JAPAN|USA|MDY|DMY|YMD|SHORT|LONG命令功能:設置日期型和日期時間型數(shù)據(jù)的顯示輸出格式。系統(tǒng)默認為AMERICAN美國格式。如果日期格式設置為SHORT或LONG格式,VisualFoxPro系統(tǒng)將按Windows系統(tǒng)設置的短日期格式或長日期格式顯示輸出日期數(shù)據(jù),而且SETCENTURY命令的設置被忽略。

17各種日期格式設置所對應的日期顯示輸出格式,見表2-1所示。表2-1系統(tǒng)日期格式

AMERICANmm/dd/yyUSAmm-dd-yyANSIyy.mm.ddMDYmm/dd/yyBRITISH/FRENCH

dd//mm/yyDMYdd//mm/yyGERMANdd.mm.yyYMDyy/mm/ddITALIANdd-mm-yySHORTWindows短日期格式JAPANyy/mm/ddLONGWindows長日期格式18(3)設置日期2000年兼容性通常日期型和日期時間型數(shù)據(jù)的結果,與SETDATE命令和SETCENTURY命令設置狀態(tài)及當前系統(tǒng)時間有關。由于系統(tǒng)時間與相應設置不同,同一數(shù)據(jù)的結果可能有不同的解釋。如日期值{10/11/12}可以解釋為1912年10月11日、2012年10月11日、1912年11月10日、1910年11月12日或者2010年11月12日等。這顯然會導致系統(tǒng)混亂,而且還可能造成2000年兼容性錯誤,影響系統(tǒng)正常、有效的操作運行。19VisualFoxPro系統(tǒng)增加了一種所謂嚴格的日期格式。不論哪種設置,按嚴格日期格式表示的日期型和日期時間型數(shù)據(jù),都具有相同的值和表示形式。嚴格的日期格式是:

{^yyyy-mm-dd[,][hh[:mm[:ss]][a|p]]}

^符號表明該格式是嚴格的日期格式,并按照YMD的格式解釋日期型和日期時間型數(shù)據(jù),它是嚴格日期格式的標志,不可缺少。有效的日期型和日期時間型數(shù)據(jù)分隔符為:連字符“-”、正斜杠“/”、句點“.”和空格。如{^2002-10-01}、{^2002-10-0110:30:30a},分別以嚴格的日期格式表示2002年10月1日及該日上午10時30分30秒這兩個日期數(shù)據(jù)。20VisualFoxPro系統(tǒng)默認采用嚴格的日期格式,并以此檢測所有日期型和日期時間型數(shù)據(jù)的格式是否規(guī)范、合法。為與早期版本兼容,用戶通過命令或菜單設置改變這一格式。命令設置的命令格式:SETSTRICTDATETO[0|1|2]命令功能:0:關閉嚴格的日期格式檢測,即設置日期格式按傳統(tǒng)的嚴格的格式;1:設置嚴格的日期格式檢測(默認值),要求所有日期型和日期時間型數(shù)據(jù)均按嚴格的格式;2:設置與1相同,但如果程序代碼中出現(xiàn)CTOD()和CTOT()函數(shù)時,會出現(xiàn)編譯錯誤。這個設置最適合調試時使用,用來檢測2000年兼容性錯誤;省略:恢復系統(tǒng)默認值,等價于1的設置。21

2.2.2變量變量是在操作過程中可以改變其取值或數(shù)據(jù)類型的數(shù)據(jù)項。在VisualFoxPro系統(tǒng)中變量分為字段變量、內存變量、數(shù)組變量和系統(tǒng)變量4類。此外,作為面向對象的程序語言,VisualFoxPro在進行面向對象的程序設計中引入了對象的概念,對象實質上也是一類變量。確定一個變量,需要確定其三個要素:變量名、數(shù)據(jù)類型和變量值。22

1.命名約定在VisualFoxPro系統(tǒng)中,將表示、存儲數(shù)據(jù)的常量、變量、數(shù)組、字段、記錄、對象、表、數(shù)據(jù)庫等,都稱之為數(shù)據(jù)容器。所有數(shù)據(jù)容器均需命名以相互區(qū)別,為規(guī)范各類對象的命名,VisualFoxPro系統(tǒng)推薦了若干“命名約定”供用戶參考,以提高操作命令與程序的可讀性和規(guī)范性?!袷褂米帜?,下劃線和數(shù)字命名。一般建議不采用漢字命名;●命名以字母或下劃線開頭;除自由表中字段名、索引的TAG標識名最多只能10個字符外,其他的命名可使用1~128個字符;●避免使用VisualFoxPro的保留字;●文件名的命名應遵循操作系統(tǒng)的約定。

23

2.字段變量表由若干記錄構成,每個記錄都包含若干個數(shù)量相同的字段,同一字段在不同記錄中分別對應不同的字段值,因此,字段也是變量。與其他變量不同的是,字段變量是定義在表中的變量,隨表的存取而存取,因而是永久性變量。字段名就是變量名;變量的數(shù)據(jù)類型為VisualFoxPro中任意數(shù)據(jù)類型,字段值就是變量值。24

3.內存變量內存變量是在內存中定義的、一種單個數(shù)據(jù)元素的臨時性變量。(1)內存變量的數(shù)據(jù)類型內存變量的數(shù)據(jù)類型包括:數(shù)值型、字符型、邏輯型、日期型和日期時間型;(2)內存變量的建立建立內存變量就是給內存變量賦值。內存變量賦值既可定義一個新的內存變量,也可改變已朋內存變量的值或數(shù)據(jù)類型。命令格式:STORE<表達式>TO<內存變量表>命令功能:計算<表達式>的值并賦值給各個內存變量。命令格式:<內存變量>=<表達式>命令功能:計算<表達式>的值并賦值給指定內存變量。25(3)內存變量的顯示輸出可以用兩個命令在屏幕上顯示輸出內存變量的值。命令格式:?|??<表達式表>[AT<列號>]命令功能:計算表達式表中各表達式的值,并在屏幕上指定位置顯示輸出各式的值。?:先回車換行,再計算并輸出表達式的值;??:在屏幕上當前位置,計算并直接輸出表達式的值;<表達式表>:多個心逗號兩兩分隔的表達式,各表達式的值輸出時,以空格分隔;AT<列號>子句指定表達式值從指定列開始顯示輸出。AT的定位只對它前面的一個表達式有效,多個表達式必須用多個AT子句分別定位輸出,而且可反序定位。26

4.數(shù)組變量數(shù)組變量是結構化的變量,是一組具有相同名稱、以下標相互區(qū)分的有序內存變量。一個數(shù)組通常都包含多個數(shù)據(jù)元素。VisualFoxPro系統(tǒng)中只允許使用一維數(shù)組(相當于數(shù)列)和二維數(shù)組(相當于行列式或矩陣)。27

(1)數(shù)組元素●數(shù)組中各有序變量(數(shù)據(jù)元素)組成數(shù)組的成員,稱為數(shù)組元素。數(shù)組元素實質上是一個內存變量,也稱數(shù)組變量,它們具有相同變量名即數(shù)組名,彼此以下標區(qū)分;●數(shù)組元素的名稱(變量名)用數(shù)組加下標構成。如AA(1),BB(2,3)分別表示一維數(shù)組AA的第1個元素,二維數(shù)組BB中第2行第3列的元素;●下標必須用圓括號對括;一維數(shù)組的元素只有一個下標,二維數(shù)組的元素有兩個以逗號分隔的下標;●下標必須是非負數(shù)值,可以是常量、變量、函數(shù)或表達式,下標值會自動取整。如AA(1.5),AA(nA1),AA(2+10/3)等;●數(shù)組元素的數(shù)據(jù)類型決定于最后賦值的數(shù)據(jù)類型;不同數(shù)組元素的數(shù)據(jù)類型可以不同;●數(shù)組元素與普通內存變量一樣操作,可以賦值和引用。28(2)數(shù)組的定義數(shù)組必須先定義后使用,定義數(shù)組是向系統(tǒng)申請數(shù)組元素在內存中的存儲空間。命令格式:DIMENSION|DECLARE<數(shù)組名1>(<數(shù)值表達式1>[,<數(shù)值表達式2>])[,<數(shù)組名2>(<數(shù)值表達式3>[,<數(shù)值表達式4>])…]命令功能:定義指定的各個數(shù)組。(3)數(shù)組的賦值與引用數(shù)組元素的賦值與引用,與普通內存變量的規(guī)則相同。29

5.系統(tǒng)變量系統(tǒng)變量是VisualFoxPro系統(tǒng)特有的內存變量,它由VisualFoxPro系統(tǒng)定義、維護。系統(tǒng)變量有很多,其變量名均以下劃線“_”開始,因此在定義內存變量和數(shù)組變量名時,不要以下劃線開始,以免與系統(tǒng)變量名沖突。系統(tǒng)變量設置、保存了很多系統(tǒng)的狀態(tài)、特性,了解、熟悉并且充分地運用系統(tǒng)變量,會給數(shù)據(jù)庫系統(tǒng)的操作、管理帶來很多方便,特別是開發(fā)應用程序時更為突出,學習時可對此有所關注。30

6.內存變量與數(shù)組變量的基本操作(1)變量的顯示用?/??命令可以分別顯示單個或一組變量的值。有時用戶還需了解變量其他相關信息,如數(shù)據(jù)類型、作用范圍,或了解系統(tǒng)變量的信息。VisualFoxPro系統(tǒng)提供了相應操作命令。命令格式;DISPLAY|LISTMEMORY[LIKE<通配符>][TOPRINTER[PROMPT]|TOFILE<文本文件名>][NOCONSOLE]命令功能:顯示指定變量的信息。31(2)變量的保存VisualFoxPro提供相應命令,可用文件形式將某些變量保存起來,以便重復使用。命令格式:SAVETO<變量文件名>[ALLLIKE<通配符>|ALLEXCEPT<通配符>]命令功能:將指定變量的信息保存到指定的變量文件(*.MEM)中。ALLLIKE<通配符>:只保存符合通配符條件的所有變量;ALLEXCEPT<通配符>:只保存不符合通配符條件的所有變量。32(3)變量的恢復需要保存在文件中的變量信息時,必須先恢復到內存后方可使用。命令格式:RESTOREFROM<變量文件名>[ADDITIVE]命令功能:將指定變量文件(*.MEM)中變量信息恢復到內存中。ADDITIVE:省略此項,清除內存所有變量后再恢復文件中變量的信息;加選此項,將變量文件中的變量信息追加到內存現(xiàn)有變量信息中。(4)變量的清除VisualFoxPro系統(tǒng)對定義內存變量的數(shù)量是有限制的,應及時清理,盡量減少內存的占用,定義其他變量。命令格式:

RELEASE<變量表>RELEASEALL[LIKE<通配符>|EXCEPT<通配符>]

332.3VisualFoxPro的函數(shù)VisualFoxPro系統(tǒng)中,函數(shù)是一段程序代碼,用來進行一些特定的運算或操作,支持和完善命令的功能,幫助用戶完成各種操作與管理。VisualFoxPro系統(tǒng)有數(shù)百種不同函數(shù),按函數(shù)提供方式,可分為系統(tǒng)(標準)函數(shù)和用戶自定義函函數(shù),按函數(shù)運算、處理對象和結果的數(shù)據(jù)類型,可分為數(shù)值型函數(shù)、字符型函數(shù)、邏輯型函數(shù)、日期時間型函數(shù)、數(shù)據(jù)轉換函數(shù)等,按函數(shù)的功能和特點,可分為數(shù)據(jù)處理函數(shù)、數(shù)據(jù)庫操作函數(shù)、文件管理函數(shù)、鍵盤和鼠標處理函數(shù)、輸出函數(shù)、窗口界面操作函數(shù)、程序設計函數(shù)、數(shù)據(jù)庫環(huán)境函數(shù)、網(wǎng)絡操作函數(shù)、系統(tǒng)信息函數(shù)動態(tài)數(shù)據(jù)操作函數(shù)等。34VisualFoxPro的函數(shù)由函數(shù)名與自變量兩部分組成。標準函數(shù)是VisualFoxPro系統(tǒng)提供的系統(tǒng)函數(shù),其函數(shù)名是VisualFoxPro保留字,自定義函數(shù)是用戶自已定義的函數(shù),函數(shù)名用戶指定;自變量必須用圓括號對括起來,如有多個自變量,各自變量以逗號分隔;有些函數(shù)可省略自變量,或不需自變量,但也必須保留括號;自變量數(shù)據(jù)類型由函數(shù)的定義確定,數(shù)據(jù)形式可以是常量、變量、函數(shù)或表達式等。

函數(shù)是一類數(shù)據(jù)項,除個別(如宏替換)函數(shù)外,函數(shù)都不能像命令一樣單獨使用,只能作為命令的一部分進行操作運算。

35

2.3.1數(shù)值函數(shù)數(shù)值函數(shù)用于數(shù)值運算,其自變量與函數(shù)都是數(shù)值型數(shù)據(jù)。

1.取絕對值函數(shù)ABS()【格式】ABS(<nExp>)【功能】計算nExp的值,并返回該值的絕對值。2.指數(shù)函數(shù)EXP()【格式】EXP(<nExp>)【功能】求以e為底、nExp值為指數(shù)的冪,即返回ex的值。

3.取整函數(shù)INT()【格式】INT(<nExp>)【功能】計算nExp的值,返回該值的整數(shù)部分。36

4.上界函數(shù)CEILING()【格式】CEILING(<nExp>)【功能】計算nExp的值,返回一個大于或等于該值的最小整數(shù)。

5.下界函數(shù)FLOOR()【格式】FLOOR(<nExp>)【功能】計算nExp的值,返回一個小于或等于該值的最大整數(shù)。

6.自然對數(shù)函數(shù)LOG()【格式】LOG(<nExp>)【功能】求nExp的自然對數(shù)。nExp的值必須為正數(shù)。7.常用對數(shù)函數(shù)【格式】LOG10(<nExp>)【功能】求nExp的常用對數(shù)。nExp的值必須為正數(shù)。37

8.平方根函數(shù)SQRT()【格式】SQRT(<nExp>)【功能】求非負nExp的平方根。9.最大值函數(shù)MAX()和最小值函數(shù)MIN()【格式】MAX(<nExp1>,<nExp2>[,<nExp3>...])MIN(<nExp1>,<nExp2>[,<nExp3>...])【功能】返回數(shù)值表達式中的最大值MAX()和最小值MIN()。

10.求余數(shù)函數(shù)MOD()【格式】MOD(<nExp1>,<nExp2>)【功能】返回nExp1除以nExp2的余數(shù)。余數(shù)的小數(shù)位數(shù)與nExp1相同,符號與nExp2相同。38

11.四舍五入函數(shù)ROUND()【格式】ROUND(<nExp1>,<nExp2>)【功能】返回nExp1四舍五入的值,nExp2表示保留的小數(shù)位數(shù)。

12.π函數(shù)PI()【格式】PI()【功能】返回常量π的近似值

13.正弦函數(shù)SIN()【格式】SIN(<nExp>)【功能】返回nExp的正弦值。nExp以弧度為單位,函數(shù)值域為[-1,1]。

14.余弦函數(shù)COS()【格式】COS(<nExp>)【功能】返回nExp的余弦值。nExp以弧度為單位,函數(shù)的值域為[-1,1]。39

15.正切函數(shù)TAN()【格式】TAN(<nExp>)【功能】返回nExp的正切值。nExp以弧度為單位,其值為π/2或-π/2時,系統(tǒng)返回一個絕對值很大的數(shù)。

16.反正弦函數(shù)ASIN()【格式】ASIN(<nExp>)【功能】返回nExp的反正弦值。自變量值必須在[-1,1]內,函數(shù)值為弧度,且值域為[-π/2,π/2]。

17.反余弦函數(shù)ACOS()

【格式】ACOS(<nExp>)【功能】返回nExp的反余弦值。自變量的值必須在[-1,1]內,函數(shù)值為弧度,值域為[-π/2,π/2]。

18.反正切函數(shù)ATAN()【格式】ATAN(<nExp>)【功能】返回nExp的反正切值。函數(shù)值為弧度,值域為(-π/2,π/2)。40

2.3.2字符函數(shù)字符函數(shù)是處理字符型數(shù)據(jù)的函數(shù),其自變量或函數(shù)值中至少有一個是字符型數(shù)據(jù)。函數(shù)中涉及的字符型數(shù)據(jù)項,均以cExp表示。

1.子串位置函數(shù)【格式】AT(<cExp1>,<cExp2>)【功能】返回串cExp1在串cExp2中的起始位置。函數(shù)值為整數(shù)。如果串cExp2不包含串cExp1,函數(shù)返回值為零。412.取左子串函數(shù)LEFT()【格式】LEFT(<cExp>,<nExp>)【功能】返回從cExp串中第一個字符開始,截取nExp個字符的子串。3.取右子串函數(shù)RIGHT()【格式】RIGHT(<cExp>,<nExp>)【功能】返回從cExp串中右邊第一個字符開始,截取nExp個字符的子串。有關說明同LEFT()函數(shù)。4.取子串函數(shù)SUBSTR()【格式】SUBSTR(<cExp>,<nExp1>[,<nExp2>])【功能】返回從串cExp中第nExp1個字符開始,截取nExp2個字符的子串。425.字符串長度函數(shù)LEN()【格式】LEN(<cExp>)【功能】返回cExp串的字符數(shù)(長度)。函數(shù)值為N型。6.刪除字符串前導空格函數(shù)LTRIM()【格式】LTRIM(<cExp>)【功能】刪除cExp串的前導空格字符。7.刪除字符串尾部空格函數(shù)RTRIM()|TRIM()【格式】RTRIM|TRIM(<cExp>)【功能】刪除cExp串尾部空格字符。

8.空格函數(shù)SPACE()【格式】SPACE(<nExp>)【功能】返回一個包含nExp個空格的字符串。43

9.字符串替換函數(shù)STUFF()【格式】STUFF(<cExp1>,<nExp1>,<nExp2>,<cExp2>)【功能】從nExp1指定位置開始,用cExp2串替換cExp1串中nExp2個字符。

10.字符復制函數(shù)REPLICATE()【格式】REPLICATE(<cExp>,<nExp>)【功能】返回將cExp串重復nExp次的字符串。

11.定義輸出格式函數(shù)TRANSFORM()【格式】TRANSFORM(<eExp>,<cExp>)【功能】按格式描述式cExp指定的格式,輸出任意表達式eExp的值。

44

12.大小寫轉換函數(shù)LOWER()和UPPER()【格式】LOWER(<cExp>)UPPER(<cExp>)【功能】LOWER()將cExp串中字母全部變成小寫字母,UPPER()將cExp串中字母全部變成大寫字母,其它字符不變。

13.宏替換函數(shù)&【格式】&<cVar>[.<cExp>]【功能】替換出字符型變量cVar中字符。45

2.3.3日期時間函數(shù)日期時間函數(shù)是處理日期型或日期時間型數(shù)據(jù)的函數(shù)。其自變量為日期型表達式dExp或日期時間型表達式tExp。

1.系統(tǒng)日期函數(shù)DATE()【格式】DATE()【功能】返回當前系統(tǒng)日期,此日期由Windows系統(tǒng)設置。函數(shù)值為D型。

2.系統(tǒng)時間函數(shù)TIME()【格式】TIME([<nExp>])【功能】返回當前系統(tǒng)時間,時間顯示格式為hh:mm:ss。若選擇了nExp,則不管為何值,返回的系統(tǒng)時間還包括秒的小數(shù)部分,精確至小數(shù)點后兩位。函數(shù)值為C型。46

3.日期函數(shù)DAY()【格式】DAY(<dExp>)【功能】返回dExp式中的天數(shù)。函數(shù)值為N型

4.星期函數(shù)DOW()、CDOW()【格式】DOW(<dExp>)CDOW(<dExp>)【功能】DOW()函數(shù)返回dExp式中星期的數(shù)值,用1~7表示星期日~星期六。函數(shù)值為N型。CDOW()函數(shù)返回dExp式中星期的英文名稱。函數(shù)值為C型。5.月份函數(shù)MONTH()、CMONTH()【格式】MONTH(<dExp>)CMONTH(<dExp>)【功能】MONTH()函數(shù)返回dExp式中月份數(shù)。函數(shù)值為N型。CMONTH()函數(shù)則返回月份的英文名。函數(shù)值為C型。

6.年份函數(shù)YEAR()【格式】YEAR(<dExp>)【功能】函數(shù)返回dExp式中年份值。函數(shù)值為N型。47

2.3.4轉換函數(shù)在數(shù)據(jù)庫應用的過程中,經(jīng)常要將不同數(shù)據(jù)類型的數(shù)據(jù)進行相應轉換,滿足實際應用的需要。VisualFoxPro系統(tǒng)提供了若干個轉換函數(shù),較好地解決了數(shù)據(jù)類型轉換的問題。

1.ASCII碼函數(shù)ASC()【格式】ASC(<cExp>)【功能】返回cExp串首字符的ASCII碼值。函數(shù)值為N型。

2.ASCII字符函數(shù)CHR()【格式】CHR(<nExp>)【功能】返回以nExp值為ASCII碼的ASCII字符。函數(shù)值為C型。48

3.字符日期型轉換函數(shù)CTOD()【格式】CTOD(<cExp>)【功能】把“××/××/××”格式的cExp串轉換成對應日期值。函數(shù)值為D型。

4.日期字符型轉換函數(shù)DTOC()【格式】DTOC(<dExp>[,1])【功能】把日期dExp轉換成相應的字符串。函數(shù)值為C型。

5.數(shù)值字符型轉換函數(shù)STR()【格式】STR(<nExp1>[,<nExp2>][,<nExp3>])【功能】將nExp1的數(shù)值轉換成字符串形式。函數(shù)值為C型。

6.字符數(shù)值型轉換函數(shù)VAL()【格式】VAL(<cExp>)【功能】將cExp串中數(shù)字轉換成對應數(shù)值,轉換結果取兩位小數(shù)。函數(shù)值為N型。49

2.3.5測試函數(shù)在數(shù)據(jù)庫應用的操作過程中,用戶需要了解數(shù)據(jù)對象的類型、狀態(tài)等屬性,VisualFoxPro提供了相關的測試函數(shù),使用戶能夠準確地獲取操作對象的相關屬性。

1.數(shù)據(jù)類型函數(shù)TYPE()【格式】TYPE(<cExp>)【功能】返回cExp串表示的數(shù)據(jù)對象的數(shù)據(jù)類型,返回值是一個表示數(shù)據(jù)類型的大寫字母。C:字符型,D:日期型,N:數(shù)值型,L:邏輯型,M:備注型,G:通用型,U:未定義。

2.文件查找函數(shù)FILE()【格式】FILE(<cExp>)【功能】根據(jù)cExp串中指定路徑查找文件,如未指定路徑,則在默認目錄中查找。文件存在,返回邏輯真(.T.)值,否則為邏輯假(.F.)值。50

3.條件測試函數(shù)IIF()【格式】IIF(<lExp>,<eExp1>,<eExp2>)【功能】邏輯表達式lExp值為真(.T.),返回表達式eExp1的值,否則返回表達式eExp2的值。eExp1和eExp2可以是任意數(shù)據(jù)類型的表達式。

4.表結束標志測試函數(shù)EOF()【格式】EOF([<工作區(qū)號>|<別名>])【功能】測試記錄指針是否移到表結束處。如果記錄指針指向表中尾記錄之后,函數(shù)返回真(.T.),否則為假(.F.)。

5.表起始標識測試函數(shù)BOF()【格式】BOF([<工作區(qū)號>|<別名>])【功能】測試記錄指針是否移到表起始處。如果記錄指針指向表中首記錄前面,函數(shù)返回真(.T.),否則為假(.F.)。工作區(qū)說明見EOF()函數(shù)。51

6.當前記錄號函數(shù)RECNO()【格式】RECNO([<工作區(qū)號>|<別名>])【功能】返回指定工作區(qū)中表的當前記錄的記錄號。對于空表返回值為1。

7.當前記錄邏輯刪除標志測試函數(shù)DELETED()【格式】DELETED([<工作區(qū)號>|<別名>])【功能】測試指定工作區(qū)中表的當前記錄是否被邏輯刪除。如果當前記有邏輯刪除標記,函數(shù)返回真(.T.),否則為假(.F.)。

8.記錄數(shù)函數(shù)RECCOUNT()【格式】RECCOUNT([<工作區(qū)號>|<別名>])【功能】返回指定工作區(qū)中表的記錄個數(shù)。如果工作區(qū)中沒有打開表則返回0。

9.記錄大小測試函數(shù)RECSIZE()【格式】RECSIZE([<工作區(qū)號>|<別名>])【功能】返回指定工作區(qū)中表的記錄總長度。如果工作區(qū)中沒有打開表則返回0。52

10.屏幕列坐標和行坐標函數(shù)COL()、ROW()【格式】COL()ROW()【功能】COL()返回光標的列坐標值,ROW()返回光標的行坐標值。

11.打印機列坐標和行坐標函數(shù)PCOL(),PROW()【格式】PCOL()PROW()【功能】返回打印機打印頭所處位置的列坐標和行坐標。532.4VisualFoxPro的表達式在VisualFoxPro系統(tǒng)中,表達式是由常量、變量、函數(shù)及其他數(shù)據(jù)容器單獨或與運算符組成的有意義的運算式子。運算符是對數(shù)據(jù)對象進行加工處理的符號,根據(jù)其處理數(shù)據(jù)對象的數(shù)據(jù)類型,運算符分為算術(數(shù)值)運算符、字符運算符、日期時間運算符、邏輯運算符和關系運算符五類,相應的,表達式也分為算術表達式、字符表達式、日期時間表達式、邏輯表達式和關系表達式五類。常量、變量和函數(shù)可以作為表達式的特例。今后涉及到表達式的描述,除特別指明,均可包含這些特殊的形式。54在一個表達式中可能包含多個由不同運算符連接起來的、具有不同數(shù)據(jù)類型的數(shù)據(jù)對象,但任何運算符兩側的數(shù)據(jù)對象必須具有相同數(shù)據(jù)類型,否則運算將會出錯;由于表達式中有多種運算,不同的運算順序可能得出不同結果,甚至出現(xiàn)運算錯誤,因此當表達式中包含多種運算時,必須按一定順序施行相應運算,才能保證運算的合理性和結果的正確性、惟一性。用戶也可以通過給表達式加圓括號的方式,改變其默認運算順序。在VisualFoxPro系統(tǒng)中,各類運算的優(yōu)先順序如下:

圓括號>算術和日期運算>字符串運算>關系運算>邏輯運算同一類運算符也有一定的運算優(yōu)先順序,這在各類表達式中分別介紹。如果多個同一級別的運算,則按在表達式中出現(xiàn)的先后順序進行運算。552.4.1算術表達式算術表達式又稱數(shù)值表達式,其運算對象和運算結果均為數(shù)值型數(shù)據(jù)。數(shù)值運算符的功能及運算優(yōu)先順序,如表2-2所示。表中運算符按運算優(yōu)先級別從高到低順序排列。表2-2算術運算符運算符功

能表

例運算結果優(yōu)先級別()圓括號(2-5)*(3+2)-15最高||||最低-取相反數(shù)-(3-8)5**、^乘冪2**5、3^232、9*、/乘、除2*10、25/520、5%取余數(shù)20%50+、-加、減36+19、29-4755、-1856

2.4.2字符表達式字符表達式是由字符運算符將字符型數(shù)據(jù)對象連接起來進行運算的式子。字符運算的對象是字符型數(shù)據(jù)對象,運算結果是字符常量或邏輯常量。表2-3為字符運算符的功能。"+"與"-"都是字符連接運算符,都將兩字符串順序連接,但“+”是直接連接,“-”則將串1尾部所有空格移到串2尾部后再連接;“$”運算實質上是比較兩個串的包含關系,因此有些書籍中將其歸于關系運算,其作用是比較、判斷串1是否為串2的子串,如果串1是串2的子串,運算結果為“真”,否則為“假”。所謂子串,如果串1中所有字符均包含在串2中、且與串1中排列方式與順序完全一致,則稱串1為串2的子串。57表2-3字符運算符兩個連接運算的優(yōu)先級別相同,但高于$的比較運算。運算符功能表達式舉例運算結果+串1+串2:兩串順序相連接’12‘+’56’’1256’-串1-串2:串1尾空格移到串2尾后再順序相連接’12‘-‘56’‘1256‘$串1$串2:串1是否為串2子串‘1234’$‘a(chǎn)12345’‘1234’$‘34512’.T..F.582.4.3日期表達式由日期運算符將一個日期型或日期時間型數(shù)據(jù)與一個數(shù)值型數(shù)據(jù)連接而成的運算式稱為日期表達式。日期運算符分為“+”和“-”兩種,其作用分別是在日期數(shù)據(jù)上增加或減少一個天數(shù),在日期時間數(shù)據(jù)上增加或減少一個秒數(shù)。兩個運算的優(yōu)先級別相同。592.4.4關系表達式由關系運算符連接兩個同類數(shù)據(jù)對象進行關系比較的運算式稱為關系表達式。關系表達式的值為邏輯值,關系表達式成立則其值為“真”,否則為“假”。表2-4關系運算符運算符功

能表

例結果<小于15<4*6.T

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論