1、"数据源组"的连接
在数据源编辑器中所创建的数据源,都是一个个独立的数据源。但在实际应用中,往往需要将其连接为数据源组后才具有应用意义。
1、原理说明
两个数据源连接后的数据源组,将是一个"父子型"的关联关系。上级数据源的记录指针改变,将使得子数据源的记录按连接字段重新载入,相当于总是动态改变子源的"查询条件",使子源记录集不断跟随父源指针的改变而重新载入数据记录,从而显示出"父、子"关系的数据记录。
例如:在"销售开票"应用中,分别建立了"销售主表"和"销售明细表"数据源。要使两个数据源能够自动体现出"谁来买东西了、买了什么东西",就要将两个数据源通过"票号"字段连接起来。此例的连接
2、关系也叫"一对多"关联,其中"谁来买东西了",这是"一";"买了什么东西",这是"多"。
数据源连接的概念分为3部分,分别说明如下:
1) 关联关系
在两个数据源连接时,指出的第一个数据源将为"上级数据源",第二个数据源将为"子数据源"。关联关系决定了谁是"父源",谁是"子源"。
例如:"销售主表数据源"与"销售明细表数据源"建立联系后,"销售主表数据源"就是"上级数据源";"销售明细表数据源"就是"子数据源"。
2) 连接字段
两个数据源的关联关系,是依靠指出的"连接字段"建立的。
"连接字段"有两重作用:
一是决定了父子数据源的数据集浏览所依赖的关系;
二是决定了数据源
3、组编辑时的子源连接字段的"自动赋值"机制。在对数据源组做编辑时,父源的连接字段值将自动赋值给子源连接字段,而不需要编辑子源连接字段。
3) 数据源组数据集
形成数据源组后,数据集的显示已经通过连接字段构成了某种限制。按连接字段限制,父源总是具有"唯一"记录,而子源则可以是"一条或多条"记录。
(1) 一对一关联
"一对一关联"是指"子源"中只有1条记录能对应到"主源"中的当前记录。
例如:"销售主表数据源"通过"客户名称"字段,与"客户信息表数据源"连接后,"销售主表数据源"记录指针指向的记录的"客户名称",总是能连带过滤出"客户信息表数据源"中相应的记录。
使用"一对一"的连接机
4、制,主要用于关联信息查看或对应信息的取值赋值。
(2) 一对多关联
"一对多关联"是指"子源"中的多条记录可以对应到"主源"中的当前记录。
例如:在图3.2.4-1中,"销售主表数据源"指针指向的"票号"为"4"的记录,对应地过滤出"销售明细表数据源"中的多条"票号"为"4"的记录。
图3.2.4-1"销售主表"和"销售明细表"之间的关联关系
在这个例子中,"票号"是"销售主表数据源"和"销售明细表数据源"之间的连接字段值,父源中的"一"和明细表中的"多"构成"一对多"关联,反映出票号"4"在"2003-05-13"购买了"电脑"、"扫描仪"等5种商品。
2、"数据源"连接
5、数据源连接是通过两个源中的"连接字段"达成的"="连接关系。
1)"数据源"连接的操作
(1) 单击"选中"要作为"父源"的数据源小窗口,使它成为选中状态的"蓝色"。
(2) 点按"快捷工具栏"中的"连接"按钮,打开"数据源连接"对话框,如图3.2.4-2所示。
图3.2.4-2"数据源连接"对话框
(3) 在连接对话框中单击右侧的"子源"下拉列表,选择要连接的"子数据源"。
两个数据源都指出后,如果有"字段名、字段类型"相同的,将被自动连接并选中到"父子源连接字段"列表中。
如果两源的连接字段名不相同,继续以下手工选择操作:
(4) 在左侧的列表中选中要作连接的"父源"字
6、段,在右侧的列表中选中要作连接的"子源"字段。
(5)"父、子"源中指定的字段都获得焦点后,点按中间的"选中"按钮,将一对连接字段选中到下方的"父子源连接字段"列表中。
"连接字段"可以选择一个或多个,按需要连接即可。
2)"连接字段"说明
(1) 父源可以是"分组汇总型"数据源,而子源则不可以是"分组汇总型"数据源。
(2) 父源中的"日期型"字段,如果包含有"时间信息(如12:58:12)",则不可以作为连接字段,否则将导致子源中的"对应"连接字段无法自动赋值。
(3) 运行期时父源中的"连接字段"未被完整编辑(或空白),将无法离开所编辑的记录,而且也将无法编辑子源记录,即子源处于"不可用"状态。
(4) 当各个数据源中都是用于编辑时,数据源组的连接不应超过两级,以使得"智能公式、数据一致性约束"等自动处理机制能有效工作。
3、"数据一致性"说明
当两个数据源被构成一个数据源组时,涉及到"数据一致性"的约束控制,其机理说明如下:
父源连接字段被修改时,将一并更新子源连接字段。父源记录被删除,将一并删除连接的子源记录。
4、修改"数据源连接"
在两个数据源的"连接线"上双击,将打开"数据源连接"对话框。修改"数据源连接"的操作,与新建数据源连接的操作基本相同。
& 当有多条数据源连接线相互叠加时,要确认变红的连接线才是当前选中的连接线。