530 likes | 621 Views
第三章 Visual FoxPro 数据基础. 3.1 数据类型. 1 、字符型( C) (用户可定义宽度) 26 个英文字母、 10 个数字、各种符号、空格、汉字等组成,长度最大为 254 个 (英文)字符。 2 、数值型( N 、 F 、 B 、 I ) (用户可定义宽度) 1 )数值型 ( N ) 20 位数字、符号、小数点 2 )浮点型 ( F) 20 位数字、符号、小数点 3 )双精度型( B) 8 个字节存储 4 )整形 ( I) 4 个字节存储 3 、逻辑型( L ) (系统固定宽度 = 1 )
E N D
3.1 数据类型 1、字符型(C)(用户可定义宽度) 26个英文字母、10个数字、各种符号、空格、汉字等组成,长度最大为254个 (英文)字符。 2、数值型(N、F、B、I) (用户可定义宽度) 1)数值型 (N) 20位数字、符号、小数点 2)浮点型 (F) 20位数字、符号、小数点 3)双精度型(B) 8个字节存储 4)整形 (I) 4个字节存储 3、逻辑型(L) (系统固定宽度 = 1 ) 只有两个: 真 , 假
3.1 数据类型 4、日期型(D)、日期时间型(固定宽度 = 8 ) 默认格式 mm/dd/yy mm/dd/yy tt:mm:ss 月/日/年 月/日/年 时:分:秒 5、货币型(Y)(用户可定义宽度) 表示货币的量。 6、备注型(M)(固定宽度 = 4 ) 只用于表的字段定义,用于指示备注内容在备注文件中的位置。 7、通用型(G)(固定宽度 = 4 ) 只用于表的字段定义,用于指示多媒体信息的位置。
3.2 常量6种 常量:运行过程中始终不改变值的量,用于数据输入、表达式中。 1、N型(数值)常量 注意与C型常量的区别:‘3.15’—— 3.15 2、C型(字符)常量 必须以定界符定界,有三种定界符: “Hello ”、 ‘5.2345 ’、 [ Yes,Sir ! ] 可以混合使用:“I’ m a teacher . ”
3.2 常量6种 3、L型(逻辑)常量 真: .T. 、 .t. 、.Y. 、 .y. 假: .F. 、 .f. 、.N. 、 .n. 注意 1)两个点不要省略; 2)与C型常量的区别:‘.T.’、”.f.”、[.F.] 4、F型(浮点)常量-科学计数法 -2.47e+3、 1.56E-2 注意与C型常量的区别: ‘-2.47e+3’、 “1.56E-2 ”
3.2 常量6种 5、D型(日期)常量{ } 与 ^ (Shift + 6 键) 1){^02-06-24 } 或: {02-06-24 } 使用set strictdate to 0后 2){^2002-06-24 } 使用set strictdate to 1 或 set strictdate to 2后 3) 使用转换函数: CTOD(“06/24/02”)将字符串转化为日期 ( Characters Translate tO Date ) 注意 1)两种方式下格式的不同; 2)与 N 型常量的区别:05/24/02 = 0.125 (N型)
3.2 常量6种 6、T型(日期时间)常量 1){ ^02-06-24 15:24:32 } 或 { 02-06-24 15:24:32 } 使用 set strictdate to 0后 2){^2002-06-24 15:24:32} set strictdate to 1 或 set strictdate to 2后 3)使用转换函数 CTOT(“06/24/02 14:16:08”)
3.3 变量(掌握) 使用过程中可以通过输入、赋值等方式改变的量。有内存变量、字段变量、数组变量、系统变量。 1、内存变量 独立存在于内存,临时存储用,退出VFP时清除。 1)变量名:字母、数字、下划线、汉字开头; 最长为254个(英文)字符。 2)变量类型:N、F、C、L、D、T 当前值类型是什么,变量类型就是什么。 3)变量创建: 赋值时自动创建。 随着被赋值,变量同时获得变量值与变量类型。 STORE、INPUT、=、WAIT、ACCEPT、COUNT、SUM等
3.2 变量(掌握) 2、内存变量赋值命令 1) STORE 一次可以给一个或多个变量同时赋予同一个值。 STORE 1 TO X,Y,Z && x、y、z都为1 2) = 一次给一个变量赋予一个值。 X=1 Y=1 Z=1
3.2 变量(掌握) 3、输出命令 1) ?<输出量列表> 2) ??<输出量列表> 输出量可以是常量、变量、表达式、函数等,多个输出量之间以逗号分隔。一个输出前换行,一个不换行。 STORE 77 TO S STORE ‘良’TO D ? “成绩为”,S,’分’ ??“ 等级:” , D 输出 成绩为 77 分 等级: 良 STORE 77 TO S STORE ‘良’TO D ? “成绩为”,S,’分’ ?“ 等级:” , D 输出 成绩为 77 分 等级: 良
3.3 变量P (掌握) 数组是一组数据的集合,这些数据具有共同的名字:数组名,各数据由各不相同的整数下标相互区分,并通过数组名+下标来访问。 数组的每个成员称为数组元素或下标变量,一个数组被看成是一个内存变量。 1)数组的定义: 格式:DIMENSION 数组名(<数值型表达式1> [,<数值型表达式2>]) [……] 4、数组
3.3 变量(掌握) 例如: DIME X(30),W(3,2) 定义一维数组X(30)、有30个下标变量(元素) 二维数组W(3,2)。有6个(2*3)数组元素。 各数组元素(下标变量)的类型可以各不相同,初值都是逻辑型的 .F. • 数组名后的一对圆括号不能省略,圆括号中有几个数值型表达式,数组就是几维数组。 • 命令 X=1, 或 STORE 1 TO X,将给数组每个下标变量赋值为1,数据类型为 N 型。
3.3 变量(掌握) 2)数组的使用: • 数组名(下标)可以访问该数组中下标指定的数组元素。 • 例如: DIME X(4) && 定义一维数组X X(1)=20 && X(1)是 N 型 X(2)=‘ASDF’ && X(2)是 C 型 X(3)=CTOD(”01/21/97’ ) && D 型 Z=X(2) ?X(1),X(2),Z 输出: 20 ASDF ASDF
3.3 变量(掌握) • 二维数组数据在内存中的存放顺序为:先行后列,(先第一个下标,后第二个下标),可以用一维数组的形式访问二维数组。 • 例如:DIME X(3,2) • 内存顺序 等价的一维数组形式 • X(1,1) X(1) • X(1,2) X(2) • X(2,1) X(3) • X(2,2) X(4) • X(3,1) X(5) • X(3,2) X(6) • 问题:若定义DIME Y(4,5),则 • Y(15)对应Y(?,?)
3.3 变量(掌握) 1) 定义:是建立数据表结构时所定义的字段名。 用于存储字段的值。是一种多值变量。 2)字段变量的类型:N、C、F、B、I、L、D、T、M、G 数值、字符、浮点、双精度、整型、日期、日期时间、备注、通用型 请注意理解字段的变量性。 5、字段变量 6、系统变量 系统定义的、用于控制输出、显示格式的量,以下划线‘_’开头。 如_pageno,控制输出报表页号
3.4 运算符与表达式(掌握) 表达式是由常量、变量、函数、运算符构成的运算式,根据参与运算的量的性质,分为算术表达式、字符表达式、关系表达式、日期(日期时间)表达式和逻辑表达式 。 1、算术(N型)表达式 参与量:N型常量、内存及字段变量、函数、数组等; 运算符:+、-、*、/、%、 **或 ^ (按优先级顺序) 求余 乘方 结果: N型值
3.4 运算符与表达式(掌握) C+D应怎样表达 ? A+B 应该是:(C + D ) / ( A + B ) 在一般的算术表达式转换为计算机表达式的时候,一定要注意逻辑上的正确性,往往需要增加适当的括号。
3.4 运算符与表达式(掌握) 2、字符(C型)表达式 参与量:C型常量、内存及字段变量、函数、数组等; 运算符:+、-、 (按优先级顺序) 结果: +、- C型值 字符 +:两个字符串严格拼接; 字符 -:第一个字符串的后尾空格将移到结果串的尾部。 例 ? “ABC”+”DEFG”结果为:“ABCDEFG” ? “123 ”+ “2345”“123 2345” ? “123 ”- “2345”“1232345 ”
3.4 运算符与表达式(掌握) 3、关系表达式——比较运算 参与量:算术表达式、字符串表达式、常量、内存变量、字段变量、函数。 运算符:<、<=、>、>=、=、 <>或 # 或!= == (精确等于)、$包含(仅用于字符串比较) 结果: 结果总是 L 型(真或假) (注:关系符两边的数据类型要相同) 例: ?“A”<“Bd”?123>345 ?1000<>123 ?8>=2*4 ?“456”>”123”?“计算机”=“计算” ?“计算”==“计算机” .T. .F. .T. .T. .T. .T. .F.
3.4 运算符与表达式(掌握) 串1$串2:判断串1是否在串2中,返回.T.或.F.(L型) 例2 设 a='123456 ' ,b='23 ' ,c= '567 ' ?b$a&& 等价于 ‘23 ‘包含于'123456 ' 结果为: .T. ?c$a&& 等价于 ‘567‘包含于'123456 ' 结果为: .F.
3.4 运算符与表达式(掌握) 4、日期、日期时间表达式 参与量:算术表达式,日期型常量、内存变量、 字段变量和函数构成。 运算符:+、- (算术运算符) 结果: D型 + N型 ——》D型 T型 + N型 ——》T型 D型 - N型 ——》D型 T型 - N型 ——》T型 D型 - D型 ——》N型 T型 - T型 ——》N型 例: ? Ctod(“06/19/02”)+10 输出结果为:06/29/02 && 10天后的日期 ?ctod(“10/25/96”)-ctod(”10/10/96”) 输出结果为:15 && 两个日期间相差的天数
相关命令 1) Set strictdate to 0通用的日期格式 1(默认) 严格的日期格式 2严格的日期格式 严格的日期格式: 严格的日期时间格式 {^2002-05-18} {^2002-05-18 07:28:00} 通用的日期格式 通用的日期时间格式 {^2002-05-18} {^2002-05-18 07:28:00} {02-05-18} {02-05-18 07:28:00} {05/18/02} {05/18/02 07:28:00} {^05/21/95} {^05/18/02 07:28:00} 2)set century on / off(默认) 显示4位/2位年份 3.4 运算符与表达式(掌握)
3.4 运算符与表达式(掌握) 5、逻辑表达式首先掌握逻辑运算规则表 First! 参与量:由关系型表达式、逻辑型常量、内存变量、字段变量、函数构成。 运算符:.AND.(逻辑与)、.OR.(逻辑或)、 .NOT.或 !(逻辑非) 运算顺序:括号、非! 、与(且) .AND. 、或.OR. 结果:逻辑值 .T.(真)或.F.(假) 。
3.4 运算符与表达式(掌握) 逻辑运算真值表 例: 设 X=34,Y=23 ? x>2.or.y<120 结果 .T. ? x>12.and.x<100 结果 .T. ? !X>0.AND.Y=22 结果 .F.
要点4 表达式P10 (掌握) 表达式运算优先顺序 如果表达式有各种类型的运算符时,其运算顺序: 函数 高 圆括号 算术运算符和字符串运算符 关系运算符 逻辑运算符 低
要点4 表达式P11 (掌握) 例如:设有字段:出生日期(D)、职称(C)、基本工资(N) 1. 1960年以后出生的未晋升高级职称者,或工资低于800元者: 出生日期-CTOD(”01/01/60”)>=0 .AND.!”教授”$职称.OR.基本工资<800 2. 1960年以后出生的,未晋升高级职称或工资低于800元者: year(出生日期)>=1960.AND. (!”教授”$职称.OR.基本工资<800)
3.5 常用函数(掌握) 常用函数是由系统提供,完成某一具体功能的系统函数,由函数名、圆括号(不能省)、参数表(括号内)构成。根据函数功能或返回值的性质,分为数值函数、字符函数、日期(日期时间)函数、转换函数和测试函数 。 对每个函数,应记住: 1)函数功能与函数名; 2)返回值类型与意义; 3)参数个数、类型、意义。
3.5 常用函数P(掌握) 5.1数值函数 1. 取整函数 【格式】 INT(<数值型表达式>) 【功能】 计算数值型表达式的值,取其整数部分。 2. 绝对值函数 【格式】 ABS(<数值型表达式>) 【功能】求数值型表达式的绝对值。 3. 最大值函数 【格式】 MAX(<数值型表达式1>,<数值型表达式2>) 【功能】计算两个数值型表达式的值,取其中较大者
3.5 常用函数(掌握) 4. 最小值函数 【格式】 MIN(<数值型表达式1>,<数值型表达式2>) 【功能】计算两个数值型表达式的值,取其较小者。 5. 平方根函数 【格式】 SQRT(<数值型表达式>) 【功能】计算数值型表达式的算术平方根。 6. 指数函数 【格式】 EXP(<数值型表达式>) 【功能】计算以e为底的指数幂。 7. 对数函数 【格式】 LOG(<数值型表达式>) 【功能】计算数值型表达式的自然对数值。
3.5 常用函数(掌握) 8. 四舍五入函数 【格式】 ROUND(<数值型表达式>,<小数保留位数>) 【功能】计算数值型表达式的值,根据小数保留位数进行四舍五入,当小数保留位数为n(≥0)时,则对小数点后第n+1位四舍五入;当小数保留位数为负数n时,则对小数点前第|n|位四舍五入。 【例3-14】 ?ROUND(53.6279,2)结果为:53.63 ?ROUND(53.6279,0)结果为:54 ?ROUND(8375.62,-2)结果为:8400
3.5 常用函数(掌握) 9. 求余函数 【格式】 MOD(<数值型表达式1>,<数值型表达式2>) 【功能】计算数值型表达式1除以数值型表达式2的余数,其中数值型表达式2的值不能为0,而余数的符号与数值型表达式2的符号相同。 【例3-15】 ?MOD(10,3)结果为:1 ?MOD(-10,-3)结果为:-1 ?MOD(10,-3)结果为:-2 ?MOD(-10,3)结果为:2
3.5 常用函数(掌握) 二、字符函数 1. 宏代换函数& 【格式】 &<字符型内存变量>[.<字符型表达式>] 【功能】在字符型内存变量前使用宏代换函数符号&,将用该内存变量的值去替换&和内存变量名。如后面紧接有其它字符表达式时,应加园点.进行分隔。 【例3-16】 aa=‘DBMS’ bb=‘aa’ ?aa,bb,&bb 结果为:DBMS aa DBMS a1=‘+5*8 ’ a2=‘5&a1./5’ ?&a2 结果为:13
3.5 常用函数(掌握) 2. 字符串长度函数 【格式】 LEN (<字符型表达式> ) 【功能】测试字符串长度,返回值为数值型。 4. 空格生成函数 【格式】 SPACE(<数值表达式>) 【功能】产生由数值型表达式代表数目的空格,返回值为字符型。
3. 查找子字符串位置函数 【格式】 AT(<字符型表达式1>,<字符型表达式2>[,<数值型表达式>]) 【功能】查找字符型表达式1在字符型表达式2中的位置,返回值为数值型。 如有数值型表达式n,则返回字符型表达式1在字符型表达式2中第n次出现的起始位置, 如果字符型表达式1不在字符型表达式2中,返回值为0。 【例3-18】 ?AT(“n”,“Internet”,2) 结果为:6 ?AT(“n”,”Internet”) 结果为:2 3.5 常用函数(掌握)
3.5 常用函数(掌握) 5. 取子字符串函数 【格式】 SUBSTR(<字符型表达式>,<数值型表达式1> [,<数值型表达式2>]) 【功能】在字符型表达式中,截取一个子字符串,函数的返回值为字符型。 【例3-20】 ?SUBSTR(“面向对象程序设计”,9,4) 结果为:程序 ?SUBSTR(“Microsoft PowerPoint”,11,5) 结果为: Power
3.5 常用函数(掌握) 6. 取左子串函数 【格式】 LEFT(<字符型表达式>,<数值型表达式>) 【功能】在字符型表达式中,从左边开始截取数值型表达式指定的字符个数,返回值为字符型。 【例3-21】?LEFT(“面向对象程序设计”,8) 结果为:面向对象 7. 取右子串函数 【格式】 RIGHT(<字符型表达式>,<数值型表达式>) 【功能】在字符型表达式中,从右边开始截取数值型表达式指定的字符个数,返回值为字符型。 【例3-22】?RIGHT(“面向对象程序设计”,8) 结果为:程序设计
3.5 常用函数(掌握) 三、转换函数 1. 大写转小写函数 【格式】 LOWER(<字符型表达式>) 【功能】将字符型表达式中的大写字母转换为小写字母,返回值为字符型。 2. 小写转大写函数 【格式】 UPPER(<字符型表达式>) 【功能】将字符型表达式中的小写字母转换为大写字母,返回值为字符型。
3.5 常用函数(掌握) 3. 字符串转日期函数 【格式】 CTOD(<字符型表达式>) 【功能】将日期形式的字符串转换为日期数据,返回值为日期型。 【例3-25】 ?CTOD(“07/01/97”)结果为:07/01/97
3.5 常用函数(掌握) 4. 日期转字符串函数 【格式】 DTOC(<日期型表达式>/<日期时间型表达式>[,1]) 【功能】返回对应日期型表达式或日期时间型表达式的字符串,返回值为字符型。如有可选项[,1],则以年月日的格式输出。 【例3-26】 x=CTOD(“07/01/97”) && x为日期型 ?DTOC(x)结果为:07/01/97 (字符型) ?DTOC(x,1)结果为:19970701 (字符型)
3.5 常用函数(掌握) 5. 数值转字符串函数 【格式】 STR(<数值型表达式1>[,<数值型表达式2> [,<数值型表达式3>]]) 【功能】将数值型表达式1代表的实际数值转换为字符串,返回值为字符型。 数值型表达式2确定返回字符串的长度,数值型表达式3确定返回字符串的小数位数,
3.5 常用函数(掌握) 5. 数值转字符串函数 【格式】 STR(<数值型表达式1>[,<数值型表达式2> [,<数值型表达式3>]]) 【例3-27】 ??STR(256.4,6,2),STR(256.4,5) , STR(256.4) ?STR(256.47,5,2),STR(10256.47,4,2) 结果为:256.40 256 256 256.5 ****
3.5 常用函数(掌握) 6.字符串转数值型函数 【格式】 VAL(<字符型表达式>) 【功能】将数字字符串转换为数值型数据,返回值为数值型。转换时,遇到第一个非数字字符时停止。 【例3-28】 ?VAL(“1024M”), VAL(“GB2312-80”) 结果为:1024 0.00
3.5 常用函数P(掌握) 7. 字符转ASCII码函数 【格式】 ASC(<字符型表达式>) 【功能】返回字符型表达式中第一个字符的ASCII码,返回值为数值型。 【例3-29】 ?ASC(“ABC”)结果为:65 8. ASCII码转字符函数 【格式】CHR(<数值型表达式>) 【功能】将ASCII码转换为相应字符。返回值为字符型。 【例3-30】 ?CHR (97)结果为:a
3.5 常用函数(掌握) 四、日期时间函数 1. 系统当前日期函数 【格式】 DATE() 【功能】返回系统当前日期,返回值为日期型。默认格式为MM/DD/YY, 2. 系统当前时间函数 【格式】 TIME() 【功能】返回系统当前时间,返回值为字符型,默认格式为HH:MM:SS。
3.5 常用函数(掌握) 3. 年函数 【格式】 YEAR(<日期型表达式/<日期时间型表达式>>) 【功能】返回日期型表达式或日期时间型表达式的年份值,返回值为数值型。 4. 月函数 【格式】 MONTH(<日期型表达式/<日期时间型表达式>>) 【功能】返回日期型表达式或日期时间型表达式的月份值,返回值为数值型。
3.5 常用函数(掌握) 5. 日函数 【格式】DAY(<日期型表达式/<日期时间型表达式>) 【功能】返回日期/日期时间型表达式的日的数值,返回值为数值型。 6. 星期函数 【格式】 ①DOW(<日期型表达式/<日期时间型表达式>) ②CDOW(<日期型表达式/<日期时间型表达式>) 【功能】返回日期/日期时间型表达式所对应的星期号。 格式①的返回值为数值型,星期日为1、星期一为2、星期六为7; 格式②的返回值为字符型,是星期号的英文名称。
3.5 常用函数(掌握) 五、测试函数 1. 值域测试函数 【格式】 BETWEEN(<表达式1>, <表达式2> , <表达式3> ) 【功能】 测试一个表达式的值是否介于另外两个表达式的值之间。当<表达式1>的值大于等于<表达式2>且小于等于<表达式3>时,函数返回值为逻辑真(.T.),否则为逻辑假(.F.)。 2. 空值测试函数 【格式】 ISNULL( <表达式>)(NULL空值不包含有效数据) 【功能】 判断一表达式的运算结果是否为NULL值,如果为NULL值,函数返回值为逻辑真(.T.),否则为逻辑假(.F.)。
3.5 常用函数(掌握) 五、测试函数 1. 文件起始测试函数 【格式】 BOF([<工作区号或别名>]) 【功能】测试当前或指定工作区中数据表的记录指针是否指向第一条记录之前。返回值为逻辑型。 2. 文件结束测试函数 【格式】 EOF([<工作区号或别名>]) 【功能】测试当前或指定工作区中数据表的记录指针是否指向最后一条记录之后。返回值为逻辑型,
3.5 常用函数(掌握) 3. 当前记录号测试函数 【格式】 RECNO([<工作区号或别名>]) 【功能】测试当前或指定工作区中数据表的当前记录号,即记录指针当前指向的记录号。返回值为数值型。 4. 查询结果测试函数 【格式】 FOUND([<工作区号或别名>]) 【功能】在用命令LOCATE/CONTINUE、FIND、SEEK后测试是否找到,返回值为逻辑型。
3.5 常用函数(掌握) 5. 文件存在测试函数 【格式】 FILE(<文件名>) 【功能】测试在系统中指定的文件是否存在,返回值为逻辑型。如果存在,返回.T.;否则返回.F.。<文件名>必须给出扩展名并放在定界符(‘’、“”或[ ])中。 6. 数据表文件存在测试函数 【格式】 DBF([<工作区号或别名>]) 【功能】返回当前或指定工作区中的数据表文件名,返回值为字符型。如没有打开的数据表文件,则返回空串。