第2章VFP程序設計基礎函數部分_第1頁
第2章VFP程序設計基礎函數部分_第2頁
第2章VFP程序設計基礎函數部分_第3頁
第2章VFP程序設計基礎函數部分_第4頁
第2章VFP程序設計基礎函數部分_第5頁
已閱讀5頁,還剩124頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

1、第第 2章章 Visual FoxPro 程序設計基礎程序設計基礎 本章重點:本章重點: 1、掌握不同類型數據的正確表達形式。、掌握不同類型數據的正確表達形式。 2、掌握運算符的運算規則、優先級、結合性、掌握運算符的運算規則、優先級、結合性; 3、掌握程序設計的三種基本結構,會編寫簡單、掌握程序設計的三種基本結構,會編寫簡單的程序。的程序。第第 2章章 Visual FoxPro 程序設計基礎程序設計基礎 2.1 常量與變量常量與變量 2.2 表達式表達式 2.3 常用函數常用函數 2.4 程序與程序文件程序與程序文件 2.5 程序的基本結構程序的基本結構 2.6 多模塊程序設計多模塊程序設計

2、2.1 常量與變量常量與變量 2.1.1 數據類型數據類型 1.定義定義 指數據對象取值和運算的集合指數據對象取值和運算的集合; 數據類型一旦被定義,就確定了其存儲方式和數據類型一旦被定義,就確定了其存儲方式和使用方式使用方式; 2.類型類型 數值型和非數值型數值型和非數值型 3.數據基本類型數據基本類型 表創建時必須指明數據類型,不能改變;表創建時必須指明數據類型,不能改變; 變量和數組由存入其中的值決定;變量和數組由存入其中的值決定; 一、一、 字符型字符型(C:Character) 不具有計算能力的文字數據類型。不具有計算能力的文字數據類型。 由任意字符組成:由任意字符組成: 如漢字和如

3、漢字和ASCII字符集中可打印字符字符集中可打印字符(字母字符、數字字母字符、數字字符、空格、符號等字符、空格、符號等)組成,長度范圍是組成,長度范圍是0254個字個字符符 必須用定界符雙引號必須用定界符雙引號(“”)或單引號或單引號( )、 括起括起來。來。 注意注意: 必須用西文方式的單或雙引號括起。必須用西文方式的單或雙引號括起。 學號、工號、電話號碼、郵政編碼學號、工號、電話號碼、郵政編碼(看上去象數值型看上去象數值型)一般用字符型表示。一般用字符型表示。 二、二、 數值型數值型(N:Numeric) 數值型用來表示數量數值型用來表示數量. 分為以下四種類型:分為以下四種類型: (1)

4、基本數值型(基本數值型(Numeric) 由數字(由數字(09)、小數點和正負號組成。最大長度為)、小數點和正負號組成。最大長度為20位(包括位(包括、和小數點)。、和小數點)。 指數形式:例如:指數形式:例如: 123400000可以表示為:可以表示為:1.234E+8, 0.0002356可以表示為:可以表示為:2.356E-4 (2)浮點型浮點型* (F:Float) 與數值型數據完全等價與數值型數據完全等價,只是在存儲形式上采取浮點格式。只是在存儲形式上采取浮點格式。 (3)雙精度型雙精度型* (B:Double) 是更高精度的數值型數據,位數固定。只用于數據表中的字段數是更高精度的數

5、值型數據,位數固定。只用于數據表中的字段數據類型的定義,并采用固定長度浮點格式存儲。據類型的定義,并采用固定長度浮點格式存儲。 (4)整型整型* (I:Integer) 是不包含小數點部分的數值型數據。它只用于數據表中的字段類是不包含小數點部分的數值型數據。它只用于數據表中的字段類型的定義。整型數據以二進制形式存儲,大小占型的定義。整型數據以二進制形式存儲,大小占4個字節。個字節。 三、貨幣型三、貨幣型(Y:Currency) 描述貨幣數據(小數位數超過描述貨幣數據(小數位數超過4位四舍五入)位四舍五入) cPrice=$100.356 四、日期型四、日期型(Date) 用于表示有關日期的數據

6、:用于表示有關日期的數據: birthday=1968/05/20 日期型數據以日期型數據以yyyymmdd樣式保存樣式保存,8字節字節 (1)嚴格的日期格式)嚴格的日期格式 格式:格式:yyyy/mm/dd 注:花括號內第一字符必須是脫字符注:花括號內第一字符必須是脫字符“”; 年份必須使用年份必須使用4位;位; 年月日順序不能顛倒。年月日順序不能顛倒。 例:例:2009-09-15 (2)傳統日期格式)傳統日期格式 只能在只能在set strictdate to 0狀態下使用。狀態下使用。 系統默認美國日期格式系統默認美國日期格式mm/dd/yy年份可以是年份可以是2位也位也可以是可以是4

7、位。年月日的次序可以任意。受系統設置影位。年月日的次序可以任意。受系統設置影響,在不同狀態下,對日期的解釋不同。響,在不同狀態下,對日期的解釋不同。 例:例: 04/02/09 可以解釋為可以解釋為2009年年4月月2日日 也可以解釋為也可以解釋為2004年年2月月9日日 還可以解釋為還可以解釋為2009年年2月月4日日 (3)影響日期格式的設置命令)影響日期格式的設置命令 set mark to 日期分隔符日期分隔符 指定日期的顯示分隔符如指定日期的顯示分隔符如“-”、“.”。 注:若省略注:若省略日期分隔符日期分隔符,則用恢復系統默認值,則用恢復系統默認值“/”。 set date to

8、MDY|DMY|YMD 設置日期顯示的格式。可用的日期格式如下:設置日期顯示的格式??捎玫娜掌诟袷饺缦拢憾陶Z短語格式格式短語短語格式格式AMERICANmm/dd/yyANSIyy.mm.ddFRENCHdd/mm/yyGERMANdd.mm.yyITALIANdd-mm-yyJANPANyy/mm/ddUSAmm-dd-yy MDYmm/dd/yy DMYdd/mm/yy YMDyy/mm/dd 五、五、 日期時間型日期時間型(DateTime) 表述日期表述日期時間或二者兼而有之的數據時間或二者兼而有之的數據 tdatetime=3/11/ 2005 10:30pm Tdateonly=3

9、/11/2005 Ttimeonly=10:30 am 日期時間型數據占日期時間型數據占8字節,字節,4個字節表示日期,個字節表示日期,另另4個字節表示時間個字節表示時間 日期時間型數據的缺省默認值日期時間型數據的缺省默認值: ?ctot(“03/05/2008”)、?ctot(2:40 am) 時間格式受時間格式受SET HOURS、SET SECONDS等命令的等命令的影響影響 六、六、 邏輯型邏輯型(Logical) 是描述客觀事物真假的數據,用于表示邏輯判是描述客觀事物真假的數據,用于表示邏輯判斷結果。斷結果。 只有真(只有真(.T.)和假()和假(.F.)兩種值,長度固定為)兩種值,

10、長度固定為1位字節。位字節。 如:是否必修課?如:是否必修課? 七、七、 備注型備注型*(Memo) 用于在表字段中存放較長的字符型數據類型。用于在表字段中存放較長的字符型數據類型。是字符型數據的特殊形式。是字符型數據的特殊形式。 沒有數據長度限制,僅受限于現有的磁盤空間。沒有數據長度限制,僅受限于現有的磁盤空間。 其字段長度固定為其字段長度固定為4位,用于存放引用信息,指位,用于存放引用信息,指向該字段的真正內容。向該字段的真正內容。 實際數據被存放在與數據表文件同名的備注文實際數據被存放在與數據表文件同名的備注文件中,長度根據數據的內容而定。件中,長度根據數據的內容而定。 八、八、 通用型

11、通用型*(General) 用于在表中存儲用于在表中存儲OLE(對象鏈接與嵌入對象鏈接與嵌入)對象對象 OLE對象可以是電子表格、文檔、圖片等。對象可以是電子表格、文檔、圖片等。 只用于數據表中的字段類型的定義。只用于數據表中的字段類型的定義。 OLE對象的實際內容、類型和數據量則取決于連接或對象的實際內容、類型和數據量則取決于連接或嵌入嵌入OLE對象的操作方式。對象的操作方式。 連接連接OLE對象方式,數據表中只包含對對象方式,數據表中只包含對OLE對象的引用說明,對象的引用說明,以及對創建該以及對創建該OLE對象的應用程序的引用說明;對象的應用程序的引用說明; 嵌入嵌入OLE對象方式,數據

12、表中除包含對創建該對象方式,數據表中除包含對創建該OLE對象的應用對象的應用程序的引用說明,還包含程序的引用說明,還包含OLE對象中的實際數據。對象中的實際數據。 長度固定為長度固定為4位,用于存放引用信息,指向該字段的真位,用于存放引用信息,指向該字段的真正內容。正內容。 實際數據長度僅受限于現有的磁盤空間。實際數據長度僅受限于現有的磁盤空間。 2.2.1 存儲容器名稱命名規則存儲容器名稱命名規則 2.2.2 常量(常量(Constants) 2.2.3 內存變量(內存變量(Variables) 2.2.4 數組(數組(Arrays) 2.2.5 字段(字段(Fields) 2.2.6 對象

13、(對象(Objects)2.2 常量和變量常量和變量 VFP允許使用常量、變量、數組、字段和對象來允許使用常量、變量、數組、字段和對象來存儲數據,它們也被稱為存儲數據的容器存儲數據,它們也被稱為存儲數據的容器 1.名稱中只能包含字母、下劃線、數字符號和漢字符號名稱中只能包含字母、下劃線、數字符號和漢字符號 2.名稱的開頭只能是字母、漢字、下劃線,不能是數字名稱的開頭只能是字母、漢字、下劃線,不能是數字符號符號 注意:盡可能避免下劃線作為名稱開頭注意:盡可能避免下劃線作為名稱開頭 表的字段名不能用下劃線開頭表的字段名不能用下劃線開頭 3.名稱的長度可以是名稱的長度可以是1-128個字符長度個字符

14、長度 注意:自由表字段名、索引標識名只能為注意:自由表字段名、索引標識名只能為10個字符個字符 4.應避免使用系統保留字應避免使用系統保留字2.1.2存儲容器名稱命名規則存儲容器名稱命名規則 1. 數值型:數值型: 由小數點、數字、正負號組成由小數點、數字、正負號組成 長度長度nVar 6.內存變量的保存與恢復(內存變量的保存與恢復(.mem) Save to filenameall like 通配符通配符|all except 通通配符配符 Save to mVar all like ?yan* & Restore from filename additive 7、內存變量的顯示、內

15、存變量的顯示 格式格式1:list memory like to printer|to file 格式格式2:display memory like to printer|to file 注:注: 1)功能:顯示內存變量的當前信息:變量名、作用域、類功能:顯示內存變量的當前信息:變量名、作用域、類型、取值。型、取值。 2)List:連屏顯示,如超過一屏,則只看到最后一屏的內容;連屏顯示,如超過一屏,則只看到最后一屏的內容; display:分屏顯示。:分屏顯示。 2)like:只顯示與通配符相匹配的內:只顯示與通配符相匹配的內 存變量。存變量。 8、內存變量的清除、內存變量的清除 格式格式1:

16、clear memory:清除所有內存變量:清除所有內存變量 格式格式2:release :清除指定:清除指定 的內存變量。的內存變量。 格式格式3:release all like|except:清除與通配符匹配的內存變量。清除與通配符匹配的內存變量。 格式格式4:release all extended:清除所有的內清除所有的內 存變量。存變量。 例:例: 在命令窗口中輸入:在命令窗口中輸入: x1=123 x2=“abc” x3=2006/02/25 Disp memory like x? 則:在主屏幕中顯示結果為:則:在主屏幕中顯示結果為: x1 pub n 123 x2 pub c

17、“abc” x3 pub d 25/02/20062.1.5 數組數組 1. 定義定義 數組由一系列被稱為元素的有序數據值系列構成,可以數組由一系列被稱為元素的有序數據值系列構成,可以用序號引用這些元素。用序號引用這些元素。 數組屬于內存變量數組屬于內存變量 數組有一維數組和二維數組數組有一維數組和二維數組 2. 數組的聲明數組的聲明(數組的定義數組的定義) 數組使用前應預先聲明:即數組的定義數組使用前應預先聲明:即數組的定義 DECLARE X(5), Y(5,5) 私有數組私有數組 DIMENSION A(10),B(10,10) 私有數組私有數組 PUBLIC X(3,4) 全局數組全局

18、數組 LOCAL M(9) 局部數組局部數組 數組在聲明之后,每個元素被默認地賦予數組在聲明之后,每個元素被默認地賦予.F.值值 3. 數組元素賦值數組元素賦值 例例: Dimension arrayname6,3 Arrayname1,2=1113 可以用一個語句為所有元素賦相同的值可以用一個語句為所有元素賦相同的值 Arrayname=1113 STORE 10 TO A,B(2),M(4) 與數組相關的命令與數組相關的命令(可在數組元素與字段之間移可在數組元素與字段之間移動值動值) SCATTER、GATHER、 COPY TO ARRAY、 APPEND FROM ARRAY 4、表與

19、數組之間的數據傳遞、表與數組之間的數據傳遞 SCATTER FIELDS 字段名表字段名表 MEMOTO數組名數組名 BLANK GATHER from數組名數組名 FIELDS 字段名表字段名表 MEMO2.3 函數函數 2.3.1 概述概述 函數:函數: 是預先編制好的計算模塊(程序代碼)是預先編制好的計算模塊(程序代碼),可供可供VFP程程序或用戶在任何地方調用;序或用戶在任何地方調用; 函數接收一個或多個參數而返回單個值,它可函數接收一個或多個參數而返回單個值,它可嵌入到一個表達式中;嵌入到一個表達式中; 函數格式為:函數名(參數)函數格式為:函數名(參數) 如如:date() bof

20、() eof() 參數是供函數或過程操作的一個值參數是供函數或過程操作的一個值 如如:space(10) 中的中的“10”即為參數即為參數. 函數分系統函數和用戶自定義函數函數分系統函數和用戶自定義函數 2.3.2 系統函數的分類系統函數的分類(P46表表2-5) 數據類函數數據類函數 數據庫類函數數據庫類函數 環境類函數環境類函數 輸入輸出類函數輸入輸出類函數 程序設計類函數程序設計類函數 函數:函數: 是是vfp語言的重要組成部分語言的重要組成部分 一個大的一個大的Vfp應用程序往往是由若干個過程(子程序)應用程序往往是由若干個過程(子程序)和函數組合而成的和函數組合而成的 函數將最常用的

21、某些程序功能所對應的命令代碼集函數將最常用的某些程序功能所對應的命令代碼集中起來形成文件,供應用程序隨時調用中起來形成文件,供應用程序隨時調用 如何正確使用函數?如何正確使用函數? 熟記各函數的名稱、功能作用熟記各函數的名稱、功能作用 熟練掌握其語法結構、參數含義熟練掌握其語法結構、參數含義 掌握各函數的返回值內容掌握各函數的返回值內容2.3.2.1 2.3.2.1 數值函數數值函數 定義定義是指函數值為數值的一類函數,它們的自變量和返回值是指函數值為數值的一類函數,它們的自變量和返回值往往都是數值型數據。往往都是數值型數據。 1.1.絕對值函數絕對值函數格式:格式:ABS(ABS(數值表達式

22、數值表達式) )功能:返回指定的數值表達式的絕對值。功能:返回指定的數值表達式的絕對值。例例 ? ABS(10),ABS(-5)? ABS(10),ABS(-5)2.3.2.1 2.3.2.1 數值函數數值函數 2.2.求平方根函數求平方根函數格式:格式:SQRT(SQRT(數值表達式數值表達式) )功能:返回指定表達式的平方根。自變量表達式的值不功能:返回指定表達式的平方根。自變量表達式的值不能為負。能為負。例例 ? SQRT(4)? SQRT(4) 3.3.圓周率函數圓周率函數格式:格式:PI()PI()功能:返回圓周率功能:返回圓周率(數值型數值型) )。該函數沒有自變量。該函數沒有自變

23、量。SET DECIMALS TO SET DECIMALS TO nDecimalPlacesnDecimalPlaces set deci to 42.3.2.1 2.3.2.1 數值函數數值函數 4.4.求整數函數求整數函數格式:格式: INT(INT(數值表達式數值表達式) ) CEILING(CEILING(數值表達式數值表達式) ) FLOOR(FLOOR(數值表達式數值表達式) )功能:功能: INT()INT()返回指定數值表達式的整數部分。返回指定數值表達式的整數部分。 CEILING()CEILING()返回大于或等于指定數值表達式的最小整數。返回大于或等于指定數值表達式的

24、最小整數。 FLOOR()FLOOR()返回小于或等于指定數值表達式的最大整數。返回小于或等于指定數值表達式的最大整數。例例 X=5.8X=5.8 ? INT(X)? INT(X);INT(-X)INT(-X);CEILING(X)CEILING(X);CEILING(-X)CEILING(-X);FLOOR(X)FLOOR(X);FLOOR(-X) FLOOR(-X) 2.3.2.1 2.3.2.1 數值函數數值函數 5.5.四舍五入函數四舍五入函數格式:格式: ROUND(ROUND(數值表達式數值表達式1 1,數值表達式數值表達式2 2) )功能:功能: 返回指定表達式在指定位置四舍五入

25、后的結果。返回指定表達式在指定位置四舍五入后的結果。說明:說明: 數值表達式數值表達式2 2指明四舍五入的位置。若指明四舍五入的位置。若數值表達式數值表達式2 2大大于等于于等于0 0,那么它表示的是要保留的小數位數:若,那么它表示的是要保留的小數位數:若數值表達式數值表達式2 2小于小于0 0,那么它表示的是整數部分的舍入位數。,那么它表示的是整數部分的舍入位數。例例 X=645.345X=645.345 ? ROUND(X,2) ROUND(X,1),ROUND(X,0),ROUND(X,-1) ? ROUND(X,2) ROUND(X,1),ROUND(X,0),ROUND(X,-1)

26、2.3.2.1 2.3.2.1 數值函數數值函數 6.6.求余數函數求余數函數* * * * * * 模模格式:格式: MOD(MOD(數值表達式數值表達式1 1,數值表達式數值表達式) )功能:功能: 返回兩個數值相除后的余數。返回兩個數值相除后的余數。說明:說明: 數值表達式數值表達式1 1是被除數,是被除數,數值表達式數值表達式2 2是除數。是除數。 余數的正負號與除數相同余數的正負號與除數相同。 如果被除數與除數同號,那么函數值即為兩數相除的余數;如果被除數與除數同號,那么函數值即為兩數相除的余數; 如果被除數與除數異號,則函數值為兩數相除的余數再加上除如果被除數與除數異號,則函數值為

27、兩數相除的余數再加上除數的值。數的值。例例 ? MOD(10? MOD(10,3)3),MOD(10MOD(10,-3)-3),MOD(-10MOD(-10,3)3),MOD(-10MOD(-10,-3)-3)2.3.2.1 2.3.2.1 數值函數數值函數 7.求最大值和最小值函數求最大值和最小值函數 格式:格式: MAX(數值表達式數值表達式1,數值表達式數值表達式2,數值表達式數值表達式3 MIN(數值表達式數值表達式1,數值表達式數值表達式2,數值表達式數值表達式3 功能:功能: MAX()計算各自變量表達式的值,并返回其中的最大值。計算各自變量表達式的值,并返回其中的最大值。 MIN

28、()計算各自變量表達式的值,并返回其中的最小值。計算各自變量表達式的值,并返回其中的最小值。 說明:說明: 自變量表達式的類型可以是數值型、字符型、貨幣型、雙精度型、自變量表達式的類型可以是數值型、字符型、貨幣型、雙精度型、浮點型、日期型和浮點型、日期型和 日期時間型,但所有表達式的類型必須相同。日期時間型,但所有表達式的類型必須相同。 例例 ? MAX(8,100),MAX(8,100),MIN(工作工作,學習學習,休休息息) 2.3.2.1 數值函數數值函數 8.隨機數函數隨機數函數*(參考參考) 格式:格式: RAND() 功能:功能: 返回返回01之間的隨機數。之間的隨機數。 例例 ?

29、 rand()2.3.2.2 2.3.2.2 字符函數字符函數字符函數是指自變量一般是字符型數據的函數。字符函數是指自變量一般是字符型數據的函數。 1.1.求字符串長度函數求字符串長度函數格式:格式: LEN(LEN(字符表達式字符表達式) )功能:功能: 返回指定字符表達式值的長度,即所包含的字符個數。函數值返回指定字符表達式值的長度,即所包含的字符個數。函數值為數值型。為數值型。例例 X=bookX=book ? LEN(X)? LEN(X)2.3.2.2 2.3.2.2 字符函數字符函數 2.2.小寫轉換函數小寫轉換函數格式:格式: LOWER(LOWER(字符表達式字符表達式) )功能

30、:功能: 將指定表達式值中的大寫字母轉換成小寫字母,其將指定表達式值中的大寫字母轉換成小寫字母,其他字符不變。他字符不變。例例 ? LOWER(BOOK),LOWER(abcDeFg20)? LOWER(BOOK),LOWER(abcDeFg20)2.3.2.2 2.3.2.2 字符函數字符函數 3.3.大寫轉換函數大寫轉換函數格式:格式: UPPER(UPPER(字符表達式字符表達式) )功能:功能: 將指定表達式值中的小寫字母轉換成大寫字母,其將指定表達式值中的小寫字母轉換成大寫字母,其他字符不變。他字符不變。例例 ? ? UPPER(workUPPER(work),UPPER(abcDe

31、FgUPPER(abcDeFg)2.3.2.2 2.3.2.2 字符函數字符函數 4.空格字符串生成函數空格字符串生成函數 格式:格式: SPACE(數值表達式數值表達式) 功能:功能: 返回由指定數目的空格組成的字符串。返回由指定數目的空格組成的字符串。 5.刪除前后空格函數刪除前后空格函數 格式:格式: TRIM(字符表達式字符表達式 LTRIM(字符表達式字符表達式) ALLTRIM(字符表達式字符表達式) 功能:功能: TRIM()返回指定字符表達式值去掉尾部空格后形成的字符串。返回指定字符表達式值去掉尾部空格后形成的字符串。 LTRIM()返回指定字符表達式值去掉前導空格后形成的字符

32、串。返回指定字符表達式值去掉前導空格后形成的字符串。 ALLtRIM()返回指定字符表達式值去掉前導和尾部空格后形成的字返回指定字符表達式值去掉前導和尾部空格后形成的字符串。符串。 例例 STORE SPACE(1)+VFP+SPACE(3) TO X ? TRIM(X) +LTRIM(X)+ALLTRIM(X)6.取子串函數取子串函數格式:格式: LEFT(字符表達式字符表達式,長度長度) RIGHT(字符表達式字符表達式,長度長度) SUBSTR(字符表達式字符表達式,起始位置起始位置,長度長度)功能:功能: LEFT()從指定表達式值的左端取一個指定長度的子串作為函數值。從指定表達式值的

33、左端取一個指定長度的子串作為函數值。 RIGHT()從指定表達式值的右端取一個指定長度的子串作為函數值。從指定表達式值的右端取一個指定長度的子串作為函數值。 SUBSTR()從指定表達式的值指定起始位置取指定長度的子串作為函數值。從指定表達式的值指定起始位置取指定長度的子串作為函數值。說明:說明: 在在SUBSTR()函數中,若缺省第三個自變量函數中,若缺省第三個自變量長度長度,則函數從指定位置,則函數從指定位置一直取到最后一個字符。一直取到最后一個字符。例:例: STORE GOOD BYE! TO X ? LEFT(X,2),SUBSTR(X,6,2)+SUBSTR(X,6),RIGHT(

34、X,3) 7.計算子串出現次數函數計算子串出現次數函數 格式:格式: OCCURE(字符表達式字符表達式1,字符表達式字符表達式2) 功能:功能: 返回第一個字符串在第二個字符串中出現的次數,函數返回第一個字符串在第二個字符串中出現的次數,函數值為數值型。若第二個字符串不是第一個字符串的子串,值為數值型。若第二個字符串不是第一個字符串的子串,函數值為函數值為0。 例例 STORE abarabcadababcr TO X ?OCCURS(a,X),OCCURS(b,X),OCCURS(c,X),OCCURS(f,X),OCCURS(r,X) 2.3.2.2 2.3.2.2 字符函數字符函數 8

35、.求子串位置函數求子串位置函數 格式:格式: AT(字符表達式字符表達式1,字符表達式字符表達式2,數值表達式數值表達式) ATC(字符表達式字符表達式1,字符表達式字符表達式2,數值表達式數值表達式) 功能:功能: AT()的函數值為數值型。如果的函數值為數值型。如果字符表達式字符表達式1是是字符表達式字符表達式2的子串,則返回的子串,則返回字符表達式字符表達式1值的首字符在值的首字符在字符表達式字符表達式2值值中的位置;若不是子串,則返回中的位置;若不是子串,則返回0。 說明:說明: ATC()與與AT()功能類似,但在子串比較時不區分字母大小寫。功能類似,但在子串比較時不區分字母大小寫。

36、 第三個自變量第三個自變量數值表達式數值表達式用于表明要在用于表明要在字符表達式字符表達式2值中值中搜索搜索字符表達式字符表達式1值的第幾次出現,其默認值是值的第幾次出現,其默認值是1。 例例 STORE This is Visual FoxPro TO x ? AT(pro,x),ATC(fox,x),AT(is,x,3),AT(xo,x) 2.3.2.2 2.3.2.2 字符函數字符函數 9.9.子串替換函數子串替換函數 格式:格式:STUFF(STUFF(字符表達式字符表達式1 1,起始位置起始位置,長度長度,字符表達字符表達式式2 2) ) 功能:功能:用用字符表達式字符表達式2 2值

37、替換值替換字符表達式字符表達式1 1中由中由起始位置起始位置和和長度長度指明的一個子串。指明的一個子串。 說明:說明:替換和被替換的字符個數不一定相等。如果替換和被替換的字符個數不一定相等。如果長度長度值是值是0 0,字字符表達式符表達式2 2則插在由則插在由起始位置起始位置指定的字符前面。如果指定的字符前面。如果字符字符表達式表達式2 2值是空串,那么值是空串,那么字符表達式字符表達式1 1中由中由起始位置起始位置和和長度長度指明的子串被刪去。指明的子串被刪去。 例例STORE GOOD BYE! TO X1STORE GOOD BYE! TO X1STORE MORNING TO X2ST

38、ORE MORNING TO X2? STUFF(X1,6,3,X2),STUFF(X1,1,4,X2) ? STUFF(X1,6,3,X2),STUFF(X1,1,4,X2) 2.3.2.2 2.3.2.2 字符函數字符函數 10.字符串匹配函數字符串匹配函數 格式:格式: LIKE(字符表達式字符表達式1,字符表達式字符表達式2) 功能:功能: 比較兩個字符串對應位置上的字符,若所有對應字符都相匹配,則比較兩個字符串對應位置上的字符,若所有對應字符都相匹配,則函數返回邏輯真函數返回邏輯真(.T.),否則返回邏輯假,否則返回邏輯假(.F.)。 說明:說明: 字符表達式字符表達式1中可以包含通

39、配符中可以包含通配符*和和?。*可與任何數目的字符相可與任何數目的字符相匹配,匹配,?可以與任何單個字符相匹配??梢耘c任何單個字符相匹配。 例如:例如: STORE abc TO X STORE abcd TO y ?LIKE(ab*,x),LIKE(ab*,y),LIKE(x,y),LIKE(?b?,x),LIKE(Abc,x) 11.11.字符替換函數字符替換函數格式:格式: CHRTRAN(CHRTRAN(字符表達式字符表達式1 1,字符表達式字符表達式2 2,字符表達式字符表達式3 3) )功能:功能: 當第一個字符串中的一個或多個字符與第二個字符串中的某個字符相當第一個字符串中的一個

40、或多個字符與第二個字符串中的某個字符相匹配時,就用第三個字符串中的對應字符匹配時,就用第三個字符串中的對應字符( (相同位置相同位置) )替換第一個字符替換第一個字符串中這些字符。串中這些字符。說明:說明: 如果第三個字符串包含的字符個數少于第二個字符串包含的字符個數,如果第三個字符串包含的字符個數少于第二個字符串包含的字符個數,因而沒有對應字符,那么第一個字符串中相匹配的各字符將被刪除。因而沒有對應字符,那么第一個字符串中相匹配的各字符將被刪除。如果第三個字符串包含的字符個數多于第二個字符串包含的字符個數,如果第三個字符串包含的字符個數多于第二個字符串包含的字符個數,多余字符被忽略。該函數的

41、自變量是三個字符表達式。多余字符被忽略。該函數的自變量是三個字符表達式。例如:例如: x1=CHRTRAN(ABACAD,ACD,X12)x1=CHRTRAN(ABACAD,ACD,X12) y1=CHRTRAN(y1=CHRTRAN(計算機計算機ABCABC, 計算機計算機 , 電腦電腦) z1=CHRTRAN(z1=CHRTRAN(大家好大家好!, 大家大家 , 您您) ? x1,y1,z1? x1,y1,z1 XBX1X2 XBX1X2 電腦電腦 ABC ABC 您好您好! ! 23.函數函數LEN(SPACE(3)-SPACE(2)的返回的返回值是值是_(23)_(11春)春) A.1

42、 B.3 C.2 D.5 23.函數函數LEN(DTOC(DATE(),1)的返回值是的返回值是 _(23)_ (10秋秋) A.1 B.4 C.8 D.10 ?mod(5,3), mod(-5,3), mod(5,-3), mod(-5,-3)2.3.2.3 2.3.2.3 日期和時間函數日期和時間函數1.系統日期和時間函數系統日期和時間函數 格式:格式: DATE() TIME() DATETIME() 功能:功能: DATE()返回當前系統日期,函數值為日期型。返回當前系統日期,函數值為日期型。 TIME()以以24小時制、小時制、hh:mm:ss格式返回當前系統時間,格式返回當前系統時

43、間,函數值為字符型。函數值為字符型。 DATETIME()返回當前系統日期時間,函數值為日期時返回當前系統日期時間,函數值為日期時間型。間型。 例如:例如: ? DATE(),TIME(),DATETIME()2.3.2.3 2.3.2.3 日期和時間函數日期和時間函數 2.求年份、月份和天數函數求年份、月份和天數函數 格式:格式: YEAR(日期表達式日期表達式|日期時間表達式日期時間表達式) MONTH(日期表達式日期表達式|日期時間表達式日期時間表達式) DAY(日期表達式日期表達式|日期時間表達式日期時間表達式) 功能:功能: YEAR()從指定的日期表達式或日期時間表達式中返回年份從

44、指定的日期表達式或日期時間表達式中返回年份(如如2003)。 MONTH()從指定的日期表達式或日期時間表達式中返回月份。從指定的日期表達式或日期時間表達式中返回月份。 DAY()從指定的日期表達式或日期時間表達式中返回月里面的天數。從指定的日期表達式或日期時間表達式中返回月里面的天數。 說明:說明: 這三個函數的返回值都為數值型。這三個函數的返回值都為數值型。 例例 STORE 2001-08-25 TO d ? YEAR(d),MONTH(d),DAY(d) 2.3.2.3 2.3.2.3 日期和時間函數日期和時間函數 3.3.時、分和秒函數時、分和秒函數格式:格式: HOUR(HOUR(

45、日期時間表達式日期時間表達式) ) MINUTE(MINUTE(日期時間表達式日期時間表達式) ) SEC(SEC(日期時間表達式日期時間表達式) )功能:功能: HOUR()HOUR()從指定的日期時間表達式中返回小時部分從指定的日期時間表達式中返回小時部分(24(24小時制小時制) )。 MINUTE()MINUTE()從指定的日期時間表達式中返回分種部分。從指定的日期時間表達式中返回分種部分。 SEC()SEC()從指定的日期時間表達式中返回秒數部分。從指定的日期時間表達式中返回秒數部分。說明:說明: 這三個函數的返回值都為數值型。這三個函數的返回值都為數值型。例如:例如: STORE

46、2003-08-25 04:20:40 P TO tSTORE 2003-08-25 04:20:40 P TO t ? ? HOUR(tHOUR(t) ),MINUTE(tMINUTE(t) ),SEC(tSEC(t) ) 4.DOW()函數函數*格式:格式: dowdow( (日期表達式日期表達式/ /日期時間表達式日期時間表達式) )功能:功能: 從指定的日期表達式從指定的日期表達式/ /日期時間表達式返回該日期日期時間表達式返回該日期是一周的第幾天是一周的第幾天. .說明:說明: 返回值為數值型。返回值為數值型。( (注意值與星期對應關系注意值與星期對應關系) )例例 ? ? dow(

47、datedow(date()()數值函數名數值函數名功能功能說明說明ABS()絕對值絕對值返回返回X的絕對值的絕對值SIGN()符號函數符號函數當當X為正數、負數和為正數、負數和0時返回時返回1、-1、0SQRT()平方根平方根返回返回X的平方根的平方根PI()圓周率圓周率沒有自變量,直接返回圓周率沒有自變量,直接返回圓周率INT()求整數求整數返回返回X的整數部分的整數部分CEILING()求整數求整數返回大于等于返回大于等于X的最小整數的最小整數FLOOR()求整數求整數返回小于等于返回小于等于X的最大整數的最大整數ROUND(,)四舍五入四舍五入由由Y指定指定X的舍入時小數點后的位數的舍

48、入時小數點后的位數,返回返回X的四舍五入的結果。的四舍五入的結果。MOD(,)求余數求余數返回返回X除以除以Y時的余數時的余數MAX(,.)最大值最大值返回所有自變量中的最大值返回所有自變量中的最大值MIN(,.)最小值最小值返回所有自變量中的最小值返回所有自變量中的最小值函數名函數名功能功能說明說明LEN()字符串長度字符串長度返回返回X的字節數的字節數.字符占字符占1個個,漢字占漢字占2個個LOWER()轉換為小寫轉換為小寫返回返回X所有英文字符轉換為小寫的字符串所有英文字符轉換為小寫的字符串UPPER()轉換為大寫轉換為大寫返回返回X所有英文字符轉換為大寫的字符串所有英文字符轉換為大寫的

49、字符串SPACE()空格字符串空格字符串返回返回Y個空格的空格字符串個空格的空格字符串TRIM()壓縮尾部空格壓縮尾部空格返回去掉返回去掉X尾部空格的字符串尾部空格的字符串LTRIM()壓縮前導空格壓縮前導空格返回去掉返回去掉X左部空格的字符串左部空格的字符串ALLTRIM()壓縮頭尾空格壓縮頭尾空格返回去掉返回去掉X頭尾空格的字符串頭尾空格的字符串LEFT(,)取左子串取左子串返回返回X從左部開始的從左部開始的Y個字符的字符串個字符的字符串RIGHT(,)取右子串取右子串返回返回X從右部開始的從右部開始的Y個字符的字符串個字符的字符串SUBSTR(,)取子串取子串返回返回X從中間從中間Y1位

50、置開始的位置開始的Y2個字符的字符串個字符的字符串AT(,) 子串位置子串位置返回返回X1在在X2中第中第Y次出現的首字符位置,次出現的首字符位置,區分大小寫區分大小寫STUFF(,)子串替換子串替換返回用返回用X2替換替換X1中從中從Y1位置開始的位置開始的Y2個字符個字符CHRTRAN(,)字符替換字符替換返回所有返回所有X2在在X1中的內容被中的內容被X3替換后的字符串替換后的字符串LIKE(,)字符串匹配字符串匹配返回返回X2是否和是否和X1對應位置上的內容匹配,對應位置上的內容匹配,X1可以含通配符可以含通配符函數名函數名功能功能說明說明注:注:X1,X2,X3均為字符串表達式,均為

51、字符串表達式,Y1,Y2均為數值表達式均為數值表達式函數名函數名功能功能說明說明DATE()系統日期系統日期返回系統日期返回系統日期TIME()系統時間系統時間返回系統時間返回系統時間DATETIME()系統日期時間系統日期時間返回系統日期時間返回系統日期時間YEAR()年份年份返回返回X中的年份中的年份MONTH()月份月份返回返回X中的月份中的月份DAY()天數天數返回返回X中月份里的天數中月份里的天數HOUR()小時小時返回返回Y中的小時部分(中的小時部分(24小時制)小時制)MINUTE()分鐘分鐘返回返回Y中的分鐘部分中的分鐘部分SEC()秒秒返回返回Y中的秒鐘部分中的秒鐘部分注:注

52、:X為日期型表達式或日期時間型表達式,為日期型表達式或日期時間型表達式,Y為日期時間型表達式為日期時間型表達式2.3.2.4 2.3.2.4 數據類型轉換函數數據類型轉換函數 是將某一種類型的數據轉換成另一種類型的數據。是將某一種類型的數據轉換成另一種類型的數據。 1.數值轉換成字符串數值轉換成字符串 * 格式:格式: STR(數值表達式數值表達式,長度長度,小數位數小數位數) 功能:功能: 將將數值表達式數值表達式的值轉換成字符串,轉換時根據需要自動進行四的值轉換成字符串,轉換時根據需要自動進行四舍五入。舍五入。 說明:說明: (1)返回字符串的理想長度返回字符串的理想長度L應該是應該是數值

53、表達式數值表達式值的整數部分位值的整數部分位數加上數加上小數位數小數位數值,再加上值,再加上1位小數點。位小數點。 (2)如果如果長度長度值大于值大于L,則字符串加前導空格以滿足規定的,則字符串加前導空格以滿足規定的長長度度要求;要求; (3)如果如果長度長度值大于等于值大于等于數值表達式數值表達式值的整數部分位數值的整數部分位數(包包括負號括負號)但又小于但又小于L,則優先滿足整數部分而自動調整小數位數;,則優先滿足整數部分而自動調整小數位數;2.3.2.4 2.3.2.4 數據類型轉換函數數據類型轉換函數(4)(4)如果如果長度長度值小于值小于數值表達式數值表達式值的整數部分值的整數部分位

54、數,則返回一串星號位數,則返回一串星號( (* *) )。(5)(5)小數位數小數位數的默認值為的默認值為0 0,長度長度的默認值為的默認值為1010。例例 STORE -834.456 TO XSTORE -834.456 TO X ? X=+STR(X? X=+STR(X,8 8,3)3) X=-834.456X=-834.456 ? STR(X? STR(X,9 9,2)2),STR(XSTR(X,6 6,2)2),(STR(X(STR(X,3)3),STR(XSTR(X,6)6),STR(X) STR(X) 2.3.2.4 2.3.2.4 數據類型轉換函數數據類型轉換函數 2.2.字符

55、串轉換成數值字符串轉換成數值格式:格式: VAL(VAL(字符表達式字符表達式) )功能:功能: 將由數字符號將由數字符號( (包括正負號、小數點包括正負號、小數點) )組成的字符型數據轉換成組成的字符型數據轉換成相應的數值型數據。相應的數值型數據。說明:說明: (1)(1)若字符串內出現非數字字符,那么只轉換前面部分;若字符串內出現非數字字符,那么只轉換前面部分; (2)(2)若字符串的首字符不是數字符號,則返回數值零若字符串的首字符不是數字符號,則返回數值零,但忽略前,但忽略前導空格。導空格。 例如:例如:STORE -6789TO xSTORE -6789TO xSTORE .23 TO

56、 ySTORE .23 TO ySTORE A42TO zSTORE A42TO z? ? VAL(x),VAL(x+y),VAL(x+z),VAL(z+yVAL(x),VAL(x+y),VAL(x+z),VAL(z+y) ) 2.3.2.4 2.3.2.4 數據類型轉換函數數據類型轉換函數3.字符串轉換成日期或日期時間字符串轉換成日期或日期時間格式:格式:CTOD(字符表達式字符表達式)CTOT(字符表達式字符表達式)功能:功能:CTOD()將將字符表達式字符表達式值轉換成日期型數據。值轉換成日期型數據。CTOT()將將字符表達式字符表達式值轉換成日期時間型數據。值轉換成日期時間型數據。說明

57、:說明:字符串中的日期部分格式要與字符串中的日期部分格式要與SET DATE TO 命令設置的格式一致。其中的年份可命令設置的格式一致。其中的年份可以用四位,也可以用兩位。如果用兩位,則世紀由以用四位,也可以用兩位。如果用兩位,則世紀由SET CENTURY TO 語句指定。語句指定。例如:例如: SET DATE TO YMD SET CENTURY ON &顯示日期或日期時間時,用顯示日期或日期時間時,用4位數顯示年分位數顯示年分 SET CENTURY TO 19 ROLLOVER 51 d1=CTOD(20030725) t1=CTOT(20030725+TIME() ? d1

58、,t1,CTOD(500101),CTOD(510101)這里,這里,SET CENTURY TO語句指定:小于語句指定:小于51的兩位數年份屬于的兩位數年份屬于21世紀世紀(19+1),而大于等,而大于等于于51的兩位數年份屬于的兩位數年份屬于20世紀世紀(19)。2.3.2.4 2.3.2.4 數據類型轉換函數數據類型轉換函數 4.4.日期或日期時間轉換成字符串日期或日期時間轉換成字符串格式:格式: DTOC(DTOC(日期表達式日期表達式| |日期時間表達式日期時間表達式,1 1) ) TTOC(TTOC(日期時間表達式日期時間表達式,1 1) )功能:功能: DTOC()DTOC()將

59、日期型數據或日期時間數據的日期部分轉換成字符串將日期型數據或日期時間數據的日期部分轉換成字符串 TTOC()TTOC()將日期時間數據轉換成字符串。將日期時間數據轉換成字符串。說明:說明: (1)(1)字符串中日期部分的格式與字符串中日期部分的格式與SET DATE TOSET DATE TO語句的設置和語句的設置和SET SET CENTURY ON|OFF(ON CENTURY ON|OFF(ON 為四位年份,為四位年份,OFFOFF為兩位數年份為兩位數年份) )語句的設語句的設置有關。置有關。 (2)(2)時間部分的格式與時間部分的格式與SET HOURS TO 12|24SET HOU

60、RS TO 12|24語句的設置有關。語句的設置有關。 (3)DTOC()(3)DTOC()函數,如果使用選項函數,如果使用選項1 1,則字符串的格式總是,則字符串的格式總是YYYYMMDDYYYYMMDD,共,共8 8個字符。對個字符。對TTOC()TTOC()來說,如果使用選項來說,如果使用選項1 1,則字,則字符串的格式總是為符串的格式總是為YYYYMMDDHHMMSSYYYYMMDDHHMMSS,采用,采用2424小時制,共小時制,共1414個字個字符符. .例如:例如: STORE DATETIME() TO tSTORE DATETIME() TO t ? t? t 0808252503 10:5

溫馨提示

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

評論

0/150

提交評論