VFP程序设计PPT电子课件教案.ppt_第1页
VFP程序设计PPT电子课件教案.ppt_第2页
VFP程序设计PPT电子课件教案.ppt_第3页
VFP程序设计PPT电子课件教案.ppt_第4页
VFP程序设计PPT电子课件教案.ppt_第5页
免费预览已结束,剩余234页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

但愿她是你知识大厦的又一块基石。 但愿她是开启你智慧的又一把钥匙!,计算机学院 尹丽花,电子教案,vfp程序设计,2,本门课程情况说明,教学安排:上课4+上机2/周 上课:114周 上机:218周 教学大纲:全国高等学校(重庆市考区)非计算机专业计算机等级考试visual foxpro程序设计考试大纲 考试要求:参加全国高等学校(重庆考区)非计算机专业学生计算机等级考试二级vfp过级,3,目 录,第1章 visual foxpro基础 第2章 visual foxpro语言基础 第3章 表与数据库操作 第4章 关系数据库标准语言sql 第5章 数据库的查询和视图 第6章 结构化程序设计 第7章 表单设计 第8章 报表与标签 第9章 菜单与工具栏 第10章 数据库应用程序开发实例,结束,4,第1章 vfoxpro基础,数据库系统基本知识 数据模型 关系数据库 vfp系统概述 vfp系统基本操作 项目管理器,返回,结束,5,1.1 数据库系统基本知识,1.1.1 信息与数据,信息:是对客观事物的变化及特征的反映,也是事物之间相互作用和联系的表征。 数据:其一为描述事物特性的数据内容;其二为储存在某一种媒体上的数据形式。数据是信息的具体表现形式,它是组成信息的物理符号。,信息与数据的关系: 信息=数据+处理,数据处理是将数据转换为信息的过程,包括数据采集、整理、存储、分类、排序、检索、维护、加工、统计和传输等一系列操作过程,是对大量的原始数据进行分析、处理,获得对人们更有意义、更有价值的信息,为决策及行动提供依据。,6,1.1.2 数据管理及发展,人工管理阶段,文件管理阶段,数据库系统管理阶段,面向对象数据库,分布式数据库,7,1.1.3 数据库系统的组成,1.1.4 数据库系统的特点,实现数据共享,减少数据冗余 采用特定的数据模型 具有较高的数据独立性 具有统一的数据控制功能,8,1.2 数据模型,1.2.1 数据模型的基本概念,数据模型:是指数据库中数据与数据之间的关系是现实世界数据特征的抽象,是数据库中用于提供信息表示和操作手段的形式框架。,1.2.2 概念模型及其表示方法,概念模型的表示方法很多,其中最常用的是e-r图来描述现实世界的概念模型,这种方法直接从现实世界中抽象出实体类型及实体间的联系,然后用e-r图来描述。,实体 属性 属性域,实体集 联系 实体间联系及联系的种类 一对一、一对多和多对多联系,9,1.2.3 常用的数据模型,层次模型,网状模型,关系模型,人事表,10,1.3 关系数据库,1.3.1 关系的基本概念,1关系 一个关系就是一张二维表,每个关系都有一个关系名,每个关系(数据库表)用一个文件来存储,扩展名为.dbf, 关系模式:对关系的描述,一个关系模式对应一个关系的结构 关系模式的格式:关系名(属性1,属性2,.属性n) 对应于vfp中表结构: 表名(字段1,字段2,.字段n) 2元组 二维表的每一行在关系中称为元组,在visual foxpro系统中,一个元组对应表中的一个记录。 3属性 二维表的每一列在关系中称为属性,每个属性都有一个属性名、数据类型、长度。在vfoxpro系统中,一个属性对应表中的一个字段,属性名对应字段名。,11,4域 属性的取值范围称为域。 5关键字 一个关系中能唯一区分、确定不同元组(记录)的属性或属性组合,称为该关系的一个关键字。单个属性组成的关键字称为单关键字,多个属性组合的关键字称为组和关键字。 6候选关键字 关系中能够成为关键字的属性或属性组合可能不是惟一的。凡在关系中能够唯一区分、确定不同元组的属性或属性组合,称为候选关键字。 7主关键字 在候选关键字中选定一个作为关键字,称为该关系的主关键字。关系中主关键字是唯一的。 8外部关键字 关系中某个属性或属性组合并非关键字,但却是另一个关系的主关键字,称此属性或属性组合为本关系的外部关键字。关系之间的联系是通过外部关键字实现的。,12,9关系模式 对关系结构的描述称为关系模式,一个关系模式对应一个关系的结构,其格式为: 关系名(属性名1, 属性名2, , 属性名n) 关系模式的简化表示模式在vf中表示: 表名(字段名1, 字段名2, ,字段名n) 关系既可以用二维表格来描述,也可以用数学形式的关系模式来描述。一个关系模式对应一个关系的数据结构,也就是表的数据结构。 如表1-1对应的关系,其关系模式可以表示为: 人事表(编号, 姓名, 身份证, 性别, 职称, 工作日期) 其中,“人事表”为关系名,括号中各项为该关系所有的属性名。,13,1.3.2 关系的基本特点,在关系模型中,关系具有以下基本特点:,关系必须规范化,属性不可再分割; 规范化是指关系模型中每个关系模式都必须满足一定的要求,最基本的要求是关系必须是一张二维表,每个属性值必须是不可分割的最小数据单元,即表中不能再包含表。 在同一关系中不允许出现相同的属性名(字段); 关系中不允许有完全相同的元组(记录); 在同一关系中元组及属性的顺序可以任意; 任意交换两个元组(或属性)的位置,不会改变关系模式。,以上是关系的基本性质,也是衡量一个二维表格是否构成关系的基本要素。在这些基本要素中,有一点是关键,即属性不可再分割,也即表中不能套表。,14,1.3.3 关系运算,1传统的集合运算(并、差、交等) 并:两个相同结构关系的并是有属于这两个关系的元组(记录)组成的集合。 差:关系r和关系s,是有属于r而不属于s的元组组成的集合,从r中去掉s中也有的元组。 交:关系r和关系s,既属于r又属于s的元组组成的集合。 2专门的关系运算(选择、投影、联接) 在关系数据库中查询用户所需数据时,需要对关系进行一定的关系运算。关系运算主要有选择、投影和联接三种。 选择:是从关系中查找符合指定条件元组的操作。(对记录) 投影:是从关系中选取若干个属性的操作。(对字段) 连接:是将两个关系模式的若干属性拼接成一个新的关系模式的操作,对应的新关系中,包含满足联接条件的所有元组。(对字段),15,1.4 vfoxpro系统概述,1.4.1 vfoxpro 的特点,1.4.2 vfoxpro的安装,1.4.3 vfoxpro的启动、退出及界面组成,16,1.5 vfp系统基本操作,1.5.1 vfp的操作方式,命令操作方式 菜单操作方式 程序操作方式,1.5.2 vfp系统环境的设置,1.5.3 vfp的向导、生成器、设计器,vfp的向导 vfp的生成器 vfp的设计器,1.5.4 vfp的主要文件类型,17,1.6 项目管理器,项目管理器是vfoxpro中处理数据及对象的主要组织工具,其中的项目是指文件、数据、文档以及对象的集合。其主要功能是:提供了简便、可视化的方法来组织和处理表、数据库、表单、报表、查询以及其他一切文件。项目管理器是visual foxpro系统创建、管理项目的工具,用来创建、修改、组织项目中各种文件,对项目中程序进行编译和连编,形成一个可以运行的应用程序系统,将应用系统编译成一个扩展名为app的应用文件或exe的可执行文件。,1.6.1 启动项目管理器,1.6.2 项目管理器的组成与功能,1.6.3 定制项目管理器,返回,结束,18,第2章 vfoxpro语言基础,常量与变量 表达式 常用函数 vfp命令格式,返回,结束,19,2.1 常量与变量,2.1.1 常量,处理过程中其值不发生变化的量称为常量。常量用来表示一个具体的、不变的值,,2数值型n 数值型常量也就是数学上的常数,用来表示一个数量的大小。由数字09、小数点和正负号组成。,1字符型c 字符型常量也称字符串,通常用来表示文本类型信息。由中英文字符、数字、空格和特殊符号组成,其表示方法是用定界符将字符串括起来,定界符规定只能使用:一对双引号(“ ”)、一对单引号( )或一对方括号( )。若一种定界符已作为字符串中的字符,则应选择另一种定界符。,20,4日期型 日期型常量用来表示日期数据,其定界符是一对花括号()。花括号内包括年、月、日三部分,各部分内容之间用分隔符(“/”或“-”)分隔,在内存中用8个字节来表示。日期型常量有传统和严格两种格式。,1)传统格式 vfoxpro系统默认的日期格式是美国日期格式“月/日/年”(mm/dd/yy) 。 2)严格格式 严格的日期格式为yyyy-mm-dd,用这种格式书写的日期常量不受 set date 等语句设置的影响。,3逻辑型l 逻辑型常量只有两个值:逻辑真和逻辑假,用来表示逻辑判断(运算)的结果。用.t.、.t.或.y.、.y.表示逻辑真,用.f.、.f.或.n.、.n.表示逻辑假。逻辑型数据在内存中只占一个字节,长度为固定1。,21,5日期时间型t 日期时间常量表示日期时间数据,系统默认的日期时间型为“月/日/年 时:分:秒”。日期时间型常量用yyyy-mm-dd hh:mm:ss a/p形式来表示。其中,a和p分别表示上午和下午,如2009-9-20 8:25:20 p表示2009年9月20日晚上8点25分20秒。,set mark to 分隔符 set date to 选项 set century on/off,3)影响日期格式的设置命令,6货币型y 货币型常量用来表示货币单位数据,是加前置符“$”开始的数值型常量,不用科学计数形式,如$1546.78。货币型数据存储和计算时采用4位小数,并将多余4位的小数进行四舍五入。,22,2.1.2 变量,1字段变量 字段名变量是指数据表文件中已定义好的各个字段,随数据表存在而存在,属于永久变量。在数据表中有一个记录指针,其指向的记录称为当前记录,每个字段名变量的值就为当前记录对应字段的值。 字段名变量的值将随着记录指针的移动而不断改变,如果一个数据表有25条记录,则每个字段名变量就有25个可取值。,在程序运行过程中其值可以发生变化的量称为变量。变量的值是可以根据需要随时更改的。每个变量均具有三要素:变量名、数据类型、变量值。 vfp系统中的变量分为字段变量、内存变量、数组和系统变量4种类型。,23,2内存变量,内存变量是当前内存中的一个临时存储单元,其值是这个存储单元中存放的数据。内存变量一种临时变量,独立于数据表文件而存在,用来存放数据算是过程中所需要的常数、表达式值等中间结果或最终结果。 使用内存变量应遵守 “先定义后使用” 的原则,由赋值语句定义,其数据类型取决于所赋值数据的类型。可根据实际需要,对一个内存变量进行多次赋值,该内存变量的值为最后一次所赋的值。,内存变量的赋值,格式1:= 格式2:store to 功能:先计算表达式的值,再赋给变量(在内存中分配存储单元,将值存放其中,变量名为存储单元地址)。,24,内存变量的显示,格式:list|display memory like to printerto file 功能:显示当前已定义的内在变量的有关信息,如变量名、类型和值等。,内存变量的清除,格式:release|alllike/except clear memory|clear all 功能:release用于释放指定的内存变量;clear memory用于清除所有的内存变量,相当于release all;clear all用于清除所有的内存变量,并关闭所有当前打开的数据库、表及相关文件,设置编号为1的工作区为当前工作区。,内存变量的输出,格式:?|?at ,at 功能:计算并输出各表达式的值。,25,内存变量的存储与恢复,格式:save to |to memo all like/except restore from |from memo additive 功能:save to 命令是将当前内存中的内存变量保存到内存变量文件或指定的备注字段中去,系统自动给内存变量文件加上扩展名 .mem;restore from 命令是从指定的内存变量文件或备注字段中,将保存的内存变量恢复到内存中来。若无additive选项,则先清除当前内存中的全部内存变量后再恢复;否则不清除,只将同名内存变量覆盖。,3数组,数组是一批数据的有序集合,数组中的每个数据称为一个数组元素,他们是具有相同名称而下标不同的一组有序的内存变量。vfp系统允许定义一维和二维数组,数组也应遵守“先定义后使用”的原则。,26,数组的定义,格式:dimension|declare (,) ,(, ) 功能:定义一个或多个一维数组或二维数组。,数组的使用,数组中每个有序变量构成数组的成员,称之为数组元素。数组元素的名称使用数组名和用括号括起来的下标组成。 数组一经定义,其数组元素就可像一个内存变量一样被引用;各数组元素的下标必须用圆括号括起来;二维数组的下标用逗号间隔;数组的下标可以是常量、变量和表达式,在vfp系统中,二维数组是按行分配内存的,允许使用一维数组的形式访问二维数组,,系统变量,系统变量是vfp系统自己定义的一些变量。这些变量的名称均是以“_”(下划线)字符开头。故在定义内存变量名称时,最好不要以“_”字符开头,以避免重名。,27,2.2 表达式,进行数据处理时,将会使用诸如加、减、乘、除、连接、大于等于、或、并且等进行运算的符号,称为运算符,由运算符和圆括号将各种数据(常量、变量、函数)连接起来的有实际意义的式子称为表达式。vfp系统使用的运算符有算术型、字符型、关系型、逻辑型、日期型和日期时间型,表达式分为算术表达式、字符表达式、关系表达式、逻辑表达式、日期表达式和日期时间表达式。表达式经过各种运算后得到的运算结果称为表达式的值。 当同一表达式中使用了多类运算符时,运算的优先级由高到低的顺序为:圆括号算术运算字符运算日期和时间运算关系运算逻辑运算。同类运算中各运算符的优先级也是有所不同的,同类同级运算符按从左至右的顺序进行,只有在使用了圆括号的情况下才能改变运算的顺序。,28,2.2.1 算术表达式,2算术表达式,1算术运算符,注意:在书写vfp表达式时,需将数学式中所有的运算符(包括省略的运算符)和运算量改写为vfp所规定的运算符和运算量,并将所有的字符书写在同一水平线上,必要时需添加成对的括号,以保证二者等价。,算术表达式是用算术运算符将数值型常数、变量、函数等连接组成的表达式,其运算结果是一个数值型常量。,29,2.2.2 字符表达式,2完全连接运算,1包含运算,字符表达式是由字符运算符将字符型常量、变量、字符处理函数连接组成的表达式,运算结果可能是逻辑值或字符串。,格式:$ 功能:判断是否是的子串,若是则表达式值为逻辑值.t.,否则为逻辑值.f.。,格式:+ 功能:将的首字符与的尾字符相连,组成一个新的字符串。,3不完全连接运算,格式:- 功能:将的首字符与的尾部第一个非空格字符相连组成一个新的字符串,同时将原来的尾部空格置于新字符串的尾部。,30,2.2.3 关系表达式,2算术表达式,1关系运算符,关系表达式是用关系运算符将两个同类型的运算对象连接起来的表达式。实际上,关系表达式是一种逻辑表达式,其值要么为.t.(真),要么为.f.(假)。 关系表达式格式: ,31,2.2.4 逻辑表达式,2逻辑表达式,1逻辑运算符,逻辑表达式是用逻辑运算符将两个逻辑型数据连接组成的表达式。逻辑表达式的运算结果为逻辑值真或假。 逻辑表达式格式: ,日期和日期时间表达式是通过运算符“+”和“-”来实现的。日期型和日期时间数据的运算是有特定限制的,不能进行任意组合。,2.2.5 日期及日期时间表达式,32,2.3 常用函数,为了增强系统的功能和方便用户使用,vfoxpro向用户提供了丰富的标准函数,每个函数都有其相应的功能。实际上,这些标准函是系统内事先编制好的一段程序,通过特定的格式调用它,可以完成选定的功能。灵活运用系统提供的标准函数,能极大地提高命令操作和程序设计的效率。 函数调用的一般格式: 函数名(参数表) 使用时应注意几个问题: 函数名、参数、函数值称为函数的三要素; 所有函数名后必须有圆括号,不管是否有参数( 每个函数都有一个确定的返回值,使用时要特别注意函数值的数据类型。 vfp系统提供了几百个函数。按函数功能可分为数值处理函数、字符处理函数、日期时间函数、类型转换函数、测试函数、系统对话框函数等。下面介绍一些常用的函数。,33,2.3.1 数值处理函数,2求余函数,1取整函数,格式:mod(,) 功能:求除以所得的余数。余数的正负号与除数相同,如果被除数与除数同号,那么函数值即为两数相除的余数;如果被除数与除数异号,则函数值为两数相除的余数再加上除数的值。,格式:int() 功能:取数值表达式值的整数部分(去掉小数部分,不进行四舍五入)。,例2.10 已知任意一个五位自然数,要求将其反序输出,并求各数位之和。比如,输入数63378,要求通过数据处理输出数87336,各数位之和为27。,34,input “请输入任一个五位自然数:“ to x a1=int(x/10000) a2=mod(int(x/1000),10) a3=mod(int(x/100),10) a4=int(x%100/10) a5=x%10 ?“自然数“+str(x,5)+“的反序数为:“,a1+a2*10+a3*100+ a4*1000+a5*10000 ?“自然数“+str(x,5)+“的各数位之和为:“,a1+a2+a3+ a4+a5,3随机函数,格式:rand(n) 功能:系统随机产生一个纯小数(01),三种情形如下: 当n=1,每次产生一个相同的纯小数。,35,随机函数rand()产生的纯小数是随机的,不受程序设计人员控制的。利用随机函数rand()的特点,可很方便地解决一些常见的实现问题,如猜数游戏、随机抽奖等。,例2.11 随机生成一个60到250内的整数;随机生成两个两位整数,并进行减法运算。,? int(60+rand()*190) a=(10+int(rand()*90) b=(10+int(rand()*90) ? a,b,a-b,4四舍五入函数,格式:round(,) 功能:对的值保留位小数,对+1位进行四舍五入后。若大于等于0,表示的是要保留的小数位数;若小于0,则表示的是整数部分的舍入位数。,36,5其它常用数值处理函数,37,2.3.2 字符处理函数,2求字符串长度函数,1取子串函数,格式:len() 功能:返回定字符串表达式值的长度,即所包含的字符个数。若为空串则其长度为0。函数值为数值型。,格式:substr(,) left(,) right(,) 功能:substr()从指定字符表达式值的指定位置开始,取指定长度个字符串组成一个新的字符串作为函数值。在substr()函数中,若缺省参数,则函数从指定位置一直到最后一个字符;left()从指定表达式值的左边开始取个字符组成一个新串作为函数值;right()从指定表达式值的右边开始取个字符组成一个新串作为函数值。,38,3大小写转换函数,格式:lower() upper() 功能:lower()将字符表达式值中的大写字母转换成小写字母,其它字符不变; upper()将字符表达式值中的小写字母转换成大写字母,其它字符不变。,4产生空格函数,5产生重复字符函数,格式:space() 功能:产生一个穿字符串,的值决定空格的个数。,格式:replicate(,) 功能:将字符表达式值重复次组成的字符串作为函数值。,39,6删除前后空格函数,格式:rtrim() ltrim() alltrim() 功能:rtrim()删除字符表达式值的尾部空格,函数名rtrim可写成trim; ltrim()删除字符表达式值的前导空格;alltrim()删除字符表达式值的前导和尾部空格。,7子串位置搜索函数,格式:at(,) atc(,) 功能:at()的函数值为数值型。如果是的子串,则返回在中的起始位置;若不是子串,则返回0。用于指定在中搜索出现的次数,若省略则其默认值为1。atc()与at()功能类似,但在子串比较时不区分字母大小写。,40,8字符串替换函数,格式:stuff(,) 功能:用值替换中由起始位置和长度指定的一个子串。替换和被替换的字符个数不一定相等。如果长度值为0,则插入在由起始位置指定的字符前面,如果值为空串,那么中由起始位置和长度指定的子串部分则被删去。,9宏替换函数,格式:&. 功能:替换出字符型变量的内容,即&的函数值为变量的值(字符串)。若与后面的字符无穿分界,则在&函数后必须用“.”来分隔。,41,2.3.3 日期和时间函数,格式:date() time() datetime() 功能:date()返回当前系统日期,函数值为日期型; time()以24h制、hh:mm:ss格式返回当前系统时间,函数值为字符型,若为其提供任一参数(可为任意数值),则返回的时间精度为百分秒;datetime()返回当前系统日期时间,函数值为日期时间型。,2求年月日函数,格式:year(|) month(|) day(|) 功能:year()返回日期表达式或日期时间表达式中的年份(如2009年);month()返回日期表达式或日期时间表达式中的月份;day()返回日期表达式或日期时间表达式中的天数。3个函数的返回值均为数值型数据。,1系统日期和系统时间函数,42,格式:hour() minute() sec() 功能:hour()返回指定日期时间表达式中的小时部分(24h制); minute()返回指定日期时间表达式中的分钟部分; sec()返回指定日期时间表达式中的秒数部分。 这3个函数的返回值均为数值型数据。,4求星期函数,格式:dow() cdow() 功能:dow()返回指定日期表达式对应一周的第几天,函数值为数值型。星期日为一周的第1天,星期六为一周的第7天; cdow()返回星期几的英文名称,函数值为字符串。,3求时分秒函数,43,2.3.4 数据类型转换函数,格式:str(,) 功能:将数值表达式的值转换为字符串,转换时根据需要自动四舍五入。返回字符串的长度应为:的整数位数+1位小数点+负号(正号自动省略不占位数)。若大于字符串长度,则字符串加前导空格补齐;若大于等于的整数位数(包括负号)但又小于字符串长度,则优先满足整数部分而自动调整小数位数;若小于值的整数位数,则返回由“*”组成的字符串。 的默认值为0,的默认值为10。,2字符串转换为数值函数,格式:val() 功能:将数字形式的字符串(包括正负号、小数点)转换为相应的数值型数据。若字符串内遇到对数字无效的字符则停止转换,若字符串的首字符为非数字符,则返回值为0,但忽略前导空格。,1数值转换成字符串函数,44,格式:upper() lower() 功能:upper()是将字符表达式值中的所有小写字母转换为大写字母; lower()是将字符表达式值中的所有大写字母转换为小写字母。,4字符与ascii间的转换函数,格式:asc() chr() 功能:asc()的函数值为字符表达式值的首字符的ascii码值(十进制数); chr()的函数值为数值表达式值(0255)所对应的ascii码将字符。,3大小写字母转换函数,45,格式:dtoc(|,1) ttoc(,1) 功能:dtoc()将日期型或日期时间型数据的日期转换成字符串,系统默认转换后的字符串格式为:mm/dd/yy。若有选项1,则格式为:yyyymmdd; ttoc()将日期时间型数据转换成字符串,系统默认转换后的字符串格式为:mm/dd/yy hh:mm:ss a|pm。若有选项1,则格式为:yyyymmddhhmmss。,6日期或日期时间转换为字符串函数,5字符串转换为日期或日期时间函数,格式:ctod() ctot() 功能:ctod()将字符表达式值转换成日期型数据; ctot()将字符表达式值转换成日期时间型数据。,46,2.3.5 测试函数,2表文件起始测试函数,1表文件结束测试函数,格式:bof(|) 功能:测试指定工作区表文件的记录指针是否指向文件起始标志(即bof),若是则返回逻辑值.t.,否则返回逻辑值.f.。若省略函数参数,则测试当前工作区中的表文件。,格式:eof(|) 功能:测试指定工作区表文件的记录指针是否指向文件结束标志(即eof),若是则返回逻辑值.t.,否则返回逻辑值.f.。若省略函数参数,则测试当前工作区中的表文件。,表文件的逻辑结构,47,4条件测试函数,3当前记录号测试函数,格式:iif(,) 功能:测试的值,若为逻辑值.t.,则函数值为的值;若为逻辑值.f.,则函数值为的值。,格式:recno(|) 功能:返回指定工作区表文件的当前记录(记录指针所指记录)的记录号。若缺省函数参数,则指当前工作区中的表文件。如果记录指针指向bof,函数值仍为1(表文件第一条记录的记录号);如记录指针指向文件尾,函数值为表文件中记录数加1。,例2.29 iif()函数使用示例:判断输入自然数的奇偶性。,input “请从键盘输入一个自然数:“ to n ? “自然数“+alltrim(str(n) ? iif(n%2=0,“是偶数!“,“是奇数!“) 自然数89是奇数!,48,6null值测试函数,5记录个数测试函数,格式:isnull() 功能:判断一个表达式的运算结果是否为null值,若是null值返回逻辑值.t.,否则返回逻辑值.f.。null值是一个不明确值,不能与其它值进行比较大小。,格式:reccount(|) 功能:返回指定工作区表文件的记录个数,若省略函数参数,则指当前工作区。如果工作区中没有打开的表文件,函数值为0。reccount()返回的是表文件中物理上存在的记录个数。,7空值测试函数,格式:empty() 功能:判断表达式的运算结果是否为“空”值,若为空值则函数值为逻辑值.t.,否则函数值为逻辑值.f.。,49,10查找是否成功测试函数,9值域测试函数,格式:found(|) 功能:在指定工作区(省略为当前工作区)中检测是否找到满足条件的数据或记录。数据查找由表操作的find、seek、locate或continue命令实现。如果找到满足条件的数据或记录,则函数值为逻辑值.t.,否则函数值为逻辑值.f.。,格式:between(,) 功能:判断的值是否介于与值之间。当值大于等于且小于等于时,函数值为.t.,否则为.f.。若或中有一个是null值,则函数值也为null值。,8数据类型测试函数,格式:vartype(,) 功能:测试的类型,函数值为则一个大字母组成的字符串,表明该表达式值的数据类型。,50,11记录删除测试函数,格式:deleted(|) 功能:测试指定工作区(省略为当前工作区)中的当前记录是否有逻辑删除标记“*”,若有则函数值为.t.,否则为.f.。,12工作区测试函数,格式:select() 功能:测试当前工作区的编号,函数值为数值型。,13文件测试函数,格式:file() 功能:测试指定文件是否存在。若存在则函数值为逻辑值.t.,否则函数值为逻辑值.f.。函数参数必须是文件名的全称,包括盘符、路径、主文件名和扩展名。,14inkey函数,格式:inkey() 功能:返回用户最近所按键的ascii码值,范围为0255之间的整数。定义为用户没有按键情况下等待的时间(秒数)。若未指定则等待0秒;若的值为0则将一直等待用户按键。,51,2.3.6 系统对话框函数,格式:messagebox(,) 功能:以对话框形式显示字符串内容。,2显示字体对话框函数,格式:getfont() 功能:将vfp系统的“字体”对话框显示在屏幕上供用户当前使用,可选择字体、字型、大小(即字号)。函数返回一个字符串,包含字体名称、大小(磅值)和字型字母(n常规、b粗体、i斜体),以逗号间隔。,1显示字符串对话框函数,例2.34 使用messagebox()函数显示字符串对话框。 messagebox(“排序后的职工工资表已生成!“,0+48,“职工工资数据“) yes=messagebox(“是否删除职称为副教授的记录?“, 4+32,“职工人事数据“) ? yes,52,3显示颜色对话框函数,格式:getcolor() 功能:将vfp系统的“颜色”对话框显示在屏幕上供用户当前使用,可选择颜色。函数返回一个数值型数据,为红、绿、蓝3种颜色的组合值。,4显示打开对话框函数,格式:getfile(,) 功能:将vfp系统的“打开”对话框显示在屏幕上供用户当前使用。用户可选择磁盘上任意目录中的一个文件,函数返回由该文件完整路径(包含盘符、路径、主文件名和扩展名)组成的一个字符串。,53,2.4 vfp命令格式,在计算机高级语言中,使用某种高级语言来描述解决实际问题的过程称为编程序,也称为程序设计,其内容称为源程序,以文件形式进行储存,属于文本文件类。程序内容中用来描述解决问题的某一步骤或完成某项功能的符号序列称为语句,这些语句是有逻辑顺序的,所以说程序是语句的有序集合。 vfp程序设计语言是专门用于对大量数据进行处理而设计的计算机高级语言。针对数据处理的特点,除通过程序中的语句来处理数据外,还可通过命令方式来处理局部问题。本节将介绍vfp命令的有关基本知识。,3.4.1 vfp命令一般格式,vfp命令通常由两部分组成:一是命令动词,表示要执行的操作;二是若干命令短语,为操作提出一些相应的限制。命令短语也称为子句。vfp命令的一般格式为: for|while,54,说明: 必选项,表示必须提供操作需要的具体参数,否则系统会报语法错误; 可选项,表示可根据实际需要进行选择,如不选则使用该命令的默认值; | 竖线,表示从两个选项中选择一项,或者之意; 表示前面的选项可以重复选择多次,各个选项间用逗号间隔; 在实际输入命令时,不能输入、 、|、 等符号。,1命令动词,vfp系统的所有命令都是以命令动词开头,决定此命令要执行的某种操作。命令动词一般为一个英文动词或动词缩写,当一个命令的英文字母超过4个时,可只输入前4个字母,其后字母可省略。比如,display可只输入disp。,2命令短语,命令短语表示需操作的对象及限制,一般包括记录范围、条件、字段、结果输出位置等方面内容。,55,范围 用来规定该命令操作的记录范围,有4种供选择: all 表示对所有记录进行操作; next 表示从当前记录开始的n条记录进行操作; record 表示只对第n条记录; rest 表示从当前记录开始到文件结束的所有记录。,for 或while for或while选项中的是一个逻辑表达式,其值必须为逻辑真(.t.)或假(.f.),表示在指定范围内对满足条件的记录进行操作。省略此选项,表示对指定范围内的所有记录进行操作。 for选项:表示在指定范围内的所有满足条件的记录进行操作;while选项:表示从指定范围内的第一条记录开始进行条件判断,一旦发现不满足条件的记录则立即停止操作,结束该命令的执行。,表达式表 选项可以是一个或多个由逗号间隔的表达式,用来表示命令所要进行操作的结果参数。,56,3.4.2 vfp命令的书写规则,1取整函数,用户在书写vfp系统的命令时,应遵循以下规则:,任何命令必须以命令动词开头(只有go命令例外,可省略),命令中的各个短语通常与顺序无关,可按任意次序排列,但各短语必须符合该命令格式的规定; 各短语之间必须用一个或多个空格来隔开; 一条命令的最大长度为254个字符,一行写不下时,可用分行符“;”分行,在下一行继续书写; 命令动词和各命令字(如函数名等)可用其前4个字母来表示,但为了保持命令及程序的可读性,建议一般不要缩写; 命令中的英文字母大小写可以混合使用,系统不区分大小写,为了美观,可以将命令关键字大写,而其他内容小写; 在vfp系统中,命令名、函数名等均称为保留字。用户在选择变量名、字段名、文件名时,最好不要使用系统中的保留字,以免程序在运行过程中发生混乱。,57,3.4.3 vfp的运行方式,1命令方式,命令方式即在vfp命令窗口中输入命令行,按enter键立即执行。 在命令方式中,其命令可通过直接输入来执行,也可通过菜单操作图形界面来实现(系统会自动在命令窗口中显示所使用的命令)。菜单方式具有操作简单、易学、易用的特点,但无法进行编程使用;直接输入命令的方式需根据具体问题,学会灵活运用命令,且逻辑性强,是编制程序的基础。,2程序方式,程序方式先要通过命令“modify command ”建立程序文件,建立时逐行输入解决实际问题的语句序列,然后文件存盘。需要时,在命令窗口用“do ”来执行。好处是可多次执行、长期保存。,返回,结束,58,第3章 表与数据库,表的建立 表的编辑与维护 表的排序与索引 表的统计 多表操作 数据库操作,返回,结束,59,3.1 表的建立,3.1.1 表的概念,在关系数据管理系统中,一个关系就是一个数据表,简称表。vfp系统的表分为“自由表”和“数据库表”两类。独立于任何数据库的表称为自由表,属于某一数据库的表表数据库表。自由表和数据库表的处理方法基本相同。 表是以记录和字段形式存储的数据,是关系数据管理系统的基本结构,也是处理数据、建立数据库及应用程序的基本单元。一个表是由一系列相关数据记录构成的集合,由若干行(记录)与若干列(字段)数据所组成,对应于磁盘上的一个扩展名为.dbf的文件,如果表中有通用型或备注型字段,则系统会自动建立一个扩展名为.fpt的文件。,60,3.1.2 表结构的设计,要建立一个表,首先需要对表的结构进行设计。表结构图的设计包括一个表所需要的字段、各字段的属性值,包括名称、数据类型、宽度、小数位数等。,1字段名,字段名即关系的属性名或表的列名。字段名一般是可英文字母或汉字开头,由字母、汉字、数字或下划线组成,但不能使用空格字符;自由表中的字段名长度不超过10个西文字符,数据表中的字段名不能超过128个西文字符;在同一个表中,各字段名不能重名。,2字段类型,字段名即关系的属性名或表的列名。字段名一般是可英文字母或汉字开头,由字母、汉字、数字或下划线组成,但不能使用空格字符;自由表中的字段名长度不超过10个西文字符,数据表中的字段名不能超过128个西文字符;在同一个表中,各字段名不能重名。,61,3字段宽度及小数位数,字段宽度用来设置对应字段存放数据时所需要字符的宽度,以英文字符为准,一个汉字占两英文字符的宽度。数值型数据还应设置小数位数;对于日期型、日期时间型、逻辑型、备注型、通用型、备注型(二进制)、通用型(二进制)数据的宽度不需要用户定义,按系统规定的宽度进行处理。,4空值(null),该项的作用是用户在输入表是记录时,是否允许为空,即暂时不输入数据(null值就时无明确的值)。如果某字段不允许为null,则输入数据时必须输入相应的数据,否则被为默认值(如数值型为0、字符型为空串等);当允许为null时,可暂时不输入数据值,系统不会报错。,3.1.3 表结构的建立,vfp提供一般3种建立文件类型(表、数据库、视图、表单等)的方法:命令、设计器、向导。,62,1启动表设计器,菜单方式 命令方式 格式:create 功能:启动表设计器建立表文件。,2创建表结构,3.1.4 记录的输入,1立即输入方式,2追加输入方式,菜单方式,追加单条记录,命令方式,格式:append blank 功能:在当前表末尾追加新记录。进入编辑方式,可追加多个新记录。若有blank选项,则直接在表末尾追加一条空记录,不会进入编辑方式。,追加多个记录,成批追加记录命令,格式:append from for |while fields 功能:把指定表文件中的记录追加到当前数据表的末尾。,63,格式:use in | alias 功能:在指定工作区中打开表,3.1.5 表的打开与关闭,1表的打开,2表的关闭,菜单方式,命令方式,格式:use close all clear all 功能:use是关闭当前工作区中的表;close all是关闭所有工作区中打开的数据库、表及索引,并将1号工作区设置为当前工作区;clear all是关闭所有工作区中打开的数据库、表及索引,并将1号工作区设置为当前工作区,同时释放所有内存变量。,64,3.2 表的编辑与维护,3.2.1 表的显示,格式:list|display forwhile fields off to printer|to file 功能:主窗口中显示当前表中指定范围内满足条件的记录。,1表的显示,说明:,list和display的区别:list连续滚动显示,省略为all(与当前记录无关);display分屏显示,省略为显示当前记录; off:省略则显示记录号,有则不显示记录号; :可对记录进行范围,可选用2.4节中介绍的4个值。如果有此选项,则list和display就没有区别了; for与while:对显示的记录进行条件限制,含义与2.4节中介绍相同;,65,fields:指定要显示的若干字段(各字段间用逗号间隔)及顺序,省略则默认为所有字段; to printer:将示结果同时向打印机和显示器输出,若用to print则只向打印机输出,省略则默认只向显示器输出; to file:将结果以文本文件(.txt)形式输出外存,同时也向显示器输出。,格式:list|display structure to printer|to file 功能:在主窗口中显示当前表的结构。,2表结构的显示,例3.4 使用list显示条件记录示例。,use rsb list for 姓名=“张“ or 职称=“副教授“ list for val(right(dtoc(工作日期),2)=85 go 5 list rest off for 党员否 fields 姓名,部门,性别,工作日期,党员否,66,3.2.2 记录指针定位,格式:goto |top|bottom skip 功能:go命令将记录指针移动到指定的记录,称为绝对定位。其中的值指明记录号;top、bottom则分别表示数据表文件的首记录、尾记录。skip命令是以当前记录位置为基准,向前(值为负)或向后(值为正)移动记录指针。当值为1时,可省略不写。,1命令操作定位,2菜单方式定位,对于刚打开的表,记录指针总是指向第一条记录(首记录)的。对表进行操作后,记录指针指向的记录(即当前记录)一般会发生变化。操作表时,可根据当前需要对记录指针进行定位。在建立一个表文件时,vfp系统会为每条记录都增加一个记录号。记录号是根据输入记录的顺序从1开始进行编号的。对记录指针的定位,实际上就是将记录指针移到相应的记录号上。,67,3.2.3 表的修改,格式:modify structure 功能:启动当前工作区中打开的表的表设计器。 选择“显示”菜单下的“表设计器”功能,也可启动当前表的表设计器。 可修改:修改字段、插入字段、删除字段、调整字段顺序,1表结构的修改,2表记录的浏览与修改,格式:browse for fields edit|change for fields 功能:browse是以浏览方式显示与修改指定范围内满足条件的表记录; edit与change功能相同,是以编辑方式显示与修改指定范围内满足条件的表记录。,菜单方式,命令方式,68,格式:replace with additive, with additive for |while 功能:对满足条件记录指定字段原来的值,用相应表达式的值进行替换。 说明:,3表记录内容的替换,该命令不进入全屏幕编辑状态; 该命令具有计算功能,是唯一的一条能用表达式值修改记录值的命令,也是程序方式中经常采用的用来修改记录字段值的方法; 省略和for|while 选项时,只对当前于记录进行操作; 对应字段的数据类型和表达式值的数据类型必须一致; 命令中必须要有一个修改的字段,否则无效;,69,对于数值型字段,当表达式的值超过字段宽度时,按如下规则处理:首先截去小数部分,并进行四舍五入;如果还放不下,则用科学计数法表示,并提示“数值上溢。数据已丢失。”;如果还放不下,则用“*”填充该字段,数据丢失。对于字符型字段,当表达式的值超过字段宽度时,则截去后面多余字符; additive选项只对备注字段有效。当选择了该选项,则将表达式的值附加到原备注字段的内容之后;否则,则用表达式的值替换备注字段的内容;。,格式:insert blank before 功能:在当前记录之后或之前插入一条新记录。 blank:插入一条空白记录,省略选项则弹出编辑窗口等待输入数据;before:表示在当前记录之前插入,省略则在当前记录之后插入。,4插入记录,70,3.2.4 表记录的删除与恢复,格式:delete for |while 功能:将指定范围内满足条件的记录加上删除标记“*”。若省略和for|while选项,则只对当前记录进行操作.,1记录的逻辑删除,2记录的恢复删除,格式:recall for |while 功能:将指定范围内满足条件记录的删除标记取消。省略和for|while 选项,若当前记录已有删除标记,则恢复该记录,否则不起作用。,3记录的物理删除,格式:pack 功能:将表中已进行逻辑删除(即已加上了删除标记)的记录彻底删除。,4清空数据表,格式:zap 功能:彻底删除将当前表中所有记录,只留下一个空表结构.,71,3.2.5 表的复制,格式:copy structure to fields 功能:将当前工作区表的结构复制生成一个新表,其字段数和顺序由字段表决定。,1表结构的复制,2表记录的复制,格式:copy to fields for|while 功能:将当前工作区表中指定范围内满足条件的记录复制生成一个新表,其字段数和顺序由字段表决定。,1单条记录与数组间的交换,格式:scatter fields to |memvar blank memo 功能: 将当前记录指定字段的值依次传送到数组或一组内存变量中,3.2.6 表记录与数组间的数据交换,当前记录数据传送到数组,72,2多条记录与数组间的交换,格式:gather from | memvar fields memo 功能:将数组或内存变量中的数据依次传送到当前记录中。,数组中的数据传送到当前记录,多条记录数据传送到数组,格式:copy to array for fields 功能:对当前表中指定范围内满足条件的记录,按指

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论