当前位置:
文档之家› Visual FoxPro数据库与多表操作
Visual FoxPro数据库与多表操作
操作步骤
(1)启动 Visual FoxPro。
(2)在命令窗口中输入如下命令,结果如图 1-4-20 所示。
SELECT 2 USE 床位分配
&&打开子表
SELECT 1
USE 患者信息
&&打开父表
JOIN WITH B TO 患者床位 FOR 住院号=B.住院号 FIELDS 住院号,姓名,住院科室,;
图 1-4-15 非当前工作区字段的访问
【实验 4.3】练习关联两个表,要求学会建立临时性关联(SET RELATION TO 命令)和
永久性关联。
实验分析
临时性关联是指两个表之间的逻辑关联,包括一对一的关联和一对多的关联。当表关闭
或使用命令关闭关联后,两个表的关联随即取消。
永久性关联是指两个表之间的物理关联。两个表所从属的数据库打开后,两个表的关联
关系即存在。如果想删除永久性关联,需要在数据库设计器中删除永久性关联。
(1)将患者信息.dbf 和床位分配.dbf 以住院号为关键字段建立一对一的关联,运行结果
如图 1-4-16 所示。
操作步骤
① 启动 Visual FoxPro。
② 在命令窗口中,输入如下命令:
SELECT 2 USE 床位分配 INDEX ON 住院号 TO zyh
·49·
l 菜单方式 ① 启动 Visual FoxPro。 ② 选择【文件】|【新建】命令,在打开的“新建”对话框中选择“数据库”单选按钮, 单击“新建文件”按钮,出现“创建”对话框,确定需要建立数据库的路径和数据库文件名,如 图 1-4-6 所示,单击“保存”按钮后,打开数据库的同时将打开如图 1-4-2 所示的数据库设计器。
SELECT 1
USE 患者信息
&&打开父表
SET RELATION TO 住院号 INTO B &&建立一对一关联
SET SKIP TO B
&&建立一对多关联
DISP ALL 住院号,姓名,B.费用类别,B.费用名称,B.用量
·54·
图 1-4-17 一对多关联
Visual FoxPro 程序设计上机指导
图 1-4-3 关闭数据库
⑤ 在命令窗口内输入命令:DELETE DATA 住院信息,如图 1-4-4 所示,则删除已经存 在的数据库。
图 1-4-4 删除数据库
⑥ 在命令窗口内输入命令:OPEN DATA 住院信息,如图 1-4-5 所示,则打开存在的数 据库。
图 1-4-5 打开数据库
技巧解析 在没有指定保存路径的情况下,数据库默认保存位置一般为:“C:\Program Files\Microsoft Visual Studio\Vfp98”。
图 1-4-1 创建住院信息数据库
③ 在命令窗口内输入命令:MODI DATABASE 住院信息,然后按回车键,弹出数据库 设计器窗口,如图 1-4-2 所示。
Visual FoxPro 程序设计上机指导
图 1-4-2 数据库设计器
④ 在命令窗口内输入命令:CLOSE DATA,如图 1-4-3 所示,则关闭已经打开的“数据 库设计器”窗口。
【实验 4.2】练习选择工作区命令(SELECT 命令)。 实验分析 本实验要求学生掌握表别名的定义、工作区的选择、非当前工作区字段的访问等操作。 (1)练习定义表的别名,要求将患者信息定义别名为病人信息。 操作步骤 ① 启动 Visual FoxPro。 ② 打开患者信息.dbf,为其定义别名,如图 1-4-13 所示。
&&记录指针指向最后一条记录
?RECNO() SKIP
&&记录指针下移 1 位,记录指针指向表底
?RECNO()
GO TOP
&&记录指针指向第一条记录
?RECNO() SKIP –1
&&记录指针上移 1 位,记录指针指向表顶
?RECNO() SET RELATION TO &&取消关联
技巧解析
当父表文件的记录指针移动时,子表文件的记录指针就定位于<关联表达式>值与<索引 表达式>值相等的第一条记录上。如果子表中找不到匹配的记录,则子表的记录指针指向文 件尾,这时 EOF 返回值为.T.。
图 1-4-18 建立永久关联
图 1-4-19 “编辑关系”对话框
【实验 4.4】练习使用连接命令(JOIN 命令),要求将“患者信息.dbf 表”和“床位分配.dbf 表”文件按住院号连接,生成一个新的表文件“患者床位.dbf”,并浏览该表。
实验分析 JOIN 命令将两个表以关键字段相等为条件连接成独立的新表,新表与原来的两个表没有 任何关系。
诊断,B.床位号,B.医生姓名
&&将父表和子表连接成新表“患者床位.dbf”
SELECT 0
·55·
USE 患者床位 BROWSE
图 1-4-20 实验 4.5 运行结果
技巧解析 执行 JOIN 命令时,首先将表“患者信息.dbf”的记录指向第 1 条记录,然后在床位分配.dbf 文件中按两个表住院号相等的条件查找,每找到一个就在新表“患者床位.dbf”生成一条记 录。“床位分配.dbf”表的记录全部查找完后,“患者信息.dbf”表的记录指针指向下一条记录, 重复比较连接,直到“患者信息.dbf”表的所有记录处理完为止。 【实验 4.5】表间的数据更新(UPDATE 命令)。要求学会PDATE 命令将子表中的数据按关键字段去更新主表文件的数据。 操作步骤 (1)创建表文件患者医疗费用合计.dbf,内容如图 1-4-21 所示。
技巧解析 SET SKIP TO 命令要在 SET RELATION 命令建立了一对一的关联之后才能使用,将一 对一的关联进一步定义成一对多的关联。 当父表中的一个记录与子表的多个记录相匹配时,在父表中使用 SKIP 命令,并不能使 父表的指针移动,而子表的指针却向下移动,指向下一条与父表相匹配的记录;重复使用 SKIP 命令,直至在子表中没有与父表当前记录相匹配的记录后,父表的指针才向下移动。 (3)练习建立永久关联。为“住院信息”数据库的“患者信息.dbf”表和表“住院费 用.dbf”通过住院号建立永久关联。 操作步骤 ① 打开住院信息数据库,弹出数据库设计器窗口。 ② 以表“患者信息.dbf”的住院号为关键字建立一个主索引 zyh;再以表“住院费用.dbf” 的住院号为关键字建立一个普通索引 zyh。 ③ 在数据库设计器窗口中,用鼠标直接将表“患者信息.dbf”的 zyh 索引项拖放到表 “住院费用.dbf”的 zyh 索引项上,在两表之间将产生一条关联线,如图 1-4-18 所示。 ④ 在数据库设计器窗口中双击数据库表之间的关联线,将弹出如图 1-4-19 所示的“编 辑关系”对话框。在该对话框中可以修改已建立的关联。此外,若单击关联线,使其变粗, 然后按 DELETE 键,则可以删除已建立的关联。
&&打开子表 &&子表以住院号为索引表达式建立索引
SELECT 1
USE 患者信息
&&打开父表
SET RELATION TO 住院号 INTO B &&建立一对一关联
LIST 住院号,姓名,B.医生姓名,B.护士姓名,B.床位号
图 1-4-16 一对一关联
·53·
③ 在步骤②的基础上,继续执行下面命令,练习 GO、SKIP、RECNO 等命令。
图 1-4-7 数据库表设计器
③ 选择“索引”选项卡,在“索引名”列下方的文本框中输入索引名,比如 zyh。 ④ 在“类型”列中下拉列表框中选择“主索引”。如图 1-4-8 所示。 ⑤ 单击“表达式”列右侧的生成器按钮,打开如图 1-4-9 所示的“表达式生成器”对话 框。 ⑥ 在“表达式生成器”对话框的“表达式”框中,输入索引表达式。输入表达式时, 可以在“字段”列表框中双击所需字段,如“住院号”。 ⑦ 单击“确定”按钮,完成表达式的输入,返回表设计器对话框中。
图 1-4-10 添加表的快捷菜单
图 1-4-11 将自由表转换成数据库表
(4)练习将数据库表转换成自由表。 操作步骤 ① 打开“住院信息”数据库。 ② 右键单击要删除的患者信息表,在快捷菜单中选择“删除”命令,如图 1-4-12 所示。 ③ 在弹出的对话框中选择“移去”按钮。
·51·
图 1-4-12 将数据库表转换成自由表
SELECT 1 USE 患者信息 SELECT 2 USE 床位分配 SELECT 3 USE 住院费用 SELECT 1 LIST 住院号,姓名,性别,出生日期
③ 在命令窗口内输入命令,如图 1-4-15 所示。练习非当前工作区字段的访问。 技巧解析 访问非当前工作区的字段时,要在该字段名前加上其所在工作区的别名或表的别名,即
·52·
别名->字段名或别名.字段名。
Visual FoxPro 程序设计上机指导
close all SELECT A USE 患者信息 SELECT B USE 床位分配 SELECT A DISPLAY 姓名,性别,出生日期,B.医生姓名,B.护士姓名,B->床位号
图 1-4-14 工作区选择
(2)将患者信息.dbf 和住院费用.dbf 以住院号为关键字段建立一对多的关联,运行结果 如图 1-4-17 所示。
操作步骤
① 启动 Visual FoxPro。 ② 在命令窗口中,输入如下命令:
SELECT 2 USE 住院费用 INDEX ON 住院号 TO zyh
&&打开子表 &&子表以住院号为索引表达式建立索引
4 实验 Visual FoxPro 数据库与多表操作
【实验目的】 1.掌握 Visual FoxPro 建立数据库和数据库表的方法。 2.掌握数据库、数据库表的常用操作。 3.掌握工作区、多工作区和当前工作区等基本概念。 4.掌握选择当前工作区的方法。 5.掌握有关工作区操作的常用命令的使用方法。 【实验内容】 1.练习建立、修改、关闭、删除和打开数据库。 2.练习建立数据库表及常用操作。 3.练习使用选择工作区命令(SELECT 命令)。 4.练习关联两个表,建立临时性关联(SET RELATION TO 命令)和永久性关联。 5.练习使用连接命令(JOIN 命令)。 6.练习使用表间的数据更新命令(UPDATE 命令)。 【实验要求与步骤】 【实验 4.1】数据库和数据库表练习,掌握数据库和数据库表的基本操作。 实验分析 本实验要求学生掌握数据库的基本操作(命令方式和菜单方式),如命令 CREAT DATABASE、MODI DATABASE、CLOSE DATA、DELETE DATA、OPEN DATA 等。 要求学生掌握数据库表设计器的设置方法和自由表和数据库表间的相互转换等。 (1)建立“住院信息”数据库,练习数据库的修改、关闭、删除、打开等操作。 操作步骤 l 命令方式 ① 启动 Visual FoxPro。 ② 在命令窗口内输入命令,如图 1-4-1 所示,然后按回车键。