浅谈数据库中记录指针移动.doc_第1页
浅谈数据库中记录指针移动.doc_第2页
浅谈数据库中记录指针移动.doc_第3页
浅谈数据库中记录指针移动.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

浅谈数据库中记录指针移动娄继荣数据库的操作,学生主要接触到有两类,一类是库结构操作,另一类是库记录操作,以及两者结合库文件操作。FoxPro基本命令中大部份命令与库记录操作有关。记录指针的位置对库记录的操作,起着不可忽略的作用。学生在学习过程中,往往对记录指针在操作中产生的移动,重视不够,容易造成操作失败或操作失误。FoxPro操作中的基本命令大部分由它的缺省形式出现,显得比较简练实用。例如,显示库记录的命令,常用 LIST来显示全部库记录,用 DISPLAY 来显示当前记录。命令中的范围子句均已缺省。LIST 缺省范围默认为全部记录, DISPLAY缺省范围默认为当前记录。学生对每条 FoxPro 命令的范围 缺省值学习尚感到困难。对缺省范围后的 FoxPro 命令引起的记录指针的移动更感茫然。特别是命令中范围缺省默认为 ALL 时,操作执行后记录指针将指向库的底部(库文件结束标志EOF),一般都不容易搞清楚。例如,要求在CJ(成绩)库中的尾部添入一条空记录。在该条空记录中相应的字段(语文、数学、英语)中填入语文、数学、英语的平均分。在姓名字段填入平均分。有的学生根据题意一步步进行操作:. USE CJ. APPEND BLANK. AVERAGE 语文,数学,英语 TO YW,SX,YY. REPLACE 姓名 WITH 平均分, 语文 WITH YW, 数学WITH SX, 英语 WITH YY屏幕显示:0 记录被替换显然操作失败。原因何在?有学生说,同样上述四条命令,只要将第二条命令和第三条命令交换位置,操作就能成功。这又是什么原因?这时可以指导学生重复上述两种不同操作程序。(为了正确起见,每次操作前首先要将前一次操作添加上去的最后一条记录真正删去)要求学生仔细注意观察命令行记录项中当前记录的变化。第一种程序执行到第三条命令后,记录定位在库底部(EOF)。因为第三条命令中缺省了范围子句,缺省的默认值为 ALL,指针自然要定位在库的底部(EOF)。要用第四条命令去替换不是记录的库底部,自然要失败。第二种程序,虽然第二条命令同样要将记录指针移到库底部。但是第三条命令却正好定位在最后一条空记录上。接下来的替换,虽然替换的命令也是范围缺省的形式,它的默认值却是当前记录。替换是针对这条空记录,当然会获得成功。为了使问题更进一步得到探讨,可继续提出问题,如用第一种程序要完成上述任务,可以办到吗?学生受到观察当前记录启示,自然会想到,在执行求平均命令后再插入一条重新定位命令 GO BOTTOM 同样可以完成上述任务。(或在替换命令上加上指定最后一条空记录的范围子句)上述举例只是说明记录指针是要随记录操作而移动。特别是命令中范围子句缺省的情况(这是常见的)稍一疏忽,或根本没有记录指针会随记录操作而移动的概念,容易造成操作失误。学生对数据库记录定位命令,引起记录指针的移动,是理解的,是有概念的。但对不是定位命令造成记录指针移动,较难形成概念。原因是多方面,教材上受篇幅影响。不能很好展开也是原因之一。为了克服这方面缺陷。可以指导学生在每次操作后,都要在命令行记录项中仔细观察当前记录数变化,找到规律。一般教材中,较少涉及命令行的介绍。其实命令行中的记录项是观察记录指针移动最好位置。该项由两部份组成。分子代表记录指针位置。分母指示的是当前库总记录数。学生一般对打开一个数据库后,记录的指针指向第一条记录,印象不深。其原因直观性不好。他们往往误认为只有显示当前记录,才能知道记录指针位置。每次用 DISPLAY 显示当前记录,既没有必要,有时也不现实。(每次用记录号函数来显示当前记录号,也无此必要)利用命令行来观察,既不需要进行任何操作,又一目了然。同时可以培养学生的观察能力。在命令行上观察记录指针,有它的特点,但也有它的局限性。例如在程序方式下一般就难使用。所以必须在观察命令行的基础上,不断总结,找到规律。记录操作命令一般与范围子句有关。范围子句一般有四种基本形式,每种形式造成记录指针移动是有规律的。可以列表如下:范围 操作后记录指针位置ALL EOF(库底部)RECORD N N(第N条)NEXT N RECNO()+(N-1)(原记录+N-1条)REST EOF(库底部)上述规律要求学生通过多次操作后自行总结。教师加以必要指导。FoxPro 命令中,常有范围子句缺省情况发生。缺省有两种,一种默认为 ALL 。常见的命令有:LISTCOUNTAVERAGESUMSORTCOPY等另一种是默认为当前记录,常见命令有:DISPLAYREPLACEDELETERECALL 等当前记录写成范围子句,一般可写成 NEXT 1 或 RECORD RECNO()两种方式。前一种方式比较简便,后一种比较容易理解。范围子句缺省的默认值,要求在不断操作中进行默记,达到熟练掌握。条件子句也会影响记录指针移动。这主要是在范围子句缺省情况下,范围另有默认值,默认范围与条件命令选择有关。选 FOR 命令范围默认为 ALL,选 WHILE 则默认为REST。记录指针移动仍然是与范围有关,仅范围是隐含的默认值。学生总结出上述规律后,可以对FoxPro命令执行后,记录指针产生的移动有比较清楚认识。不再会对记录指针移动感到不可捉摸。也不容易忘记命令操作后,记录指针有可能已经移动过。当然个别命令,如LOCATE 这条命令执行后,记录指针位置是与范围子句的关系有点不同。找到满足条件记录时,记录指针是停留在指定范围内满足条件的第一条记录上,找不到则指向范围末。虽然LIST和 LOCATE的范围的缺省都是默认为 ALL,但是 LIST FOR 和 LOCATE FOR 这二条命令执行后记录指针的位置是不一样。前者在 EOF ,后者在找到时,是指向满足条件的第一条记录上,找不到才指向 EOF。这一点在指导学生学习时要特别注意的。在程序设计中,更要注意命令行执行时可能引起记录指针的移动。考虑记录指针移动是设计中一个重要环节。例如在最常用的循环中,对库记录逐条进行操作:DO WHILE .NOT.EOF( )SKIPENDDO就要注意循环中,出现的命令可能造成记录指针移动,使循环不是逐条进行。特别是出现FOR 子句命令时(LOCATE 命令另作考虑)就特别要警惕,考虑要不要保留当前记录号位置,以便操作后返回,使循环能逐条正

温馨提示

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

评论

0/150

提交评论