VisualFoxPro程序设计第2章.ppt

上传人:sh****n 文档编号:6561409 上传时间:2020-02-29 格式:PPT 页数:99 大小:365.81KB
返回 下载 相关 举报
VisualFoxPro程序设计第2章.ppt_第1页
第1页 / 共99页
VisualFoxPro程序设计第2章.ppt_第2页
第2页 / 共99页
VisualFoxPro程序设计第2章.ppt_第3页
第3页 / 共99页
点击查看更多>>
资源描述
VisualFoxPro程序设计教程 第2章表的操作 表是VisualFoxPro的基本内容数据库的管理是对表的管理表能够实现对数据的管理和加工表中的数据可以供多个程序共享VFP中的表分为自由表和数据库表 2 1表的建立 在VFP中表的建立方式有多种 本节只介绍用可视化的界面建立表和用命令建立表两种方式 建表过程一般可分为三步 确定表的结构用界面或命令建表输入表的内容 表2 1学生自然情况表 2 1 1确定表的结构 一个二维表格是由列行组成 表的列称为字段 表的行称为记录 字段是一种变量 字段变量类型可为表1 1数据类型中的所有数据类型 由表2 1确定学生自然情况表的结构 学号C 9 姓名C 6 性别C 2 出生D 团否L 入学成绩N 3 近照G 备注M 2 1 2表的建立 修改 显示 一个表的建立应确定表建立在磁盘中的位置 这样 在建立表后 需要打开表时 按表在磁盘中的位置找到表将表打开 用VFP可以建立默认路径 一旦默认路径建好 当打开VFP时它自动在默认路径上 建立默认路径的方法 通过界面建立通过命令建立SETDEFAULTTOf table 1 建表 1 用界面建表1 用菜单打开表设计器2 用命令打开表设计器格式 CREATE功能 打开表设计器创建表3 用向导创建表 2 用命令创建表 格式 CREATETABLE DBF 功能 创建表说明 宽度对于数值型可以包括小数的位数 如学生成绩字段的宽度为5位 其中小数占2位 写成N 5 2 例2 1用命令方式创建学生自然情况表 createtable学生 学号C 9 姓名C 6 性别C 2 出生D 团否L 入学成绩N 3 近照G 备注M 2 显示表的结构 1 用界面显示表的结构2 用命令显示表的结构格式 LIST DISPLAYSTRUCTURE功能 显示当前表的结构 例2 2显示学生表的结构use学生liststructure 3 修改表的结构 一个表在建立以后 由于实际需要发生变化 或在建表时表的结构就不对 需要对已存在的表结构进行修改 VFP提供了界面与命令两种方式 1 用界面修改表的结构1 用菜单打开表设计器修改表结构2 用命令打开表设计器修改表结构格式 MODIFYSTRUCTURE功能 打开表设计器 例2 3修改学生表的结构 将入学成绩字段改为N 6 2 在备注字段前插入个人简历字段 类型为M 例2 4将表的结构回复为表2 1所示的结构 2 用命令修改 格式 ALTERTABLEADD ALTER RENAMETO DROP功能 修改表的结构说明 1 ADD子句增加新字2 ALTER子句修改原有字段3 DROP子句删除字段4 RENAME子句将字段2改名为字段2 例2 5 对学生表增加爱好字段C 20 将爱好字段的类型改为C 30 将爱好字段改名为特长删除特长字段altertable学生addcolumn爱好c 20 altertable学生altercolumn爱好c 30 altertable学生rename爱好to特长altertable学生drop特长 2 1 3表的打开 关闭及相关操作 1 表的打开 1 用界面打开表 2 用命令打开表格式 USE功能 打开表 例2 6用命令开打学生表 USE学生 2 关闭表 1 用界面关闭表 2 用命令关闭表格式 USE功能 关闭当前表 3 表的复制 1 文件的复制命令格式 COPYFILESTO功能 将文件1复制为文件2在使用命令前文件1必须关闭例2 7将学生表复制成学生1表copyfiles学生 to学生1 2 显示文本文件内容命令格式 TYPE功能 显示文本文件内容 3 表文件的复制命令 COPYTO FOR WHILE FIELDS FIELDSLIKE FIELDSEXCEPT TYPE SDF XLS DELIMITED WITH WITHBLANK WITHTAB 功能 将当前表复制成一个由文件名指定的新表或其它类型的文件说明 1 VFP的范围有4种 ALL表示所有记录 NEXTN表示从当前记录算起N条记录 RECORD表示第N条记录 REST从当前记录开始到表的最后一条记录 若无 系统默认范围为ALL 2 FOR WHILE都为条件 但FOR与WHILE是有区别的 FOR是在指定范围内进行判断条件是否成立 而WHILE是当在指定范围中若遇到一个条件不满足的就停止操作 当FOR与WHILE同时存在 WHILE优先 3 FIELDS用字段名表中的字段形成新文件4 FIELDSLIKE用符合通配符的字段形成新文件 通配符可为 与 代表任意多个任意字符 代表一个任意字符 5 FIELDSEXCEPT用除了符合通配符的字段形成新文件 6 TYPE子句 当形成新文件为文本文件时 子句取SDF 数据之间无定界符和分隔符 当取DELIMITEDWITHBLANK时空格作为分隔符 无定界符 取DELIMITEDWITHTAB时 制表符作为分隔符 双引号为定界符 当形成文件为Excel文件时 子句必须取XLS 例2 8将学生表中性别为男的复制为文本文件学生 txt use学生copyto学生 txtfor性别 男 typesdftype学生 txt 4 表结构的复制 格式 COPYSTRUCTURETO FIELDS 功能 将当前表复制为文件名指定的表且只复制结构不复制数据 例2 9将学生表的结构复制成学生2 use学生copystructureto学生2use学生2liststructure 2 2表的基本操作 2 2 1记录的显示 追加 删除 修改 插入2 2 2记录指针的移动2 2 3内存变量与表之间的数据传递2 2 4记录的筛选与排序2 2 5索引文件的建立2 2 6统计与计数2 2 7工作区与多表使用 2 2 1记录的显示 追加 删除 修改 插入 1 记录的显示 1 用界面显示记录 2 用命令显示记录格式1 BROWSE FIELDS 格式2 LIST DISPLAY FIELDS FOR WHERE OFF TOPRINT PROMPT TOFILE 功能 按范围与条件要求显示记录内容 说明 1 LIST是滚动显示 即使满屏也不停止 DISPLAY是分屏显示 2 当省略范围子句时LIST默认范围为ALL 而DISPLAY默认范围是当前记录 即NEXT1 3 若使用OFF子句 记录号不显示 4 TOPRINT子句 结果输出到打印机 若再用PROMPT在打印前会出现打印机设置对话框 可对打印机进行相应的设置 5 TOFILE子句 结果输出到由文件名指定的文件 文件的扩展名默认为 txt 例2 10显示学生表 显示全部内容 显示性别为男的学生 显示性别为女且输出到g1 txt文件中 use学生browsebrowsefields学号 姓名 性别 出生listfor性别 男 listfor性别 女 tofileg1 txttypeg1 txt 2 追加记录 1 用界面追加记录 2 用命令追加记录格式1 APPEND BLANK 功能 向当前表中追加记录 若选BLANK是追加一条空白记录 此空白记录当时不可编辑 用REPLACE等命令可对其进行编辑 格式2 APPENDFROM FIELDS FOR 功能 从文件名指定的表文件中将符合条件的记录追加到当前表的尾部 例2 11在学生2表中追加一条空记录 将学生1表中性别为男的学生记录追加到表学生2中 use学生2appendappendfrom学生1for性别 男 3 删除表中记录 删除表中的记录 1 逻辑删除 只是将记录加了删除标记2 物理删除 将具有删除标记的记录真正从表中删除 1 逻辑删除与恢复1 用界面为记录加删除标记或去掉删除标记2 用命令为记录加删除标记与去掉删除标记 逻辑删除命令格式 DELETE 范围 FOR 功能 对满足条件的记录加删除标记 若范围省略 默认范围为当前记录即NEXT1 记录恢复命令格式 RECALL 范围 FOR 功能 为符合条件的记录去掉删除标记 若范围省略 默认范围为当前记录即NEXT1 2 物理删除记录 1 用界面进行物理删除2 用命令进行物理删除格式 PACK功能 将带有删除标记的记录 从表中真正删除3 物理删除表中所有记录格式 ZAP功能 将表中所有记录删除 只保留表的结构 例2 12将学生2表中性别为女的记录逻辑删除 物理删除 将学生2表中的记录全部物理删除 use学生2deleteallfor性别 女 listpacklistzaplistliststructure 4 修改记录 1 用界面修改记录1 显示 浏览2 在命令窗口上用命令EDIT或CHANGE 2 用命令修改记录 格式 REPLACE WITH WITH FOR WHILE 功能 在指定范围内将符合条件的记录中的相关字段用相关表达式来替换 若省略范围 默认范围为NEXT1 例2 13将学生1表中入学成绩在400 500分之间的加10分 replaceall入学成绩with入学成绩 10for入学成绩 400and入学成绩 500 5 插入记录 格式 INSERT BEFORE BLANK 功能 插入一条记录 若无BEFORE字符 则在当前记录后插入一条新纪录 当有BEFORE子句时在当前记录之前插入一条新纪录 当有BLANK子句时插入一条空白记录 当时不能编辑 可用REPLACE EDIT CHANGE等命令进行编辑 2 2 2记录指针的移动 1 用界面方式移动记录指针2 用命令方式移动记录指针1 绝对移动 格式 GO 功能 实现记录指针的绝对移动 当用TOP子句时指针指向第一条记录 当用BOTTOM子句时指针指向最后一条记录 当用记录号子句时指针指向记录号确定的记录 2 相对移动 格式 SKIP N 功能 N可为正 负整数 当N为正数时指针从当前记录向表尾方向移动N条记录 当N为负数时 指针从当前记录向表头方向移动N条记录 当省略N时 默认N为1 例2 14go与skip的应用 clearuse学生gotopgobottomgo2skip1skip 1 2 2 3内存变量与表之间的数据传递 1 单条记录与内存变量的数据传递 1 将当前记录字段数据传送给内存变量SCATTER FIELDS FIELDSLIKE FIELDSEXCEPT MEMO TO MEMVAR 例2 15表与变量数据的传送应用 cleardimensiona 8 use学生2go3scattermemvar m 学号 m 姓名 m 性别 m 出生 m 团否 m 入学成绩go5scattertoa a 1 a 2 a 3 a 4 a 5 a 6 a 7 a 8 2 将内存变量数据传给当前记录GATHERFROM MEMVAR FIELDS FIELDSLIKE FIELDSEXCEPT MEMO 例2 16内存变量与表之间数据传送的应用 use学生2appendfrom学生1appendblankdimensona 8 a 1 105010106 a 2 王小丽 a 3 女 a 4 1980 10 2 a 5 t a 6 100gatherfromalistappendblank学号 105010107 姓名 刘丽华 性别 女 出生 1981 10 3 gathermemvarlist 2 将多条记录与数组传送 1 将多条记录数据传送给数组COPYTOARRAY FIELDS FOR WHILE 例2 17多条记录数据传送给数组 use学生2dimensionb 2 8 copytoarrayb b 1 1 b 1 2 b 1 3 b 1 4 b 1 5 b 1 6 b 1 7 b 1 8 b 2 1 b 2 2 b 2 3 b 2 4 b 2 5 b 2 6 b 2 7 b 2 8 2 将数组数据追加到表中APPENDFROMARRAY FOR FIELDS 例2 18数组数据追加给表 use学生2appendfromarrayblist 2 2 4记录的筛选与排序 1 记录的筛选 1 设置筛选记录条件命令1 用界面方式2 用命令方式格式 SETFILTERTO 功能 设置访问当前表中记录的条件 当省略时 取消所有条件 例2 19过滤器命令应用 use学生1setfilterto性别 女 listsetfiltertolist 2 查找定位命令 格式 LOCATEFOR功能 查找符合条件第一个记录的位置 指针指向该记录 若表中无符合条件的记录 指针指向表尾 说明 若符合条件的记录有多条 可用CONTINUE继续查找下一个符合条件的记录 例2 20locate命令应用 use学生2locatefor性别 男 found displaycontinuedisplay 2 排序 在建表时没有按一定顺序建或者按某个字段的顺序建表 在实际应用中需要对字段的顺序加以改变 或需要按另外一种或多种字段进行有序排列的表 如何解决这类问题 VFP用sort排序命令来解决 VFP中的排序是指根据条件 由已存在表的内容 产生另一个新的排序表 而原表不变 格式 SORTTOON A D C A D D 范围 FOR WHILE FIELDS FIELDSLIKE FIELDSEXCEPT 功能 在指定范围内将符合条件的记录 按字段的升序或降序进行排序 将排序的结果形成一个新的表 说明 1 ON子句中为第1排序字段 为第2排序字段 A B表示升序或降序排序 默认为升序 C不区分字段中的大小写字母 2 M G字段不能用于排序字段 例2 21sort命令应用 use学生1sortto学生3on出生use学生3list 排序命令解决对已存在表按实际需要 按某一个字段或多个字段排序的问题 由于它使原表不变而又形成了一个新表 这样就在磁盘中造成了很大的冗余 浪费了存储空间 如何解决这样的问题 VFP用索引文件来解决 2 2 5索引文件的建立1 索引的概念 索引是根据表中一个或多个字段建立的逻辑顺序的文件 索引不生成表文件 并不改变表的物理位置 建立索引的字段称为关键字 索引文件的内容只是关键字与记录号 占用存储空间与排序表相比要小得多 存储的是索引与表的映射关系 它就像一本书的目录一样 由标题查到在书中的页码 查找的速度很快 当对表记录进行增 删 改操作时 索引文件会随着表而更新 索引文件分类 单索引文件 只存储一个索引的索引文件 扩展名为 IDX标准单索引文件压缩单索引文件复合索引文件存储多个索引的索引文件 扩展名为 CDX结构化复合索引文件非结构化复合索引文件 索引方式 主索引 关键字不可重复候选索引 关键字不可重复唯一索引 关键字可重复 与旧版本兼容普通索引 关键字可重复 2 建立索引 用界面建立结构化复合索引单字段索引复合字段索引用命令建立索引INDEXONTO TAG OF FOR COMPACT ASCENDING DESCENDING UNIQUE CANDICATE ADDITIVE 功能 建立索引文件或增加索引标识 说明 1 索引关键字可以是单个字段名 或用字段名组成的表达式 2 TO子句是建立单索引文件 3 TAG是建立复合索引标识 当不选OF子句时建立的是与表同名的结构化复合索引文件 当选OF子句时建立的是非结构化复合索引文件 4 COMPACT用来指定单索引文件是压缩的 复合索引总是压缩的 5 ASCENDING DESCENDING子句表示升 降序 默认为升序 6 UNIQUE子句建立唯一索引 7 CANDIDATE子句建立候选索引 8 ADDITIVE子句建立该索引文件是不关闭以前打开的索引文件 默认是关闭以前打开的索引文件 例2 22索引的应用 use学生indexon学号tox1uniquelistindexon性别 str 入学成绩 tox2listindexon入学成绩tags1descendinglistindexon姓名tags2candidateindexon姓名tags3ofx3 3 索引的使用 1 打开索引文件格式1 SETINDEXTO ADDITIVE 功能 打开当前表索引说明 1 在中第一个为主控索引文件2 省略ADDITIVE子句关闭当前工作区除结构化复合索引以外的所有索引文件格式2 USEINDEX功能 打开表与相应的索引文件 例2 23打开索引文件应用 use学生setindextox1 idx x2 idx x3 cdx 2 设置主控索引格式 SETORDERTO TAG OF ASCENDING DECENDING 功能 设置主控索引文件1 是指定主控索引文件或索引标识编号 先按USE或INDEX出现顺序打开的单索引文件 然后按创建顺序指定结构化复合索引表示的编号 最后按创建顺序指定非结构化复合索引的编号 2 是指定此索引文件为主控索引3 TAG OF 指定结构化 非结构化复合索引文件中的索引标识为主控索引 OF 适用于打开非结构化复合索引文件 4 无任何选项或SETORDERTO为取消主控索引5 ASCENDING DESCENDING用于重新设置主控索引文件升或降序 例2 24setorderto应用 setindextox1 idx x2 idx x3 cdxlistsetordertos1listsetordertos3ofx3 cdxlistsetordertouse 3 删除索引格式 DELETETAGALL 功能 删除打开的复合索引文件的索引标识 例2 25DELETETAG应用 use学生1indexon学号tox4indexon性别tagx5deletetagalluse 4 索引的更新格式 REINDEX COMPACT 功能 重建当前打开的索引文件 COMPACT子句可将已打开的 IDX索引文件转为压缩单索引文件 4 索引中的查询命令 索引应用于对关键字的快速查询 VFP中有两个索引查询命令 FIND与SEEK 1 FIND命令格式 FIND 功能 在索引关键字中查找与指定的字符串或数值相匹配的第一条记录 若找到 指针指向此记录 否则指针指向表尾 用FOUND 函数判断是否查找到 若用字符变量查找必须用 运算符 若要查找下一个匹配记录可用SKIP命令 字符串可不用定界符 但字符串若有前导与尾部空格要加定界符 例2 26find应用 use学生indexon姓名tox6find李立明 found displayx 刘美文 find x found displayindexon入学成绩tox7find620 found displayuse 2 SEEK命令格式 SEEK功能 在索引关键字中查找与表达式相匹配的第一条记录 当查找与之匹配的下一条记录时可用SKIP命令 当表达式为字符串时要求用定界符 表达式可为关键字所能取得任何一种类型 例2 27seek的应用 use学生indexon性别tox6seek 男 found displayindexon出生tags3seek 1979 3 21 found displayuse 2 2 6统计与计数 1 计数命令格式 COUNT FOR TO 功能 计算当前表中指定范围内满足条件的记录个数 且存于中 缺省范围是指表的所有记录 例2 28count应用 use学生counttox1countfor性别 女 tox2 x1 x2use 2 求和命令格式 SUM FOR TO ARRAY功能 在当前表中在指定范围内对符合条件的数值表达式表中的各表达式求和 且将结果一次存入内存变量表中的变量或数组中 缺省范围是指表的所有记录 例2 29建立学生成绩表 学生成绩F表 并统计各科成绩的总分 create学生成绩indexon学号taga1sum数学 VFP 英语tox1 x2 x3 x1 x2 x3create学生成绩Fsum原理 网络 Ctoarraya a 1 a 2 a 3 use 3 求平均值命令格式 AVERAGE FOR TO ARRAY功能 在当前表中在指定范围内对符合条件的数值表达式表中的各表达式求平均值 且将结果依次存入内存变量表中的变量或数组中 缺省范围是指表的所有记录 例2 30对学生成绩 学生表中各数值字段求平均值 clearuse学生成绩average数学 VFP 英语toy1 y2 y3 y1 y2 y3average数学 VFP 英语toarrayb b 1 b 2 b 3 use学生average入学成绩toz1 z1 4 计算命令格式 CALCULATE FOR TO ARRAY功能 在当前表的指定范围内对符合条件的数值表达式表中的各数值表达式进行计算 例2 31求学生成绩表中数学 VFP的总分 VFP最高与最低分 clearuse学生成绩calculatesum 数学 sum VFP toz1 z2 z1 z2calculatemin VFP max VFP toarraya a 1 a 2 use 5 分类汇总命令格式 TOTALTOON FIELDS FOR 功能 对已排序或已索引过的表 在指定范围内符合条件的记录 按指定关键字相同的那些记录进行分组并对数值字段列向求和 对于非数值字段取组内第一个记录中的字段的值 每组形成一个新纪录 将这些记录按原来的顺序形成由文件名指定的新表 例2 32建一个学生成绩表1 内容在表2 4基础上增加姓名与性别字段 该两个字段内容参照表2 1建立 将学生成绩表1按性别索引分类汇总 create学生成绩1indexon性别tox9totalto学生成绩hon性别use学生成绩hlistuse 2 2 7工作区与多表使用 在实际应用中很多情况都需要多表同时打开操作 同时从多表中获取有价值的数据 这类问题VFP用工作区方式给予解决一个工作区只能打开一个表 但VFP提供32767个工作区 因此可以打开多个表 1 工作区 1 指定表所在的工作区USE IN工作区号 1 工作区号取值可为1 32767 若取0 则选择一个未使用的最小编号工作区为当前工作区 工作区号1 10也可用A J字母表示 2 SELECT 函数可以返回当前工作区号 2 指定工作区命令格式 SELECT功能 由工作区号指定一个当前工作区 3 关闭工作区中的表格式 CLOSEALL功能 关闭所有工作区打开的表 选择工作区1为当前工作区 例2 34select的应用 select1use学生专业indexon学号toxs1listselect0use校专业listindexon专业号tagxs2select3use课程listcloseall 4 工作区字段互访格式 字段名 字段名功能 在当前工作区访问非当前工作区中的字段 例2 35工作区字段访问应用 select1use学生专业use校专业in2use课程in3select1list学号 姓名 专业号 B 专业号 B 专业名 C 课程号 C 课程名 C 学分closeall 2 多表使用 1 表的关联表的关联是指在两个表之间当一个表 父表 的记录指针移动时 另一个表 子表 的记录指针根据父表的要求指向子表的相应记录上 用这种关联控制或将表之间建立关系从而实现多表同时使用 在多表之间同时获取有价值的数据的目的 2 关系1 一对一关系由关联条件 父表只有一条记录与子表只有一条记录相对应2 一对多关系由关联条件 父表只有一条记录与子表多条记录相对应3 多对一关系由关联条件 父表有多个记录与子表只有一个记录相对应 4 多对多关系由关联条件 父表有M条记录与子表有N条记录相对应 3 用界面进行关联 4 用命令建立关联格式 SETRELATIONTO INTO ADDITIVE 功能 以当前表为父表 以为关联条件与别名1表为子表建立关联 说明 1 若无任何选项 将已建立的关联删除2 ADDITIVE子句是在建立关联时保留以前建立的关联 例2 36用命令建立关系的应用 clearselect1use学生indexon学号tagt1additiveselect2use学生成绩indexon学号tagt2additiveselect1setrelationto学号into学生成绩additivelist学号 姓名 B 数学 B VFP B 英语browsefields学号 姓名 B 数学 B VFP B 英语setrealtiontocloseall 5 一对多关联的建立格式 SETSKIPTO功能 以当前表为父表 以为子表建立一对多关系 若无任何选项 取消一对多关系 而由SETRELATION建立的一对多关系任存在 例2 37用命令建立一对多关系的应用 select2use选修indexon学号tagt3additiveselect1use学生专业indexon学号tagt3additiveselect1setrelationto学号into选修additivesetskipto选修listbrowsefields学号 姓名 B 课程号 B 成绩closeall 2 3小结 本章介绍了表的建立 表的基本操作 在VFP中表分为两种 一种为自由表 一种为数据库表 本章介绍的自由表 它独立于程序 具有共享性 因此在VFP中表的操作显得格外重要 本章介绍了用界面与命令两种建表方式 界面操作对于初学者来讲 非常方便 命令主要在后续章节中可运用到程序中 最终形成自动化工作方式
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!