《第三章 VFP6语言基础》由会员分享,可在线阅读,更多相关《第三章 VFP6语言基础(84页珍藏版)》请在金锄头文库上搜索。
1、第三章Visual FoxPro语言基础,数据库管理系统,1,1. 常量 常量就是在工作过程中其值不发生变化的量。常量有四种类型: (1) 数值型常量(Numeric,简称N型) 数值型常量又称常数,是由阿拉伯数字、正负号和小数点组成的可以进行算术运算的数。可用科学计数法表示。,3.1 常量、变量、数据类型,2,(2) 字符型常量(Character,简称C型) 字符型常量又称字符串,是由ASCII字符和汉字组成的一串字符。 VFP规定字符型常量最多包含254个字符(一个汉字占2个英文字符位置)。 字符串须用定界符。定界符有三种:单引号()、双引号(“ ”)和方括号(、)。 当字符串本身含有其
2、中一种符号时,选用另一种符号作为定界符。 比如:Fox、“123”、程序设计,3.1 常量、变量、数据类型,3,(3) 日期与日期时间型(Date,简称D型) 日期型常量必须用花括号括起来,例如06/30/00,06/30/99,空白的日期可表示为或/。 系统默认为美国格式06/30/99 代表1999年6月30日。可用SET DATE 命令设定。ANSI yy.mm.dd BRITISH dd/mm/yyMDY mm/dd/yy DMY dd/mm/yyYMD yy/mm/dd,3.1 常量、变量、数据类型,4,可用命令 SET CENTURY ON|OFF 设置日期中是否带世纪,系统默认为
3、OFF。 执行命令 SET CENTURY ON则 09/30/2000正确,代表2000年6月30日。 日期时间型常量的写法为 9/15/99 8:45,空白的日期时间可表示为/:,3.1 常量、变量、数据类型,5,严格的日期格式: yyyy-mm-dd,hh:mm:ssa|p 符号表明该日期是严格格式. 其中的-号可用/代替 VFP60默认使用严格的日期格式,可用 SET STRICTDATE TO 0|1 命令设置:1 :严格日期格式0 :普通日期格式,3.1 常量、变量、数据类型,6,(4) 逻辑型常量(Logical,简称L型) 逻辑型常量的具体值只可能有两种:“真”和“假” VFP
4、规定: 逻辑“真” 用.T.或.Y.、.t.、.y.表示,但系统一律转换为.T.存储。 逻辑“假” 用.F.或.N.、.f.、.n.表示,但系统一律转换为.F.存储。,3.1 常量、变量、数据类型,7,(5) 货币型常量 货币型常量以$符号开头,并四舍五入保留4位小数。 例如货币型常量$100.12345,代表: 100.1235,3.1 常量、变量、数据类型,8,2. 变量 在命令操作和程序运行过程中其值允许变化的量称变量。 变量包括3种: 内存变量 简单变量 数组 字段变量 系统变量 对象变量,3.1 常量、变量、数据类型,9,1) 内存变量 内存变量的三个属性:变量名、类型和值。 变量名
5、以字母(也可汉字)或下划线开头,由字母、数字、下划线组成,至多128个字符的字符串。不可与系统保留字同名。 变量的类型内存变量没有固定的类型,用户把什么样的常量数据存入其中,它就具有什么类型。所以,内存变量也有数值(N)型、字符(C)型、逻辑(L)型、日期(D)型等类型。,3.1 常量、变量、数据类型,10,赋值把数据存入内存变量的操作叫“赋值”,用赋值命令实现。该命令有两种格式:格式1:STORE TO 格式2:= 格式1可一次给多个变量赋值,变量用逗号分隔 格式2一次只能给一个变量赋值 实例:s=VFPSTORE 2*4 TO n1, n2, n3date=09/30/00vl=.T.,3
6、.1 常量、变量、数据类型,11,输出变量格式1: ? 格式2: ? 格式1换行输出值 格式2同一行输出值 实例:?s? n1, n2, n3?date?vl,3.1 常量、变量、数据类型,12,2) 数组 数组是按一定顺序排列的一组内存变量,数组中的各个变量称为数组元素。数组必须先定义后使用。 数组的定义 命令格式:DIMENSION | DECLARE (m1,n1) ,(m2,n2) 功能:定义一维或二维数组,及其下标的上界。 说明:a. 系统规定各下标的下界为1。,3.1 常量、变量、数据类型,13,b. VFP最多可定义65000个数组,每个数 组最多可包含65000个元素。c. 实
7、例 DIMENSION x(3), a(2,3) 数组x下标的上界为3,该数组有3个数 组元素: x(l),x(2), x(3) 数组a具有2行3列6个元素,分别为: a(1,1),a(1,2),a(1,3), a(2,1),a(2,2), a(2,3),3.1 常量、变量、数据类型,14,数组的赋值 数组定义后各数组元素的初值为.F. 数组的元素可取不同类型,且可改变 对数组的赋值同对普通变量的赋值 可为单个数组元素赋值 x(1)=3 a(1,1)=“fox” a(1,3)=.f. 只指定数组名为各元素赋相同值 x=1.20 二维数组可按一维数组来存取 a(5)=“山大” &相当于 a(2,
8、2)= “山大”,3.1 常量、变量、数据类型,15,3) 内存变量的显示 命令格式: LIST | DISPLAY MEMORY LIKE TO PRINTERPROMPT TO FILE 功能:显示当前已定义的内存变量名、作用范围、类型和值。 说明:a. LIKE子句显示与通配符匹配的内存变 量,通配符:? 代表单个任意字符 * 代表一串任意字符。,3.1 常量、变量、数据类型,16,b. TO PRINTER 将显示内容输出到打印机 c. TO FILE 将显示内容存人文件 实例 LIST MEMORY LIKE ? n1 Pub N (800000000) n2 Pub N (8000
9、00000) n3 Pub N (800000000),3.1 常量、变量、数据类型,17,4) 内存变量的清除 命令格式:RELEASE | ALL LIKE | EXCEPT 功能: 从内存清除指定的内存变量。 例RELEASE a,bRELEASE ALLRELEASE ALL LIKE a*RELEASE ALL EXCEPT ?b*,3.1 常量、变量、数据类型,18,用特定的运算符把各种类型数据连接起来,这就是表达式。 根据表达式的值和运算种类的不同,表达式分为五种:, 数值型 关系型 字符型 逻辑型 日期型,3.2 表达式,19,1) 数值型表达式,数值型表达式又称为算术表达式,
10、由算术运算符把数值型运算量连接而成。运算结果为数值型。 算术运算符(按运算优先级从低到高): 乘方 * 或 高 乘 * 除 / 求余 % 加 + 减 - 低,3.2 表达式,20,VFP算术表达式与数学中算术式书写规则的不同。 用括弧改变运算次序 例如: 乘号要用*,不能用“ ”或“ ”号 数学式3ab 3*a*b 数学式xy x/y,3.2 表达式,21,2) 字符型表达式,字符型表达式又称字符串连接,由字符连接运算符将字符型运算量连接而成。运算结果仍为字符型。 直接连接 + 移空连接 将前一个字符串尾部的空格移到连接后的字符串尾部,3.2 表达式,22,例如 STORE “Data ” T
11、O a b=“Base” ? a+b Data Base ? a-b DataBase 注意:DataBase尾部有一空格。,3.2 表达式,23,3) 日期型表达式,两个日期型数据只能作减法运算,结果为两个日期相差的天数,为数值型数据。 SET STRI TO 0 ? 12/31/99-12/31/98 365 日期型数据可和数值型数据作减法或加法运算,表示增加或减少的天数,结果为日期型数据。 ? 06/30/98-6 06/24/98,3.2 表达式,24,两个日期时间型数据只能作减法运算,结果为两个日期相差的秒数,为数值型数据。SET STRI TO 1? 1998/09/01 12:0
12、1-1998/0901 12:00 60 一个日期时间型数据可和一个数值型数据作减法或加法运算,其中的数值型数据代表增加或减少的秒数,结果为日期时间型数据。 SET STRI TO 0 ? 09/01/1998 12:00 am+60 09/01/1998 12:01:00 pm,3.2 表达式,25,4) 关系型表达式,关系运算符,又称比较运算符:等于 = 不等于 或# 或!=小于 大于或等于 =字符串精确相等 =子字符串包含 $ :左串是右串子串为真 关系表达式的结果为逻辑 “真”(.T.),或逻辑 “假”(.F.),3.2 表达式,26,数值的比较,数值型数据按照数值的大小进行比较。 例
13、如: a=4 b=5 STORE a=b TO x ? a, b, x 4 5 .F.,3.2 表达式,27,字符串的比较,单个英文字母、数字字符和标点符号等的大小顺序按照其ASCII码值排列。 汉字字符按其内码顺序确定大小(常用国标一级汉字按拼音顺序排列)。 字符串比较时从左边第一个字符开始逐个比较,最先发现的不一样的字符彼此是什么关系,相应的字符串之间就是什么关系。,3.2 表达式,28,说明: 当用“=”号比较两个字符型数据是否相等时,结果与SET EXACT 的状态有关: SET EXACT OFF时,只要右边那个字符串与左边字符串的首部子串相等即可; SET EXACT ON时,左右
14、两个字符串必须完全一样才认为相等。 用=号比较两个字符型数据是否相等时,结果与SET EXACT 的状态无关,左右两个字符串必须完全一样才认为相等。,3.2 表达式,29,实例: a=FRANCIS b=FRIEND STORE a=物理 .T. .T. .F. ?AB=A,A=AB,AB=A,AB=AB .T. .F. .F. .T. . SET EXACT ON ? “AB=A,A=AB,AB=A,AB=AB .F. .F. .F. .T.,3.2 表达式,30,日期的比较,两个日期型数据比较时按照日期的先后进行比较。例如: SET STRI to 0 d1=02/16/91 d2=03/
15、25/88 ? d1d2, d2d1 .T. .F.,3.2 表达式,31,5). 逻辑型表达式,由逻辑运算符将关系表达式或逻辑型数据连接而成,其运算结果仍为逻辑值。 逻辑运算符 逻辑非 NOT 逻辑与 AND 逻辑或 OR 注:FoxBASE 要求运算符两侧加园点: .OR. 、.AND. 、 .NOT.。,3.2 表达式,32,逻辑运算符的运算规则,3.2 表达式,33,说明 一般而言,逻辑表达式描述一个复合条件 “年龄在25岁至35岁之间”,不能写成:25=25 AND 年龄=35 “年龄为19、20岁的男同学”应表示为:(年龄=19 OR 年龄=20) AND 性别=男,3.2 表达式
16、,34,6) 表达式小结 一个复杂的表达式进行运算处理时,首先分别计算各个算术表达式、字符表达式之值,然后进行关系(比较)运算,最后进行逻辑运算,从而得出一个具体的运算结果。 可以用圆括弧改变运算顺序。圆括弧还可以嵌套,最内层括弧的运算最优先。书写表达式时一定要注意圆括弧必须成对使用,而且建议凡是容易混淆的地方尽量采用圆括弧。,3.2 表达式,35,3.3 函数,函数是VFP的又一种运算成份,其格式为: ( ) 每一个函数有一个函数值。函数有数值、字符、日期、逻辑四种类型。 函数象其它常量、变量一样,作为表达式一个数据元素参与进一步的处理运算。 函数的自变量个数、类型和书写顺序都有规定,使用时必须按规定书写,36,(一) 数学运算函数,自变量和得到的函数值均为数值型。 ABS(X):取绝对值函数 (2) INT(X):取整函数函数值为自变量X的整数部分。 ? INT