其它考試第2章-Visual-FoxPro數(shù)據(jù)基礎_第1頁
其它考試第2章-Visual-FoxPro數(shù)據(jù)基礎_第2頁
其它考試第2章-Visual-FoxPro數(shù)據(jù)基礎_第3頁
其它考試第2章-Visual-FoxPro數(shù)據(jù)基礎_第4頁
其它考試第2章-Visual-FoxPro數(shù)據(jù)基礎_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

本章內容簡介

VisualFoxPro作為一種基于關系模型的程序設計語言,具有完整的語法規(guī)則。本章主要介紹VisualFoxPro基本的語言元素,包括變量(內存變量和字段變量)、常量、函數(shù)及表達式和表達式的運算規(guī)則等。

學習目標

利用VisualFoxPro進行數(shù)據(jù)管理,除使用數(shù)據(jù)庫外,還必須學會編寫程序,要編寫程序就要會寫語句,要會寫語句就要掌握組成語句的基本元素。

學習切入點及方法

本章是編寫程序和寫表達式的基礎,涉及的內容多而瑣碎。學習時,應充分利用交互工具——“命令”窗口,通過看書與操作結合的方式學習,不必死記硬背。很多函數(shù)的功能、命令及表達式,可以通過在命令窗口操作來理解和加深記憶,從而靈活運用。

計劃用學時

課堂講授6~8學時,上機6~8學時。

1/11/20251第二章VisualFoxPro數(shù)據(jù)基礎2.1常量、變量及其數(shù)據(jù)類型2.2

常用函數(shù)2.3

表達式與運算1/11/20252第二章VisualFoxPro數(shù)據(jù)基礎

常量:是指程序運行過程中其值保持不變的量(一個具體的、不變的值。)

1.數(shù)值型常量(Numeric)

數(shù)值型數(shù)據(jù):由數(shù)字、小數(shù)點和正負號等組成,包括整數(shù)、小數(shù)、負數(shù)、浮點數(shù)、科學計數(shù)法表示的數(shù)等。

數(shù)值型數(shù)據(jù)用來進行數(shù)學運算。

如:140、0.33、-213、147.179、2E-8等。2.1常量、變量及其數(shù)據(jù)類型2.1.1常量1/11/20253第二章VisualFoxPro數(shù)據(jù)基礎

2.字符型常量(Character)

字符型數(shù)據(jù)也稱為字符串。通常用來表示文本類型的信息,它由中英文字符、漢字、數(shù)字、空格和各種專用符號組成。

字符型常量:是指用雙引號“”、單引號‘’或方括號[]等定界符括起來的字符串。定界符必須配對使用。如:“kunming”、‘昆明市’、[1234]。

如果一種定界符已作為字符型常量的組成部分,應當選擇另一種定界符來標識字符串。例如字符串:

[昆明又稱為“春城”]2.1常量、變量及其數(shù)據(jù)類型2.1.1常量1/11/20254第二章VisualFoxPro數(shù)據(jù)基礎

3.邏輯型數(shù)據(jù)(Logic)

邏輯型數(shù)據(jù):表示邏輯判斷結果的值。

邏輯型數(shù)據(jù)只有兩個值:True(真)False(假)

邏輯真可以表示為.T.、.t.、.Y.或.y.

邏輯假可以表示為.F.、.f.、.N.或.n.

(注意:前后兩個點號是必需的。)

在“命令”窗口輸入?命令及表達式:?15>34,477>230&&在主窗口中顯示運算結果運算結果為:.F..T.

2.1常量、變量及其數(shù)據(jù)類型2.1.1常量1/11/20255第二章VisualFoxPro數(shù)據(jù)基礎4.日期型(Date)

日期型數(shù)據(jù):表示日期的特殊數(shù)據(jù)。日期型常量必須用花括號括起來。

(1)嚴格日期格式

格式為:{^yyyy-mm-dd}

如:{^2009-05-01}或{^2009/05/01},表示2009年5月1日。這種格式的日期表明該日期是嚴格的,按照YMD的格式來解釋日期和日期時間,不受系統(tǒng)設置的影響,可以在任何情況下使用。

日期型數(shù)據(jù)表示范圍是:{^0001-01-01}至{^9999-12-31}

(2)傳統(tǒng)的日期格式系統(tǒng)默認的日期型數(shù)據(jù)為美國日期格式:

“mm/dd/yy”(月/日/年)

月和日各為2位,而年可以是2位,也可以是4位,系統(tǒng)默認為2位。具體年代使用2位還是4位,由系統(tǒng)設置決定。2.1常量、變量及其數(shù)據(jù)類型2.1.1常量1/11/20256第二章VisualFoxPro數(shù)據(jù)基礎(3)影響日期格式的設置命令和選項

①在日期格式中,系統(tǒng)默認的分隔符為:斜杠(/)。SETMARKTO[日期分隔符]:可將分隔符設置成連字符(-)或點號(.)等。沒有參數(shù)的SETMARKTO命令還原系統(tǒng)默認的分隔符。

②SETDATETO[日期格式]:可將日期格式設置成其他格式。

如:SETDATETO

mdy命令將日期格式設置為月/日/年(mm/dd/yy)。

③SETSTRICTDATETO[0|1|2]:設置是否對日期格式進行檢查。

在不進行嚴格日期檢查時,日期型可以用傳統(tǒng)日期格式“年

/月/日”的形式來表示,定界符可以是花括號,年月日之間的分隔符可以是斜杠(/)、連字符(-)和空格。

④SETCENTURYON/OFF:設置年份使用4位或2位表示,默認為2位。2.1常量、變量及其數(shù)據(jù)類型2.1.1常量1/11/20257第二章VisualFoxPro數(shù)據(jù)基礎日期格式的設置也可以選擇“工具”菜單中的“選項”命令來完成。在“區(qū)域”選項卡中設置日期格式1/11/20258第二章VisualFoxPro數(shù)據(jù)基礎5.日期時間型(DateTime)

日期型常量包括日期和時間兩部分:{<日期>,<時間>}

日期部分與日期型常量相似,也有嚴格和傳統(tǒng)兩種格式。

時間部分的格式為:[hh[:mm[:ss]][a|p]]。其中hh、mm和ss分別代表時、分和秒,默認值分別為12、0和0。AM

(或A)和PM(或P)分別代表上午和下午,默認值為AM。如果指定的時間大于12,則自然為下午時間。6.貨幣型(Currency)

貨幣型常量:用于表示貨幣值,是帶貨幣單位的數(shù)據(jù)。

其書寫格式與數(shù)值型常量類似,但要在前面加上貨幣符號$。如:

$123.45。在存儲和計算時,采用4位小數(shù),如果一個貨幣常量多于4位小數(shù),那么系統(tǒng)將在小數(shù)點后4位進行四舍五入。2.1常量、變量及其數(shù)據(jù)類型2.1.1常量1/11/20259第二章VisualFoxPro數(shù)據(jù)基礎

變量:在程序運行過程中,其值可以發(fā)生變化的量稱為變量。

VisualFoxPro中有兩類變量:

每個變量都有一個名字,可以通過變量名訪問變量。給變量命名時,變量名必須遵守以下原則:

1、必須以字母或漢字開頭。

2、變量名中只能含有字母(漢字)、數(shù)字和下劃線。

3、變量名不能是保留字,如對象名、系統(tǒng)預先定義的函數(shù)名等。構成數(shù)據(jù)庫表文件的字段變量內存變量2.1常量、變量及其數(shù)據(jù)類型2.1.2字段變量和內存變量1/11/202510第二章VisualFoxPro數(shù)據(jù)基礎

2.1.2.1字段變量字段變量:表中定義好的任一數(shù)據(jù)列,通過字段名作為變量名來標識字段變量。學號姓名性別出生日期專業(yè)入學成績三好生20090102001劉鵬男1991-10-7傳媒學610.F.20090102002楊瑩女1991-11-20傳媒學598.T.20090201001何小方男1990-3-13管理學567.F.20090203001周紅女1991-2-11管理學655.F.20090201003李艷女1991-1-21管理學587.T.20090102369張麗女1991-12-11傳媒學639.F.20090301087馬波男1991-12-29歷史590.F.如果表中有20條記錄,每一個字段名就有20個可取值。在數(shù)據(jù)庫表中有一個記錄指針,它指向的記錄定義為當前記錄,字段變量的現(xiàn)值就是當前記錄中對應字段的值。記錄指針可以移動,因此字段的取值隨著指針的移動而改變,所以字段(或者字段名)是變量。2.1常量、變量及其數(shù)據(jù)類型2.1.2字段變量和內存變量1/11/202511第二章VisualFoxPro數(shù)據(jù)基礎數(shù)據(jù)類型說明字符型字母、數(shù)字型文本貨幣型貨幣單位數(shù)值型整數(shù)或小數(shù)浮動型整數(shù)或小數(shù)日期型年、月、日日期時間型年、月、日、時、分、秒雙精度型雙精度數(shù)值整型正、負整數(shù)和零邏輯型真或假備注型不定長的字母、數(shù)字文本通用型OLE(對象鏈接與嵌入)字符型(二進制)字母數(shù)字型文本備注型(二進制)不定長的字母數(shù)字型文本字段變量的數(shù)據(jù)類型及其說明1/11/202512第二章VisualFoxPro數(shù)據(jù)基礎

2.1.2.2內存變量內存變量:內存中的一塊存儲區(qū)域,變量值就是存放在這個存儲區(qū)域里的數(shù)據(jù),變量的類型取決于變量值的類型。對內存變量賦值可以改變其內容和類型。

例如,當把一個數(shù)值常量賦值給一個變量時,這個常量就被存入到變量中,它將取代變量的原值而成為該變量新的取值。

特點:是獨立于數(shù)據(jù)庫文件而存在的變量,用來存儲數(shù)據(jù)處理過程中所需要的常數(shù)、中間結果和最終結果。還可以作為控制變量,用來控制應用程序的運行。內存變量6種類型:字符型(C)、數(shù)值型(N)、邏輯型(L)、日期型(D)、日期時間型(T)和貨幣型(Y)。

內存變量由賦值語句定義,它的數(shù)據(jù)類型由賦值數(shù)據(jù)的類型決定。2.1常量、變量及其數(shù)據(jù)類型2.1.2字段變量和內存變量1/11/202513第二章VisualFoxPro數(shù)據(jù)基礎字段變量和內存變量的區(qū)別字段變量內存變量數(shù)據(jù)庫表文件的組成部分獨立于數(shù)據(jù)庫文件而存在隨表文件的定義而建立需要時隨時定義有C、N、D、L、M、G等類型有C、N、D、L、Y、T等類型多值變量單值變量關機后保存在數(shù)據(jù)庫表文件中關機后不保存,但可存入內存變量文件

如果在表中存在一個與內存變量同名的字段變量,則字段變量優(yōu)先。

如果要訪問內存變量,則須在變量名前加上前綴M.或者M->,否則系統(tǒng)將訪問同名的字段變量。

1/11/202514第二章VisualFoxPro數(shù)據(jù)基礎2.1.2.2內存變量

1、內存變量賦值命令

給內存變量賦值命令有“=”、STORE等。

使用“=”給變量賦值時,一次只能給一個變量賦值,而STORE

命令可以同時給多個變量賦相同的值,各內存變量名之間用逗號分開。

2、表達式值的顯示命令

?和??命令可以在VisualFoxPro的主窗口中顯示表達式的值。

?命令與??命令的作用相同,它們的區(qū)別是:

?命令從光標當前行的下一行開始顯示,即換行輸出;??命令在當前光標位置開始顯示,即同行輸出,??命令緊接上一個顯示位置輸出表達式的值。當?命令后面沒有任何表達式時,輸出一個空行。?命令與??命令的各個輸出項之間用逗號(,)分隔。2.1常量、變量及其數(shù)據(jù)類型2.1.2字段變量和內存變量1/11/202515第二章VisualFoxPro數(shù)據(jù)基礎

3、內存變量顯示命令格式:LISTMEMORY[LIKE<通配符>][TOPRINT|TOFILE<文件名>]

或:DISPLAYMEMORY[LIKE<通配符>][TOPRINT|TOFILE<文件名>]

4、內存變量的清除格式:CLEARMEMORY

或:RELEASE<內存變量名表>

或:RELEASEALL[LIKE<通配符>|EXCEPT<通配符>]

第一種格式清除所有內存變量,其余格式清除指定的內存變量。RELEASEALLLIKEX*表示只清除變量名以X開頭的所有內存變量。RELEASEALLEXCEPTX*表示清除除了以X開頭的變量以外的所有內存變量,(保留以X開頭的所有內存變量)。2.1常量、變量及其數(shù)據(jù)類型2.1.2字段變量和內存變量1/11/202516第二章VisualFoxPro數(shù)據(jù)基礎

2.1.2.3數(shù)組數(shù)組:是一批數(shù)據(jù)的有序集合,數(shù)組中的每一個數(shù)據(jù)稱為一個數(shù)組元素。每一個數(shù)組元素相當于一個內存變量與數(shù)組相比,內存變量又稱為簡單變量。與簡單內存變量不同,數(shù)組必須先定義后使用。

1、數(shù)組的定義

格式:DECLARE<數(shù)組名>(<下標1>[,<下標2>])[,<數(shù)組名>(<下標1>[,<下標2>])…]

或:DIMENSION<數(shù)組名>(<下標1>[,<下標2>])[,<數(shù)組名>(<下標1>[,<下標2>])…]

兩種格式功能相同。定義時將規(guī)定數(shù)組是一維或二維數(shù)組,數(shù)組名和大小。大小由下標值的上、下限決定,下限規(guī)定為1。每個數(shù)組最多可以包含3600個元素。數(shù)組創(chuàng)建后,在賦值前,系統(tǒng)自動給每個數(shù)組元素賦值為邏輯假(.F.)。

整個數(shù)組的數(shù)據(jù)類型為A(Array),使用時可以給各個元素分別賦值,一個數(shù)組中各元素的數(shù)據(jù)類型可以不同,數(shù)組元素可以是任意類型的數(shù)據(jù),其數(shù)據(jù)類型由對該變量的賦值決定。

2.1常量、變量及其數(shù)據(jù)類型2.1.2字段變量和內存變量1/11/202517第二章VisualFoxPro數(shù)據(jù)基礎2、數(shù)組的使用

數(shù)組定義后,數(shù)組中每個元素就可以像內存變量一樣使用。數(shù)組元素賦值與內存變量賦值一樣,可用STORE命令賦初值。

格式:STORE<表達式>TO<數(shù)組名><數(shù)組名>=<表達式>

功能:給數(shù)組中每個數(shù)組元素賦以相同的值。

在使用數(shù)組時應注意:(1)在同一運行環(huán)境,數(shù)組名不能與簡單變量名相同。(2)可以用一維數(shù)組的形式訪問二維數(shù)組。例如,dimensiony(2,3)定義的數(shù)組中的元素y(1,1),y(1,2),y(1,3),y(2,1),y(2,2),y(2,3)用一維數(shù)組形式可以依次表示為:y(1)、y(2)、y(3)、y(4)、y(5)、y(6)。其中y(4)與y(2,1)是同一變量。2.1常量、變量及其數(shù)據(jù)類型2.1.2字段變量和內存變量1/11/202518第二章VisualFoxPro數(shù)據(jù)基礎

2.1.2.4用字段變量給數(shù)組賦值格式:SCATTER[FIELDS<字段名表>]TO<數(shù)組名>

功能:將當前表文件的當前記錄各字段值賦給數(shù)組各元素。

如果無FIELDS<字段名表>選項,則按記錄中字段的先后順序傳送所有字段(備注字段和通用字段除外),否則按<字段名表>指定字段順序傳送。字段的類型決定了數(shù)組變量的類型。如果數(shù)組元素個數(shù)多于傳送字段數(shù),則剩余的數(shù)組元素值不變,否則系統(tǒng)將自動增加數(shù)組元素個數(shù)。

例如:打開“基本信息”表文件,當前記錄為第一條記錄,將它復制到數(shù)組RS中。2.1常量、變量及其數(shù)據(jù)類型2.1.2字段變量和內存變量1/11/202519第二章VisualFoxPro數(shù)據(jù)基礎

2.1.2.5用數(shù)組數(shù)據(jù)替換當前記錄的字段值格式:GATHERFROM<數(shù)組名>[FIELDS<字段名表>]

功能:用數(shù)組元素的值順序替換當前表文件的當前記錄各字段的值。

若無FIELDS<字段名表>選項,則按數(shù)組元素的順序從左到右地填入當前記錄的每一個字段中(備注字段和通用字段除外),否則按<字段名表>指定字段填入。

若數(shù)組元素個數(shù)少于字段數(shù),則當前記錄中其余的字段值不受影響;反之剩余的數(shù)組元素不替換。例如,打開表文件,定義數(shù)組,用數(shù)組中的值填入表中。2.1常量、變量及其數(shù)據(jù)類型2.1.2字段變量和內存變量1/11/202520第二章VisualFoxPro數(shù)據(jù)基礎

函數(shù):是用來實現(xiàn)一種數(shù)據(jù)運算或轉換的一段程序。每個函數(shù)都有特定的運算功能或轉換功能。

函數(shù)按功能分為:數(shù)值運算函數(shù)、字符處理函數(shù)、日期函數(shù)、數(shù)據(jù)類型轉換函數(shù)、測試函數(shù)等。

與數(shù)學函數(shù)一樣,自變量稱為參數(shù),對于合法的參數(shù),函數(shù)必有一個運算結果,稱為函數(shù)值或返回值。

函數(shù)的一般形式是:<函數(shù)名>(參數(shù)表)

在使用函數(shù)時應注意以下幾個問題:

(1)所有函數(shù)名必須跟隨有圓括號,無論函數(shù)是否需要參數(shù)(宏代換函數(shù)&除外)。

(2)每個函數(shù)必然有一個返回值,返回值有確定的數(shù)據(jù)類型。函數(shù)可作為表達式的組成部分,在組成表達式時,需特別注意類型的匹配。

(3)傳送給函數(shù)的參數(shù)也有一定的數(shù)據(jù)類型,必須按要求的數(shù)據(jù)類型傳送參數(shù)值。

2.2常用函數(shù)1/11/202521第二章VisualFoxPro數(shù)據(jù)基礎數(shù)值函數(shù):通常是指函數(shù)的返回值為數(shù)值的一類函數(shù)。

1.取絕對值函數(shù)ABS()

格式:ABS(<數(shù)值表達式>)

功能:求出<數(shù)值型表達式>的絕對值。

例:?ABS(-56),ABS(70-80)5610

2.符號函數(shù)SIGN()

格式:SIGN(<數(shù)值表達式>)

功能:返回數(shù)值表達式的符號,當數(shù)值表達式的運算結果為正、負和零時,函數(shù)值分別為1、-1和0。

例:STORE77TOX?SIGN(60-X),SIGN(90-X)-112.2常用函數(shù)2.2.1數(shù)值函數(shù)1/11/202522第二章VisualFoxPro數(shù)據(jù)基礎3.取整函數(shù)INT()

格式:INT(<數(shù)值表達式>)

功能:返回<數(shù)值表達式>值的整數(shù)部分。

例:?INT(40.5),INT(-40.5)40-404.最大值函數(shù)MAX()

格式:MAX(<數(shù)值表達式1>,<數(shù)值表達式2>)

功能:求兩個<數(shù)值表達式>的最大值。兩個<日期表達式>中的較近日期。

例:?MAX(778.8,190.5),MAX(-35,-67)778.8-35.005.最小值函數(shù)MIN()

格式:MIN(<數(shù)值表達式1>,<數(shù)值表達式2>)

功能:求兩個<數(shù)值表達式>中最小值。兩個<日期表達式>中的較遠日期。

2.2常用函數(shù)2.2.1數(shù)值函數(shù)1/11/202523第二章VisualFoxPro數(shù)據(jù)基礎6.求平方根函數(shù)SQRT()

格式:SQRT(<數(shù)值表達式>)

功能:返回指定表達式的平方根。自變量表達式的值不能為負。

例:?SQRT(67),SQRT(9),SQRT(7-5)8.193.001.417.四舍五入函數(shù)ROUND()

格式:ROUND(<數(shù)值表達式1>,<數(shù)值表達式2>)

功能:返回指定表達式在指定位置四舍五入后的結果。

<數(shù)值表達式2>指明四舍五入的位置。若<數(shù)值表達式2>大于或等于0,表示要保留的小數(shù)位數(shù);若<數(shù)值表達式2>小于0,表示的是對整數(shù)部分進行四舍五入。

例:

?ROUND(56.785,2),ROUND(1.455,0),ROUND(56,-1),ROUND(-3.141,2)56.79160-3.142.2常用函數(shù)2.2.1數(shù)值函數(shù)1/11/202524第二章VisualFoxPro數(shù)據(jù)基礎8.求余數(shù)函數(shù)MOD()

格式:MOD(<數(shù)值表達式1>,<數(shù)值表達式2>)

功能:返回兩個數(shù)值相除后的余數(shù)值。

<數(shù)值表達式1>是被除數(shù),<數(shù)值表達式2>是除數(shù)。

如果被除數(shù)與除數(shù)同號,那么函數(shù)值即為兩數(shù)相除的余數(shù);如果被除數(shù)與除數(shù)異號,則函數(shù)值為兩數(shù)相除的余數(shù)再加上除數(shù)的值。

例:?MOD(10,3),MOD(-10,3),MOD(10,-3),MOD(-10,-3)12-2-1?MOD(15,4),MOD(-15,-4),MOD(-15,4),MOD(15,-4)3-31-12.2常用函數(shù)2.2.1數(shù)值函數(shù)1/11/202525第二章VisualFoxPro數(shù)據(jù)基礎字符函數(shù):通常是指自變量即參數(shù)是字符型的函數(shù)。

1.求子串函數(shù)SUBSTR()

格式:SUBSTR(<字符表達式>,<起始位置>[,<字符個數(shù)>])

功能:在<字符表達式>的字符串中,從<起始位置>開始取出<字符個數(shù)>所指定的字符。若省略第三個自變量<字符個數(shù)

>,則從指定位置一直取到最后一個字符。

例:?SUBSTR("yunnanuniversity",8,10)university?SUBSTR("我們是學生",7)

學生

2.從左端取子串函數(shù)LEFT()

格式:LEFT(<字符表達式>,<字符個數(shù)>)

功能:從指定表達式的左端取出由<字符個數(shù)>給出的指定長度的子串。

例:?LEFT("至公天下",4)

至公2.2常用函數(shù)2.2.2字符函數(shù)1/11/202526第二章VisualFoxPro數(shù)據(jù)基礎3.從右端取子串函數(shù)RIGHT()

格式:RIGHT(<字符表達式>,<字符個數(shù)>))

功能:從指定表達式的右端取出由<字符個數(shù)>給出的指定長度的子串。

例:?RIGHT("會澤百家",4)

百家4.小寫轉大寫函數(shù)UPPER()和大寫轉小寫函數(shù)LOWER()

格式:UPPER(<字符表達式>)LOWER(<字符表達式>)

功能:UPPER()函數(shù)將字符表達式中所有小寫字母轉換成大寫字母。

LOWER()函數(shù)將字符表達式中所有大寫字母轉換成小寫字母。

例:?UPPER("computer")COMPUTER?LOWER("OPERATIONSYSTEM")operationsystem2.2常用函數(shù)2.2.2字符函數(shù)1/11/202527第二章VisualFoxPro數(shù)據(jù)基礎5.求字符串長度函數(shù)LEN()

格式:LEN(<字符表達式>)

功能:返回指定字符表達式值的長度,即所包含的字符個數(shù)。函數(shù)值為數(shù)值型。

例:

?LEN("Unix

操作系統(tǒng)")136.刪除字符串前后空格的函數(shù)

格式:TRIM(<字符表達式>)LTRIM(<字符表達式>)ALLTRIM(<字符表達式>)

功能:TRIM()返回指定字符表達式去掉尾部空格后得到的字符串。

LTRIM()返回指定字符表達式去掉前面空格后得到的字符串。

ALLTRIM()返回指定字符表達式去掉前面和尾部空格后得到的字符串。

例:?TRIM("VisualFoxPro")VisualFoxPro2.2常用函數(shù)2.2.2字符函數(shù)1/11/202528第二章VisualFoxPro數(shù)據(jù)基礎7.求子串出現(xiàn)位置函數(shù)AT()

格式:AT(<字符表達式1>,<字符表達式2>[,<數(shù)值表達式>])

功能:如果<字符表達式1>是<字符表達式2>的子串,則返回<字符表達式1>的首字符在<字符表達式2>中的位置,若不是子串,則返回0。函數(shù)的返回值為數(shù)值型。

另有一個ATC()函數(shù),與AT()功能類似,但在子串比較時不區(qū)分大小寫。

<數(shù)值表達式>表明在<字符表達式2>中搜索<字符表達式1>第幾次出現(xiàn),默認值為1。例:?AT("Fox","Visual

FoxPro"),AT("Fox","Visual

FoxPro",1),

AT("Fox","VisualFoxPro",2)880

2.2常用函數(shù)2.2.2字符函數(shù)1/11/202529第二章VisualFoxPro數(shù)據(jù)基礎8.字符串匹配函數(shù)LIKE

格式:LIKE(<字符表達式1>,<字符表達式2>)

功能:比較兩個字符串對應位置上的字符,若所有對應字符都相匹配,函數(shù)返回邏輯真(.T.),否則返回邏輯假

(.F.)。

<字符表達式1>中可以包含通配符*和?。*可以與任何數(shù)目的字符相匹配,?可以與任何單個字符匹配。

例:x="we

are"

y="happy"?LIKE("we*",x),LIKE("w?",x),LIKE(y,x),LIKE("h*",y).T..F..F..T.2.2常用函數(shù)2.2.2字符函數(shù)1/11/202530第二章VisualFoxPro數(shù)據(jù)基礎

日期和時間函數(shù):是指自變量通常是日期型或日期時間型數(shù)據(jù)。

1.時間函數(shù)TIME()

格式:TIME()

功能:以“時:分:秒”(hh:mm:ss)格式返回當前系統(tǒng)時間,函數(shù)值為字符型。

例:如果當時的系統(tǒng)時間是上午11時25分17秒,則有:?TIME()11:23:17

如果提供任意數(shù)值作為自變量,則返回的時間精度為百分之一秒。

?TIME(4)11:23:17.33

2.2常用函數(shù)2.2.3日期和時間函數(shù)1/11/202531第二章VisualFoxPro數(shù)據(jù)基礎2.日期函數(shù)DATE()

格式:DATE()

功能:返回當前系統(tǒng)日期,返回值為日期型。如果不通過SETDATE

命令特別設置,系統(tǒng)日期的格式為:月/日/年(MM/DD/YY)。

例:如果今天的系統(tǒng)日期是2004年2月11日,則有:?DATE()02/11/04

3.日期時間函數(shù)DATETIME()

格式:DATETIME()

功能:返回當前系統(tǒng)日期時間,返回值為日期時間型。

例:如果今天的系統(tǒng)日期是2004年2月11日,上午11時25分17秒,則有:?DATETIME()02/11/0411:25:17AM2.2常用函數(shù)2.2.3日期和時間函數(shù)1/11/202532第二章VisualFoxPro數(shù)據(jù)基礎取年份、月份和日期函數(shù)YEAR()、MONTH()和DAY()

格式:YEAR(<日期表達式>|<日期時間表達式>)MONTH(<日期表達式>|<日期時間表達式>)DAY(<日期表達式>|<日期時間表達式>)

功能:YEAR()從指定的日期表達式或日期時間表達式中返回年份。

MONTH()從指定的日期表達式或日期時間表達式中返回月份。

DAY()從指定的日期表達式或日期時間表達式中返回月份的日期。

例:

STORE{^2009-12-25}TOD?YEAR(D),MONTH(D),DAY(D)20091225

如果當前系統(tǒng)日期是2009年1月1日,則:

?YEAR(DATE()),MONTH(DATE()),DAY(DATE())200911返回值均為數(shù)值型。2.2常用函數(shù)2.2.3日期和時間函數(shù)1/11/202533第二章VisualFoxPro數(shù)據(jù)基礎1.字符型轉換成日期型函數(shù)CTOD()

格式:CTOD(<字符型表達式>)

功能:將<字符型表達式>中的日期格式的字符串轉換為日期型數(shù)據(jù)。

例:?CTOD("01/11/09")&&將字符串"01/11/09"轉換成日期并顯示。

01/11/092.日期型轉換成字符型函數(shù)DTOC()

格式:DTOC(<日期型表達式>[,<1>])

功能:將<日期型表達式>中的日期型值轉為字符型。

若無選項<1>時,則字符串的格式為:月/日/年;若指定選項為<1>時,則字符串的格式為:yyyymmdd。其中的"1"可以是任意數(shù)值。

例:假若今天是2010年2月11日,

?"今天的日期是:"+DTOC(DATE())

今天的日期是:02/11/10?"今天的日期是:"+DTOC(DATE(),1)

今天的日期是:20100211

2.2常用函數(shù)2.2.4數(shù)據(jù)類型轉換函數(shù)1/11/202534第二章VisualFoxPro數(shù)據(jù)基礎3.數(shù)值型轉換成字符型函數(shù)STR()

格式:STR(<數(shù)值型表達式>[,<長度>][,<小數(shù)位數(shù)>])

功能:將<數(shù)值型表達式>的值轉為字符型數(shù)據(jù)。

返回字符串長度理想值L=<數(shù)值型表達式>的整數(shù)部分+<小數(shù)位數(shù)>+1(小數(shù)點)。

<長度>值決定轉換后的字符串長度,包括小數(shù)點、負號。

<小數(shù)位數(shù)>值決定轉換后小數(shù)點右邊小數(shù)位數(shù)。

若<長度>值大于L,則字符加前導空格以滿足規(guī)定的<長度>要求;若

<長度>值小于L但大于等于<數(shù)值表達式>值的整數(shù)位數(shù),則優(yōu)先滿足整數(shù)部分而自動調整小數(shù)位數(shù);若<長度>值小于<數(shù)值表達式>值的整數(shù)位數(shù),則返回一串“*”。

例:?STR(123.45,6,2),STR(3.141592,4,4),STR(76543.212,3,2)123.453.14***2.2常用函數(shù)2.2.4數(shù)據(jù)類型轉換函數(shù)1/11/202535第二章VisualFoxPro數(shù)據(jù)基礎4.字符型轉換成數(shù)值型函數(shù)VAL()

格式:VAL(<字符表達式>)

功能:將由數(shù)字符號(包括數(shù)字、正負號、小數(shù)點)組成的<字符表達式>字符串轉為數(shù)值型數(shù)據(jù)。

<字符型表達式>中必須是有效的數(shù)值表達式(可以是數(shù)值的科學計數(shù)法表示,例如:1.44E2)。若字符串內出現(xiàn)非數(shù)字字符,如果首字符不是數(shù)字符號,則返回數(shù)值零,否則轉換前面部分。例:?VAL("123.45"),VAL("123.87hello123"),VAL("happy99.78")123.45123.870.005.宏代換函數(shù)&

格式:&<字符變量>

功能:&函數(shù)用于替換出字符型內存變量的內容,即&的值是變量中的字符串。2.2常用函數(shù)2.2.4數(shù)據(jù)類型轉換函數(shù)1/11/202536第二章VisualFoxPro數(shù)據(jù)基礎5.宏代換函數(shù)&

如果該函數(shù)與其后的字符無明確分界,則需用“.”號作為函數(shù)結束標識。可以嵌套。

例1:STORE"學生"TOXS

USE&XS

&&相當于打開學生表命令:USE學生

XNAME=“姓名”

&&

將“姓名”字符串賦值給變量XNAME

?XNAME,&XNAME

姓名楊波

例2:STORE"DISPLAY"TOL

USE學生

&L

&&相當于執(zhí)行了DISPLAY命令

記錄號

學號

姓名

性別

出生日期

專業(yè)

入學成績

貸款否

照片

簡歷

120030102001楊波女06/06/1978新聞666.6.T.GenMemo

例3:STORE"*"TOsymSTORE"X&sym.Y"TOZ&&宏替換命令后的變量與其他字符用.分隔。

?Z將顯示X*Y2.2常用函數(shù)2.2.4數(shù)據(jù)類型轉換函數(shù)1/11/202537第二章VisualFoxPro數(shù)據(jù)基礎

在處理數(shù)據(jù)時,有時需要了解操作對象的狀態(tài),如:數(shù)據(jù)的類型、表文件的記錄指針的位置、記錄指針是否到了文件頭或文件尾等。特別在程序運行時,常需要根據(jù)測試結果決定程序走向或處理方式。

1.表文件尾測試函數(shù)EOF()

格式:EOF([<數(shù)值型表達式>])

功能:測試指定工作區(qū)表文件中的記錄指針是否指向文件尾,若記錄指針已經(jīng)指向最后一條記錄的后面位置,EOF()函數(shù)邏輯值為真.T.,否則為假.F.。

若省略<數(shù)值表達式>時,測試當前工作區(qū)的表文件。若工作區(qū)未打開表文件,則值為假.F.。若表文件中沒有記錄,返回真.T.。

例:USE學生

GOTOBOTTOM?EOF().F.SKIP?EOF().T.2.2常用函數(shù)2.2.5測試函數(shù)1/11/202538第二章VisualFoxPro數(shù)據(jù)基礎2.表文件起始測試函數(shù)BOF()

格式:BOF([<數(shù)值型表達式>])

功能:測試指定工作區(qū)表文件記錄指針是否指向文件首。若記錄指針指向表文件首(第一條記錄的前面),BOF()函數(shù)邏輯值為邏輯真(.T.),否則為邏輯假(.F.)。

若省略<數(shù)值表達式>時,測試當前工作區(qū)的表文件。若測試的工作區(qū)未打開表文件,則值為邏輯假(.F.)。若表文件中沒有記錄,返回邏輯真(.T.)。

例:USE學生

GOTOP?BOF().F.SKIP-1?BOF()

.T.2.2常用函數(shù)2.2.5測試函數(shù)1/11/202539第二章VisualFoxPro數(shù)據(jù)基礎學號姓名性別專業(yè)20030102001楊波女新聞20030102002魯明女新聞20030101001張偉男中文20050103001王紅女歷史20050101001張小玲女中文20040102001郭林男新聞20020101001李浩明男中文第一條記錄Bof()為假,recno()值為1最后一條記錄Eof()為假Recno()為最后一條記錄號Bof()為真Recno()值為1最后一條記錄的后面Eof()為真Recno()值為最后一條記錄號+11/11/202540第二章VisualFoxPro數(shù)據(jù)基礎3.記錄號測試函數(shù)RECNO()

格式:RECNO([<數(shù)值型表達式>])

功能:返回指定工作區(qū)中表文件當前的記錄號。

<數(shù)值型表達式>的值指定當前工作區(qū)號,若省略<數(shù)值表達式

>,測試當前工作區(qū)中的表文件的記錄號。若測試的工作區(qū)未打開表文件,則RECNO()值為零。4.記錄數(shù)測試函數(shù)RECCOUNT()

格式:RECCOUNT([<數(shù)值型表達式>])

功能:返回指定工作區(qū)中當前表文件中所有記錄的個數(shù)。

<數(shù)值表達式>值決定當前工作區(qū)號。若省略<數(shù)值表達式>,則測試當前工作區(qū)的表文件。若測試的工作區(qū)未打開表文件,則

RECCOUNT()值為零。2.2常用函數(shù)2.2.5測試函數(shù)1/11/202541第二章VisualFoxPro數(shù)據(jù)基礎5.表文件測試函數(shù)

格式:DBF([<數(shù)值表達式>])

功能:用于給出指定工作區(qū)的表文件名。

<數(shù)值表達式>指定工作區(qū)號,若無則對當前工作區(qū)操作。當指定工作區(qū)沒有打開的表文件,則返回空串。

例:USE學生

?DBF()顯示D:\世界杯\表\學生.dbf

6.空值(NULL)測試函數(shù)ISNULL()

格式:ISNULL(<表達式>)

功能:判斷一個表達式的運算結果是否為NULL值,若是,返回邏輯真(.T.),否則返回邏輯假(.F.)。

NULL值是沒有明確值的一種特殊表示。NULL值不等同于零或空格。一個NULL值不能認為比某個值(包括另一個NULL值)大或小,相等或不同。2.2常用函數(shù)2.2.5測試函數(shù)1/11/202542第二章VisualFoxPro數(shù)據(jù)基礎7.“空”值測試函數(shù)EMPTY()

格式:EMPTY(<表達式>)

功能:根據(jù)表達式的運算結果是否為“空”值,返回邏輯真(.T.)或邏輯假(.F.)。

這里的“空”值與NULL值是不同的概念。EMPTY(.NULL.)返回值為邏輯假(.F.)。

EMPTY()函數(shù)的自變量表達式的類型可以是數(shù)值型、字符型、邏輯型和日期型等類型。不同類型數(shù)據(jù)的“空”值有不同的規(guī)定。2.2常用函數(shù)2.2.5測試函數(shù)不同類型的數(shù)據(jù)“空”值規(guī)定數(shù)據(jù)類型“空”值規(guī)定數(shù)據(jù)類型“空”值規(guī)定字符型空串、空格、制表符日期型空(如CTOD(‘’)數(shù)值型0日期時間型空(如CTOT(‘’)貨幣型0邏輯型.F.1/11/202543第二章VisualFoxPro數(shù)據(jù)基礎8.數(shù)據(jù)類型測試函數(shù)TYPE()和VARTYPE()

格式:TYPE(<字符表達式>)VARTYPE(<表達式>[,<邏輯表達式>])

功能:測試表達式的數(shù)據(jù)類型,返回一個大寫字母,表明數(shù)據(jù)類型。

函數(shù)值為字符型。返回字母的含義如下。數(shù)據(jù)類型返回字母數(shù)據(jù)類型返回字母字符型C日期型D數(shù)值型N日期時間型T邏輯型L未定義U貨幣型YNULL值X通用型G備注型C或M常用函數(shù)2.2常用函數(shù)2.2.5測試函數(shù)1/11/202544第二章VisualFoxPro數(shù)據(jù)基礎

TYPE()函數(shù):返回表達式的數(shù)據(jù)類型,<字符表達式>要求是用字符定界符括起來的一個表達式,這個表達式可以是常量、變量、字段或其他表達式,如果表達式不用字符定界符括起來,將返回U(未定義)。

例:?TYPE(".T."),TYPE("2*3.14*12"),TYPE("DATE()")LNDD1="HELLO"?TYPE(D1),TYPE("D1")UC

VARTYPE()函數(shù):返回<表達式>的數(shù)據(jù)類型,但函數(shù)中的表達式不用字符定界符括起來;<邏輯表達式>決定當<表達式>的運算結果是NULL值時函數(shù)的返回值:如果<邏輯表達式>為.T.,返回<表達式>的原數(shù)據(jù)類型;如果<邏輯表達式>為.F.或省略,則返回X,表明<表達式>的運算結果是NULL值。

例:STORE5TOnX

nX=.NULL.?TYPE("nX"),VARTYPE(nX),VARTYPE(nX,.T.)&&數(shù)據(jù)類型測試仍然是N型

NXN常用函數(shù)2.2常用函數(shù)2.2.5測試函數(shù)1/11/202545第二章VisualFoxPro數(shù)據(jù)基礎9.條件測試函數(shù)IIF()

格式:IIF(<邏輯表達式>,<表達式1>,<表達式2>)

功能:測試<邏輯表達式>的值,如果為真(.T.),函數(shù)返回<表達式1>的值,如果為假.F.,函數(shù)返回<表達式2>的值。<表達式1>和<表達式2>的類型不要求相同。

例:X=100?IIF(X>0,"x的值大于零","x的值小于等于0")x的值大于零2.2常用函數(shù)2.2.5測試函數(shù)1/11/202546第二章VisualFoxPro數(shù)據(jù)基礎

數(shù)值表達式:是由算術運算符將數(shù)值型數(shù)據(jù)連接起來形成的式子,其運算結果仍然是數(shù)值型數(shù)據(jù)。算術運算符對數(shù)值型數(shù)據(jù)進行算術運算,產(chǎn)生數(shù)值、貨幣結果等。有6種運算符。

例:?(45+5-6^2)/2,(12.44-0.31)*(5-3^3)7.00-266.86算術運算符及說明運算符說明運算符說明()優(yōu)先運算符、形成子表達式*、/、%乘法、除法、求余運算**或^乘方運算+、-加法、減法運算運算規(guī)則及優(yōu)先級是:先乘除,后加減,乘方優(yōu)先于乘除,函數(shù)優(yōu)先于乘方,圓括號的優(yōu)先級別最高。同級運算時,從左至右依次運算。2.3表達式與運算2.3.1數(shù)值表達式與數(shù)值運算1/11/202547第二章VisualFoxPro數(shù)據(jù)基礎字符表達式:由字符運算符將字符型數(shù)據(jù)連接起來而形成的式子。字符運算符:用于對兩個字符型數(shù)據(jù)進行連接運算。

+:用于把兩個字符串連接形成一個新的字符串。

-

:連接兩個字符串,并將第一個字符串尾部的空格移到新字符串的末尾。

例:STORE"HELLO"TOASTORE"EVERYONE"TOB?A+B,A-BHELLOEVERYONEHELLOEVERYONE

$:表示兩個字符串之間的包含與被包含的關系,參與運算的數(shù)據(jù)只能是字符型,但運算結果為邏輯型。

格式:<字符串1>$<字符串2>

如果<字符串1>被包含在<字符串2>中時其結果為真,否則為假。例:?“NEW”$“HAPPYNEWYEAR”,"study"$"STUDYCOMPUTER".T..F.

2.3表達式與運算2.3.2字符表達式與字符運算1/11/202548第二章VisualFoxPro數(shù)據(jù)基礎

日期或日期時間表達式的運算符有兩個:+和-

兩個日期不能相加(+),只能相減,得到兩個指定日期相差的天數(shù)。

運算符+和-既可以作為日期時間運算符,又可以作為算術運算符和字符串連接運算符。具體作為哪種運算符,由它們所連接的運算對象的數(shù)據(jù)類型決定。

日期時間表達式的格式格式日期時間運算結果及類型<日期>+<天數(shù)>日期型。指定日期若干天后的日期<天數(shù)>+<日期>日期型。指定日期若干天后的日期<日期>-<天數(shù)>日期型。指定日期若干天前的日期<日期>-<日期>數(shù)值型。兩個日期相差的天數(shù)<日期時間>+<秒數(shù)>日期型。指定日期若干秒后的日期<日期時間>-<秒數(shù)>日期型。指定日期若干秒前的日期<秒數(shù)>+<日期時間>日期型。指定日期若干秒后的日期<日期時間>-<日期時間>數(shù)值型。兩個日期時間相差的秒數(shù)2.3表達式與運算2.3.3

日期時間表達式與日期時間運算1/11/202549第二章VisualFoxPro數(shù)據(jù)基礎條件表達式:通常由比較運算符將兩個運算對象連接起來形成

格式:<表達式1><比較運算符><表達式2>。

比較運算符對兩個表達式進行比較運算,產(chǎn)生邏輯結果(真或假)。

(1)比較運算符可用在字符、數(shù)字和日期型等表達式中,比較運算符要求前后兩個運算對象的數(shù)據(jù)類型必須相同。

(2)不同類型的數(shù)據(jù)進行比較運算時,比較的方式是不一樣的。如數(shù)字型數(shù)據(jù)是按其數(shù)值大小進行比較的。

(3)關系成立時值為真(.T.),否則值為假(.F.)。比較運算符運算符說明運算符說明<小于<=小于等于>大于>=大于等于=等于<>、#或!=不等于2.3表達式與運算2.3.4

條件表達式及比較運算1/11/202550第二章VisualFoxPro數(shù)據(jù)基礎

1.數(shù)值型數(shù)據(jù)和貨幣型數(shù)據(jù)的比較運算

按數(shù)值的大小比較,包括負數(shù)。

2.日期和日期時間型數(shù)據(jù)的比較運算

日期型數(shù)據(jù)是按年、月、日的先后進行比較。

兩個日期型數(shù)據(jù)比較,首先比較年份,年份不相同時,年份大的日期較大;年份相同時,比較月份,月份不相同時,月份大的日期較大;月份也相同時,比較日期,日期大的較大,否則相同。

例:?{^1999-08-06}>{^1998-12-10}.T.?{^1999-08-06}>{^1999-12-01},{^1999-08-06}>{^1999-08-01}.F..T.2.3表達式與運算2.3.4

條件表達式及比較運算1/11/202551第二章VisualFoxPro數(shù)據(jù)基礎3.字符型數(shù)據(jù)的比較運算

當比較兩個字符串時,系統(tǒng)將對兩個字符串的字符從左向右逐個進行比較,一旦發(fā)現(xiàn)兩個對應字符不同,就根據(jù)這兩個字符的排序次序決定兩個字符串的大小。設置排序次序:

對字符排序次序的設置可以通過菜單:

(1)選擇“工具”菜單下的“選項”命令,打開“選項”對話框。(2)在“選項”對話框選“數(shù)據(jù)”選項卡上,“排序序列”下拉列表框中選擇“Machine(機器)”、“PinYin

(拼音)”或“Stroke(筆畫)”。

“Machine(機器)”:指定字符排序次序按照機內碼順序排序?!癙inYin(拼音)”:按照拼音次序排序。對西文字符而言,空格在最前面,小寫字母在前,大寫字母在后?!癝troke(筆畫)”:無論中文或西文,按照書寫筆畫的多少排序。

2.3表達式與運算2.3.4.條件表達式及比較運算1/11/202552第二章VisualFoxPro數(shù)據(jù)基礎設置排序次序:對排序次序的設置也可以使用命令:

SETCOLLATETO"<排序次序名>“

<排序次序名>可以是“Machine”、“PinYin”或“Stroke”,必須放在引號當中。例:SETCOLLATETO"PinYin"

溫馨提示

  • 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

提交評論