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

下載本文檔

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

文檔簡介

第2章

VisualFoxPro中的數據與運算

目錄上一頁下一頁退出1

本章要點2.1VisualFoxPro的數據類型

2.2VisualFoxPro的常量與變量

2.3VisualFoxPro的函數

2.4VisualFoxPro的表達式

思考題22.1VisualFoxPro中的數據類型

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

3

2.1.1

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

4

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

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

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

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

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

7

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

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

2.1.8貨幣型

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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年兼容性通常日期型和日期時間型數據的結果,與SETDATE命令和SETCENTURY命令設置狀態及當前系統時間有關。由于系統時間與相應設置不同,同一數據的結果可能有不同的解釋。如日期值{10/11/12}可以解釋為1912年10月11日、2012年10月11日、1912年11月10日、1910年11月12日或者2010年11月12日等。這顯然會導致系統混亂,而且還可能造成2000年兼容性錯誤,影響系統正常、有效的操作運行。19VisualFoxPro系統增加了一種所謂嚴格的日期格式。不論哪種設置,按嚴格日期格式表示的日期型和日期時間型數據,都具有相同的值和表示形式。嚴格的日期格式是:

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

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

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

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

23

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

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

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

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

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

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

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

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

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

35

2.3.1數值函數數值函數用于數值運算,其自變量與函數都是數值型數據。

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

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

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

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

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

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

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

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

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

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

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

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

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

17.反余弦函數ACOS()

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

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

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

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

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

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

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

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

44

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

能表

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

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

能表

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

溫馨提示

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

評論

0/150

提交評論