1、数据记录的维护操作章节第三章 数据记录的维护操作 教学目的要求通过对第三章的学习,使学生对工作区的概念有个全面的理解,并会使用工作区来打开表,会使用多个工作区;使学生对表中的数据记录能够进行添加、修改、删除、替换、定位等操作,同时能够使用命令完成这些操作。教学重点难点教学重点:1. 工作区的用法。2. 多工作区的使用。3. 掌握表结构、数据记录的显示命令。4. 掌握数据记录的添加、定位、删除、替换命令。教学难点:1. 多工作区的使用。2. 数据记录的添加、定位、删除、替换命令的使用。拟留作业与实训作业:1. 工作区的使用2. 显示表结构3. 显示表数据记录4. 数据记录的定位,包括绝对定位和相
2、对定位5. 数据记录的添加6. 数据记录的删除、替换实训:完成实训大纲中实训项目四小结通过本章学习:1、掌握工作区以及多工作区的使用方法;2、掌握表菜单下的命令操作;3、掌握表菜单下的命令操作对应的命令。教学主要内容教学方法时间分配【学习目标】 知识点:1. 熟悉工作区的概念。2. 掌握工作区的使用方法。3. 掌握多工作区的使用。4 掌握在当前工作区操作其他工作表的方法。技能点:1会选择工作使用表。2会切换工作区使用表。3在当前工作能够对其他工作区表进行操作。第一节、 工作区的的使用 一、工作区的概念与多表的使用在以前版本中一直沿用了多工作区的概念,在每个工作区中可以打开一个表,即在一个工作区
3、中不能同时打开多个表。如果在同一时刻需要打开多个表,则只需要在不同的工作区中打开不同的表就可以了。Visual FoxPro最多可以同时打开32767个数据表,每个打开的表都要在存储器中开辟一个存储区域,我们把这个存储区域叫做工作区。所以可知Visual FoxPro 为数据表提供了32767个工作区。 用USE命令打开表时,系统默认使用1号工作区。而且每当使用USE命令打开表时,Visual FoxPro 会先将此工作区原先已打开的表关闭。由此可知,假如希望同时打开多个表,必须先选择工作区。USE命令中的IN WorkArea选项可以指定工作区,专门选择工作的命令是:SELECT nWork
4、Area |cWorkArea |cTableAlias在Visual FoxPro 中规定工作区编号是132767,只有前10个工作区有固定的名称,分别是AJ。工作区别名是指定工作区中打开的数据库表别名。 举例来说,假设有学生及成绩两个表,并且希望同时打开它们,则在命令窗口中执行下列命令: CLOSE DATABASE ALL OPEN DATABASE 学生管理 SELECT 1 USE 学生 SELECT 2 USE 成绩 在USE 命令中加入选项同样可以同时打开表学生及成绩。执行命令如下: CLOSE DATABASES ALL OPEN DATABASE 学生管理 USE 学生 IN
5、 1 USE 成绩 IN 2 由上面的练习发现,IN 参数能使在不离开当前所在工作区的情况下,在别的工作区打开表。前面我们曾经提到过,未加入任何参数的USE命令,能够关闭当前所在工作区中已打开的表文件。而搭配IN 参数的使用,则能够让在不离开当前所在工作区的情况下,关闭别的工作区中已打开的表。 在前面的例子中,学生表在工作区1中,成绩表打开在工作区2中,而当前工作区仍然是1号工作区。假设希望工作区2位于当前工作区,可以用SELECT 命令实现。 看下面的命令: SELECT 2 SELECT B 注意:我们通常称当前所在的工作区为当前工作区,而打开于当前工作区的表则称为当前表(或活动表)。 在
6、某些时候,可以同时打开了好几个表,甚至搞不清楚哪些工作区已打开,而哪些尚未打开。为了避免发生这种情况,建议每次都在被占用的最小号工作区中打开表。什么是被占用的最小号工作区呢?举例来说,假设已经在第1号与第3号工作区中打开表,而未被占用的最小号工作区就是2号工作区。 选择未被占用的最小号工作区可以使用下列两种方法: 1 使用SELECT 0命令 每次打开数据表前,先执行SELECT 0命令。系统便会选择未被占用的最小号工作区为当前工作区。例如, CLOSE DATABASE ALL OPEN DATABASE 学生管理 SELECT 1 USE 学生 SELECT 3 USE 成绩 SELECT
7、 0 USE 课程 2 使用IN 选项 直接使用添加了IN 0选项的USE 命令打开表。例如: CLOSE DATABASES ALL OPEN DATABASE 学生管理 USE 学生 IN 1 USE 成绩 IN 3 USE 课程 IN 0二、表的别名 选用最小号工作区打开表,很可以使我们一时不知道该表占用的工作区编号或名称。在这种情况下,我们该如何切换工作区呢?其实在前面介绍的SELECT 命令语法中,也可利用工作区中打开表的别名(Alisas)来选择工作区。而表的别名可以在用USE 命令打开表时指定,若不指定则默认为表原名就是别名。例如,假设我们分别在工作区1与工作区2中打开表学生与成
8、绩,如下所示: CLOSE DATABASES ALL OPEN DATABASE 学生管理 SELECT 0 USE 学生 SELECT 0 USE 成绩 若想切换回第1号工作区,只要执行命令: SELECT 学生 而若想再切换回第2号工作区,只要执行命令: SELECT 成绩 可在USE命令中使用ALIAS AliasName参数来指定表的别名,例如: CLOSE DATABASES ALL OPEN DATABASE 学生管理 SELECT 0 USE 学生 ALIAS STUDENT SELECT 0 USE 成绩 ALIAS SCORE 必须注意的是,一旦指定了别名,则必须利用别名切
9、换工作区。所以此时若想切换回第1号工作区中,必须执行命令: SLECT STUDENT 想再切换回第2号工作区中,必须执行命令: SELECT SCORE 注意:各个工作区中已打开的表的别名不可重名。三、直接操作非当前工作区的字段Visual FoxPro 也允许在当前工作区,直接操作其他工作区中已打开表的字段。但是请使用下面的引导格式。 别名.字段名称 或 别名-字段名 举例来说,假设我们在工作区1中打开了表学生,在工作区2中打开了表成绩.2号工作区是当前工作区,假如希望要浏览表学生中学号与姓名字段的内容,请键入如下命令: CLOSE DATABASES ALL OPEN DATABASE
10、学生管理 SELECT 0 USE 学生 SELECT 0 USE 成绩 ?学生.学号,学生.姓名 CLOSE DATABASES 利用“别名.字段名称”的格式,可以让您清楚地指出,此字段是哪一个工作区中表的字段.如果在字段名称前不加别名引导,表示它为当前工作区的当前表字段。四、重复打开同一个表Visual FoxPro 允许在不同的工作区中,同时打开同一个表文件,这种操作必须在USE 命令中增加选项AGAIN。假设我们希望同时在三个工作区中打开表学生,可使用下列方式。CLOSE DATABASE ALLOPEN DATABASE 学生SELECT 0USE 学生SELECT 0USE 学生
11、AGAINUSE 学生 IN 0 AGAIN在不同的工作区中重复打开同一个表时,假如我们没有指定别名的话,则第一次以表名作为别名,再次重复打开时则以工作区名作为别名。如果前10个工作区中打开,那么别名则分别可能是AJ;如果在1132767号工作区打开,则别名分别可能是W11W32767。让我们看看下面的实例。CLOSE ALLOPEN DATABASE 学生管理SELECT 1USE 学生?ALIAS()学生SELECT 2USE 学生 AGAIN?ALIAS()BSELECT 10USE 学生 AGAIN?ALIAS()JSELECT 0USE 学生 AGAIN?ALIAS()CSELECT
12、 11USE 学生 AGAIN?ALIAS()W11SELECT 0USE 学生 AGAIN?ALIAS()BSELECT30USE 学生 AGAIN?ALIAS()W30SELECT 32767USE 学生 AGAIN?ALIAS()W32767CLOSE ALL30分钟(详讲)20分钟(详讲)30分钟(详讲)20分钟(详讲)教学主要内容教学方法时间分配【学习目标】 知识点:1. 显示表的结构2. 显示表的记录技能点:1. 用命令显示表结构。2. 用命令显示数据记录。第二节、数据表的显示一、显示表结构一、 可以使用命令来查阅当前表的结构。命令如下:LIST STRUCTURE 或 DISPL
13、AY STRUCTURE LIST命令以连续输出方式显示表结构,DISPLAY命令以分页的方式显示表结构。比方说,想要列出表学生的结构,可以这样: CLOSE DATABASES ALL OPEN DATABASE 学生管理 USE 学生 LIST STRUCTURE 如果在使用LIST STRUCTURE 命令前,还没有打开表,屏幕会出现一个“打开”对话框,提示先选择并打开一个表。 假如您希望将表的结构用打印机打印出来,只要在LIST STRUCTURE 命令中加入TO PRINTER 关键字即可,例如: CLOSE DATABASES ALL OPEN DATABASE 学生管理 USE
14、学生 LIST STRUCTURE TO PRINTER 或许希望将表的结构存储到一个文本文件中,请在LIST STRUCTURE 命令中加入TO 参数,例如: CLOSE DATABASES ALL OPEN DATABASE 学生管理 USE 学生 LIST STRUCTURE TO 该命令将表学生的结构复制到文本文件TEST.TXT中(.TXT为默认扩展名)。二、显示表记录二、 LIST命令语法:LISTFIELDSFieldListScopeFORExpression1WHILE Expression2OFFNOCONSOLENOOPTIMIZETO PRINTERPROMPT|TO
15、DISPLAY 命令LISTFIELDSFieldListScopeFORExpression1WHILE Expression2OFFNOCONSOLENOOPTIMIZETO PRINTERPROMPT|TO LIST 命令与DISPLAY命令都可用来显示表的数据记录,它们的语法也基本相同。我们将详细介绍LIST命令的使用方法,然后再说明DISPLAY 命令与LIST 命令的差异。但要注意的是,在使用LIST命令或DISPLAY 命令之前必须先使用USE命令打开表文件。 假设我们想显示表学生的数据内容,在命令唇膏口中执行下列命令: OPEN DATABASE 学生管理 USE 成绩 LIS
16、T 结果屏幕上会出现表学生的所有记录。 我们发现没有参数的LIST命令,显示了当前表中的所有记录,而且在首行显示出各字段名称的序列。如果不希望将字段名显示出来,请先执行状态控制命令SET HEADING OFF。例如, SET HEADING OFF LIST 那么,屏幕上显示表学生的所有记录时,字段名将不被显示。 如果希望恢复字段名的显示,可在命令窗口中执行下列命令: SET HEADING ON (1)显示指定字段内容 如果只想显示部分字段的内容,请使用FIELDS FidldList(关键字FIELDS可省略),其中FidldList即为字段名称系列,而各个字段名称之间请使用逗号分隔。假
17、设我们只想显示表学生中“学号”“姓名”及“性别”三个字段的内容,请在命令窗口中输入下列命令: OPEN DATABASE 学生管理 USE 学生 LIST 学号,姓名,性别 各个字段之间用逗号来分隔。 (2)指定记录显示范围 利用Scope参数可以限定显示记录的范围,此范围值如下: RECORE nExpr:表示指定仅显示第nExpr条记录。 NEXT nExpr:表是指定仅显示从当前记录开始的nExpr条记录。 REST:表示指定从当前记录开始到表结尾的全部记录。 ALL:表示指定显示所有的数据记录。 例如, 显示学生表的第5条记录。 OPEN DATABASE 学生管理 USE 成绩 CL
18、EAR LIST RECORD 5 例如, 显示学生表中第1条至第3条数据记录。 OPEN DATABASE 学生管理 USE 学生 CLEAR LIST NEXT 3 例如, 接着范例2,显示表学生中,从当前数据记录开始至表结尾的数据记录。 OPEN DATABASE 学生管理 USE 学生 CLEAR LIST REST 例如, 显示表学生中第5条记录的“姓名”及“院系”字段。 OPEN DATABASE 学生管理 USE 学生 CLEAR LIST 姓名,院系 RECORD 5 (3)显示满足条件的全部记录 如果加入FOR Iexpression1的条件子句,则LIST命令会在指定范围内
19、查找符合Iexpression1条件的记录,而且只有这些符合条件记录会被LIST命令显示出来。 例如, 将表学生中,学生姓名为“季节”的记录显示出来。 OPEN DATABASE 学生管理 USE 学生 CLEAR LIST FOR 姓名=“季节” 例如,将表学生中,显示院系中包含“中文”的记录显示出来。 OPEN DATABASE 学生管理 USE 学生 CLEAR LIST FOR “中文”$ “院系” 例如, 将成绩表中,成绩介于70-80之间的记录显示出来。 OPEN DATABASE 学生管理 USE 成绩 CLEAR LIST FOR 成绩=70 AND 成绩1985-01-01
20、例如, 将学生表中男学生的姓名字段值显示出来. OPEN DATABASE 学生管理 USE 学生 CLEAR LIST FOR 性别=“男” (4)显示满足条件的连续记录 在LIST 命令中,选项WHILE会从当前记录开始,逐一测试记录是否满足条件Iexpression2。满足条件则显示该记录,一旦遇到不符合条件记录时,便立刻停止测试结束显示操作。 比较下面的两段程序的执行情况: OPEN DATABASE 学生管理 USE 学生 CLEAR LIST FOR 性别=“男” OPEN DATABASE 学生管理 USE 学生 CLEAR LIST WHILE 性别=“男” (5)不显示记录号
21、 如果在LIST命令中加入选项OFF,则记录号将不被显示。 例如, OPEN DATABASE 学生管理 USE 学生 CLEAR LIST 姓名,院系,性别 OFF (6)打印输出 如果在LIST命令中加入选项TO PRINTER,LIST命令将会在把记录输出到屏幕的同时,也送到打印机打印出来。 例如, OPEN DATABASE 学生管理 USE 学生 CLEAR LIST 姓名,院系,性别 TO PRINTER (7)建立一个文本文件 如果在LIST命令中加入选项,LIST命令的输出将会存储至指定的文本文件中,此文本文件默认扩展名为.TXT。 例如, OPEN DATABASE 学生管理
22、 USE 学生 CLEAR LIST FOR 姓名,院系,性别 TO (8)DISPLAY命令的差异 LIST命令默认操作范围是所有数据记录(即ALL),而DISPLAY命令的默认操作范围是当前数据记录(即 NEXT 1)。 当表中的数据记录太多,无法用一屏幕显示完时,DISPLAY ALL 命令会以分页方式显示,并提示用户继续。而LIST命令则会连续显示,直到最后一行记录在屏幕上显示出来为止。 (9)用浏览窗口显示记录 对比LIST和DISPLAY 命令在屏幕编辑区显示记录的方式,相信有不少用户更加怀念易学易用的浏览窗口方式。其实使用命令方式也可以启动浏览窗口,只需执行BROWSE 命令即可
23、。 例如, OPEN DATABASE 学生管理 USE 学生 BROWSE 同样地,也可在BROWSE 命令中假如FIELDS选项,从而仅浏览特定的字段,或使用FOR 参数指定符合特定条件的记录。以下是BROWSE 命令几个最常用的用法示范。 例如, 浏览学生表中,所有学生的“学号”、“姓名”、“院系”及“出生日期”。 OPEN DATABASE 学生管理 USE 学生 BROWSE FIELDS 学号,姓名,院系,出生日期 例如, 浏览学生表中,院系是中文系的学生数据。 OPEN DATABASE 学生管理 USE 学生 BROWSE FOR “中文”$ 院系 例如, 浏览学生表中,中文系
24、女生的姓名。 OPEN DATABASE 学生管理 USE 学生 BROWSE FIELDS姓名 FOR “中文”$ 院系 AND 性别=“女”30分钟(详讲)10分钟(详讲)10分钟(详讲)10分钟(详讲)10分钟(详讲)5分钟(略讲)5分钟(略讲)10分钟(详讲)10分钟(详讲)教学主要内容教学方法时间分配【学习目标】 知识点:3. 记录指针的操作4. 数据记录的搜索技能点:3. 用命令实现记录指针的操作。4. 用命令进行数据记录的搜索。第三节、数据记录的查询一、记录指针的操作当我们输入表记录时,按照记录输入的先后次序,系统自动为每一条记录赋予了记录号。表中也存在着一个与“记录号”对应的指
25、针。随着记录操作的变动,记录指针也随之变化。任何时候,记录指针总是指向某一条记录,这条记录就叫做当前记录。使用USE命令打开表以后,记录指针指向第一条记录。对数据记录指针的操作可以使用“表”菜单中的“转到记录”命令,其中有“第一个”、“最后一个”、“上一个”、“下一个”命令,可以在表中移动记录指针。在这里详细介绍如何使用命令来操作记录指针。对记录的任何操作,只能对当前记录起作用。很多命令(如LIST等)都可以自动控制记录指针,如果必要,也可以使用GO、GOTO 及SKIP命令直接移动记录指针,从而选择当前操作的记录。接下来是这些命令的详细使用说明。 GO命令命令语法:GO nRecordNum
26、ber IN nWorkArea|IN cTableAliasGO TOP|BOTTOM IN nWorkArea|IN cTableAliasNRecordNumber参数是记录号,在命令窗口中执行GO命令,记录指针将移至给定记录号的记录上。例如,假设要将记录指针移至第4条记录,请键入下列命令:OPEN DATABASE 学生管理USE 学生GO 4DISPLAY如果想将记录指针移至第一条记录上,请添加参数TOP;如果想将记录指针移至最一条记录上,请添加参数BOTTOM。例如,OPEN DATABASE 学生管理USE 学生GO BOTTOMDISPLAYGO TOPDISPLAY利用IN
27、nWorkArea或IN cTableAlias子句,也可以移动其他工作区中表的记录指针。其中nWorkArea可以是工作区数字编号,cTableAlias则可以是工作区的别名或工作区名。例如,CLOSE DATABASES ALLUSE 学生 IN 0USE 成绩 IN 0GO 4?RECNO() 4GO 3 IN 2?RECNO(2) 3注意:RECNO()函数会返回当前记录指针所指向记录的编号,其语法是;RECNO(nWorkArea|cTableAlias)。参数nWorkArea与cTableAlias可以指示RECNO()函数检查其他工作区。GOTO命令与GO 命令完全相同。 SK
28、IP命令命令语法:SKIPnRecordsIN nWorkArea|IN cTableAliasSKIP命令可以将记录指针相对与当前记录,往前或往后移动若干条记录。没有任何参数SKIP命令相当于SKIP 1命令,会将记录指针下移一条记录。例如,CLOSE DATABASESOPEN DATABASE 学生管理USE 学生?RECNO()1SKIP ?RECNO()2DISPLAY如果选项nRecords为正数,则记录指针会从当前记录向下移动;如果选项nRecords为负数,则记录指针会从当前记录向上移动。选项参数值是移动的记录条数。例如,CLOSE DATABASESOPEN DATABASE
29、 学生管理USE 学生SKIP 5?RECNO()5SKIP 3?RECNO()3利用IN nWorkArea或IN cTableAlias子句,SKIP命令也可以移动其他工作区的记录指针。NWorkArea可以是工作区数字编号,cTableAlias则可以是工作区的别名,或工作区名。例如,CLOSE DATABASESOPEN DATABASE学生管理USE 学生SKIP?RECNO()2SKIP 4 IN 成绩?RECNO(“学生”)5 测试函数在数据表第一条记录之前是表的起始位,而在最后一条记录之后则是表的结束位。当记录指针已经指向第一条记录时,再用SKIP 1命令移动指针,将会使记录指针移至表的起始位。但是利用RECNO()函数查看当前记录号,会发现记录号仍然是1。若再次执行记录指针SKIP 1命令,系统将会提示出错信息。为了防止出错,在程序中常会利用BO
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1