• 沒有找到結果。

数据库原理与应用 - 万水书苑-出版资源网

N/A
N/A
Protected

Academic year: 2021

Share "数据库原理与应用 - 万水书苑-出版资源网"

Copied!
74
0
0

加載中.... (立即查看全文)

全文

(1)

(

知 识 点

● 数据表、数据库、自由表 ● 视图、报表、表单、菜单、控件 ● 数据更新、数据维护、项目管理

~

难 点

● 数据表、数据库的结构定义 ● 表与表、库与表之间的关系、表与视图的关系 ●  SQL 语言的查询方法 ● 与其他语言之间的数据交换 ● 表单、菜单、控件的建立与使用方法

要 求

熟练掌握以下内容: ● 项目的建立与使用 ● 视图、报表的建立与使用 ● 数据表、数据库的建立与使用方法 ● 数据库、表的更新与维护 ● 数据查询的方法 ● SQL 语言的查询方法 ● 表设计器、项目管理器、向导等编程工具的使用方法 ● 表单、菜单、控件的建立与使用 了解以下内容: ● Visual FoxPro 命令的使用过程 

5.1  Visual FoxPro 应用程序的建立过程

本节通过一个简单的 Visual FoxPro 应用程序的建立过程介绍如何使用 Visual FoxPro 系统 建立用户的应用程序,并简略地介绍了有关工具的使用方法。例如项目管理器、表向导、表单 向导、报表向导等工具的使用方法。 例 5.1  建立一个通讯录应用程序,要求能查看、输出通讯录的内容。 答:按照以下各小节的操作步骤即可完成建立通讯录应用程序。

(2)

5.1.1  建立项目文件 在 Visual  FoxPro 系统中创建具有菜单、报表和表单等功能的应用程序的最简便有效的方 法是使用项目文件(Project File)来建立这个应用程序。Visual FoxPro 中的项目文件是以.PJX  为扩展名的文件, 在项目文件中包含了一个应用程序所需的各个组成文件。 建立项目的目的就 是对应用程序中的各种组成文件进行建立、管理和维护,项目文件是通过项目管理器建立、编 译并运行的,路径为 c:\microsoft visual studio\vfp98\tyc57\。 建立项目文件的方法有以下 3 种: (1)在“文件”菜单中选择“新建”菜单项。 (2)在常用工具栏中单击“新建”按钮 。 (3)在命令窗口中输入建立项目文件命令 CREATE  PROJECT。 以上 3 种方法都在屏幕上显示“新建”对话框,如图 5.1 所示。在“新建”对话框中列出 了在 Visual  FoxPro 系统中可以建立的所有文件的类型名称,这些文件包括:项目文件、数据 库、表、查询、连接、视图、远程视图、表单、报表、标签、程序、类、菜单和文本文件等。 单击每一个文件类型左侧的单选按钮即可选中该文件类型,然后单击“新建文件”或“向导” 按钮,系统便开始为用户创建选中的类型文件。 单击“新建文件”按钮,屏幕上出现“创建”对话框,如图 5.2 所示。在“创建”对话框 中输入文件名并选择保存文件的文件夹(即路径),然后单击“保存”按钮,系统将新建的项 目文件保存到指定路径的文件夹中。 图 5.1  “新建”对话框 图 5.2  “创建”对话框 本例中,在“创建”对话框的“项目文件”文本框中输入“通讯录”作为项目文件的文 件名,此时系统会自动按照项目文件的格式保存并自动添加.PJX 为文件的扩展名。单击“保 存”按钮屏幕上会出现“项目管理器”对话框,如图 5.3 所示,该对话框中有 6 个选项卡:全 部、数据、文档、类、代码和其他。 “全部”选项卡中包含了建立一个应用程序所需要的全部内容。而其他  5  个选项卡是将 “全部”选项卡中的内容按照类别分别列出。在通讯录应用程序示例中使用的组成文件较少, 使用“全部”选项卡就够用了。

(3)

图 5.3  “项目管理器”对话框  5.1.2  建立数据库  Visual FoxPro 系统的数据库文件以.DBC 作为数据库文件的扩展名。数据库与数据表的概 念不同,数据库是表文件(.DBF 文件)的集合,包含着一个或多个表文件。数据库文件中不 仅保存着数据表文件的信息,而且还保存着表与表之间的信息、表与视图之间的信息,以及其 他有关的信息。这些相关的信息包括数据校验规则、默认值和长表名等。 在“项目管理器”对话框中,单击“全部”选项卡中的数据库图标,再单击“新建”按钮, 屏幕上出现“新建数据库”对话框,如图 5.4 所示。在其中单击“新建数据库”按钮,屏幕上 出现“创建”对话框,如图 5.5 所示。 图 5.4  “新建数据库”对话框 图 5.5  “创建”对话框 在“数据库名”文本框中输入“通讯录”作为新建数据库的名字,单击“保存”按钮将 “通讯录”数据库保存在指定的文件夹中,随后屏幕上 出现“数据库设计器”窗口,如图  5.6  所示。除了在屏 幕上显示数据库设计器外,同时在菜单中还会添加一个 名为“数据库”的菜单。另外根据数据库设计的需要, 数据库设计器工具栏也同时出现在屏幕上。在数据库设 计器的任何地方右击会显示一个快捷菜单,此快捷菜单 也提供了处理数据库的菜单选项。  5.1.3  向数据库添加数据表 只有在数据库中加入了数据表、视图或查询等文件后,数据库才能在项目中起到应有的 管理数据表及其之间的关系的作用。数据库中包含数据表,也保存着表与表之间的关系、数据 视图、数据查询等。在 Visual  FoxPro 系统中,数据表是以单独文件的形式存放的,在数据库 图 5.6  “数据库设计器”窗口

(4)

文件中只是进行登记, 表示是其所属的数据表。 使用表向导可以向一个空的或已经包含表的数 据库中添加新的表,下面就来介绍具体方法。 打开一个数据库,在菜单栏中将显示出数据库菜单,在数据库菜单中单击新表选项,在 屏幕中出现“新建表”对话框,如图 5.7 所示;在“新建表”对话框中包含两个按钮:表向导 和新建表,使用表向导可以建立一个新表并添加到数据库中,单击“表向导”按钮,在屏幕上 出现 “表向导步骤 1” 对话框, 如图 5.8 所示。 从此开始向数据库添加数据表的过程, “表向导” 为用户建立新表提供了方便。 图 5.7  “新建表”对话框 图 5.8  表向导步骤 1-字段选取 在 “样表” 列表框中列出了常用表名; “可用字段” 列表框中列出了样表包含的 “字段名” , 双击其中的字段名或选中某一字段名后单击 按钮,即可将选中的字段放入“选定字段”列 表框中; “选定字段”列表框中的“字段名”是新建数据表中的字段。 可以将现成的数据表作为新建的数据表使用,也可以将样表中列出的表及其字段作为模 板进行组合后建立新数据表。单击“下一步”按钮进入表格向导的下一步“选择数据库” ,如 图 5.9 所示。在这里选择“通讯录”数据库,表示向“通讯录”数据库添加新表。单击“下一 步”按钮进入表向导的第二步“修改字段设置” ,如图 5.10 所示。在这里可以对选中的字段重 新进行设置或修改字段名。单击“下一步”按钮进入表向导的第三步“为表建索引” ,如图 5.11  所示。选择“学号”作为索引关键字,单击“下一步”按钮进入表向导的最后一步“完成” , 如图 5.12 所示。 图 5.9  选择数据库 图 5.10  修改字段设置

(5)

图 5.11  为表建索引 图 5.12  完成数据表的建立 单击“完成”按钮,出现“另存为”对话框,如图  5.13  所示,选择好保存的文件夹和表 名,单击“保存”按钮,保存好刚建立的数据表。至此,就完成了向数据库中添加数据表的操 作,此时的数据库如图 5.14 所示。 图 5.13  “另存为”对话框 图 5.14  完成添加数据表的数据库  5.1.4  建立表单 虽然为应用程序建立了项目文件、数据库文件,并在数据库中添加了一个数据表,但是 并不能将这些内容显示在使用者的面前,因为还没有为这个项目制作一个用于数据交流的界 面。表单就是一种用于用户与系统进行数据交流的界面。 建立表单可以在项目管理器的“文档”选项卡中选择“表单”图标,然后单击“新建” 按钮,屏幕上出现“新建表单”对话框,如图 5.15 所示。在其中有两个按钮: “表单向导”按 钮和“新建表单”按钮。单击“表单向导”按钮,屏幕上出现“向导选取”对话框,如图 5.16  所示。 “向导选取”对话框中有两项内容:表单向导和一对多表单向导。 图 5.15  “新建表单”对话框 图 5.16  “向导选取”对话框 选中“表单向导”选项,然后单击“确定”按钮,这时屏幕上出现“表单向导步骤  1-字

(6)

段选取”对话框,等待用户输入信息,如图  5.17  所示。在其中选择刚建立的“通讯录”数据 库,在其下面的列表中列出了该数据库中包含的数据表  STUDENTS,在“可用字段”列表中 显示了 STUDENTS 表中的所有字段名。单击 按钮把 STUDENTS 表的所有字段添加到“选 定字段”列表中,然后单击“下一步”按钮,表单向导进入“表单向导步骤 2-选择表单样式” 对话框,如图 5.18 所示。 图 5.17  表单向导步骤 1-字段选取 图 5.18  表单向导步骤 2-选择表单样式 在“样式”列表框中列出了可以使用的所有表单的式样,选择其中一个表单样式后该表 单的式样会显示在左边图形框中。确定了表单的式样后,还可以在“按钮类型”区域中选择表 单中按钮的形式。这里选择“标准式”和“文本按钮”的表单样式。选择完毕后单击“下一步” 按钮,进入“表单向导步骤 3-排序次序”对话框,如图 5.19 所示。 在其中可以指定表中数据排列的顺序,具体操作是:选择用作排序的关键字字段,双击 该字段名或选中字段名后单击“添加”按钮,可以将选中的字段作为索引关键字添加到“选定 字段”列表中;然后选择“升序”或“降序”单选按钮决定数据排序的方式,这里选择“学号” 作为索引关键字,选择“升序”作为数据排序的方式;单击“下一步”按钮进入“表单向导步 骤 4-完成”对话框,如图 5.20 所示。 图 5.19  表单向导步骤 3-排序次序 图 5.20  表单向导步骤 4-完成 “表单向导步骤 4”是表单建立的最后阶段,在此对话框中要确定表单的标题。在“请键 入表单标题”文本框中输入“通讯录”作为表单的标题,这个字符串将在表单建立以后显示在 表单的标题栏中。单击“预览”按钮,屏幕上会出现制作好的“通讯录”表单,如图  5.21  所 示。单击其中的“返回向导! ”按钮即可返回。

(7)

若对制作的表单不满意,可以单击“上一步” 按钮退回重新制作。 “表单向导步骤  4”中还有  3  个单选按钮供用户选择,用户可以根据需要进行 选择。这里选择“保存表单以备将来使用”单选 按钮,最后单击“完成”按钮,此时会出现“另 存为”对话框,如图 5.22 所示。在该对话框中选 择保存表单的文件夹和文件名, 这里选择 tyc57 文 件夹保存表单,在“保存表单为”文本框中输入 “通讯录”作为表单文件名,单击“保存”按钮, 至此整个表单的制作就完成了。表单创建后,在 项目管理器中的表单图标下就会出现新建的表单名“通讯录” ,如图 5.23 所示。此时表单已经 成为项目的一部分,将由项目管理器管理和维护。 图 5.22  “另存为”对话框 图 5.23  项目管理器中的“通讯录”表单  5.1.5  运行表单 在项目管理器中,选中“通讯录”表单,然后 单击“运行”按钮,通讯录表单就会在屏幕中出现, 如图 5.24 所示。其中显示的所有字段都是空的,这 是因为该数据库中的 Students 表还是空表。根据窗 口中按钮的文字提示可以向  Students  表中添加数 据、删除数据、向前或向后浏览数据、打印数据等。 如果在操作过程中想结束操作, 可以单击表单的 “退 出”按钮。此时表单被关闭,与表单关联的数据表 也将被关闭,数据会自动保存在数据表中。 若对新建的表单在使用时不满意,可以在表单设计器中根据用户的要求进行修改,可以 添加、删除显示的字段,更改字段的显示位置等。  5.1.6  制作报表 一个应用程序在为用户提供了交互的表单后,还应该为用户设计一个实用的报表,在报 表中要将数据库中的内容有效地反映出来。制作报表的方法是,在项目管理器中选择“报表” 图 5.21  通讯录表单预览 图 5.24  运行通讯录表单

(8)

图标,单击“新建”按钮,屏幕上出现“新建报表”对话框,如图 5.25 所示。在其中单击“报 表向导”按钮,在屏幕上出现“向导选取”对话框,如图 5.26 所示。选择其中的“报表向导” 选项,单击“确定”按钮,这时屏幕上出现“报表向导步骤  1-字段选取”对话框,如图  5.27  所示。在其中选中刚建立的数据库“通讯录” ,在下面的列表中列出了该数据库包含的表  STUDENTS,在“可用字段”列表框中显示了 STUDENTS 表中有可能需要打印的字段名。 图 5.25  “新建报表”对话框 图 5.26  选取报表向导对话框 单击 按钮将全部字段都添加到“选定字段”列表框中,如果只要输出某些字段,则在 列表框中选中这些字段,单击 按钮将选中的字段添加到“选定字段”列表框中,于是这些 被选中的字段就可以在报表中列出并输出了。单击“下一步”按钮进入“报表向导步骤  2-分 组记录”对话框,如图 5.28 所示。 图 5.27  报表向导步骤 1-字段选取 图 5.28  报表向导步骤 2-分组记录 在该对话框中有  3  个列表选择框和两个按钮,可以确定字段分组的形式。在  3 个列表选 择框中根据需要选择分组的字段名,本例选择了“班级”和“姓名”作为分组字段。单击“分 组选项”按钮,屏幕上出现“分组间隔”对话框,如图  5.29  所示,在其中可以确定“分组间 隔” ,本例中分组间隔定为“前三个字母” ;单击“总结选项”按钮,可以确定总结或总计的形 式,如图 5.30 所示,本例无数值型字段故不选此项。 图 5.29  在向导步骤 2 中确定分组间隔 图 5.30  在向导步骤 2 中确定总结选项

(9)

选择完毕,单击“下一步”按钮进入“报表向导步骤 3-选择报表样式”对话框,如图 5.31  所示,本例选择“带区式”报表形式。 单击“下一步”按钮进入“报表向导步骤 4-定义报表布局”对话框,如图 5.32 所示,本 例选择“纵向” 。单击“下一步”按钮进入“报表向导步骤  5-排序记录”对话框,如图  5.33  所示,本例选择“学号”作为报表的排序关键字。单击“下一步”按钮进入“报表向导步骤  6-完成”对话框,如图 5.34 所示。 图 5.31  报表向导步骤 3-选择报表样式 图 5.32  报表向导步骤 4-定义报表布局 图 5.33  报表向导步骤 5-排序记录 图 5.34  报表向导步骤 6-完成 单击“完成”按钮,屏幕会出现“另存为”对话框,在其中选择保存报表的文件夹和文 件名,这里选择 tyc57 文件夹保存报表,在“保存报表为”文本框中输入“通讯录”作为报表 的文件名,单击“保存”按钮,至此报表建立完毕。 报表可以在表单运行中选择打印功能将报表打印输出,通过项目管理器的预览功能观察 报表的格式、位置等是否符合要求。如果对新建的报表进行修改,可以在项目管理器中选择报 表图标中的“通讯录” ,然后单击“修改”按钮进入到“报表设计器”中对报表的格式进行修改。  5.1.7  退出 Visual FoxPro 系统 退出 Visual FoxPro 系统的方法有以下 3 种: (1)在命令窗口中输入命令 QUIT。 (2)单击 Visual FoxPro 系统主窗口右上角的“关闭”按钮 。 (3)在“文件”菜单中选择“退出”菜单项。

(10)

在退出 Visual  FoxPro 系统时,系统都会自动地删除在临时目录中存放的大量临时性文件 (.TMP 文件) 。如果遇到特殊的情况 Visual  FoxPro 系统没有正常退出,则在系统的临时目录 中会存有许多临时性文件,用户可以将其删除以释放硬盘空间。 

5.2  数据表、数据库的建立与访问 

Visual  FoxPro 系统的数据保存在表文件(.DBF)中,其中每条记录的长度是固定、有序 的。在 Visual  FoxPro 系统中,有些表是独立存在的,称之为自由表;有些表是隶属于某个数 据库的,称之为库表。无论是自由表还是数据库表,都是应用程序的数据源。 数据库文件是一个表文件的容器,在数据库中保存着一个或多个表,以及这些表之间关 系的信息。  5.2.1  自由表的建立与访问  1.自由表的建立 自由表是与数据库无任何关联的一种表格,又称数据表。在应用程序中自由表通常用于 保存那些需要应用程序处理的简单数据。 无论是自由表还是数据库表, 都是作为应用程序的数 据源而存在,保存着具体的数据信息。在 Visual  FoxPro 系统中,可以用可视化的方式建立自 由表,也可以使用命令方式建立并控制自由表的使用。在用户应用程序中,建立多少个自由表 应根据应用程序使用数据的情况来确定。自由表的建立有以下 3 种方法: l 在命令窗口中输入 CREATE 命令。 l 选择“文件”菜单中的“新建”菜单项,然后在“新建”对话框中选择“表” ,再单 击“新建文件”按钮。 l 在工具栏中单击“新建”按钮 。 (1)用命令方式建立自由表。建立自由表命令的一般格式如下:  CREATE  [文件名  / ?]  “/”符号表示在“文件名”和“?”两个选项中任选一个。 在“命令”窗口中输入 CREATE 命令,如图 5.35 所示。回车确认后,屏幕上出现“创建” 对话框,如图 5.36 所示。CREATE ?与 CREATE 命令的执行结果是一样的,都会在屏幕中显示 “创建”对话框。 图 5.35  “命令”窗口 图 5.36  “创建”对话框 “创建”对话框可用于多种文件的建立,在“保存在”下拉列表框中选择保存文件的位 置,在“保存类型”下拉列表框中选择保存文件的类型,在“输入表名”文本框中输入要建立

(11)

的表名。新建数据表的文件名,字符数不能超过  255  个字符,中文文件名的总长度不能超过  126 个汉字。在图 5.36 中,选择了 tyc57 文件夹,表名为“学生名册” 。单击“保存”按钮, 屏幕上会出现“表设计器-学生名册”对话框,如图 5.37 所示。 图 5.37  表设计器-学生名册 在表设计器中,用“字段”选项卡创建表的字段, “字段”选项卡中有以下组成部分: l 字段名。 “字段”选项卡中列出的第一项就是字段名,表中的每一项数据都必须具有 字段名, 使用字段名可以对字段中的内容进行各种操作。 字段名应该是简短而具有意 义的,应该能够表达字段中数据的意义。定义自由表的结构时,字段名的长度不能超 过 10 个字符,使用中文字段名也不能超过 5 个汉字。与自由表字段不同的是,数据 库表中的字段名可长达 128 个字符,使用中文字段名最多可以用 64 个汉字。字段名 只能是英文字母、数字、汉字或下划线,第一个字符必须是英文字符或汉字,空格不 能在字段名中出现。 l 类型。 每个字段都具备字段类型属性, 在定义字段时系统默认每个新定义字段的数据 类型是字符型, 字段类型确保字段以一种确定的方式接受数据。 字符类型的字段只能 接受字符或字符串, 日期类型的字段只能接受日期型数据, 数值类型的字段则只能接 受数值型数据等。Visual FoxPro 系统在“类型”下拉列表框中提供了所有字段类型供 用户选择。 l 宽度。定义字段时还需要指定字段宽度。系统默认新定义的字段为字符型,字段的宽 度为 10 个字符,用户可以根据需要进行更改。一般地说,字段的宽度应该是字段中 存放实际数据的宽度, 如果定义的字段宽度小于实际数据的长度, 那么多出的数据将 会被系统自动截断。一些特定的字段宽度由系统定义,用户不能更改。除了字符型、 数值型和浮点型等字段的宽度可以由用户指定外, 其余字段的宽度均由系统使用默认 值设定,不能更改。 l 小数位数。 “小数位数”项用于指定数值型、浮点型和双精度型字段的小数位数。 l 索引。 “索引”项用于指定排列数据的顺序,分“升序”和“降序”两种。每个字段 都可以作为表的一个普通索引。因此,在建立表时可以为字段指定一个索引方式。索 引输入区也是个下拉式列表,其中有 3 项:无、升序和降序。 “无”表示此字段不是 索引关键字; 升序表示表中的数据可以按此字段的值从小到大顺序排列; 降序表示表 中的数据按此字段的值从大到小顺序排列。

l  NULL。 NULL 项用于指定是否允许有空值。 Visual FoxPro 系统提供了空字段的功能, 允许用户定义一个存放空值的字段,空值不同于零或空格。一个  NULL  值不能认为 比某个值(包括另一个  NULL  值)大或小、相等或不等。单击空值提示按钮,出现 一个对号“√” ,表示此字段已被定义为可以保存空值;再单击该按钮可以取消对号,

(12)

表示该字段中不允许空值存在。系统默认字段中不允许有空值存在。 使用 CREATE 命令时输入表的文件名,如“CREATE  学生名册” ,系统直接出现如图 5.37  所示的表设计器,此时建立的表保存在当前文件夹中。 (2)用可视化方式建立自由表。用可视化方式建立自由表是使用表设计器来建立。具体 操作是:单击“新建”按钮 或选择“文件”菜单中的“新建”菜单项,屏幕上出现如图 5.1  所示的“新建”对话框,选择“表”后单击“新建文件”按钮,屏幕上出现如图  5.37  所示的 “表设计器”对话框。对表设计器中的操作(1)中已经讲过,这里不再重复,只讲述没有涉 及到的字段插入与删除操作。  1)插入字段。单击“插入”按钮可以在当前字段之前插入一个空字段。如果要在某一字 段的前面插入一个新字段,要先选中这个字段,然后单击“插入”按钮,就会在选中的字段前 面插入一个新字段,如图 5.38 所示。  2)删除字段。如果发现某个字段不再需要了,可以使用“删除”按钮删去该字段。先选 中需要删除的字段,再单击“删除”按钮,这个字段就被删除了。字段被删除后其位置由后面 的其他字段按顺序向上移动来填补。  2.建立数据表的索引 数据表定义完成后,可以在表设计器中为数据表添加索引。单击表设计器中的“索引” 选项卡,如图 5.39 所示。 “索引”选项卡的列表中是空的,表明还没有为数据表添加任何索引。 图 5.38  表设计器-学生名册插入字段 图 5.39  表设计器的“索引”选项卡 (1)输入索引名。每个索引都必须指定索引名,此后可以使用索引名来引用索引。数据 表的索引名不能超过 10 个字符,例如为“姓名”字段建立索引,在“索引名”提示处输入“姓 名”作为索引名。 (2)选择索引类型。表设计器提供的索引类型有:唯一索引、候选索引和普通索引 3 种,  Visual FoxPro 系统默认为“普通索引”类型。这里“姓名”的索引类型定为普通索引。 (3)指定索引表达式。索引表达式常常为字段表达式,数据表在显示数据时就根据索引 表达式的值来索引数据。 可以在索引表达式的文本框中直接输入表达式的内容, 也可以利用 “表 达式生成器”对话框建立索引表达式。单击“表达式”文本框右边的 按钮,屏幕上会出现 “表达式生成器”对话框,如图 5.40 所示。在其中提供了建立表达式所用的全部部件。 “表达式”列表框用于显示条件表达式;在“函数”区域中按类型列出  4  种函数,单击 按钮 ,就可以在下拉列表中选择适合用于建立表达式的函数了;对话框的左下侧列出了可 以使用的字段名;右下侧列出了所有的系统变量,这些变量都可以用于建立表达式。 在“字段”列表框中双击“姓名”字段,会在“表达式”列表框中出现这个字段名,表 示已经使用“姓名”字段建立了一个索引表达式,如果需要还可以在这个字段上使用函数。单

(13)

击“确定”按钮退出对话框。在“索引”选项卡的“表达式”提示处出现了字段表达式“姓名” , 如图 5.41 所示。 图 5.40  “表达式生成器”对话框 图 5.41  确定字段表达式 (4)指定数据筛选条件。在“筛选”文本框中可以直接输入表达式的内容,也可以利用 “表达式生成器”对话框建立数据筛选条件。单击“筛选”文本框右边的 按钮,屏幕上出 现“表达式生成器”对话框,如图  5.40  所示。在“字段”列表框中双击“年龄”字段,同时 在“表达式”列表框中出现了这个字段名,在“逻辑”下拉列表框中双击>号,同时在“表达 式”列表框中出现了这个符号,再输入  18,单击“确定”按钮退出对话框。至此,数据筛选 条件“年龄>18”建立完毕,在“索引”选项卡的“筛选”提示处出现了逻辑表达式“年龄>18” , 如图 5.41 所示。 (5)指定排序顺序。在“索引”选项卡的索引名左边是排序按钮,利用这个按钮可以确 定已建立的索引关键字按照什么顺序显示数据。当排序按钮上显示的是向上箭头“↑”时,表 示该索引关键字是按照从小到大升序排列数据的;当按钮上显示的是向下箭头“↓”时,表示 该索引是按照从大到小降序排列数据的。只要在“索引名”中输入了索引关键字,系统就默认 使用升序索引,在排序按钮上显示出向上的箭头“↑” 。如果要更改排序的方式,只需在“排 序”按钮上单击,每单击一次排序按钮上显示的箭头方向就会改变一次,排序的方式也会随之 改变。 “姓名”字段的排序方式无须改变,使用系统默认的升序排序即可。  3.数据表的访问 访问数据表必须在工作区中进行,一个工作区只能打开一个数据表。Visual  FoxPro  系统 中最多允许同时使用 32767 个工作区,分别以数字 1~32767 表示。由于历史的原因可以使用 英文字母 A~J 10 个字母表示前 10 个工作区。  Visual FoxPro 系统规定, 在任何时刻只能使用一个工作区, 这个工作区称为当前工作区。 当数据表在一个工作区中打开时,可以为其指定一个别名,在以后使用此表时就可以使用别 名对其进行引用。在打开表时如果没有指定别名,Visual FoxPro 系统默认数据表的文件名为 其别名。 (1)打开数据表。  1)用 USE 命令打开数据表。在 Visual FoxPro 系统中可以使用 USE 命令打开数据表,其 格式如下: USE  数据表文件名

(14)

例如,要打开学生名册表可以使用如下命令:  USE  学生名册 这个命令会在当前工作区中打开“学生名册.DBF”文件,并且以“学生名册”作为该表 的别名。  2)在指定的工作区中打开数据表。用户可以在指定的工作区中打开表文件,使用带有 IN  子句的 USE 命令可以完成此项操作,其一般格式如下:  USE  数据表文件名  IN  工作区 工作区可以用数字 1~32767 来表示第 1 工作区至第 32767 工作区。在 Visual FoxPro 中, 规定 0 表示系统中还未使用的最小可用工作区号。 这种规定的好处在于用户不必关心已经有多 少个工作区被占用、再打开的表文件要在第几工作区中进行。 例如,系统已经在 1 号和 2 号工作区中打开了表文件,那么在 USE 命令中使用 0 指定工 作区,就表示 USE 命令在 3 号工作区中打开一个新的表文件。 例 5.2  在第 3 工作区中打开 YLH 表文件。  USE    TX    IN A  USE    CPP    IN 2  USE  YLH  IN 0 

也可以在使用 USE 命令之前选择一个适合的工作区, 那么 USE 命令就在当前工作区中打 开指定的表文件。工作区选择命令如下:  SELECT  工作区号/别名 同样,要完成例 5.2 的操作,也可以用下面的方法:  SELECT    C  USE  YLH  3)为数据表指定一个别名。数据表的别名必须遵从表的命名规则,在别名中只能有英文 字母、数字、汉字和下划线,必须以字母开头。由于字母 A~J 已经被系统使用,因此别名最 好不要与此重复,应该为打开的表文件指定一个有意义的别名。为表文件指定别名的 USE 命 令的一般格式如下:  USE  数据表名  ALIAS  别名 例 5.3  在第 3 工作区中打开 YLH 表文件,以 K2 为别名。  SELECT C 

USE  YLH    ALIAS  K2 

4)在其他工作区中打开已经打开的表。在 USE 命令中用 AGAIN 关键字可以在两个不同的 工作区中打开同一个表文件。在一个工作区中打开一个表文件之后,如果需要在另一个工作区中 再次打开这个表文件,则使用 AGAIN 关键字,打开的同一个表与原来的表具有相同的属性。

例 5.4  在第 1 工作区和第 3 工作区中同时打开学生名册表文件。  USE  学生名册  IN  A 

USE  学生名册  AGAIN  IN  C 

5)打开表的同时使用索引。在  USE  命令中还包括  INDEX  子句和  ORDER  子句。使用  INDEX 子句可以指定复合索引(.CDX)文件的标志或指定单索引(.IDX)文件;使用 ORDER  子句决定哪个复合索引文件标志为主索引,主索引决定了数据的逻辑顺序。

(15)

例 5.5  在第 1 工作区中打开学生名册表文件,并指定别名为“名册” ;在第 3 工作区中 也打开学生名册表文件,并指定“姓名”为主索引,别名为“名册 2” 。 

USE  学生名册  IN  A  ALIAS  名册 

USE  学生名册  AGAIN  ORDER  姓名  IN  C  ALIAS  名册 2  6)USE 命令常用的一般形式。 

USE [表文件名] [IN  工作区号][AGAIN][ORDER [CDX 索引/数值表达式] [ASCENDING/  DESCENDING]] [ALIAS  别名] [INDEX  索引文件列表] 

(2)关闭数据表。  USE 命令不仅用于打开一个表文件,也可用于关闭表文件。关闭表文件的命令格式如下:  USE  这个命令的意思是关闭在当前工作区中打开的表文件。该命令正确执行后,状态栏中显 示的表的信息消失, 表示打开的数据表已经被安全地关闭。 如果当前工作区中没有打开的表文 件,使用关闭表文件的 USE 命令不会产生任何结果。 例 5.6  关闭在第 3 工作区中打开的数据表文件。  USE  IN  C  Visual FoxPro 系统提供了专门用于自动保存数据的语句。  SET AUTOSAVE ON/OFF  当为 ON 时,每次更改数据文件的内容后,系统就自动地将更改的数据保存到磁盘中。只 有在需要手工保存数据时,才设为 OFF。当使用退出系统命令 QUIT 时,系统会自动关闭所有 打开的表文件并保存数据。  5.2.2  数据库的建立与访问  1.建立一个数据库文件 在 Visual FoxPro 系统中,表文件是一组相关记录的集合,是 Visual FoxPro 系统处理数据 和建立关系型数据库及其应用程序的基本单位, 数据库是表文件的集合。 Visual FoxPro 系统中 的数据库文件以.DBC 为扩展名。 (1)用命令方式建立数据库文件。建立数据库文件命令的常用格式如下:  CREATE  DATABASE  库文件名 在“命令”窗口中输入 CREATE 命令,如图 5.42 所示。回车确认后,在工具栏上的数据 库指示器中出现新建的“学生成绩”数据库,如图 5.43 所示。 图 5.42  “命令”窗口 图 5.43  数据库指示器 (2)用可视化方式建立数据库文件。在“项目管理器”对话框中选择“数据”选项卡, 如图  5.44  所示,再单击“数据库”图标,然后单击选项卡右侧的“新建”按钮,屏幕上出现 “新建数据库”对话框,如图 5.45 所示。

(16)

图 5.44  “项目管理器”对话框 图 5.45  “新建数据库”对话框 单击其中的“新建数据库”按钮,屏幕上出现数据库“创建”对话框,如图  5.46 所示。 在其中输入“学籍”作为新建数据库的名字,指定保存数据库文件的文件夹为 tyc57。单击“保 存”按钮,屏幕上出现“数据库设计器”窗口,如图 5.47  所示。在数据库设计器的标题栏中 可以看到“学籍”作为数据库名已经成为当前激活并被处理的数据库文件了。 图 5.46  “创建”对话框 图 5.47  “数据库设计器”窗口  2.向数据库中添加表 新建立的数据库是一个空数据库,只有在数据库中添加了数据表或基于表的查询以后, 数据库才能在项目中起到应有的管理数据表及其关系的作用。 数据库中不仅包含数据表, 还保 存着表与表之间的关系等。设有一个“学生名册”表,表中的内容如表 5.1 所示。 表 5.1  学生名册 学号 姓名 性别 出生日期 入学成绩 家庭住址 联系电话  200312108  尹彤 男  1988/11/25  605  上海  28652278  200309215  王丽丽 女  1984/12/08  609  北京  64516635  200307309  刘国徽 女  1985/03/21  610  武汉  53781389  200305206  王道平 男  1984/12/27  599  天津  83328629  200306207  陈宝玉 男  1985/03/15  598  南京  25768963  单击“数据库设计器”中的“新建表”按钮 ,屏幕上出现“新建表”对话框,如图 5.48  所示。单击其中的“新建表”按钮 ,屏幕上出现“创建”对话框,如图 5.49 所示。在“输 入表名”文本框中输入“学生名册” ,选择 tyc57 文件夹作为保存数据库的位置。单击“保存” 按钮,屏幕上出现“表设计器”对话框,如图 5.50 所示。选择其中的“字段”选项卡,在“字 段名”中输入表 5.1 中的各项标题栏,并同时确定他们的类型、宽度和小数位数等,如图 5.51  所示。

(17)

图 5.48  “新建表”对话框 图 5.49  “创建”对话框 图 5.50  空表设计器 图 5.51  输入数据的表设计器 (1)定义字段。在表设计器中选择“字段”选项卡,在“字段名”提示处输入字段名。 字段名要符合字段名的命名规则,即字段名由英文字母、数字、汉字、下划线组成,字段名中 不包含空格。对于数据库表来说,字段名的长度可以达到 128 个字符,用汉字定义字段名的长 度可以达到 64 个汉字。定义字段的宽度、小数位数等的过程与定义自由表结构的过程相同。 (2)设置字段的显示属性。在“字段”选项卡中, “显示”属性有  3  项:格式、输入掩 码和标题。这 3 项是控制字段在浏览窗口、表单或报表中的显示状态。 ① 在“格式”文本框中输入表达式可以控制字段在浏览窗口、表单和报表中显示时的大 小写、字体大小和样式。例如,在此处输入  UPPER(姓名),则字段在显示时全部以大写方式 显示。 ②“输入掩码”用于指定在字段中输入数据的格式。例如,在“输入掩码”文本框中输 入 DTOS(出生日期),则可以使该字段在显示“出生日期”时以“年 月 日”格式显示。 ③ 在“标题”文本框中输入的字符串可以替代“字段名”出现在浏览窗口、表单或报表 的字段标题中。 (3)设置字段有效性属性。 “字段有效性”属性有  3  项:规则、信息和默认值,用于确 定字段输入值的有效性验证。 ① 在“规则”文本框中可以输入表达式,用于字段输入规则的有效性检查,在每次输入 数据的时候都要检查输入数据的有效性。例如,规定某字段中的值不能为空时,可在“规则” 文本框中输入 NOT EMPTY(学号),此命令用于检查“学号”字段输入值是否有效。EMPTY()  函数检查“学号”字段是否为空,如果输入的姓名字段值为空,返回值为真(.T.) ;否则,返 回值为假(.F.) 。当“姓名”字段输入值为空时,NOT EMPTY()的返回值为假。 单击文本框右侧的 按钮,在屏幕上会出现“表达式生成器”对话框,如图 5.52 所示。

(18)

在“逻辑”下拉列表框中选择(双击)NOT  和  EMPTY(),再双击“字段”中的“学号” ,即 可在“有效性规则”中出现表达式 NOT EMPTY(学号)。单击“确定”按钮,返回“表设计器” 对话框中,并在“规则”文本框中出现验证规则 NOT  EMPTY(学号)。 ② 在“默认值”文本框中可以设置该字段在输入数据之前由系统赋予的默认值。 (4)设置字段注释属性。 “字段注释”用于对字段的设置目的、用途、意义等进行解释 说明。 有关字段数据输入完毕后单击“确定”按钮,屏幕上出现“现在输入数据记录吗?”信 息提示对话框,如图  5.53  所示。单击“否”按钮表示现在不输入数据,以后另行输入。单击 “是”按钮,系统将新建的“学生名册”表中的各字段项显示在“数据输入窗口”中,如图  5.54 所示。将表 5.1 中的各项数据输入其中,按组合键 Ctrl+W 将输入数据后的表进行保存, 如图 5.55 所示。至此,一个数据库中的表建立完毕了。 图 5.52  “表达式生成器”对话框 图 5.53  信息提示对话框 图 5.54  数据输入窗口 图 5.55  已建立好的“学生名册”库表  3.打开数据库 数据库中的表不同于自由表,数据库中的表是一种附属于数据库的表,称为库表。数据 库可以对其附属表进行维护。在 Visual FoxPro 系统中,用 USE 命令可以打开自由表,由于库 表是附属于数据库的,只有打开数据库后才能使用 USE 命令访问附属于数据库的库表。 (1)用命令方式打开数据库。 打开数据库的命令格式如下:  OPEN  DATABASE  数据库名

(19)

打开数据库后,可以打开其中的表。 例 5.7  打开“学籍”数据库中的“学生名册”表的操作。  OPEN DATABASE  学籍  USE  学生名册  Visual  FoxPro  系统还提供了另一种用命令方式直接使用数据库表的方法:使用感叹号字 符“!” 。 “!”在 Visual FoxPro 系统中作为数据库限定运算符,作用是限定数据表与哪个数据库 相关联,只有在使用非活动的数据库中的表时才使用到数据库限定运算符。为了引用库表,在 其前面加上所属数据库的名称和数据库限定符, 就可以在数据库处于非活动状态时打开所属表 格了。 例 5.8  直接打开库表的操作。  USE  通讯录! students IN 0  USE  学籍!学生名册  IN 0  此例中打开了两个库表,分别为 students.dbf 和学生名册.dbf,他们分别附属于数据库“通 讯录.dbc”和“学籍.dbc” ,这两个数据库并没有打开,不是活动数据库,但在两个工作区中的 两个库表都是处于活动状态。 (2)用可视化方式打开数据库。 单击“打开”按钮 ,屏幕上出现“打开”对话框,在其中选择路径和库文件,如图 5.56  所示。选择好后单击“确定”按钮,屏幕上出现“数据库设计器”窗口,其中有“学生名册” 库表,如图 5.57 所示,双击之即可打开此库表。 图 5.56  “打开”对话框 图 5.57  “数据库设计器”窗口  4.关闭数据库 关闭数据库的命令如下:  CLOSE  DATABASE  CLOSE    ALL 

5.3  数据的基本操作 

5.3.1  向数据库中添加与删除数据表 数据库之外的表称为自由表。自由表虽然使用方便,但与库表相比少了很多优势。例如, 自由表不能使用长的字段名、 字段名的长度不能超过 10 个字符、 使用汉字不能超过 5 个汉字, 而数据库表的字段名长度可以达到 128 个字符。一个自由数据表成为一个数据库的库表之后,

(20)

此表就不能再成为其他数据库的库表了。如果要把一个数据库的库表添加到另一个数据库中, 就必须将该表从原来的数据库中删除, 即把这个表从该数据库中删除, 然后再添加到其他的数 据库中。  1.向数据库中添加数据表 (1)使用命令方式。向一个数据库添加数据表,先要打开数据库,然后将数据表添加到 数据库中。向数据库添加数据表,可以使用的命令格式如下:  ADD TABLE  表文件名  NAME  长表名 例 5.9  将数据表“学生名册”放入新建的“学籍”数据库中,并用“2003 级学生名册” 作为长表名。  OPEN  DATABASE  学籍 

ADD  TABLE  学生名册  NAME 2003 级学生名册

在示例中起了一个长表名“2003 级学生名册” ,以后要访问这个表时,就可以使用这个长 表名了。 (2)使用可视化方式。向数据库中添加数据表,还可以使用数据库设计器。单击“打开” 按钮 ,屏幕上出现“打开”对话框,在其中选择 tyc57 文件夹和“学籍”库文件,如图 5.56  所示。选择好后单击“确定”按钮,屏幕上出现“数据库设计器”窗口,单击其中的“添加表” 按钮 ,屏幕上出现“打开”对话框,在其中选择“学生名册”表,然后单击“确定”按钮, 在“数据库设计器”窗口中会出现“学生名册”库表,如图 5.57 所示。  2.从数据库中移出数据表 将数据库中的表从数据库中移出,使其成为自由表。 (1)使用命令方式。一个数据库中的表从数据库中移出,那么同时也会删除与这个表相 关联的校验规则和约束等特性。 从数据库中移出或删除表的命令格式如下:  REMOVE  TABLE  表名  [DELETE] 

DELETE 子句的作用是将从数据库移出的表从磁盘中彻底删除。 例 5.10  将数据表“学生名册”从“学籍”数据库中移出,使其成为自由表。  OPEN  DATABASE  学籍  REMOVE  TABLE  学生名册 此时“学生名册”表从“学籍”数据库中移出,成为一个自由表。如果在命令中使用了  DELETE 子句: 

REMOVE  TABLE  学生名册  DELETE 

则将“学生名册”表从“学籍”数据库中移出,然后从磁盘中物理删除。 (2)使用可视化方式。从数据库中移出数据表,还可以使用数据库设计器进行。单击“打 开”按钮 ,屏幕上出现“打开”对话框,在其中选择 tyc57 文件夹和“学籍”库文件,如图  5.56 所示。 选择好后单击 “确定” 按钮, 屏幕上出现 “数 据库设计器” 窗口, 选择好要移出的表并单击 “移去表” 按钮 ,屏幕上出现确认对话框,如图  5.58  所示。在 其中单击“移去”按钮,表示将选中的表从数据库中移 出;单击“删除”按钮,表示将选中的表从数据库中移 图 5.58  确认对话框

(21)

出并从磁盘中物理删除;单击“取消”按钮,表示取消此次操作。  5.3.2  数据库有关的函数  Visual FoxPro 系统提供了用于获取数据库和数据库组件有关信息的函数。  1.ADATABASE()函数  ADATABASE()函数的使用格式如下:  ADATABASE(数组名)  此函数的作用是将已经打开的数据库的名字和相关的路径信息放到指定的数组中。如果 这个数组不存在,系统会为函数创建数组。如果数组的大小不符合要求,系统会重新调整数组 的大小以容纳数据库名和有关路径的信息。 数组的第一个元素保存数据库的名称, 第二个元素 保存数据库的路径信息。 例 5.11  将“学籍”数据库的信息存入数组中。  OPEN  DATABASE  学籍  ? ADATABASE(ARRAY)  2.ADBOBJECTS()函数  ADBOBJECTS()函数的使用格式如下:  ADBOBJECTS(数组[,名称变量])  此函数将当前活动数据库的表名、连接名或 SQL 视图的名称插入到指定的数组中。如果 这个数组不存在,系统会为函数创建数组。如果数组的大小不符合要求,系统会重新调整数组 的大小以容纳对象的信息。准备放在数组中的对象名称是由“名称变量”参数决定的,表 5.2  中列出了“名称变量”可以使用的值。 表 5.2  名称变量使用的值 名称变量 置于数组中的名称  TABLE  数据表名  CONNECTION  连接名  VIEW  视图名 例 5.12  将“学籍”数据库的信息存入数组中。  OPEN  DATABASE  学籍  ? ADBOBJECTS(ARRAY  CONNECTION)  3.CANDIDATE()和 PRIMARY()函数 在 Visual  FoxPro 系统中,CANDIDATE()和 PRIMARY()函数用于判断数据库中指定的索 引标志是一个主索引标志还是一个候选索引标志。如果索引标志是一个候选索引标志,  CANDIDATE()函数返回值为真(.T.) ,PRIMARY()函数返回值为假(.F.) 。如果索引标志是一 个主索引标志,CANDIDATE()函数返回值为假(.F.) ,PRIMARY()函数返回值为真(.T.) 。由 于候选索引也可以成为一个主索引, 因此这个函数可以用于判断一个索引是否可以当作一个主 索引使用。

(22)

4.CURVAL()和 OLDVAL()函数 在 Visual FoxPro 系统中,CURVAL()函数返回一个指定字段的当前值,而 OLDVAL()函数 则返回一个更新过了的字段的原始值。 可以用这两个函数的返回值进行比较来了解一个字段的 内容是否在编辑过程中改变了。  5.DBC()函数  DBC()函数可以返回当前活动数据库的名字和路径,如果当前没有活动的数据库,DBC()  函数就会返回一个空字符串。 例 5.13  返回“学籍”数据库所在的路径。  OPEN DATABASE  学籍  ? DBC()  c:\program files\microsoft visual studio\vfp98\tyc57\学籍.dbc  5.3.3  修改数据表的结构 修改数据表的结构可以用命令方式和可视化方式进行。  1.使用命令方式 修改数据表结构的命令格式如下:  MODIFY  STRUCTUR  对于自由表,在命令窗口中输入  MODIFY  STRUCTUR  命令后,屏幕上出现“打开”对 话框,在其中选择路径和表文件,如图 5.59  所示。选择好后单击“确定”按钮,屏幕上出现 “表设计器”对话框,在此对话框中可以对其中的各项表结构进行修改。对于库表,要先打开 库文件,然后在命令窗口中输入 MODIFY STRUCTUR 命令,屏幕上出现数据库的表“打开” 对话框,在其中选择表文件,如图 5.60  所示。选择好表文件后单击“确定”按钮,屏幕上出 现“表设计器”对话框,在其中可以对表结构中的各项进行修改。 图 5.59  “打开”对话框 图 5.60  数据库的表“打开”对话框  2.使用可视化方式 在“表设计器”对话框的“字段”选项卡中,字段名前的双向箭头表明是当前行。修改 数据表结构的基本操作如下: (1)要在同行中的各项之间移动光标,可以用 Tab 键;在各字段之间移动光标,可以用 向上“↑”和向下“↓”移动键。 (2)如果想在某一字段前插入一个字段,则先选中该字段,然后单击“插入”按钮,就 会在当前的字段前添加一个新字段,用户可以输入要增加的字段名、类型等其他各项。

(23)

(3)若要删除一个字段,则选中该字段,然后单击“删除”按钮。若被删除的字段后还 有其他字段,后面的字段自动上移。 (4)若要移动某个字段的位置,只需用鼠标拖动该字段旁的小方块到所需位置即可。 (5)其他操作与建立表结构时相同。 修改完毕,单击“确定”按钮。在出现的“表设计器更改表结构”对话框中单击“是” 按钮,将改变后的表结构永久保存,如图 5.61 所示。 图 5.61  “表设计器更改表结构”对话框  5.3.4  记录指针的定位 为了方便浏览表中的数据,Visual  FoxPro  系统提供了记录指针的概念。在每一个数据表 中都定义了一个指针, 而且表中只能有一个指针指向记录, 当需要访问其他记录时就改变指针 的位置,Visual  FoxPro 会根据记录指针位置的变化访问不同的记录。在 Visual  FoxPro 系统中 无论什么时候访问数据表, 一次只能访问一条记录。 当需要在数据表中浏览数据或访问另一条 记录时,需要更改表的记录指针的位置。 

1.绝对定位

绝对定位命令的格式如下:  GO  N / TOP / BOTTOM  或  GOTO N / TOP / BOTTOM  命令的功能:以绝对位置的方式移动记录的指针,又称为绝对位移命令。即 GO 或 GOTO  命令执行后,命令就会将记录指针直接定位到指定的记录上。N  表示记录号;TOP  表示数据 表顶,即第一条记录;BOTTOM 表示数据表底,即最后一条记录。其关系为:  TOP < N < BOTTOM  例 5.14  将记录指针定位到第 1 条记录、第 18 条记录和最后一条记录上。  USE C:\MICROSOFT VISUAL STUDIO\VFP98\TYC57\学生名册  GO TOP  GO 18  GO BOTTOM  或  GOTO TOP  GOTO 18  GOTO BOTTOM  上述两类命令的执行结果是一致的,都是将记录指针定位到表文件的第 1 条记录、第 18  条(如果有第 18 条记录的话)记录和最后一条记录上。

(24)

如果在打开数据表时使用了索引,那么第一条记录和最后一条记录的位置就会根据索引 顺序发生变化, 索引表示的是记录的相对位置。 当没有索引时, 其代表的就是记录的实际位置。 此时,GO TOP 就会将记录指针定位到索引的第一条记录上,GO BOTTOM 会将指针定位到索 引的最后一条记录上。  2.相对定位 相对定位命令的格式如下:  SKIP +/­  数值表达式 命令的功能:从当前记录位置开始,将记录指针向前或向后移动一条或数条记录,每次 移动的距离为“数值表达式”的值。值为正表示从当前位置开始,向记录号增加的方向移动记 录指针;如果值为负表示从当前位置开始,向记录号减少的方向移动记录指针。当指定移动的 记录数超过可以移动的记录时, 系统会将记录指针移动到第一条记录或最后一条记录。 如果试 图将记录指针超越第一条和最后一条记录时,系统会分别给出超界警告信息。 例 5.15  将记录指针定位到第 3 条记录,向记录号增加的方向移动 4 条记录,再向记录 号减少的方向移动 5 条记录。  USE C:\MICROSOFT VISUAL STUDIO\VFP98\TYC57\学生名册  GO 3  SKIP 4  SKIP ­5  3.条件定位 条件定位命令的格式如下:  LOCATE [范围]    FOR  条件表达式 命令的功能:在指定范围内,对满足条件的记录定位。该命令不选“范围”参数时,系 统默认为  ALL。命令执行时,在指定范围内从前到后对每条记录进行条件比较,找到第一条 符合条件的记录就将指针定位在该记录处, 并将此记录号显示在状态栏上 (不能显示记录的内 容) 。若想继续查找其他符合条件的记录,则必须使用 CONTINUE 命令。  CONTINUE 命令是按照 LOCATE 命令的范围和条件在上一次查找定位的基础上继续向后 查找,直到找到另一条符合条件的记录为止。可以反复地使用 CONTINUE 命令找出符合给定 条件的全部记录。CONTINUE 命令只能与 LOCATE 命令配合使用,单独使用没有意义。  LOCATE  命令只能在状态栏上显示定位记录的记录号,不能显示记录的内容。因此,在 实际运用时还需要与显示命令配合使用, 一般与 DISPLAY 命令配合为宜, 这是因为 DISPLAY  命令在省略范围参数时只对当前记录进行显示。  5.3.5  数据输入 对于已经建立好结构的表,可以进行数据输入了。最简单的数据输入方法是数据的追加。  1.追加数据 (1)使用命令方式。 追加数据命令的格式如下:  APPEND [BLANK]  命令的功能:对已存在的表,在最后一条记录之后添加记录。BLANK 子句的作用是添加

(25)

一条空记录。 (2)使用可视化方式。打开数据表后,选择“显示”→“浏览”菜单项,屏幕上出现数 据浏览窗口,如图 5.62 所示。此时,在“显示”菜单中选择“编辑”选项,如图 5.63 所示, 屏幕上出现数据输入窗口,如图 5.64 所示。 图 5.62  数据浏览窗口 图 5.63  “显示”菜单 在数据浏览窗口中,选择“表”→“追加新记录”菜单项,如图 5.65 所示,或者选择“显 示”→“追加方式”菜单项,均可在最后一条记录之后输入新记录,如图  5.66  所示。在数据 输入窗口中,选择“表”→“追加新记录”菜单项,或者选择“显示”→“追加方式”菜单项, 均可在最后一条记录之后输入新记录,如图 5.67 所示。在这两种状态下,都可以追加数据。 图 5.64  数据输入窗口 图 5.65  表菜单 图 5.66  在浏览窗口中追加数据 图 5.67  在输入窗口中追加数据  2.插入数据 插入数据就是在指定的位置输入数据,要先定位,后输入。插入数据的命令格式如下:  INSERT [BLANK] [BEFORE]  命令的功能:在当前记录的之后插入一条记录。BLANK 子句的作用是插入一条空记录,  BEFORE 子句表示在当前记录的前面插入记录。 例 5.16  在第 3 条记录之前插入一条空记录。  USE C:\MICROSOFT VISUAL STUDIO\VFP98\TYC57\学生名册  GO 3 

(26)

5.3.6  数据的修改、复制、删除与恢复  1.数据修改 数据的修改方式有多种,用户可以根据自己的情况选择最适合的方式进行修改。在修改操 作过程中,可以用 Ctrl+W 组合键存盘结束操作,也可以用 Ctrl+Q 组合键放弃刚刚作过的修改。 (1)按记录顺序修改。按记录顺序修改的命令格式如下:  EDIT  记录号 或  CHANGE  记录号 命令的功能:对当前数据库的记录作顺序修改。当指定记录号后,系统从指定的记录号 开始将记录的结构和内容显示在编辑窗口中,如图  5.64  所示,用户可以对其中的内容逐条进 行修改。因此,该修改形式要求给出的记录号不能大于最后一条记录的记录号。 例 5.17  修改学生名册表中第二条记录的“入学成绩” ,由原来的 609 改为 615。  USE C:\MICROSOFT VISUAL STUDIO\VFP98\TYC57\学生名册  EDIT 2 

Record NO.2      Record NO.2  学号:200309215  学号:200309215  姓名:王丽丽 姓名:王丽丽 性别:女 性别:女 出生日期:05/08/84  出生日期:05/08/84  入学成绩:609.0  入学成绩:615.0  家庭住址:北京 家庭住址:北京 联系电话:64516635  联系电话:64516635  (2)按指定的字段和条件进行修改。按指定的字段和条件进行修改的命令格式如下:  EDIT [范围] [FIELDS  字段名表] [FOR  条件表达式] [WHILE  条件表达式] 

或 

CHANGE [范围] [FIELDS  字段名表] [FOR  条件表达式] [WHILE  条件表达式]  命令的功能:对满足条件的记录中的指定字段进行修改。选择 FIELDS 短语时,系统按照 “字段名表”中的顺序在屏幕上显示字段名表中的字段;不选择此短语时,系统将全部字段按 照表结构的顺序显示在屏幕上的编辑窗口中,如图 5.64 所示。 选择了 FOR 短语或 WHILE 短语后,系统对当前表中的记录按给出的条件进行筛选,将 符合条件的记录显示在屏幕上,供用户修改,直到数据表的最后一条记录为止;不选择  FOR  短语或 WHILE 短语时,表示对数据修改时没有条件,从当前记录开始直到表的最后一条记录 或用户发出结束指令时停止。 例 5.18  将学生陈宝玉的家庭住址改为“北京” 。  USE C:\MICROSOFT VISUAL STUDIO\VFP98\TYC57\学生名册  CHANG FIELDS  家庭住址  FOR  姓名="陈宝玉" 

Record NO.5  Record NO.5  家庭住址:南京 家庭住址:北京

(27)

(3)浏览修改命令。浏览修改命令的格式如下: 

BROWSE [FIELDS  字段名表] [LOCK  数值表达式] [FOR  条件表达式]  [FREEZE  字段名] [NO MENU] [NO FOLLOW]  命令的功能:从当前记录开始分屏显示当前表中的全部记录。不选择任何子句时,系统 将当前表中的记录显示在屏幕上,如图  5.62  所示。用户可以对屏幕上的内容进行修改操作。 该命令默认不允许向数据表中追加记录。  BROWSE 命令是最常用的命令之一, 其中的短语子句可以突出该命令的某一方面的特性。  FIELDS 短语表示在显示数据时按照字段名表的顺序显示;不选择此项则按照表结构的顺 序将全部字段显示在屏幕上。  LOCK 短语表示在屏幕中的内容左右移动时在屏幕的左边锁住指定个数的字段, 表达式的 值就是要锁住的字段个数。 这些字段中的数据仍可以修改, 只是当其他字段移动时这些字段在 屏幕中的位置不变。  FREEZE 短语表示能够进行修改数据的字段名,选择此短语后,其他字段中的数据只能读 不能写(即修改) 。  NO MODIFY 子句表示不允许修改数据表中的数据,此时数据表中的数据只能浏览不能 修改。 NO MENU 子句表示不允许变换显示方式,选择此子句,则在“显示”菜单中没有显示方 式选择项;不选择此子句时,在“显示”菜单中有显示方式选择项,由此可以变换显示方式。  2.数据更新命令 数据更新命令的格式如下: 

REPLACE [范围]  字段名 1 WITH  表达式 1 [,  字段名 2 WITH  表达式 2 ,…]  [FOR  条件表达式] [WHILE  条件表达式] 

命令的功能:用表达式的值替换指定字段名中的数据。替换是按照命令中指定的范围和 条件进行的。不选择“范围”参数时,只对当前记录进行替换;给出替换条件时,表示对当前 表中符合条件的记录进行数据替换。 

FOR 和  WHILE  短语虽然都表示操作条件,但是有区别:FOR 短语对满足条件的所有记 录进行操作;WHILE 短语是从表中的当前记录开始向下顺序判断,只要出现不满足条件的记 录就终止执行,而不管其后是否还有满足条件的记录。 此命令语句可以同时替换若干个字段的内容,一般考虑到语句的长度、执行速度等因素, 一条命令以替换 5~6 个字段的内容为宜, 如果需要替换的字段很多时, 可以用多个 REPLACE  语句来完成。  3.数据复制 数据复制命令的格式如下: 

COPY TO  表文件名  [范围] [FIELDS  字段名表] [FOR  条件表达式]  [WHILE  条件表达式] 

命令的功能:将当前数据表中符合条件的记录复制到指定的数据表文件中。

该命令中的“表文件名”不能与当前表文件同名,复制后的表文件的内容可以是当前表 文件的部分或全部,这主要取决于命令中的各个可选短语的选择。当选择 FIELDS 短语后,复 制后表文件的结构由“字段名表”中的字段组成;当选择 FOR 或 WHILE 短语后,复制后表

(28)

文件中的记录由符合给定条件的记录组成; 当不选择任何可选短语时, 复制后的表文件与当前 表文件完全相同,此种方法可以用于数据表文件的备份。 例 5.19  复制“学生名册”表。  USE C:\MICROSOFT VISUAL STUDIO\VFP98\TYC57\学生名册  COPY TO C:\MICROSOFT VISUAL STUDIO\VFP98\TYC57\学生名册 b  USE C:\MICROSOFT VISUAL STUDIO\VFP98\TYC57\学生名册 b  LIST  4.数据删除 从一个数据文件中删除数据是一件非常耗费时间和精力的工作,有时考虑不周还会将有 用的数据删除。 为了避免这类情况的发生, Visual FoxPro 系统提供了对数据的逻辑删除和物理 删除两类命令。对数据的逻辑删除是可恢复性的删除,物理删除是不可恢复性的删除。 (1)逻辑删除命令。逻辑删除的命令格式如下:  DELETE [范围] [FOR  条件表达式] [WHILE  条件表达式]  命令的功能:对符合条件的记录标上删除标记*。该命令若不选择“范围”参数,也不指 定条件时,系统仅对当前记录标上删除标记。若指定范围而无条件时,表示将指定范围内的所 有记录都标上删除标记*。 在数据浏览窗口中,使用黑色的标记块标记那些已经被删除的记录,如图 5.68  所示。记 录前有黑块的表示此记录已经使用  DELETE  命令删除,但还没有进行物理删除。也就是说, 在文件中这些记录依然存在, 还有恢复的可能。 黑色的标记块也可以用鼠标单击的方法去除和 标记。 (2)恢复数据命令。恢复数据的命令格式如下:  RECALL [范围] [FOR  条件表达式] [WHILE  条件表达式]  命令的功能:去除符合条件的记录上的删除标记*。此命令与逻辑删除命令是互逆命令, 它们的使用方式相同,各子句、短语的使用方法也相同,只是作用相反。 在数据浏览窗口中,执行恢复命令后记录前的黑色标记块被去除,如图 5.69 所示。 图 5.68  数据浏览窗口中的删除标记 图 5.69  执行恢复命令后的数据浏览窗口 例 5.20  将“学生名册 b”表中男同学的记录打上删除标记。  USE C:\MICROSOFT VISUAL STUDIO\VFP98\TYC57\学生名册 b  DELETE FOR  性别="男"

(29)

LIST  例 5.21  将“学生名册 b”表中男同学记录上的删除标记去除。  USE C:\MICROSOFT VISUAL STUDIO\VFP98\TYC57\学生名册 b  RECALL FOR  性别="男"  LIST  (3)物理删除命令。逻辑删除并不是真正地删除记录,而只是在被删除的记录上做一个 标记,表示此记录已经被删除。真正从表中删除记录的是物理删除。 物理删除的命令格式如下:  PACK  命令的功能:将全部带有删除标记的记录清除出数据表。使用该命令之前,必须对欲删 除的记录打上删除标记,否则此命令不能清除任何没有删除标记的记录。 例 5.22  将“学生名册 b”表中男同学的记录从表中删除。  USE C:\MICROSOFT VISUAL STUDIO\VFP98\TYC57\学生名册 b  DELETE FOR  性别="男"  PACK  LIST  (4)清表命令。清表命令的格式如下:  ZAP  命令的功能:清除当前数据表内的所有记录,使之成为空表。此命令的作用相当于将表 中的记录全部逻辑删除,然后再用物理删除使之成为没有任何记录的表。  ZAP  DELE ALL  PACK ì í î 例 5.23  将“学生名册 b”表中的全部记录从表中清除。  USE  C:\MICROSOFT VISUAL STUDIO\VFP98\TYC57\学生名册 b  ZAP

(30)

(5)对带有删除标记数据的处理方式。Visual FoxPro 系统提供了对带有删除标记的记录 设置其处理方式的命令,该命令的格式如下: 

SET DELETE ON/OFF 

命令的功能:控制已经被逻辑删除的记录显示与否。执行 SET  DELETE  ON 命令,在列 表或浏览时将不显示已经被逻辑删除的记录;当执行命令 SET DELETE OFF 时,所有的记录 无论是否被逻辑删除都显示出来。  5.3.7  数据查询  1.使用命令方式 (1)显示查询。  1)数据表连续显示查询命令。 数据表连续显示命令的格式如下: 

LIST [范围] [FIELDS  字段名列表] [FOR  条件表达式] [OFF]  [WHILE  条件表达式] [TO PRINT]  命令的功能:连续显示当前数据表中的记录。 不选用任何子句和短语时,将显示表中的全部记录,当记录很多一屏不能全部容纳时, 该命令以连续滚动的方式将表中的全部记录显示一遍,只有最后一屏的记录停留在屏幕上。 不选择“范围”参数,系统自定范围为 ALL;选定范围,则按指定范围显示记录。 不选择“字段名表”短语,系统将记录的全部组成字段都显示在屏幕上。记录的长度超 出屏幕的宽度时,将折行显示记录。选定了“字段名表”短语时,系统将按照列表中的字段名 和顺序显示记录。 选择 FOR 或 WHILE 短语,表示只显示那些符合给定条件的记录;不选择条件短语,表 示显示记录时没有条件限制,即显示全部记录。 选择 OFF 子句,表示显示记录时不显示记录号,此子句只有显示命令才有。 选择 TO 子句,表示要打印输出所显示的记录。 例 5.24  将“学生名册”表中的女生记录全部打印输出,不要记录号。  USE  C:\MICROSOFT VISUAL STUDIO\VFP98\TYC57\学生名册  LIST FOR  性别="女" OFF TO PRINT 

2)数据分屏连续显示查询命令。 数据分屏连续显示命令的格式如下: 

DISPLAY [范围] [FIELDS  字段名表] [FOR  条件表达式] [OFF]  [WHILE  条件表达式] [TO PRINT] 

命令的功能:分屏连续显示当前数据表中的记录。

不选用任何子句和短语时,只显示当前记录的内容。当选择范围为 ALL 时,将显示当前 表中的全部记录;当记录很多一屏显示不完时,将分屏显示全部记录,即显示满一屏时暂停, 在屏幕的下部显示 Press any key continue…,意思是“按任意键即可继续显示” ,如此一屏屏地

(31)

显示下去,直到全部记录显示完毕。 其他的子句和短语的作用和使用方法与 LIST 命令相同。 (2)浏览查询。浏览查询命令就是  BROWSE  命令,是在“浏览窗口”中进行查询。具 体操作参看前面的“浏览修改”命令。 (3)条件查询。在 DISPLAY、LIST 和 BROWSE 命令中,使用条件短语就能达到条件查 询的目的。例 5.24 就是一种条件查询。  2.使用可视化方式 利用查询向导建立查询文件,也可以达到查询数据的目的。用查询向导建立查询文件的 操作如下: (1)打开需要建立查询的数据表“学生名册” 。 (2)在常用工具栏中单击“新建”按钮 ,在屏幕上出现“新建”对话框,如图 5.1 所 示。在其中选择“查询”项,单击“向导”按钮,屏幕上出现“向导选取”对话框,如图 5.70  所示。 (3)在其中选择“查询向导” ,该选项用来建立一个标准查询;然后单击“确定”按钮, 屏幕上出现“查询向导步骤 1-字段选取”对话框,如图 5.71 所示。 图 5.70  “向导选取”对话框 图 5.71  查询向导步骤 1-字段选取 (4)在其中选择“可用字段”列表框中的字段到“选定字段”列表框中,单击“下一步” 按钮,屏幕上出现“查询向导步骤 3-筛选记录”对话框,如图 5.72 所示,在其中设置筛选条 件:入学成绩<600  或 性别='女'。单击“预览”按钮,屏幕上出现“预览”窗口,如图  5.73  所示。关闭“预览”窗口,单击“下一步”按钮,屏幕上出现“查询向导步骤  4-排序记录” 对话框,如图 5.74 所示。 图 5.72  查询向导步骤 3-筛选记录 图 5.73  预览窗口

(32)

(5)在其中选择“入学成绩”字段作为排序的关键字,单击“添加”按钮放入“选定字 段”列表框中。单击“降序”作为排序的方式,单击“下一步”按钮进入到“查询向导步骤  4a­限制记录”对话框,如图 5.75 所示。在其中可以确定对记录的显示限制,记录的显示限制 确定后单击“下一步”按钮,出现“查询向导步骤 5-完成”对话框,如图 5.76 所示。单击其 中的“完成”按钮, “查询”创建完毕,屏幕上出现“另存为”对话框,在“文件名”文本框 中输入新建的查询文件名“学生名册查询” ,如图 5.77 所示。 图 5.74  查询向导步骤 4-排序记录 图 5.75  查询向导步骤 4a-限制记录 图 5.76  查询向导步骤 5-完成 图 5.77  “另存为”对话框  3.运行查询文件 查询文件建立后,可以通过运行已建好的查询文件来浏览查询结果。查询文件的扩展名 为.qpr,可以在命令窗口中输入执行命令来运行该查询文件,例如  DO  学生名册查询.qpr,也 可以用以下可视化的操作方法来运行查询文件: (1)打开已经建立的查询文件“学生名册查询” ,屏幕上出现“查询设计器”窗口,如 图 5.78 所示。 (2)单击常用工具栏中的 按钮,屏幕上出现“查询”窗口,如图 5.79 所示。其中的记 录是符合筛选条件“入学成绩<600  或 性别='女'”的记录。  4.使用查询设计器修改查询 对已建好的查询文件可以使用“查询设计器”进行修改。打开“查询设计器”的方法有 多种,可以先打开相关的数据表,再打开已建立的查询文件,就会出现“查询设计器”窗口, 如图 5.78 所示。在这里着重讲述在“项目管理器”中打开“查询设计器”的方法。

(33)

图 5.78  “查询设计器”窗口 图 5.79  查询窗口 (1)打开“查询设计器”窗口。  1)在“打开”对话框中选择“学籍”项目文件,如图 5.80 所示。单击“打开”按钮,屏 幕上出现“项目管理器-学籍”对话框,如图 5.81 所示。 图 5.80  “打开”对话框 图 5.81  “项目管理器-学籍”对话框  2)在“项目管理器”对话框中选择“数据”选项卡,先打开相关的数据库“学籍” ,再 展开“查询”图标,选中“学生名册查询” ,然后单击“修改”按钮。屏幕上出现“查询设计 器”窗口,如图  5.78  所示。在“查询设计器”窗口中有“字段” 、 “联接” 、 “筛选” 、 “排序依 据” 、 “分组依据”和“杂项”6 个选项卡。 l “字段”选项卡。 “字段”选项卡的作用是指定在查询中的字段 SUM 或 COUNT 之 类的合计函数或其他表达式。选中以后,单击“添加”按钮,将所选字段添加到“选 定字段”列表框内;单击“全部添加”按钮,则将所有字段都添加进去,如图  5.78  所示。此时,若想将表中的其他字段增加到未来的查询中,可以通过这个方法进行添 加。 若将 “选定字段” 列表框中的已有字段移出, 可以选中要移出的字段, 再单击 “移 去”按钮。单击“全部移去”按钮,可以将“选定字段”列表框中的全部字段移出。 可以拖动字段左边的垂直双箭头来调整查询的显示顺序。 l “联接”选项卡。 “联接”选项卡的作用是为匹配一个或多个表或视图中的记录指定 联接条件(如字段的特定值、表间临时关系的联接条件等) 。查询中表之间的关系是 临时、松散的关系,它依据“联接”选项卡中设置的一个联接表达式进行联接。默认 时,联接条件的类型为 Inner Join(内部联接) 。 “联接”选项卡有 6 个组成部分,各组成部分的意义介绍如下: Ø 类型。单击“类型”下面的下拉列表框会弹出一个联接类型下拉列表,如图 5.82  所示。其中有以下 4 项:  Inner Join:只有满足联接条件的记录包含在结果中。此类型是系统的默认设置。

參考文獻

相關文件

代號 職類 姓名 名次 提名單位.. 02 模具 黃祖榮

代號 職類 姓名 名次 提名單位 備註.. 01 綜合機械 廖育傑

職類代號 職類 姓名 名次

[r]

[r]

A clever and simplifying strategy: pairing up all the rays coming through the slit and then finding what conditions cause the waves of the rays in each pair to cancel each other.

代碼 姓名 姓別 住址 電話 部門 部門 位置..

[r]