4、在数据环境设计器中设置关系 如果添加进数据环境设计器的表具有在数据库中设置的永久关系, 这些关系将自动地加到数据环境中。如果表中没有永久的关系, 可以在数据环境设计器中设置这些关系。 要在数据环境设计l、先向表单的“数据环境设计器”添加两个表, 器中设置这些关系 按“学号”字段设置 Student表与 Grade表的一对多关系 可以将字段从主表在“数据环设计器"中的Suem表中样“学号”字 拖到相关表中的相并将其拖到Gade表的“学号”字段上。 匹配的索引标识上。 也可以将字段从主右击表间的关系连甚线打开快 表拖到相关表中的 student 字段 课程代号 字段上。如果和主 系部代号 学号 班级代号 表中的字段对应的 开课学期 考试类别 相关表中没有索引 生别 出生日期 标识,系统将提示 班级 表单设计器 宿舍 属性QP) 是否创建索引标识。 代码C) 帮助0D 2021-2-23 Visual Foxpro60程序设计
2021-2-23 Visual FoxPro 6.0程序设计 11 4、在数据环境设计器中设置关系 如果添加进数据环境设计器的表具有在数据库中设置的永久关系, 这些关系将自动地加到数据环境中。如果表中没有永久的关系, 可以在数据环境设计器中设置这些关系。 要在数据环境设计 器中设置这些关系, 可以将字段从主表 拖到相关表中的相 匹配的索引标识上。 也可以将字段从主 表拖到相关表中的 字段上。如果和主 表中的字段对应的 相关表中没有索引 标识,系统将提示 是否创建索引标识。 1、先向表单的“数据环境设计器”添加两个表, 如图按“学号”字段设置Student表与Grade表的一对多关系: 在“数据环境设计器”中的Student表中选择“学号”字段 并将其拖到Grade表的“学号”字段上。 右击表间的关系连接线打开快捷菜单
在快捷菜单中单击“属性”,打开属性窗口 表达式生 屈性-文档1 k在属性这列表中迄拌 One ToMany 成器按钮 阳 aRelation1 单击“屬性选擀框”弹出属性值 全」数据方法程|布局其‖这擀T-真 消按钮 CChildorder 如果在建立关系前 Grade表没有按关 cl Relati on 确定按钮 联字段(学号)建立索引,则在将 Coment 先) “学号”从 Student表中拖到 Grade表 destroy Event默认过程 属性选择 Error Event [默认过程 时将弹出对话框: Init Event 默认过程 e Microsoft visual FoxPro Paren (? )您在“gade”表中选定的字段没有与之相关的索引要建 将两表设 ParentAlias student 立关系,此索引必须存在。请按“确定”建立该索引 ParentClass 为一对 ReadExpressi on默认过程 确定Q)|『取消 多关系 指定是否只有在子表的记录指针遍历了所有相关 记录之后,才移动父记录的记录指针。 单击【确定】时系统将先按“学号” 父表别名 为 Grade表建立索引,然后才建立 两表间的关系。 2021-2-23 Visual Foxpro60程序设计
2021-2-23 Visual FoxPro 6.0程序设计 12 在快捷菜单中单击“属性”,打开属性窗口: 在属性选择列表中选择OneToMany 单击“属性选择框”弹出属性值 选择.T.-真 表达式生 成器按钮 取消按钮 确定按钮 属性选择 框 将两表设 置为一对 多关系 父表别名 如果在建立关系前Grade表没有按关 联字段(学号)建立索引,则在将 “学号”从Student表中拖到Grade表 时将弹出对话框: 单击【确定】时系统将先按“学号” 为Grade表建立索引,然后才建立 两表间的关系
5、在数据环境设计器中编辑关系 在数据环境设计器中设置了一个关系后,在表之间将有一条连线指出这个 关系。 若要编辑关系的属性,可在“属性”窗口中从属性列表框选择要编辑的关系。 关系的属性对应于 SET RELATION和 SET SKIP命令中的子句和关键字。 RelationalExpr(指定基于父表中的字段而又与子表中的索引相关的表达式) 属性的默认设置为主表中主关键字字段的名称。如果相关表是以表达式作为 索引的,就必须将 Relationalexpr属性设置为这个表达式。例如,如果相关表 以 UPPER( cust id)作为索引,就必须将 Relational expr属性设置为 UPPER (cust id 如果关系不是一对多关系,必须将 OneTOmany属性(指定是否只有在子表中 遍历了所有相关记录之后才移动父表记录的记录指针)设置为“假”(F.)。 这对应于使用 SET RELATION命令时不发出 SET SKIP命令。 将关系的 One Tomany属性设置为“真”(T),相当于发出 SET SKIP命令。 当浏览父表时,在记录指针浏览完子表中所有的相关记录之前,记录指针 直停留在同一父记录上 注意:如果在表单或表单集中想设置一对多关系,必须将 One ToMany属性 设置为“真”(T.),甚至在数据库中已经建立了永久一对多关系时也必须 如此。 2021-2-23 Visual Foxpro60程序设计 返回13
2021-2-23 Visual FoxPro 6.0程序设计 13 5、在数据环境设计器中编辑关系 在数据环境设计器中设置了一个关系后,在表之间将有一条连线指出这个 关系。 若要编辑关系的属性,可在“属性”窗口中从属性列表框选择要编辑的关系。 关系的属性对应于SET RELATION和SET SKIP命令中的子句和关键字。 RelationalExpr(指定基于父表中的字段而又与子表中的索引相关的表达式) 属性的默认设置为主表中主关键字字段的名称。如果相关表是以表达式作为 索引的,就必须将RelationalExpr属性设置为这个表达式。例如,如果相关表 以UPPER(cust_id)作为索引,就必须将RelationalExpr属性设置为UPPER (cust_id)。 如果关系不是一对多关系,必须将OneTOMany属性(指定是否只有在子表中 遍历了所有相关记录之后才移动父表记录的记录指针)设置为“假”(.F.)。 这对应于使用SET RELATION命令时不发出SET SKIP命令。 将关系的OneToMany属性设置为“真”(.T.),相当于发出SET SKIP命令。 当浏览父表时,在记录指针浏览完子表中所有的相关记录之前,记录指针一 直停留在同一父记录上。 注意:如果在表单或表单集中想设置一对多关系,必须将OneToMany属性 设置为“真”(.T.),甚至在数据库中已经建立了永久一对多关系时也必须 如此。 返回
7.1.2创建单文档和多文档界面 VFP允许创建两种类型的应用程序: ■多文档界面(MDI)各个应用程序由单一的主窗口组成,且应 用程序的窗口包含在主窗口中或浮动在主窗口顶端。VFP基 本上是一个MD应用程序,带有包含于ⅤFP主窗口中的命令窗口、 编辑窗口和设计器窗口。 ■单文档界面(SDI)应用程序由一个或多个独立窗口组成,这 些窗口均在 Windows桌面上单独显示。 Microsoft Exchange即是一 个SD应用程序的例子,在该软件中打开的每条消息均显示在自 己独立的窗口中。 由单个窗口组成的应用程序通常是一个SD应用程序,但也有 些应用程序综合了SD和MDI的特性。例如,VFP将调试器显示 为一个SD应用程序,而它本身又包含了自己的MD窗口 为了支持这两种类型的界面,VFP允许创建以下几种类型的表单 ■子表单:包含在另一个窗口中,用于创建MD应用程序的表 2021-2-23 Visual Foxpro60程序设计
2021-2-23 Visual FoxPro 6.0程序设计 14 7.1.2 创建单文档和多文档界面 VFP允许创建两种类型的应用程序: ■多文档界面(MDI)各个应用程序由单一的主窗口组成,且应 用程序的窗口包含在主 窗口中或浮动在主窗口顶端。VFP基 本上是一个MDI应用程序,带有包含于VFP主窗口中的命令窗口、 编辑窗口和设计器窗口。 ■单文档界面(SDI)应用程序由一个或多个独立窗口组成,这 些窗口均在Windows桌面上单独显示。Microsoft Exchange即是一 个SDI应用程序的例子,在该软件中打开的每条消息均显示在自 己独立的窗口中。 由单个窗口组成的应用程序通常是一个SDI应用程序,但也有一 些应用程序综合了SDI和MDI的特性。例如,VFP将调试器显示 为一个SDI应用程序,而它本身又包含了自己的MDI窗口。 为了支持这两种类型的界面,VFP允许创建以下几种类型的表单: ■子表单:包含在另一个窗口中,用于创建MDI应用程序的表
表单。子表单不可移至父表单(主表单)边界之外,当其最小化 时将显示在父表单的底部。若父表单最小化,则子表单也一同最 小化。 ■浮动表单:属于父表单(主表单)的一部分,但并不是包含在 父表单中。而且,浮动表单可以被移至屏幕的任何位置,但不能 在父窗口后台移动。若将浮动表单最小化时,它将显示在桌面的 底部。若父表单最小化,则浮动表单也一同最小化。浮动表单也 可用于创建MD应用程序。 ■顶层表单:没有父表单的独立表单,用于创建一个SD应用程 序,或用作MD应用程序中其他子表单的父表单。顶层表单与其 他 Windows应用程序同级,可出现在其前台或后台,并且显示在 Windows任务栏中 指定表单类型 创建各种类型表单的方法大体相同,但需设置特定属性以指出表 单应该如何工作。如果创建的是子表单,则不仅需要指定它应在 另外一个表单中显示,而且还需指定是否是MD类的子表单, 2021-2-23 Visual Foxpro60程序设计
2021-2-23 Visual FoxPro 6.0程序设计 15 表单。子表单不可移至父表单(主表单)边界之外,当其最小化 时将显示在父表单的底部。若父表单最小化,则子表单也一同最 小化。 ■浮动表单:属于父表单(主表单)的一部分,但并不是包含在 父表单中。而且,浮动表单可以被移至屏幕的任何位置,但不能 在父窗口后台移动。若将浮动表单最小化时,它将显示在桌面的 底部。若父表单最小化,则浮动表单也一同最小化。浮动表单也 可用于创建MDI应用程序。 ■顶层表单:没有父表单的独立表单,用于创建一个SDI应用程 序,或用作MDI应用程序中其他子表单的父表单。顶层表单与其 他Windows应用程序同级,可出现在其前台或后台,并且显示在 Windows任务栏中。 1、指定表单类型 创建各种类型表单的方法大体相同,但需设置特定属性以指出表 单应该如何工作。如果创建的是子表单,则不仅需要指定它应在 另外一个表单中显示,而且还需指定是否是MDI类的子表单