290 likes | 457 Views
Visual FoxPro 程序设计教程. 第 11 章 创建数据库. ● 打开数据库. 若要打开一个数据库:从“文件”菜单中选择“打开”,选择数据库名。打开数据库后,就会显示出“数据库设计器”,它向用户展示了组成数据库的若干表以及它们之间的关系。 若要看一下样例数据库的结构,可以打开数据库 Testdata.dbc ,该文件存于 program filesmicrosoft visual studiomsdn9898vs2052samplesvfp98data 目录下。打开 Testdata.dbc 后,显示如图 11-1 所示.
E N D
第11章 创建数据库 ●打开数据库 若要打开一个数据库:从“文件”菜单中选择“打开”,选择数据库名。打开数据库后,就会显示出“数据库设计器”,它向用户展示了组成数据库的若干表以及它们之间的关系。 若要看一下样例数据库的结构,可以打开数据库Testdata.dbc,该文件存于 \program files\microsoft visual studio\msdn98\98vs\2052\samples\vfp98\data 目录下。打开Testdata.dbc后,显示如图11-1所示
●展开或折叠所有表 将鼠标指针指向“数据库设计器”窗口,单击鼠标右键,打开快捷菜单,如图11-2所示。 图11-2 数据库设计器中折叠后的表
●创建新的数据库 ●若要创建新的数据库: ① 从“文件”菜单中选择“新建”命令。在“新建”对话框中选择“数据库”单选钮,然后单击“新建文件”按钮,打开“创建”对话框,如图11-1所示 ② 在“创建”数据库对话框中输入新数据库名,“保存”后,会显示一个空的“数据库设计器”窗口,与此同时,“数据库设计器”工具栏将变为有效,如图11-2所示。
●在数据库中加入表 ●向数据库中添加表 从“数据库”菜单或“数据库设计器”工具栏或右击数据库设计器窗口,从中选择“添加表”。在“打开”对话框中选定一个表,然后选择“确定 ”. 图11-5 向数据库中添加表
●准备关联 要决定哪个表需要这些字段,可考虑使用记录号怎样关联数据。例如,一个学生可能有多个成绩。因此,学生(Student)表应包含主记录,成绩(cj)表包含相关记录。 为准备两个关联表中的主表,需要在主表中添加主关键字字段,如“学号”。这是因为学生表中一条记录与成绩表的多个记录关联。 要在两个表之间提供公共字段,需要在带有关联记录的表添加外部关键字字段,如成绩表。外部关键字字段必须以相同的数据类型匹配主关键字字段,而且一般用相同的名称。且以主关键字字段和外部关键字字段创建的索引必须带有相同的表达式。如图11-6所示。
●关联表 若要准备关系,可以按如下步骤进行: (1) 决定哪个表有主记录(如Student表),哪个表有关联记录(如cj表)。 (2) 对有主记录的表,添加一个整数型字段,再对该字段添加一个主索引。 (3) 对带有关联记录的表,添加一个与另个表匹配的主关键字字段,再对该新字段添加一个一般索引。
●定义字段显示 ●设置字段标题 按照一下步骤可以给字段值定一个标题: 图11-9 基于标题的列名
●为字段输入注释 按照以下步骤可以为一个字段作注释: ① 在“表设计器”中,选定字段。 ② 在“字段注释”框中键入注释内容,如图11-9所示。 ③ 选择“确定”。
●设置默认字段值 按照以下步骤,可以设置字段的默认值: ① 在“数据库设计器”中选定表。 ② 从“数据库”菜单中选择“修改”。 ③ 在“表设计器”中选定要赋予默认值的字段。 ④ 在“默认值”框中键入要显示在所有新记录中的字段值(字符型字段应用引号括起来)。 ⑤ 选择“确定”。
●设置有效性规则和有效性说明 设置有效性规则和有效性说明: ① 在“表设计器”中打开表。 ② 在“表设计器”中选定要建立规则的字段名。 ③ 在“规则”方框旁边选择对话按钮。 ④ 在“表达式生成器”中设置有效性表达式,并选择“确定”。例如,限制“学号”字段的前两位只能为"97",并且输入的学号必须满8位: SUBSTR(学号,1,2) = "97" AND LEN(TRIM(学号)) = 8
建立有效性规则时,必须创建一个有效的Visual FoxPro表达式,其中要考虑到这样一些问题:字段的长度、字段可能为空或者包含了已设置好的值等等。表达式也可以包含结果为真或假的函数。 ⑤ 在“信息”框中,键入用引号括起的错误信息,例如,显示“学号不符合要求”,如图11-9所示。 ⑥ 选择“确定”。 如果输入的信息不能满足有效性规则,在“有效性说明”中设定的信息便会显示出来。,如图11-10所示。 图11-10 当输入非法数值时,屏幕上会显示有效性说明
控制记录的数据输入 按照以下步骤可以设置有效性规则: ① 选定表,在“数据库”菜单中选择“修改”。将打开“表设计器”对话框。 ② 在“表设计器”中选择“表”选项卡。 ③ 在“规则”框中,输入一个有效的Visual FoxPro表达式定义规则,如图11-9所示。单击“…”按钮以使用“表达式生成器”,如图11-11所示。例如,Student表中,97级的学生“总学分”必须为0,则可以在“表”选项卡的“有效性规则”框中键入下述表达式: IIF(STRSUB(学号,1,2)="1997" and 总学分#0, .F.,.T.) ④ 在“信息”框中输入提示信息。例如,“信息”文字可以是:"新生总学分必须为0"。当有效性规则未被满足时,将会显示该信息。 ⑤ 选择“确定”。 ⑥ 在“表设计器”中选择“确定”
管理数据库记录 如果添加一个成绩记录,可能想在成绩表中自动添加关于该学生的基本信息。为了帮助设置规则,控制如何在关系表中插入、更新或删除记录,可使用“参照完整性设计器”。若要使用“参照完整性生成器”: ① 在“数据库设计器”中建立两表之间的关系,或者双击关系线来编辑关系。 ② 在“编辑关系”对话框中选择“参照完整性”按钮,如图11-12所示。 图11-12 在“编辑关系”对话框中的参照完整性按钮 总复习教学进程
③ 在“参照完整性生成器”中选择更新、删除或插入记录时所遵循的若干规则,如图11-13所示。 图11-13 “参照完整性生成器”对话框 ④ 选择“确定”,然后选择“是”保存所做的修改,生成“参照完整性”代码,并退出参照完整性生成器。 总复习教学进程
第2章 使用数据库 1 在表单中对多表的控制 使用SELECT命令可以将指定的工作区设为当前工作区,其语法格式为: SELECT 〈工作区号〉|〈表别名〉 【例11-1】在表单中浏览多个表。如图11-14所示。 图11-14 在表单中浏览多个表 总复习教学进程
设计步骤如下: (1) 创建数据环境。 (2) 在表单中增加一个命令按钮组CommandGroup1,如图11-14所示。 (3) 编写CommandGroup1的Click事件代码: n = THIS.Value DO CASE CASE n = 1 SELECT student CASE n = 2 SELECT class0 CASE n = 3 SELECT kc CASE n = 4 SELECT cj ENDCASE BROW 运行表单,即可在一个表单中浏览不同的数据表。 总复习教学进程
多表的表单设计 1. 用一对多表单向导创建表单 【例11-2】利用“一对多表单向导”设计操作多表的表单程序。 设计步骤为:首先,用下列方法之一打开“向导选取”对话框: l在“工具”菜单中选择“向导”子菜单,再从子菜单中选择“表单”。 l从“文件”菜单中选择“新建”,并依次选取“表单”、“向导”。 l选择主工具条上的表单按钮。 步骤1 - 从父表中选定字段。 步骤2 - 从子表中选定字段。 步骤3- 建立表之间的关系。 步骤4 – 选择表单样式 步骤5 - 排序次序 步骤6 - 完成。 总复习教学进程
在表格中增加控件 【例11-4】在上例的子表表格中增加下拉列表框,以便在编辑数据时能控制数据的来源。 设计步骤如下: (1) 修改数据环境——在数据环境中增加新表,并在cj.dbf和kc.dbf之间建立关系。 (2) 修改表单——删除表格第一列中的文本框,增加下拉列表框。 (3) 设置Combo1的属性 总复习教学进程
进一步的修改 【例11-5】修改上例的表单,利用选项按钮组来控制“性别”字段,利用组合框来控制班级编号的输入(如图11-30)。 图11-30 进一步的修改 总复习教学进程
设计步骤如下: (1) 修改数据环境。 (2) 修改表单。 (3) 修改代码。 ● 修改容器“性别1”中复选框Check1的Refresh事件代码: checkbox::Refresh THIS.Parent.OptionGroup1.Value = IIF(THIS.Value,1,2) ●修改容器“性别1”中选项按钮组OptionGroup1的InteractiveChange事件代码: THIS.Parent.Check1.Value = IIF(THIS.Value = 1,.T.,.F.) ●修改命令按钮容器中“添加”按钮cmdAdd的Click事件代码: txtbtns::cmdadd.Click IF THIS.Caption = "保存(\<S)" THISFORM.性别1.OptionGroup1.Enabled = .T. THISFORM.班级编号1.Combo1.Enabled = .T. THISFORM.Grid1.Enabled = .T. 总复习教学进程
ELSE THISFORM.性别1.OptionGroup1.Enabled = .F. THISFORM.班级编号1.Combo1.Enabled = .F. THISFORM.Grid1.Enabled = .F. ENDIF ●修改命令按钮容器中“编辑”按钮cmdEdit的Click事件代码: txtbtns::cmdedit.Click IF THIS.Caption = "还原(\<R)" THISFORM.性别1.OptionGroup1.Enabled = .T. THISFORM.班级编号1.Combo1.Enabled = .T. THISFORM.Grid1.Enabled = .T. ELSE THISFORM.性别1.OptionGroup1.Enabled = .F. THISFORM.班级编号1.Combo1.Enabled = .F. THISFORM.Grid1.Enabled = .F. ENDIF 总复习教学进程
习题11 11.1 创建“职工”数据库,其中包含第10章习题中的数据表:“职工情况.dbf”和“职工工资.dbf”。 11.2 修改上题中的数据库: (1) 在数据库中创建一个新表“部门”,仅包含两个字段:部门、部门编号。 (2) 修改数据表“职工情况”,将“部门”字段改为“部门编号”。 (3) 建立“部门”表与“职工情况”之间的关联。 11.3 设计一个程序,处理职工情况的管理。如图11-32所示。 图11-32 管理程序 总复习教学进程
11.4 修改上题,利用组合框选择部门。 11.5 在表格中使用复选框。如图11-33所示。 11.6 在表格中使用组合框。如图11-34所示。 图11-33 在表格中使用复选框 图11-34 在表格中使用组合框 11.7 使用表单“向导”设计习题11.3中的管理程序。 11.8 在习题11.7的管理程序中使用组合框选择部门编号。 总复习教学进程