400 likes | 586 Views
授课 -2 自由表操作(一). 自由表的管理操作是本门课的重点之一。这里,我们首先学习自由表的显示、修改等操作,然后介绍表结构的有关操作方法。. 2.1 表的基本操作(一) 2.2 表结构的有关操作. 【 任务(高新考试第 2.2 题) 】 将 C : 2006vfpUnit2 文件夹 Y2-02 复制到考生文件夹中,重命名为 “ X2-02 ” ,然后新建项目管理器,并命名为 “ 项目 2-2 ” ,保存在文件夹 X2-02 中完成下列操作: 1. 复制自由表结构 :
E N D
授课-2 自由表操作(一) 自由表的管理操作是本门课的重点之一。这里,我们首先学习自由表的显示、修改等操作,然后介绍表结构的有关操作方法。 2.1 表的基本操作(一) 2.2 表结构的有关操作
【任务(高新考试第2.2题)】 • 将C:\2006vfp\Unit2文件夹Y2-02复制到考生文件夹中,重命名为“X2-02”,然后新建项目管理器,并命名为“项目2-2”,保存在文件夹X2-02中完成下列操作: • 1.复制自由表结构: • 将Y2_02A.dbf中的表结构复制为X2_02A.dbf中,并将X2_02A.dbf添加至“项目2-2”的“自由表”中; • 在表中输入一条记录,结果如样文2-02A所示。 • 2.修改自由表记录及替换字段,打开Y2_02A.dbf,完成以下操作 • 按样文2-02B所示,修改Y2_02A.dbf中“报名序号”为“30968”和“30839”二条记录的“专业代号1”、“专业代号2”字段的内容; • 为“报名序号”为“30968”和“30839”二条记录作删除标记; • 为表添加一字段“序号”,数据类型为“数值型”,宽度为4; • 将每条记录的记录号的值放到字段“序号”中,结果如样文2-02C所示 样文2-02A
样文2-02B 样文2-02C
3. 在自由表中追加记录: • 将表 Y2_02B.dbf的记录追加到Y2_02A.dbf之中。 • 4. 清除记录中的删除标记,物理删除记录 • 清除Y2_02B.dbf中“报名序号”字段值为“11265”的记录的删除标记; • 物理删除Y2_02B.dbf中“报名序号”字段值为“11238”的记录。 • 5.记录的排序 • 将Y2_02B.dbf中所有记录按“姓名”字段降序、“院校代号”字段降序排序,生成新文件X2_02B.dbf,保存至考生文件夹X2-02,并将X2_02B.dbf添加至“项目2-2”的“自由表”中。 • 主要操作: • BROW、REPL、DELE、 RECA、 PACK、SORT的使用, • COPY STRU和 APPE … FROM的使用。
2.1表的基本操作(一) • 【学习目标】 • 使用命令完成表的显示、修改等操作 • 【关键概念】 • 命令的格式 • BROW、REPL 命令的用法
【表文件的打开与关闭】 • 1. 打开表 • 一般来说, 在进行各种表操作之前先要打开表。刚创建的表则自动处于打开状态,在其它情况下可用如下方法打开表。 • 用菜单: • 使用【文件】菜单中的【打开】命令。 若要对表进行编辑修改操作,则必须选定 【独占】复选框
用命令: • 格式:USE [表名/?][IN 工作区号]; • [INDEX 索引文件名表][ALIAS 别名]; • [EXCLUSIVE/SHARED] • 在当前工作区中打开表。打开时,若该表有备注型或通用型字段,则自动打开同名的.FPT文件。 • 例如: • USE rsb &&以独占方式打开rsb.dbf
参数说明: • (1)[IN 工作区号]:规定在指定工作区中打开数据库表或自由表。 • 注:VFP6.0的工作区号从1-32767,前10个工作区号也可用字母A-J表示。 • (2) [INDEX 索引文件名表]:打开指定的索引文件。 • (3) [ALIAS 别名]:指定该工作区的别名,若不指定别名,则默认为表文件名。 • (4)用EXCLUSIVE选项,则以独占方式打开表。用SHARED选项,则以共享方式打开表,此时表结构和表数据只读,不能编辑修改。
2. 关闭表 • •格式一:USE • •格式二:CLOSE DATABASE • 功能:关闭当前数据库和其中的表,若无打开的数据库,则关闭所有自由表,并选择工作区1。 • •格式三:CLEAR ALL • 功能:关闭所有的表,并选择工作区1,释放所有内存变量、用户定义的菜单和窗口。 • 除以上命令之外,还可通过退出Visual FoxPro来关闭已打开的表。选定【文件】菜单中的【退出】命令,或在【命令】窗口键入命令QUIT。
【相关知识】 • Visual FoxPro命令的格式与特点 • (1) 命令格式 • Visual FoxPro的命令是由命令字开头,后随操作对象和若干命令子句。命令字指明具体操作,而子句说明操作结果的呈现形式与操作条件等。以下给出几个简单的命令示例。 • USE rsb&& 打开名称为rsb的表文件 • BROW FOR ALLT(职称)=“副教授” • && 浏览职称为副教授的教师记录信息 • USE && 关闭已打开的当前表
(2)命令子句 • ①[范围]子句: • ALL,RECO n,NEXT n,REST。 • ②[FIEL 字段]子句 • 字段之间用 “,”分隔。 • ③ [FOR/WHIL 条件]子句 • 功能有一些小差别。 • FOR—对满足条件的所有记录进行操作。 • WHIL—当有满足条件的记录便开始操作, • 当出现不满足条件的记录便停止。
(3)命令特点 • Visual FoxPro的命令具有下列特点: • (1)命令的各部分简洁规范,通俗易懂。 • (2)命令子句的数量不限,顺序不拘。 • (3)命令中只规定对操作的要求,不描述具体的操作过程,所以称为“非过程化”语言。 • Visual FoxPro的命令既可逐条用交互的方式执行,又可编写成程序,以“程序文件”的方式执行。 • 命令中的词汇可使用简写,即只写出它们的前4个字母。 • 例如:REPLACE 可简写作REPL 即可。
(3)命令分类 • Visual FoxPro拥有近500条命令,可分为以下7类: • 建立和维护数据库的命令。 • 数据查询命令。 • 程序设计命令:包括程序控制、输入/输出、打印设计、运行环境设置等命令。 • 界面设计命令:包括菜单设计、窗口设计、表单设计等命令。 • 文件和程序的管理命令。 • 面向对象的设计命令。 • 其他命令。
2.1.1 浏览显示记录 • 打开表后,通过“浏览” 可直接浏览修改表记录。 • 1.BROW命令 • 格式:BROWSE [参数项] • 功能:数据输入、编辑、浏览和修改等功能。
参数说明: • NOAPPEND:不允许浏览窗口中显示的记录进行追加操作。 • NOEDIT:不允许对浏览窗口中显示的记录进行修改。 • NODELETE:不允许对浏览窗口中显示的记录进行修改。 • TITLE ”标题文字”:用于指定浏览窗口的文字标题。 • FIELDS 字段名表:显示指定的字段。 • FOR 表达式:显示满足条件的记录。 • VALID 条件表达式 [ERROR “错误提示信息”]:用于在浏览窗口中对某一字段进行编辑,修改和输入时,对数据的合法性进行检查。 • WIDTH 字段宽度:指定字段在浏览窗口中显示的宽度。 • COLOR SCHEME 颜色方案:用于设定浏览窗口的显示颜色。
(1)重新安排列 • 若要在“浏览”窗口中重新安排列,则将列标头拖到新的位置,或从“表”菜单中选择“移动字段”,然后用上下箭头键移动列,最后按回车键。 • (2)拆分“浏览”窗口 • 若要拆分“浏览”窗口,则将鼠标指针指向窗口左下角的拆分条,向右方拖动拆分条,将“浏览”窗口分成两个窗格。 • (3)改变显示时的列宽 • 在列标头中,将鼠标指针指向两个字段之间的结合处,拖动鼠标可以调整列的宽度尺寸。 • (4)打开或关闭网格线 • 选择“显示”菜单——“网格线”。
任务(高新考试第8.8题的第1点) • 打开、浏览表(USE、BROWSE命令) • ● 以独占方式打开表Y8_08.dbf; • ● 浏览表、并要求显示在浏览窗口中的字段如样文8-08A所示。 • USE Y8_08 EXCL • BROW FIEL 序号,姓名,性别,出生年月,中学代码 • USE
2.EDIT命令 • 格式:EDIT [范围][FOR 条件][FIEL 字段名表]… • 功能:用编辑方式(字段名在左侧)顺序修改当前表中指定范围内符合条件记录的指定字段。
【相关知识: 记录的定位】 • 存取数据先要进行记录定位,记录定位就是将记录指针指向某个记录,使之成为当前记录。表刚打开时,记录指针指向第一个记录。 • (1)在“浏览”窗口中移动 • 使用滚动条或菜单,如用下面方法: • •从“表”菜单中选择“追加记录”; • •在子菜单中选择“第一个”、“最后一个”、“下一个”、“前一个”或“记录号”; • •如果选择了“记录号”,在“转达到记录”对话框中输入待查看记录的编号,然后选择“确定”按钮。
(2)使用移动指针命令 • 绝对定位命令 • 格式:GO TOP|BOTTOM • 功能:将记录指针定位在表的第一个记录或最后一个记录。 • 格式:GO <数值表达式> • 功能:将记录指针定位在<数值表达式>指出的记录。 • 例如:USE rsb • GO 4&& 指针移动到4号记录 • ? RECNO()&& 显示当前记录号4
相对定位命令 • 格式:SKIP [<数值表达式>] • 功能:从当前记录开始相对移动记录指针,<数值表达式>表示移动记录的个数。 • 当<数值表达式>为负值时,指针向文件头移动,当<数值表达式>为正值时,指针向文件尾移动。<数值表达式>缺省时默认为1。 • 例如: • USE rsb&& 打开rsb,当前记录为首 • (第1个)记录 • GO 3&& 当前记录为第3个记录 • SKIP && 指针向文件尾移动1 • ? RECN()&& 显示 4 • SKIP -2&& 指针向文件头移动2 • ? RECN()&& 显示 2
(3)条件查找定位命令 • 格式: LOCATE [范围][FOR 条件] • 功能:将记录指针定位在满足条件的第一个记录。 • 格式: CONT • 功能:继续查找,将指针定位在满足条件的下一个记录。 • 例如:USE rsb • LOCA FOR 性别=‘女’&& 指针移动到… • ? RECN()&& 显示当前记录号 • CONT && 继续查找… • ? RECN()&& 显示当前记录号
3.LIST命令 • 格式:LIST [范围] [FOR/WHILE 条件] ; • [FIEL 字段名表] [OFF]; • [TO PRINT/FILE 文件名] • 功能:按指定范围和条件筛选出记录并显示出来,或送到指定的目的地。 • 参数说明: • OFF:为了让用户了解显示内容所在的记录,命令自动显示记录号,若不需要显示记录号,则在命令中使用OFF选项。 • TO PRINT:将输出内容打印出来。 • TO FILE:将输出结果送到指定文件中。
(1) FIELDS子句 • FIEL子句指定要显示的字段,相当于关系运算的“投影”操作。 • 保留字FIEL可以省略 • [字段名表]用来列出需要显示的内容,表达式之间用“,”号分隔。 • [例如]显示rsb中职工的编号,姓名,性别和年龄。 • 可在命令窗口键入如下命令: • USE rsb • LIST 编号,姓名,性别,YEAR(DATE())-YEAR(出生日期)
(2) 范围子句 • 用来确定该命令涉及的记录,范围有4种限定方法: • • ALL:所有记录; • • NEXT n :从当前记录开始的n个记录; • • RECORD n :第n个记录; • • REST:从当前记录开始到最后一个记录的所有记录。 • 例如: • USE rsb && 打开rsb,记录指针指向第1条记录 • LIST 编号,姓名,性别,出生日期 NEXT 4 • && 显示从第1条到第4条记录的编号、姓名、性别、出生日期
(3) FOR子句 • FOR子句的[条件]为逻辑表达式,它指定记录选择的条件,相当于关系运算的“选择”操作,在指定的范围内筛选出符合条件的记录。 • 例如: • USE rsb • LIST 姓名 FOR 婚否=.T. REST • LIST 姓名,出生日期,婚否 FOR YEAR(出生日期)<1975
4.DISP命令 • 格式:DISPLAY [范围] [FOR/WHILE 条件] ; • [FIELDS 字段名表] [OFF]; • [TO PRINT/FILE 文件名]; • [NOCONSOLE][NOOPTIMIZE] • 功能:分屏显示当前表中指定范围内符合条件的记录的指定字段。 • 注意:命令动词为LIST时,范围子句缺省时默认为ALL。而当命令动词为DISP时,范围子句缺省时默认为当前记录。
2.1.2 修改记录 • 1. BROW,EDIT命令: 直接对某一记录值进行修改。 • 2. REPL命令 • 格式:REPLACE [范围][FOR/WHILE 表达式] 字段名1; • WITH 表达式1 [,字段名2 WITH 表达式2] …… • 功能:在当前打开表的指定记录中,将有关字段的值用相应的表达式值来替换。若[范围]与[条件]等选项都缺省,只对当前记录的有关字段进行替换。该命令对[范围]内符合[条件]的记录用[表达式I]的值来替换[字段I]。 • [例如] • USE rsb • GO 6 • REPL 职称 WITH "副教授",部门代码 WITH "A01" • 范围子句、FOR子句等的使用与显示命令中相同。
【相关例题】 • P101 • 例2.1: • 将CJB.DBF中所有“大学英语”课程的学分都改为4。 • REPL ALL 学分 WITH 4 FOR 课程名=“大学英语” • 例2.2: • 若班级成绩表BJCJB.DBF中有姓名、英语、政治、计算机基础和总分字段,要求根据英语+政治+计算机基础作为总分字段的值。 • REPL ALL 总分 WITH 英语+政治+计算机基础 • 例2.3: • 若职工.dbf中有姓名、职称、基本工资等字段,现要对职称为教授或副教授的职工的基本工资增加工资的30%。 • REPL ALL FOR 职称=“教授”.or.职称=“副教授” ; • 基本工资 WITH 基本工资*1.3
任务: • 高新考试第2.2题的第2点,利用命令在自由表中完成修改操作,具体是: • 按样文2-02B所示,修改Y2_02A.dbf中“报名序号”为“30968”和“30839”二条记录的“专业代号1”、“专业代号2”字段的内容。 • 将每条记录的记录号的值放到字段“序号”中。 • 操作: • repl 专业代号1 with “03”, 专业代号2 with “08” for 报名序号= “30968” • repl 专业代号1 with “06”, 专业代号2 with “04” for 报名序号= “30839” • repl all 序号 with recno()
2.2表结构的有关操作 • 【学习目标】 • 掌握表结构的显示、复制、修改等操作 • 【关键概念】 • 表结构的复制命令格式 • 结构描述表
2.2.1 表结构的操作 • 1.显示表结构 • 格式1:LISP STRU [TO PRINT/TO FILE 文件名] • 格式2:DISP STRU [TO PRINT/TO FILE 文件名] • 功能:显示当前已经打开表的结构。 • LISP为连续显示; DISP为分屏显示。 • [例如] 显示“人事表”的结构。 • 在【命令】窗口依次键入如下两条命令: • USE rsb&& 在当前工作区打开表rsb • LIST STRU&& 显示表rsb的结构
2.使用命令直接建立表结构 • 格式:CREATE TABLE <新表文件名>(<字段名1> <类型>; • <长度>[,<字段名2> <类型> <长度>,…]) • [例4.9]建立一个包含学号、姓名、出生日期、班级编号和入学成绩的表结构。 • CREA TABL STUDENT(学号 C(6),姓名 C(6),; • 出生日期 D,班级编号 C(4),入学成绩 N(6,2))
3.使用命令复制表结构 • 格式:COPY STRUCTURE TO 表文件名 [FIELDS 字段名表][WITH CDX] • 功能:仅复制当前表的结构,不复制其中的数据。 • 参数说明:如果使用WITH CDX选项,则复制表结构的同时也复制表索引;若使用FIELDS选项,则新表的结构只包含其指明的字段,同时也决定了这些字段在新表中的排列次序。 • [例:高新2.2 第1点] • 将Y2_02A.dbf中的表结构复制为X2_02A.dbf。 • USE E:\2006VFPLX\X2-02\Y2_02A &&源表要先打开 • COPY STRU TO X2_02A
4.使用结构描述表建立表结构 • 格式:CREATE <新表文件名> FROM <结构表文件名> • 而结构表可以用命令建立 • 格式:COPY STRU EXTE TO <结构表文件名> [FIEL 字段名表] • 结构表的表结构是固定的,由字段名、类型、宽度、小数位数、空值、索引等11个字段组成,见P106表4-4
【示例】建立人事表RSB结构的电子表格 • USE RSB • COPY STRU EXTE TO RSBJG • USE RSBJG • COPY TO RSBJG.XLS TYPE XL5
5. 用命令进入表设计器修改表结构 • 格式:MODI STRU • 6. 表文件部分内容复制 • 格式:COPY TO <目的表文件名> [FIEL 字段名清单]; • [范围] [FOR/WHILE 条件] • 功能:将当前表中选定的部分记录和部分字段复制成一个新表或其它类型文件。 • [例4.10]在RSB.DBF中将男教授的记录复制到表ZG1.DBF中。 • USE RSB • COPY TO ZG1 FOR 职称=“教授”AND 性别=“男”
√ BROW √ LIST 与 DISP √ REPL APPE 与 APPE FROM INSE 与 INSE INTO DELE RECA PACK SCAT TO GATH FROM COUN TO √ COPY TO SORT TO TOTA TO SUM TO CALC TO SET FILT TO 阅读P97—P107 常用对自由表进行操作的命令一览
【本课小结】 • 使用命令完成各技能点的操作: • 1)复制表:COPY FILE … TO … • 2)显示表记录:BROW • 3)修改表记录:REPL…WITH • 4)复制表结构:COPY STRU • 5)用结构表创建表:CREA … FROM … • 【作业】 • 上机2 (计算机高新考试第2.2题) 返回本课目录