940 likes | 1.06k Views
数据库原理与应用. 非计算机应用专业教材. 李明 科学出版社. [ 学习目标 ]. 了解 Visual FoxPro 的工作方式; 了解程序的调试方法。 掌握常用的数据类型的使用,以及相互转换; 掌握常量、变量、表达式和常用的函数定义及使用; 掌握程序的基本结构;. 7.1 Visual FoxPro 的工作方式. Visual FoxPro 系统有两种工作方式: 即交互方式及程序运行方式。 1 .交互方式 单命令方式 : 所谓单命令方式,即输入一条指令,完成一个操作的工作方式。 菜单方式 : 即通过打开不同的菜单选择并完成不同的操作。. 目 录.
E N D
数据库原理与应用 非计算机应用专业教材 李明 科学出版社
[学习目标] • 了解Visual FoxPro的工作方式; • 了解程序的调试方法。 • 掌握常用的数据类型的使用,以及相互转换; • 掌握常量、变量、表达式和常用的函数定义及使用; • 掌握程序的基本结构;
7.1 Visual FoxPro的工作方式 • Visual FoxPro系统有两种工作方式: • 即交互方式及程序运行方式。 • 1.交互方式 • 单命令方式:所谓单命令方式,即输入一条指令,完成一个操作的工作方式。 • 菜单方式:即通过打开不同的菜单选择并完成不同的操作。
目 录 • 7.1 Visual FoxPro的工作方式 • 7.2 数据类型 • 7.3 变量与常量 • 7.4 表达式 • 7.5 函 数 • 7.6 程序与程序文件 • 7.7 程序的基本结构 • 7.8 多模块程序 • 7.9 程序调试
2.程序运行方式 • 所谓程序运行方式,即通过程序文件(程序)中的命令完成不同的操作。程序主要由命令或语句组成,同时还包括对数据进行存储和描述的元素,例如:常量、变量、数组、表达式、运算符,以及函数等。
7.2 数据类型 • 1.字符型 • 字符型(Character)数据是不具备计算能力的文字数据类型,用字母C表示。字符型数据可以是中文字符、英文字符、数字字符和其他ASCII字符,其长度(即字符个数)范围是0~254个字符,如学生姓名。
2.数字型 • 数字型数据是用来表示数量,并可以进行数值运算的数据类型。数字型数据由数字、小数点、正负号和表示乘幂的字母E组成,数值精度达16位。在Visual FoxPro系统中,按存储、表示形式与取值范围不同,数值型数据又分为数值型、浮点型、双精度型和整形四种不同类型。 • 数值型数据由数字、小数点、正负号和字母E组成,用字母N表示。数值型数据的取值范围是:-0.9999999999E+19~0.9999999999E+20,包括正负号、小数点和字母E在内,其长度最大20位。通常用于表示实数。如317,-99.16,1.3E-5(即1.3×10-5)等。
浮点型数据是也是数值型数据的一种,用字母F表示。它在功能上和数值型数据等价,只是在存储形式上采用浮点格式,主要是为了得到较高的计算精度,其长度在表中最长可达30位。浮点型数据是也是数值型数据的一种,用字母F表示。它在功能上和数值型数据等价,只是在存储形式上采用浮点格式,主要是为了得到较高的计算精度,其长度在表中最长可达30位。 • 双精度型数据是具有更高精度的一种数值型数据,用字母B表示。它采用固定长度浮点格式存储,占8个字节,其取值范围是:+/-4.94065645841247E-324 ~ +/-8.9884656743115E307.
整型数据是不带小数部分的数值型数据,用字母I表示。整型数据只用来表示整数,以二进制形式存储,占4个字节。其取值范围是:-21474836~21474836,如班级学生的数量。整型数据是不带小数部分的数值型数据,用字母I表示。整型数据只用来表示整数,以二进制形式存储,占4个字节。其取值范围是:-21474836~21474836,如班级学生的数量。 • 3.日期型(D) • 日期型(Date)数据是表示日期的数据,由年、月、日构成,用字母D表示。日期型数据的默认格式是{mm/dd/[yy]yy},其中mm表示月份,dd表示日期,yyyy表示年度,占8个字节,其取值范围是:01/01/0001~12/31/9999。如{10/01/2005}表示2005年10月1日这一日期数据。
4.逻辑型(L) • 逻辑型(Logic)数据是描述客观事物真假的数据类型,表示逻辑判断的结果,用字母L表示。逻辑型数据只有真(.t.或.y.)和假(.f.或.n.)两种,固定长度1位。为区别其他数据类型,一般需在表示逻辑值的字母t、y、f、n的前后加圆点符“.”,如表示学生成绩是否及格。
5.备注型(M) • 备注型(Memo)数据表示不定长字符文本的数据类型。可以把它看成是字符型数据的特殊形式,用字母M表示,在表中占用4个字节。备注型数据没有数据长度限制,仅受限于磁盘空间。它只用于表中字段类型的定义,字段长度固定为10位,实际数据存放在与表文件同名的备注文件(.FPT)中,长度根据数据的内容而定。
7.货币型 • 货币型(Currency)数据是表示货币单位的数据类型,用字母Y表示。其取值范围是:-922337203685477.5808 ~ 922337203685477.5807,货币型数据在进行计算时,默认保留4位小数,占据8字节存储空间。
6.通用型(G) • 通用型(General)数据是标记电子表格、文档、图片等OLE对象(对象链接嵌入)的数据类型,用字母G表示。它只用于表中字段类型的定义。通用型数据字段长度固定为4位,实际数据长度仅受限于磁盘空间,如用于存放Excel电子表格等。
8.日期时间型 • 日期时间型(Date Times)是表示日期和时间的数据类型,由年、月、日、时、分、秒构成,用字母T表示。日期时间的默认格式是{mm/dd/yyyy hh:mm:ss},其中mm、dd、yyyy的意义与日期型相同,而hh表示小时,mm表示分钟,ss表示秒数。日期时间型数据也是采用固定长度8位,取值范围是:日期为01/01/0001~12/31/9999,时间为00:00:00~23:59:59。如{8/8/2008 8:8:8}表示2008年8月8日8时8分8秒这一日期时间数据。
9.二进制字符型和二进制备注型 • 二进制字符型和二进制备注型是以二进制格式存储的数据类型,只能用在表中字段数据的定义。两者分别类似于字符型和二进制型,区别在于所存储的数据不受代码页改变的影响。代码页是供计算机正确解释并显示数据的字符集,通常不同的代码页对应不同的平台或语言。
7.3 变量与常量 • 7.3.1 常量 • 常量示一个具体的、不变的数据值,在命令或程序中命名后可直接引用,其显著特征是在整个操作过程中它的值和表现形式保持不变。Visual FoxPro按常量的数据类型,将常量分为6种类型:数值型常量、货币型常量、字符型常量、逻辑型常量、日期型常量、日期时间型常量。不同类型的常量有不同的书写格式。
1.字符型常量 • 字符型常量又称字符串,由任意ASCII字符、汉字和汉字字符组成的字符型数据。 • 用一对双引号“””或单引号“‘”或方括号“[]”作为定界符对括起来,作为和其他类型常量或符号的区别。定界符不作为常量本身的内容,仅规定常量的类型和常量的起止界限。 • [“I am a boy!”]
2.数值型常量 • 数值型常量即常数,由数字、小数点和正负号构成,是表示一个数量大小的整数或实数值。如;10,-15.33。很大或很小的数值型常量也可以采用科学记数法进行表示,如1.23E10表示1.23×1010,1.23E-10表示1.23×10-10。
3.货币型常量 • 货币型常量用来表示货币值,书写方法和数值型常量类似,区别在于货币型常量有个前置符号($)。货币型常量计算时默认为4位小数,若输入的值多于4位,系统自动进行四舍五入运算省略多余小数,如常量$42.34567将存储为$42.3457。货币型常量没有科学记数法形式,在内存中占用8个字节。
4.逻辑型常量 • 逻辑型常量是表示逻辑判断结果的逻辑值,只有真和假两种值,分别用(.t.或.y.)和(.f.或.n.)表示。前后两个句点(.)是逻辑型常量的定界符,缺少定界符的逻辑型常量易被误认为变量名。
5.日期型常量 • 日期型常量是表示日期值的数据,包括年、月、日三个内容,各部分内容用分隔符斜杠(/)或连字号(-)或句点(.)分隔,其中斜杠(/)是系统默认的分隔符,定界符是花括号({})。 • 传统日期格式:{mm/dd/[yy]yy}(月/日/年) • 严格日期格式:{^yyyy-mm-dd}(年-月-日)
6.日期时间型常量 • 日期时间型常量表示日期和时间值,包含年、月、日、时、分、秒,其默认格式是:{日期[,] 时间},日期的表示方法同日期型常量,也分传统和严格两种格式,逗号可省略。时间部分的格式为hh:mm:ss[a|p],其中a和p分别表示AM(上午)和PM(下午),这部分内容也可以省略。
1.设置日期格式中世纪值的系统命令 • 传统的日期型常量格式中可以用2位数表示年份,但涉及到世纪问题就不便区分。Visual FoxPro提供设置命令对此进行相应设置。 • 命令格式: • SET CENTURY ON | OFF | TO [nCentury] • ON:日期数据显示10位,其中年份4 位,即日期值输出时年份含世纪信息; • OFF:(默认值)。日期数据显示8位,年份2位,即日期值输出时不含世纪信息; • TO [nCentury]:指定日期数据所对应的世纪值。nCentury是一个1~99的整数,代表世纪数。
2.设置日期显示格式 • 用户可以调整、设置日期值和时间值的显示输出格式。既可以用命令方式设置,也可以用菜单方式设置。 • 命令格式:SET DATE [TO] AMERICAN | ANSI | BRITISH | FRENCH | GERMAN | ITLIAN | JAPAN | USA | MDY | DMY | YMD | SHORT | LONG
3.选择传统格式和严格格式的命令 • 用户可以通过命令或菜单设置进行两种格式转换。 • 命令格式: • SET STRICTDATE TO [0 | 1 | 2] • 命令说明: • 0:日期型常量或日期时间型常量采用传统日期格式; • 1:日期型常量或日期时间型常量采用严格日期格式作为系统默 • 认格式; • 2:设置结果与1相同,但如果程序代码中出现CTOD()和CTOT()函数时,会出现编译错误。这个设置最适合调试时使用,用来检测2000年兼容性错误; • 参数默认值为1。
7.3.2 变量 • 定义一个变量,确定三个要素:变量名、数据类型和变量值。 • (1)名称由字母、数字和下划线组成, • (2)命名以字母或下划线开头;自由表中的字段名、索引的TAG标识名长度最多不能超过10个字符,其他的数据容器的命名可使用1~128个字符; • (3)不能使用系统规定的保留字进行命名,如set; • 系统中变量分为字段变量、内存变量、数组变量和系统变量4类。
(1)字段变量 • 字段变量是标识数据库中表的各个字段的变量。 • (2)内存变量 • 内存变量是在内存中定义的一个存储区域中存储的临时变量。
(3)数组变量 • 数组变量是一组具有相同名称、以下标相互区分的有序内存变量,它占用一段连续的内存空间。 • 数组定义:DIMENSION | DECLARE • <数组名1>(<下标上限1>[,<下标上限2>]) • [,<数组名2>(<下标上限3>[,<下标上限4>])…] • 命令功能:参数DIMENSION和DECLARE的功能相同,定义时指明数组的下标上限,同时系统规定数组的下标下界为1,使用一个命令可同时定义多个数组。创建数组后,系统自动给系统内的每个元素赋值为逻辑型值假(.F.)。 • 例7.1 DIMENSION A(5)
(4) 系统变量 • 系统变量是Visual FoxPro系统特有的内存变量。系统变量有很多,其变量名以下划线“_”
7.3.3 内存变量的常用命令 • 1.赋值 • 赋值给一个或多个内存变量命令格式1: • STORE <表达式> TO <内存变量表> • 给单个变量赋值命令格式2: • <内存变量> = <表达式> • 例7.2 STORE “徐卫娟” TO name ‘将字符串“徐卫娟”赋值给内存变量name。 • 例7.3 a=b+1 ‘将变量b加1后的结果赋值给变量a。
(2)显示 • 在换行后输出显示结果命令格式1: • ? <表达式表> [AT <列号>] • 在当前光标位置输出显示命令格式2: • ?? <表达式表> [AT <列号>] • 命令功能: • 输出表达式运算后的结果值。若命令中含多个用逗号(,)分隔的表达式,则依次运算后输出,多个结果值按空格分开;[AT <列号>]表示变量在指定列号开始输出,此参数设置仅对单个表达式有效;,格式2则直接
(3)将变量保存到某一变量文件(*.MEM)中 • 命令格式: • SAVE TO <变量文件名> [ALL LIKE <通配符> | ALL EXCEPT <通配符> ] • 命令功能: • 参数ALL LIKE <通配符>指明保存所有符合通配符条件的变量,参数ALL EXCEPT <通配符>指明保存所有不符合通配符条件的变量。
(4)将保存到变量文件(*.MEM)中的变量恢复到内存使用(4)将保存到变量文件(*.MEM)中的变量恢复到内存使用 • 命令格式: • RE FROM <变量文件名> [ADDITIVE] • 命令功能: • 省略参数ADDITIVE,则删除内存中现有的所有变量后再恢复文件中的变量,添加此参数,则将从文件恢复的变量追加到现有变量中。
(5)清除变量 • 命令格式: • 1.RELEASE ALL • 2.RELEASE <变量表> • 3.RELEASE ALL [LIKE <通配符> | EXCEPT <通配符> ]
7.4 表达式 • 表达式是由常量、变量和函数通过特定的运算符连接起来的式子。 • 算术表达式 • 字符表达式 • 表达式 日期时间表达式 • 关系表达式 • 逻辑表达式。
7.4.2 字符表达式 • 字符表达式是由字符运算符将常量、变量和函数连接起来的式子,运算结果仍为字符型数据。字符运算符有两个,两者优先级相同: • +:将该运算符前后的两个字符串首尾连接,组成新的字符串; • -:将该运算符前后的两个字符串首尾连接,并将前面字符串尾部的空格移到合并后的新字符串的尾部。
例7.6 a=”Visual ” • b=”FoxPro Study!” • ? a + b, a – b • ‘运算结果为: • Visual FoxPro Study! VisualFoxPro Study!
7.4.3 日期时间表达式 例7.7?{^2005-04-01}+10 ‘运算结果为:04/11/05 例7.8?{^2005-04-05 10:50:45 PM }-{^2005-04-05 10:20:40 PM} ‘运算结果为:1805
7.4.4 关系表达式 • 关系表达式是由关系运算符将数值表达式、字符表达式和日期表达式连接起来的式子,它将两个表达式进行比较,结果为逻辑真(.T.)和逻辑假(.F.)。
例7.9 ? ”abcde” $ ”abcdefg” • ?”abcdefgh” $ ”abcdefg” • 运算结果分别为.T.和.F. • 例7.10 ? ”abcde” = ”abcdefg” • 当系统设置了SET EXACT OFF时,关系表达式结果为.T. • 当系统设置了SET EXACT OFF时,关系表达式结果为.F.
7.4.5 逻辑表达式 • 逻辑运算符有:.NOT. .AND. .OR.。 • 三者的优先级别从高到低为.NOT. . AND. .OR.
7.5函数 • 根据函数的返回值类型或者功能可以分为数值函数、字符函数、日期和时间函数、数据类型转换函数和测试函数。
7.6 程序与程序文件 • 7.6.1 程序的概念 • 扩展名为“.PRG”,由系统默认。程序中除了命令和函数外, • 还可以包含其他的元素: • 命令注释:以*或NOTE开头的代码为注释行, • 以&&开头的注释是对命令的注释。 • SET TALK ON|OFF命令:该命令用来设置是否显示状态信息, • 命令换行:则用续行符”;” • RETURN :结束当前程序运行,返回调用该程序的上级程序。