VFP6电子教案第3章(数据库的基本操作).ppt
第3章数据库的基本操作,学习要点,1、建立项目管理器、认识项目管理器;2、建立数据库和表的基本方法;3、表结构的基本处理方法;4、记录的基本处理方法。,第3章数据库的基本操作,3.1 建立项目管理器,3.2 数据库设计方法,3.3 数据库的建立与维护,3.4 建立数据表,3.5 记录基本处理方法,小结,返 回,退 出,3.6 数组与表的字段之间的相互数据传递,3.1 建立项目管理器,3.1.1 项目管理器,3.1.2 用项目管理器构造可执行文件,3.1.3 添加文件到一个项目,3.1.4 生成应用程序,返 回,退 出,3.1.1 项目管理器,项目管理器是VFP应用程序开发过程中所有对象与数据的“控制中心(Control Center)”项目管理器的创建方法:1、利用VFP系统菜单上的【文件】中的【新建】菜单项进行创建,并且可以使用创建项目管理器的向导。2、在VFP的命令窗口中通过输入命令来创建项目管理器。方法一:利用菜单创建项目Gxglxt。,格式一:CREATE PROJECT,方法二:利用命令创建项目管理器:,参数描述:指定项目的文件名。如果没有为文件指定扩展名,则VFP自动指定.PJX为扩展名。:打开“创建”对话框,提示为正在创建的项目文件命名。,项目管理器,【新建】:创建新文件命令按钮。,【修改】:修改项目管理器中存在的文件。,【添加】:添加已存在的文件到项目管理器。,【运行】或【打开】或【关闭】或【浏览】:运行“文档”、“代码”和“其它”选项卡中文件,打开、关闭数据选项卡中的数据库、表等,关闭(或称为折叠)项目文件中某一展开的选项卡显示。,【移去】:将所选择的文件移出项目文件或从磁盘上删除。,【连编】:建立应用程序(.APP)或可执行(.EXE)程序。,折叠或展开项目管理器。,项目管理器,返 回,3.1.2 用项目管理器构造可执行文件,构造一个应用程序应注意以下问题:1、首先应设置起始点 应用程序都应该有一个主文件作为其执行的起始点,它可以是包含在一个项目中的任何程序、表单或查询文件,然后从【项目】菜单中选择【设置主文件】来建立应用程序的起始点。在项目中,只有一个文件能设置成为主文件建立一个主程序的一般步骤如下:安装应用程序的环境确定初始用户界面建立事件循环(Event loop)当应用程序退出时恢复环境。【例3-1】主程序示例:DO Setup&安装环境DO MainMenu.mpr&调用主菜单显示初始用户界面READ EVENTS&建立事件循环DO cleanup&恢复环境注意:在MainMenu.mpr中应加一个退出菜单项,以便发出CLEAR EVENTS命令防止死循环。,2、安装应用程序环境在安装应用程序环境时应注意,在安装源程序中,应先将初始环境存贮起来,然后启动一个应用程序特定的环境,它包括初始化变量、建立默认路径、引用外部库(External library)和过程(procedure)文件等。3、显示初始界面初始用户界面可以是一个开始屏幕、菜单栏、表单或者任何其它组件。可以在主程序中通过使用DO命令去运行一个菜单,或者通过DO FORM去运行一个表单,或者通过设置一个表单为主程序来初始化用户界面。4、控制事件循环一旦环境安装并且已经显示初始界面后,应该准备建立一个事件循环去等待用户交互。控制事件循环的方法是:发出READ EVENTS命令启动处理事件;发出CLEAR EVENTS命令去停止处理事件。5、恢复原始环境为了恢复存贮变量的原始值,可用宏替换它们进原始SET命令。例如,如果已在安装应用程序环境时已存贮SET TALK设置的内容进入了CtalkVal变量:CtalkVal=SET(“Talk”)如果在使用中改变了“TALK”的设置,当要恢复其初始设置时,则在恢复原始环境时可以用下一条命令去恢复:SET TALK&CtalkVal,返 回,3.1.3 添加文件到一个项目,一旦建立了应用程序的框架后,便可以准备将其它文件添加到项目中。添加文件到项目中一个好的方法是去连编此项目。为添加一个文件到项目管理器中,也可以先在项目管理器中选择要添加的文件类别,在单击项目管理器中的【添加】按钮。若要连编 项目,可在项目管理器中设置主文件后再选择【连编】。,当向项目中添加组件时,应该重复项目的连编和运行。如果没有在“连编选项”对话框中的“操作”选项组中选择“重新编译所有文件”,那么,在连编时只编译自上次连编以后修改过的文件。,返 回,3.1.4 生成应用程序,要从项目管理器创建一个最终的文件,需要把它连编为一个应用程序文件或可执行文件。连编应用程序步骤:第1步:设置主文件;第2步:在“项目管理器”中选择【连编】按钮;第3步:在弹出的“连编选项”对话框中的“操作”选项组中选中“连编应用程序”单选项;第4步:单击【确定】。连编可执行文件步骤:第1步:设置主文件;第2步:在“项目管理器”中选择【连编】按钮;第3步:在弹出的“连编选项”对话框中的“操作”选项组中选中“连编可执行程序”单选框;第4步:单击【确定】。,返 回,3.2 数据库设计方法,3.2.1 数据库设计步骤,3.2.2 数据需求分析,3.2.3 数据库表确定,3.2.4 数据库表字段确定,返 回,退 出,3.2.5 数据库表间关系设定,3.2.6 设计求精,3.2.1 数据库设计步骤,数据库设计步骤:第1步:确定建立数据库的目的,这有助于确定需要VFP保存哪些信息;第2步:确定需要的表;在明确了建立数据库的目的之后,就可以着手把信息分成独立的主题,例如“Student”(学生情况)或“Grade”(学生成绩)等。每个主题都可以是数据库中的一个表。第3步:确定所需字段;确定在每个表中保存哪些信息。在表中,每类信息称为一个字段,浏览表时在表中显示为一列。例如,在Student表中,可以有这样的字段:“学号”、“姓名”、“性别”等。第4步:确定关系;分析每个表,确定一个表中的数据和其它表中的数据有何关系。必要时,可以在表中加入字段或创建一个新表来明确关系。第5步:设计求精。对设计进一步分析,查找其中的错误。创建表时,在表中加入几个示例记录,看能否从表中得到所想要的结果。,返 回,3.2.2 数据需求分析,这一步是建立数据库的关键,也就是说必须清楚地了解最终的需求是什么?有一些什么样的信息要保存?以后需要如何对数据进行处理?等等,建立Gxglxt数据库需求分析,首先列出需数据库回答的问题清单。如:本学期每个人每门课的期末考试成绩是多少?有哪些人的哪些课程不及格?哪些学生的学业成绩达到了获奖学金的标准?哪些学生在考试中哪门课程舞弊了?等等。其次收集所有的表单和报表。这些表单和报表包含了应该由数据库提供的各种信息。如期末考试成绩需要录入哪些信息等。最后,期末考试成绩册如何打印等等。,返 回,3.2.3 数据库表确定,确定数据库表是数据库设计过程中技巧性最强的一步。应注意以下几个方面的问题:一个表只保存一个主题的内容;同一信息只保存一次,这将减少出错的可能性;防止删除有用信息。以建立Gxglxt数据库中的表为例:在学习成绩表中,每位学生所学的课程不属于一位学生,因而需要有一个学习课程表。同样,一个班级不只一名学生,要有一个班级主题的表等。Student表和Grade表都与学生有关,但关于学生个人情况的信息保存在Student表中,Grade表中只保存与成绩有关的信息。当一个班的学生毕业后,可能要删除这个班级,但不能删除这个专业,最好的方法是建立一个“专业(Specialty)”表。,返 回,3.2.4 数据库表字段确定,确定表字段的几点技巧:每个字段直接和表的主题相关;不要包含可推导得到或通过计算可以得到的字段;收集所需的全部信息;以最小的逻辑单位存储信息。使用主关键字段 VFP不允许在主关键字中有重复值或null值。因此,不能选择包含有这类值的字段作为主关键字。因为要用主关键字的值来查找记录,所以它不能太长,以方便记忆和键入。主关键字可由一定长度的字母和数字组成,或是某一范围内的值。主关键字的长度直接影响数据库的操作速度,因此,在创建主关键字时,该字段值最好使用能满足存储要求的最小长度。,返 回,3.2.5 数据库表间关系设定,VFP是一个关系型数据库管理系统。在每个不同的表中存储的数据之间有一定的关系。通过在这些表之间定义关系后,可以利用这些关系来查找数据库中有关的信息。表之间有三种关系:即一对一关系、一对多关系和多对多关系 在一对一关系中 如果两个表有相同的主题,可在两个表中使用同样的主关键字字段,并以此建立一对一关系。如果两个表有不同的主题及不同的主关键字,选择一个表(任意哪个表)把它的主关键字放到另一个表中作为外部关键字。在一对多关系中要建立这样的关系,就要把关系中“一方”的主关键字字段添加到“多方”的表中。在关系中,“一方”用主关键字或候选索引关键字,而“多方”使用普通索引关键字。在多对多关系中向VFP正确指定关系之前,需要改变数据库的设计,即创建第三个表,把多对多关系分解为二个一对多关系。这第三个表称作“纽带表”,纽带表可能只包含这两个表的主关键字,也可能包含其它信息。,返 回,3.2.6 设计求精,对所设计的表分析,查找是否存在如下问题:表中是否带有大量的并不属于这个主题的字段?表中是否有些字段由于对很多记录不适用而始终保持空白?是否有大量的表包含了同样的字段?是否遗忘了字段?是否有需要的信息没包括进去?如果有,它们是否属于已创建的表?如果不包含在已创建的表中,那就需要另外创建一个表。是否为每个表选择了合适的主关键字?在使用这个主关键字查找具体记录时,它是否很容易记忆和键入?是否有字段很多、记录却很少的表,而且许多记录中的字段值为空?查找到存在的问题后,就要修改表的结构,以改进设计方案。,返 回,3.3 数据库的建立与维护,3.3.1 数据字典的作用,3.3.2 将表加入到数据库,返 回,退 出,3.3.1 数据字典的作用,主关键字和候选索引关键字。数据库中表间的永久关系。长表名和长字段名。各字段的标题,日后它们作为标题头显示在“浏览”窗口和表格中。字段的默认值。表单中使用的默认控件类。字段的输入掩码和显示格式。字段级规则和记录级规则。触发器。存储过程。与远程数据源的连接。本地视图与远程视图。对每个字段、表和数据库的注释。,返 回,3.3.2 将表加入到数据库,1、创建数据库 2、将表加入到数据库 要将一个或多个表加入到数据库中时,可以在“项目管理器”中选择“数据”选项卡,再从列表中选择“数据库”项下的“表”,最后选择【添加】按钮。要添加的表必须具备下列条件:该表是一个有效的.DBF文件;除非为表指定一个唯一的长文件名,否则表不允许与打开的数据库中已有的表同名。表不能同时放在另一个数据库中。要加入表的数据库必须具备下列条件:必须以独占方式打开。要想独占地打开一个数据库,在使用OPEN DATABASE命令时加入EXCLUSIVE子句;不包含在事务中。,返 回,3.4 建立数据表,3.4.1 建立表前的准备,3.4.2 建立表基本结构,3.4.3表结构的基本处理方法,返 回,退 出,3.4.1 建立表前的准备,在建立表结构以前,首先应该根据用户的需求,明确所要创建的表中应该包含哪些字段,每个字段的名称、类型和宽度。创建Gxglxt中的Student(学生情况)表基本情况应包括:学号、姓名、性别、出生日期、班级、电话等内容。结构如下:,返 回,3.4.2 建立表基本结构,使用命令建立表结构:,格式:CREATE,功能:建立一个表文件。说明:输入命令后,按Enter键,屏幕上会出现“表设计器”对话框,利用该对话框即可建立表的结构。参数描述:指定要创建的表的名称。说明:输入命令后,按Enter键,屏幕上会出现“表设计器”对话框,利用该对话框即可建立表的结构。建立表结构是指原来磁盘上没有这个表文件,通过CREATE命令的执行,在磁盘上建立起一个新的表文件,若定义了备注型字段,则同时建立了一个.FPT为扩展名的表备注文件。若在文件名前指定了驱动器标识符,则文件建立在指定的驱动器上,否则建立在当前驱动器上。不指定文件扩展名时,缺省扩展名为.DBF。,若磁盘上存在这个文件或文件重名,系统显示一个警告对话框,提示是否要改写表。如果需要改写,则选择【是】,否则选择【否】。不要用A-J单个字母作为表文件名,因为他们是专门用于工作区别名的。使用命令创建Student.dbf示例:,使用菜单创建表在VFP的系统菜单上单击【文件】|【新建】菜单项便可打开“新建”对话框(也可以利用键盘操作:先按Alt+F组合键,再按Ctrl+N键,也可以直接按Ctrl+N键)。在“新建”对话框中,选择“表”单选项,然后再单击【新建文件】按钮进入到的“打开”对话框。在这个对话框中首先是(关键也是)选择一个表,或为表新取一个文件名,然后按【保存】按钮,VFP会进入“表设计器”。进入表设计器后的操作与上相同。使用菜单创建表示例,使用项目管理器创建表结构 在项目管理器的“数据”选项卡中选择“表”,然后单击【新建】|【新建表】按钮。在出现的“创建”对话框中输入所要创建的表的文件名,并选择存储路径,然后选择【保存】,将打开表设计器。使用项目管理器创建表结构示例显示格式:指定字段值显示时的格式。显示输入掩码:指定字段值在输入时的格式。显示标题:指定字段名在显示时所用的字符串。字段有效规则:指定字段在进行结构修改时应该满足的条件。字段有效性信息:指定字段在结构修改时提示字段级规则的信息。字段有效性默认值:为字段指定默认值。记录有效性规则:指定在输入记录时所输入的数据应满足的条件。记录有效性信息:当输入的数据不满足条件而又试图将数据保存时所出现的提示信息。,返 回,3.4.3 表结构的基本处理方法,功能:显示当前表结构的有关信息。包括表文件名、记录个数、最后一次修改日期、各字段的字段号、字段名、类型、宽度和小数位,一条记录的字节总数。参数说明:TO PRINTER子句表示将操作结果送到打印机。后面可以接PROMPT参数,这一参数的在执行打印命令之前,先打开“打印设置”对话框,用以对打印机有关参数(如纸张大小、打印范围等)进行设置。PROMPT参数只能紧接TO PRINTER命令。TO FILE子句表示将操作结果输出到指定的磁盘文件中。,1、显示表结构,格式一:LIST STRUCTURE TO PRINTERPROMPT/TO FILE格式二:DISPLAY STRUCTURE TO PRINTERPROMPT/TO FILE,LIST STRUCTURE和DISPLAY STRUCTURE命令的区别DISPLAY STRUCTURE在每显示一屏信息后暂停,等待用户按任意一键后继续显示;LIST STRUCTURE显示信息时没有周期性暂停,而是连续向下显示,直到显示完毕。,显示Student表的结构USE StudentLIST STRUCTURE 执行上面的命令后,屏幕显示如下:,2、修改表文件的结构,格式:MODIFY STRUCTURE,功能:显示表设计器,修改当前表文件的结构。说明:如果没有在当前选定工件区打开表,则显示“打开”对话框,允许用户从中选择一个要修改的表。对表结构的更改包括:添加和删除字段;修改字段名称、大小和数据类型;添加、删除或修改索引标识,以及指定是否支持NULL值等。(1)、删除字段 第一步:将光标移到要删字段的任一位置或单击该字段的任意位置;第二步:按Ctrl+D删除该字段或单击【删除】命令按钮;第三步:按Ctrl+W或单击【确定】按钮存盘,返回命令窗口。说明:若删除了某些字段,对应字段的内容也丢失。,(2)、插入新字段 第一步:将光标移到要插入字段的下一行的任一位置或单击要插入字段的下一字段;第二步:按Ctrl+I或单击【插入】按钮,便可插入一个新的空字段,在空字段的位置上可以填入新字段名称、类型、宽度及小数位。第三步:按Ctrl+W或单击【确定】按钮存盘,返回命令窗口。(3)、修改字段名、宽度、类型和小数位 将光标移到要修改处直接进行修改。一个字段有四个结构参数项,每次只能修改其中的一项。如果需要修改其中的多项,为了不丢失数据,应分为多次进行修改,每次修改存盘后继续修改,直到结束。修改字段类型时,可能造成数据丢失。无论进行何种修改,退出MODIFY STRUCTURE命令的方法与退出CREATE命令环境的方法相同。,3、复制表结构,格式:COPY STRUCTURE TO FIELDS,功能:将当前打开的表文件结构的部分或全部复制为所指定的一个表的结构。参数描述:指定生成新表结构的表文件名。FIELDS:指定在新表中包含的字段及顺序。说明:复制生成的表文件中的结构部分包含哪些字段,以及字段先后顺序都由FIELDS 所规定。若省略该子句,则按字段原来的顺序复制全部字段。4、建立表结构的其它方法(1)生成表结构文件,格式:COPY STRUCTURE TO EXTENDED,功能:它将当前表的结构复制生成一个特殊的表文件,即表结构伸展文件。将Student的结构复制生成一个表结构文件studstr,然后用显示其结构 USE StudentCOPY STRUCTURE TO studstr EXTENDEDUSE studstrLIST STRUCTURE,(2)将表结构文件还原成表结构,格式:CREATE FROM,功能:将表结构文件还原成为普通表文件。新建的表文件是一个只有结构部分而没有记录的表结构框架。将上例中的studstr表结构文件还原生成一个新的表文件Student1CREATE Student1 FROM studstrUSE Student1LIST STRUCTURE,返 回,3.5 记录基本处理方法,3.5.1 表的打开与关闭,返 回,退 出,3.5.2 录入记录,3.5.3 记录指针定位,3.5.4 在表中插入记录,3.5.5 显示表中的记录,3.5.6 修改表中的记录,3.5.7 删除记录,3.5.1 表的打开与关闭,使用任何一个表以前,都必须首先打开表。,格式:USE EXCLUSIVE SHARED,功能:打开指定的表文件。参数描述:指定要打开的表的名称。EXCLUSIVE:在网络上以独占的方式打开表。SHARED:在网络上以共享的方式打开表。打开表时若表含有备注型字段,则FPT文件也同时被打开。每个表被打开时均赋于一个别名。若省略ALIAS,则其别名与主文件名相同。若不选择任何参数,表示关闭当前工作区中已打开的表。在任一时刻,每个工作区最多允许打开一个表。如果指定工作区已有表打开,在打开新的表时,系统总是先自动关闭原来打,打开的表。打开表时,记录指针指向第一条记录。,3.5.2 录入记录,表的数据录入有多种方法:第一种方法是在表结构建立时录入数据;第二种方法是在表结构建成并存盘关闭了“表设计器”之后,利用命令向表中追加记录。,格式:APPEND BLANK,参数描述:BLANK:在当前表的末尾添加一条空记录。功能:在表的末尾添加一个或多个新记录。说明:可以在只有表结构而没有记录的空表中添加记录,也可以在已经录入数据的表中的尾部追加记录;它可以向当前表的尾部追加一条或多条新记录。省略可选项,,返 回,则在当前表的尾部追加任意新记录,追加记录的方法及操作与用CREATE命令建立表时输入数据的方法相同;当发出APPEND或APPEND BLANK命令,并且在选定工作区中没有打开的表时,将显示一个“打开”对话框,我们可以在对话框中选择一个要添加记录的表。APPEND命令打开一个编辑窗口,我们可以在其中输入一个或多个新记录。增加新记录后,VFP将自动修改打开的所有索引。打开浏览窗口后通过追加方式添加记录方法:在项目管理器中选定一个要添加记录的表,然后单击【浏览】,然后在系统菜单中选择【显示】|【追加方式】。添加记录的数据,返 回,3.5.3 记录指针定位,记录定位就是将记录指针移到指定的记录上,记录指针指向的记录称为当前记录。VFP提供了下列绝对定位和相对定位两类命令。1、记录指针的绝对定位,格式一:GOTO RECORD/TOP/BOTTOM 格式二:GO RECORD/TOP/BOTTOM格式三:,功能:将记录指针直接定位到指定的记录上。参数描述:指定一个物理记录号,记录指针移至该记录上。TOP:将记录指针定位在表的第一个记录上。BOTTOM:将记录指针定位在表的最后一个记录上。说明:RECORD可省略。的值必须大于0,且不大于当前表文件的记录个数。,2、记录指针的相对定位 相对定位与当前记录有关,它是把记录指针从当前位置作相对移动。,格式:SKIP,功能:将记录指针向前或向后作相对若干条记录的移动。参数描述:指定记录指针作相对移动的记录数据。说明:1、移动的记录数等于的值,其值为正数时,记录指针向下移动,当是负数时,记录指针向上移动。2、省略选择项,约定为向下移动一条记录,即SKIP 等价于SKIP 1。,返 回,3.5.4 在表中插入记录,1、INSRET命令,格式:INSERT BLANK BEFORE,功能:在当前记录之前或之后插入一条或多条新记录。参数描述:选择BEFORE子句,新记录插在当前记录之前,当前记录和其后的记录向后顺序移动;否则插在当前记录之后,当前记录之后的记录顺序向后移动。选择BLANK子句,则插入一条空记录。说明:1、省略所有可选项,则在当前记录之后插入新记录。2、在VFP中,如果数据库具有表缓冲或行缓冲功能,则INSERT命令不能用于该数据库的表;对于具有参照完整性规则的表也不能使用INSERT命令。,2、INSERTSQL命令,格式一:INSERT INTO(,)VALUES(,)格式二:INSERT INTO FROM ARRAY/FROM MEMVAR,功能:在表尾追加一个包含指定字段值的记录。参数描述:指定要追加记录的表文件名。中可以包含路径,也可以是一个名称表达式。(,):指定要插入值的字段名。VALUES(,):新插入记录的字段值。FROM ARRAY:指定一个数组,数组中的数据将被插入到新记录中。FROM MEMVAR:把内存变量的内容插入到与它同名的字段中。说明:,1、如果指定的表没有打开,则VFP先在一个新工作区中以独占方式打开该表,然后再把新记录追加到表中,此时并未选定该工作区,选定的仍然是当前的工作区。2、如果省略了VALUES子句后的字段名,那么,必须按照定义表结构时的顺序来指定字段值。3、使用FROM ARRAY 子句时,从指定数组的第一个数组元素开始,数组中的每一个元素的内容依次插入到新记录的对应字段中。第一个数组元素的内容插入到新记录的第一个字段,第二个元素的内容插入到新记录的第二个字段,依此类推。4、当使用FROM MEMVAR子句时,如果某一字段不存在同名的内存变量,则该字段为空。使用INSERTSQL命令向Student表中追加一条新记录,INSERT INTO Student(学号,姓名,性别,出生日期,班级,宿舍,;电话)VALUES(99045002,张中强,男,1980/03/22,;99电子,3-311,2356306)3、从另一个表中成批追加记录,格式:APPEND FROM/?FIELDS FOR,功能:从一个表中读入记录,追加到当前表的尾部。参数描述:指定要向当前表中追加记录的数据源。:显示“打开”对话框,从中选择从哪个表中读入数据。FIELDS:指定添加哪些字段数据。FOR:为当前选定表中每一条为“真”的记录追加新记录,直至达到当前选定表的末尾。如果省略FOR子句,则整个源文件记录都追加到当前表中。,返 回,3.5.5 显示表中的记录,格式一:LIST OFF FIELDS FOR WHILE TO PRINTER PROMPT/TO FILE 格式二:DISPLAY OFF FIELDS FOR WHILE TO PRINTER PROMPT/TO FILE,功能:显示当前表中的全部或部分记录和数据。参数描述:OFF:使用OFF时,不显示记录号,否则显示记录号。:范围为可选项,选择时为ALL、RECORD(N)、NEXT(N)、REST中的一个参数,表示记录显示的范围。FIELDS:若省略,则显示当前表中的所有字段,否则显示指定的字段。如果备注字段名出现在中,则它的内容按50个字符列宽显示,,FOR/WHILE:该子句用于有选择地显示某些记录,省略时则显示限定的全部记录。TO PRINTER PROMPT/TO FILE:指定记录列表的输出方向。TO PRINTER PROMPT指定输出到打印机。PROMPT参数的使用方法同前。TO FILE 指定输出到所指定的文本文件中。LIST和DISPLAY的区别:(1)DISPLAY每显示一屏记录时暂停一次,按任意键后继续显示剩余的记录,而LIST没有周期性暂停,连续向下显示,直到记录显示完毕为止。(2)若省略所有可选项,则DISPLAY命令显示当前记录,即范围为NEXT 1,而LIST命令显示全部记录,即范围为ALL。,返 回,3.5.6 修改表中的记录,1、全屏幕编辑命令(1)利用菜单浏览和修改表中的数据,第四步:在浏览窗口中修改数据,第五步:修改结束后单击关闭按钮关闭浏览窗口,在浏览窗口中可以去除、恢复垂直分隔线,也可以改变字段的显示宽度。,(2)利用命令浏览和修改表中的数据,格式:BROWSE FIELDS LOCK LAST FOR,功能:在屏幕上打开一个浏览窗口,在窗口中显示表的记录。参数描述:Fields:指定在浏览窗口中显示的表的字段。LOCK:将浏览窗口一分为二,指定在左窗口中显示的字段数。LAST:按最后一次关闭浏览窗口的方式打开浏览窗口。FOR:指定在浏览窗口中显示的记录所要求满足的条件。说明:1、BROWSE命令可以带有很多任选项,命令格式中只介绍了BROWSE命令的最基本的任选项。,2、在中,除了可以使用表所定义的字段以外,还可以使用计算字段。计算字段:就是由表中的字段组合成的合法的VFP的表达式。注意:计算字段的名称不能与当前表中的字段名同名,长度不能超过10个字符。计算字段是只读的,它的值随着组成计算字段的表中的字段值的变化而变化。,计算字段的格式为:=,BROWSE FIELDS NAME_BIRTH=姓名+:+性别+:+DTOC(出生日期)+出生,在计算字段后面使用:H参数,窗口中显示中文字段名,BROWSE FIELDS NAME_BIRTH=姓名+:+性别+:+;DTOC(出生日期)+出生:H=姓名和出生日期,宿舍,电话,执行上述命令后,屏幕显示结果,计算字段指定的中文名,计算字段的值,指定中文字段名,2、记录值替换命令,格式:REPLACE ADDITIVE,WITH ADDITIVE FOR WHILE,功能:不进入全屏幕编辑方式,根据命令中指定的条件和范围,用表达式的值去更新指定字段的内容。参数描述:指定要替换值的字段。WITH:指定用来进行替换的表达式或值。:指定进行替换时的记录范围。FOR:指定要进行替换字段值的记录应满足的条件。WHILE:当记录的条件不满足时结束替换。用以按条件中的字段建立了索引的表。说明:WITH后面的表达式的类型必须与WITH前面的字段类型一致。,返 回,3.5.7 删除记录,在VFP中删除记录是分为两步来进行的,第一步是将要删除的记录做上删除标记,第二步才是将记录真正从表是彻底删除。1、逻辑删除(为记录做上删除标记),格式:DELETE FOR WHILE,功能:对当前表文件中指定的记录做删除标记。GO 7DELETEGO 4DELETE NEXT 3 LIST,执行上述命令后屏幕显示结果:,2、物理删除(清除带有删除标记的记录),格式:PACK DBF MEMO,功能:省略选择项,该命令将从当前表中删除所有带删除标记的记录。选择DBF,表示仅清除逻辑删除的记录而不压缩备注文件,选择MEMO表示仅压缩备注文件中无用的空间而不清除被逻辑删除的记录。不带任何选择项时,PACK命令既清除逻辑删除的记录,又压缩备注文件。说明:用PACK命令删除的记录是不可被恢复的。所以在使用PACK命令前一定要检查删除标记是否加的正确。,例:PACKLIST,执行上述命令后屏幕显示的结果:,注意:在进行这一步操作前先备份数据,3、恢复带删除标记的记录,格式:RECALL FOR WHILE,功能:恢复当前表中带删除标记的记录,即去掉删除标记“*”号。当省略所有的选项时,仅恢复当前记录。(先从备份的数据中恢复Student表中的数据),RECALL ALLBROW,执行上述命令后屏幕显示的结果,4、清除所有记录,格式:ZAP,功能:从当前表中清除全部记录,仅保留表的结构。ZAP命令与DELETE ALL 和PACK两条命令执行的结果相同,区别在于ZAP执行的速度更快,当表中的记录很多时尤为明显。,返 回,3.6 数组与表的字段之间的相互数据传递,1、单条记录数据赋值给数组元素格式:SCATTER FIELDS/FIELDS LIKE/FIELDS EXCEPT MEMO TO/TO BLANK/MEMVAR/NAME 功能:将字段名表中的第一个字段值赋值给第一个数组元素,第二个字段值赋值给第二个数组元素,其余类推。或将字段名表中的内容复制到内存变量中。,示例:scatter fields student_id,name,sex,classes to abc list memory like*,2、数组元素的值替代单条记录字段值格式:GATHER FROM/FIELDS/FIELDS LIKE/FIELDS EXCEPT 功能:将数组各元素的值一一替换字段名表中对应的字段值。从数组的第一个元素起,各个元素的内容依次替换记录中相应字段的内容。第一个数组元素的内容替换记录第一个字段的内容,第二个数组元素的内容替换记录第二个字段的内容,依次类推。,例:dime aa(7)aa(1)=1999045003 aa(2)=田心怡 aa(3)=“99电子”append blank Gather from aa fields Student_id,name,classes,注意:本命令是修改当前记录,3、多条记录数据复制到数组中格式:COPY TO ARRAY FIELDS FOR WHILE NOOPTIMIZE功能:此命令在当前工作区打开的表中顺序查找满足指定条件的记录,如果查找到,则将该记录的第一个字段的数据存放到数组的第一行第一列中,第二个字段的数据存放到数组的第一行第二列中,依此类推;接着继续查找下一条满足条件的记录,如果查找到,则将该记录的第一个字段的数据存放到数组的第二行第一列中,第二个字段的数据存放到数组的第二行第二列中,重复上述过程,直到再没有满足条件的记录或没有更多的数组元素为止。,功能和SCATTER相似,只不过本命令可以一次将多条记录的数据复制到数组中去。,4、数组数据作为多条记录追加到表中格式:APPEND FROM ARRAY FOR FIELDS 功能:此命令将指定数组的每一行元素变为一条新的记录,追加到当前表中。第列追加到第一个字段中,第二列追加到第二个字字段中,依此类推。说明:此命令将忽略M型字段。如果未指定FIELDS,则按字段的物理顺序追加数组元素中的数据,否则按中指定的顺序追加数组元素中的数据,并且未在中指定的字段赋值给“空值”。执行此命令时,如果数组的列数多于表文件中的字段数,则超出的数组元素将被忽略;如果数组的列数少于表文件中的字段数,则超出的字段赋值给“空值”,在这些字段上EMPTY()函数返回逻辑(.T.)值。执行此命令时,如果出现数组元素与它相应字段的数据类型不一致时,系统尽量进行转换;当不能转换时,系统赋值给字段为“空值”。,小结,返 回,1、可以用菜单方式和命令方式CREATE PROJECT创建项目管理器。2、在项目管理器中通过【连编】,可以创建应用程序和可执行文件。3、加入项目管理器的表可以享受“数据字典”的功能。4、创建一个数据库可以分为五步:确定建立数据库的目的;确定需要的表;确定每个表所需字段;确定表间的关系关系;设计求精。5、建立表前要做好准备,将每个表的字段名、类型、宽度、小数位、等以表格的形式进入充分的描述。6、可以通过项目管理器和使用CREATE命令建立表,也可以通过COPY STRUCTURE命令从其它表中复制表结构,还可以使用CREATE带FROM子句从一个表结构文件中得到表结构。7、一个表由表结构和数据构成,没有数据的表是没有意义的。表结构可以通过项目管理器和MODIFY STRUCTURE命令打开表设计器进行修改。8、表在使用前要先打开,表中的记录可以用APPEND、INSERT INTO等命令进行追加,也可以使用DELETE命令进行删除,还可以使用BROWSE命令打开全屏幕编辑窗口进行修改和浏览,可以用REPLACE命令替换数据。9、从表中提取数据时,要对表中的记录进行定位。,