850 likes | 988 Views
普通高等教育“十一五”国家级规划教材. Visual FoxPro 程序设计基础教程. 刘甫迎 党晋蓉 刘焱. 第 4 章 用自由表( Free Tables ). 4.1 表结构的创建及修改. 4.2 数据(记录)的输入、保存、浏览. 4.3 表的打开、关闭、显示和定位. 4.4 记录数据 的修改和删除. 4.5 表 的排序、索引和查询. 4.6 表 的计算、汇总. 4.7 多表的 关联、连接和更新. 4.8 其它 有关命令操作. 4.1 表文件结构的建立和修改. 4.1.1 表的结构 一、表的结构的建立
E N D
普通高等教育“十一五”国家级规划教材 Visual FoxPro程序设计基础教程 刘甫迎 党晋蓉 刘焱
第4章 用自由表(Free Tables) 4.1 表结构的创建及修改 4.2 数据(记录)的输入、保存、浏览 4.3 表的打开、关闭、显示和定位 4.4 记录数据的修改和删除 4.5 表的排序、索引和查询 4.6 表的计算、汇总 4.7 多表的关联、连接和更新 4.8 其它有关命令操作
4.1 表文件结构的建立和修改 • 4.1.1 表的结构 • 一、表的结构的建立 • 表文件的后缀名为.DBF。 • 结构(字段) • 表文件 • 数据(记录) • 1.字段名——由汉字、字母、0—9的数字、“—”下划线组成。 如:学号、NAME、XH-1等。 • 2.字段类型: • (1)字符型(Character)字段(C):存贮所有能打印的ASCⅡ字符及空格符及所有汉字系统的可打印的汉字和各种符号,即任何文本(Text)。 • (2)数值(Numeric)型字段(N):存贮可参与加减乘除运算的0—9的数值。
(3) 逻辑型(Logical)字段(L):存放.真.或.假.两个逻辑值。 输入T(t)或Y(y)为真,输入F(f)或N(n)为假。如,姓别: 男或女,婚姻:真或假。 (4) 日期型(Date)字段(D):存贮日期数据。VFP规定输入 和显示的默认格式为YYYYMMDD,对应年月日(年取4 位)。可用SET DATE等设置命令改变为YY.MM.DD等 多种格式。日期型字段可进行日期运算。 (5) 备注型(Memo)字段(M):用以存贮大量的文字信息, 表文件中如果包含有备注字段,则除了该表表文件外, 还有一个与表文件同名扩展名“.FPT”的备注型文件,用 来存放备每一条记录的注型字段的内容,而备注型字段 本身只存放其内容在备注型文件中的地址。因此备注型 字段除了能进行编辑、显示和打印外,不能进行其它操 作。它是不定长度的长字符串输入,如:报告、文章、 简介、说明等。
(6) 通用型(General)字段(G):它类似一个备注型字段, 但主要用来支持Microsoft的对象链接和嵌入 OLE(Object linking and embedding)。通用数据型字段 的内容也存贮在所分配的.FPT备注文件中,它可以包 括任何类型的链接或嵌入的对象。 (7) 日期时间型(Date Time)字段(T):既可以存贮日期, 也可以存贮时间或者两者兼有的值。其值是以 “yyyymmddhhmmss”字符格式存贮的,即年月日时 分秒的形式。可用设置命令设置格式。 (8) 浮点数值型(Float)字段(F) (9) 双精度数据型(Double)字段(B) (10) 整数型 (Integer) 字段(I) (11) 货币型(Currency)字段(Y) (12) 二进制 (binary)字符型字段 (13) 二进制(Binary)备注型字段
3.字段宽度——字段中能够存放的最大字符数或数字的最 大位数字符型字段不得大于254个字符,否则用 备注 型字段存贮。3.字段宽度——字段中能够存放的最大字符数或数字的最 大位数字符型字段不得大于254个字符,否则用 备注 型字段存贮。 数字型字段(N)的宽度=整数位数+ 小数位数+1(小数点) 逻辑型字段宽度为1, 日期型、日期时间型、货币型、双精度数据型字段宽 度为8 备注型、通用型、整数型以及二进制备注型 (Binary)字段宽度为4。 浮点数值型字段(F)的宽度=整数位数+小数位数+1(小 数点)二进制字符型(Binary)为1到254个字节。 4.小数位:字段的类型是数字型(N)和浮点型(F),就须给出小数位数。
4.1.2 建立表结构的命令CREATE 命令格式:CREATE [<文件>|?] 功能:建立一个新的表文件。 例1:建立文档管理系统的表结构,DF.DBF 字段名(NAME) 类型(Type) 宽度 (Width) 小数位(Dec (1)登录号(DEN) 字符型(C) 9 (2)登录时间(STIM) 日期型(D) 8 (3分类号(NO) 字符型(C) 11 (4)行文者号(WO) 字符型(C) 10 (5)文档名(BK) 字符型(C) 50 (6)行文者名(WR) 字符型(C) 0 (7)行文地(AD) 字符型(C) 50 (8)登出刊物(UN) 字符型(C) 20 (9)行文时间(TIM) 日期型(D) 8 (10)页数(P) 数字型(N) 3 (11)涉及金额(S1) 数字型(N) 11 4 (12)该文处理情况(Z) 字符型(C) 50 (13)摘要(CO) 备注型(Memo) 4
方法: 1、在命令窗口键入create DF.DBF 2、用鼠标单击:文件菜单笺(主菜单)—新建(弹出的子菜 单)—表(对话框)—新文件。
例2:建立学生成绩档案STU2.DBF。字段有学号,姓名,体育, 高数,计算机基础,英语,平均成绩,总分,排名,备注。例2:建立学生成绩档案STU2.DBF。字段有学号,姓名,体育, 高数,计算机基础,英语,平均成绩,总分,排名,备注。 用二种方式来建立: (1)窗口用命令建立 (2)用菜单方式建立 STU1.DBF结构 字段名(NAME) 类型(Type) 宽度 (Width) 小数位(Dec) 学号 C 7 姓名 C 8 性别 L 1 体育 N 6 2 高数 N 6 2 计算机基础 N 6 2 英语 N 6 2 平均成绩 N 6 2 总分 N 6 2 排名 N 6 2 备注 M 4
4.1.3 表结构的修改 命令格式:MODIFY STRUCTURE 功能:显示表文件结构,并允许修改此表的结构。 1、命令方式:进入表设计器。
2、菜单方式:单击显示菜单笺——表设计器进入。2、菜单方式:单击显示菜单笺——表设计器进入。
4.2 表数据的输入 一、建立表结构时输入 二、追加记录命令 APPEND 命令格式:APPEND [BLANK] 作用:在当前表的尾部(无论表中有无记录)追加新一条记 录(或一条空记录)。 *当前表指正在操作的表。 三、在表中插入记录命令INSERT 命令格式:INSERT [BEFORE] [BLANK] 作用:在表文件中间插入一条新录。 说明:在表中,系统有一个用来指示记录位置的指针,指针当前所在的记录称为当前记录。任选项[BEFORE]表示在当前记录前插入,否则在当前记录之后插入。[BLANK]表示插入空记录。
例1:INSERT &在当前记录后插入一记录。 INSERT BEFORE & 在当前记录前插入一记录。 INSERT BEORE BLANK &在当前记录前插入一个空记录 在插入记录后,其后所有记录的记录号加1,空记录只有记录号 例2:(1)要在STU1表文件第2个记录之前插入一个新记录(学号 为111111): (2)在第3条记录之后插入一个空记录。 命令: USE STU1 &&打开stu1表文件 GOTO 2 &&指针移到第2个记录 Insert before &&完成(1) GO 3 &&指针移到第3个记录 insert afert blank &&完成(2) LIST &&显示表全部记录
四、用BROWSE命令追加数据记录 BROWSE是VFP最有用的命令之一。 命令格式:BROWSE 作用:主要用于打开浏览窗口,查阅表文件并同时进行修改
4.3 表的打开、关闭、显示和定位 4.3.1 打开和关闭表文件命令USE 命令格式1:USE [<文件名>] 作用:打开<文件名>指定的表文件,该表如有备注型字段, 则自动同时打开相应的备注文件。 命令格式2:USE 作用:关闭当前打开的表文件。 命令格式3: close all 作用: 关闭打开的全部文件。
4.3.2 表的显示和列表 1.显示表的记录 LIST命令 作用:连续显示表(.DBF)的内容。 格式:LIST [OFF] [<范围>][[FIELDS]<表达式表>][WHILE<条件>][FOR<条件>][TO PRINT|TO FILE<文件名>] 说明:用户可根据自己的需要确定上面的任选项,组合LIST命令的各种功能、形式。 选项功能: [OFF]-------不显示记录号 [<范围>]----指定对哪些记录进行操作。 包括: RECORD n 第N条记录 NEXT n 自当前记录开始的共N条记录(n可是表达式) REST 自当前记录开始至文件末尾的所有记录。 ALL 所有的记录。如末选[<范围>]项则隐含范围为ALL。
[[FIELDS]<表达式>]-----每个表达式可以是字段名表,也可以是一般的表达式,但之间用“,”分隔。[[FIELDS]<表达式>]-----每个表达式可以是字段名表,也可以是一般的表达式,但之间用“,”分隔。 WHILE<条件>]-----自当前记录开始查找,直至发现第一个不满足条件的记录,就停止查找。这个选项常用于经过排序或索引的表文件。 [FOR<条件>]-----从<范围>内的第一个记录开始查找所有<条件>满足 的记录,直到范围内的记录搜索完毕 注:<条件>是逻辑表达式,它只有真(T、Y)或假(F、N)两个值。 [TO PRINT]----在打印机上打印出来。在执行命令前按Ctrl+P,也能联机打印。 [TO FILE<文件名>]-----将结果输出到用<文件名>指定的磁盘文件。
例如1:查看STU1表中所有计算机基础成绩大于或等于80分 的学生的信息例如1:查看STU1表中所有计算机基础成绩大于或等于80分 的学生的信息 命令: LIST ALL FOR 计算机基础>=80 例如2:查看STU1表中所有计算机基础成绩为80分及以上学生的 学号,计算机基础成绩,体育成绩。
例如3:查看STU2表中所有就读方式为统招的男生的学号,姓名例如3:查看STU2表中所有就读方式为统招的男生的学号,姓名 必须先打开表文件STU2.DBF
DISPLAY命令 命令格式:DISPLAY [OFF][<范围>][[FIELDS]<表达式>][WHILE<条件>][FOR<条件>][TO PRINT|TO FILE<文件>] DISPLAY 与LIST命令功能不同点: (a) VFP的DISPLAY命令每显示一个窗口的信息暂停一次。 按任意键继续显示,而LIST显示不暂停。 (b) DISPLAY命令省略范围选择项时,仅显示当前记录,而LIST命令则显示所有记录。
2.显示表的结构(进入表设计器) 命令格式1:LIST STRUCTURE [TO PPRINT|TO FILE<文件名>]
4.3.3 记录的定位 命令格式1:GO[TO] [ RECORD <n>] 定位到记录号为n的记录 GO[TO] TOP 定位到第1条记录 GO[TO] BOTTOM 定位到最后一条记录 例5: USE stu1 GO BOTTOM DISPLAY
GO TOP DISPLAY GO 3 disp
命令格式2:SKIP [±n] 作用:以当前记录为基准前移(-)或后移(+)N条记录。 说明:不选任选项,则默认n=+1。 注意:SKIP命令是相对移动,GOTO命令是绝对移动。 SKIP命令上移不能超过首记录,下移不能超过末记录。
4.4 记录数据的修改和删除 4.4.1 修改表数据 1、命令格式:EDIT 功能:显示需修改的记录。 例7
2、浏览修改命令BROWSE 命令格式:BROWSE[FIELDS<字段名表>][LOCK<数值表达式>][FREEZE<字段名>] [NOMENU][NOAPPENAD][NOMODIFY][WIDTH<数值表达式>] 功能:BROWSE可打开一个浏览窗,并显示表文件中的记录。 注:能用BROWSE方便地用全屏幕编辑键移动光标来编辑和修改 数据,因此不仅具有浏览和修改的功能,还可增加记录、删 除记录等操作。 选项说明: [LOCK<数值表达式>]----指定屏幕左边锁定字段的个数,当屏幕左右平移时,这些锁定的字段保持在原来的位置不动,便于用户对照。
[FREEZE <字段名>] -----使光标冻结在这个字段上,用户只能修改该字段的数据,其它字段只能显示不能修改,提高了数据的安全性和操作效率。 [NO MENU] ----是否从显示菜单中取消Browse项。 [NO APPEND] ----禁止向表中追加记录。 [NO MODIFY] ----禁止修改或删除表记录。 [WIDTH <数值表达式>] ----限定所选择的字符型字段的最大显示宽度,但用←→键使字段内容左右平移。 [FOR<表达式>] -----按指定条件进行判断,当<表达式>的值为真时,方可显示记录。
例如 8: use STU1 browse lock 1 freeze 数学 NO APPEND
3、表运算替代命令 命令格式: REPLACE [<范围>] <字段名1> WITH <表达式1>[,<字段2> WITH <表达式2>[ADDITIVE]…][FOR<条件>][WHILE<条件>] 功能:用表达式的值代替命令中与之相对应的字段的内容,对满足<条件>和<范围>的记录可成批自动、快速地修改。 例9:use stu1
4、修改通用(General)字段 VFP支持微软公司的Windows对象链接和嵌入(OLE),MODIFY GENERAL命令可在任何活动表的当前记录编辑、修改装有OLE对象通用(General)字段。 命令格式:MODIFY GENERAL<通用字段> 菜单操作:直接用鼠标双击通用(General)字段, 打开了指定 的通用字段的编辑窗口,用户可进行修改等操作.
4.4.2 删除表记录 1. 删除记录命令DELETE 格式:DELETE [<范围>][WHILE<条件>][FOR<条件>][IN<工 作区号>|<表别名>] [NOOPTIMEZE] 功能:给要删除的记录作删除标记。 例 10
2、恢复加删除标记的记录 格式:RECALL[<范围>][FOR<条件>][WHILE<条件>] 功能:取消记录的删除标记。
3、彻底删除命令PACK 格式:PACK [MEMO] [DBF] 功能:永久地将当前表中有删除标记的所有记录删除 掉。
3.表记录全部删除命令ZAP 命令格式:ZAP[IN<工作区号>|<表别名>] 功能:将所有的记录从表中删去,只留下表的结构
以上的所有操作都可在浏览表后,操作主菜单中“表”进行。以上的所有操作都可在浏览表后,操作主菜单中“表”进行。
4.4.3 删除表文件 DELETE FILE命令删除文件。 例11: DELETE FILE stu1.DBF
4.5 表的排序、索引和查寻 4.5.1 什么是排序与索引 排序是改变表物理顺序的过程,索引是排列其逻辑顺序的过程。由包含被索引的字段组成的表达式称关键字表达式。 4.5.2 表的排序 表的排序: 对表记录进行物理整理,生成一个新表文件。 命令格式:SORT TO <文件名> ON <字段名1> [/A][/D][/C][,<字段名2>[/A][/C][/D]]… [<范围>] [FIELDS<字段表>] [FOR<条件>] [WHILE<条件>] 功能:按关键字段的值从小到大(升序/A)或从大到小(降序 /D)将表的记录重新排列,生成一个新的表文件(.DBF)。
说明:(1)新表文件的结构与原表结构一样。说明:(1)新表文件的结构与原表结构一样。 (2)选项>[/A]是升序,[/D]是降序。如有[/C]选是指按字典排列,大小写一样:0——9,Aa——Zz;如无[/C]选是指按ASC‖码顺序排列:0——9,A——Z,a——z。 (3)使用排序表文件时,必先打开。如添加了新记录,必须重新排序,生成一个新表文件。 例12:用姓名字段来排序,生成XM.DBF文件
4.5.3 表的索引 对表记录进行逻辑整理,生成一个索引文件。 1.索引的类型与建立 压缩文件,选[COMPACT] . IDX文件,只包含一单个索引。 非压缩文件 类型 . CDX文件,(复合索引文件),包含多个索引,每个索引叫一个索引标识。 结构复合索引文件,其文件名与表 名相同,打开表时自动打开。 独立复合索引文件
建立.IDX索引文件: 命令格式: INDEX ON <关键字表达式> TO <文件名> [COMPACT] [ADDITIVE] 功能:对当前表中各记录<关键字表达式>的值的大小,以升序 进行记录逻辑上的重新排序,并将逻辑顺序存入TO后指定的索引文件名的索引文件中。
建立.CDX索引文件 命令格式:INDEX ON <关键字表达式> TAG <标识名> [OF< 文件名>] [FOR <条件>] 功能:对当前表根据关键字表达式的值以升序进行记录的逻辑排 序,并将逻辑顺序存入与表文件名同名或[OF<文件名>]所 指的复合索引文件的一个标识中。
使用表设计器(Table Designer)来生成索引 进入表设计器,单击索引标识卡,在索引名文本框中输入该索引标识的名字,在类型下拉表中可选择索引类型(Primary 主索引、Candidate侯选、Unigue唯一等,表达式框可输入索引表达式(Expression);筛选框可形成筛选条件的索引。 注:1、使用表设计器(Table Designer)生成的索引文件为结构复合索引文件(.CDX)。 2、打开或新建的索引文件在表设计器中才可见。