起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 1487|回复: 2

主从数据集的设置、取数据机制、排序

[复制链接]
发表于 2004-5-20 15:26:39 | 显示全部楼层 |阅读模式
合理利用主从数据集的机制,将会给用户大大减少代码工作量,主从的设置分为设计期间就定义和运行期间代码设置两种情况。

主从数据集的取数据机制

1、如果主数据集中没有记录,则对应的从数据集也是没有记录。

2、如果主数据集不为空,则从数据集取的是主数据集光标停在那条记录对应的数据,当主数据集滚动时,从数据集再取相应的数据。从数据集取数据的机制是可以通过从数据集的“主从关系”的“规则”页面来设置的,分为“需要时取”和“全取”两种


主从数据集的排序

1、主数据集与单个数据集一样

2、从数据集直接在数据集的SQL语句中,定义Order By 进行排序是不起作用。不过可以在 数据集  的 排序 属性上设置。
回复

使用道具 举报

发表于 2004-5-20 15:27:58 | 显示全部楼层
根据主数据集所在的位置分为两种情况:

1、在一个业务信息中,直接在信息层设置数据集之间的主从关系。

2、不在同一业务信息中,需要通过代码实现这些数据集之间的主从(当然,同一业务信息下也可以使用代码来创建主从关系),参考代码如下:

// 设置主从关系
Procedure TMainForm.BtnSetClick(Sender: TObject);
begin
   dsMaster.DataSet.Close;
   dsDetail.DataSet.Close;
   dsDetail.DataSet.Relation.Master := InfoZ.Info.DataSetByID('ZSJJ');
   dsDetail.DataSet.Relation.MasterFieldNames := 'ZSJ_ZD1';
   dsDetail.DataSet.Relation.KeyFieldNames := 'CSJ_ZD1';
   dsMaster.DataSet.Open;
   dsDetail.DataSet.Open;
end;
//取消主从关系
Procedure TMainForm.BtnCancelClick(Sender: TObject);
begin
   dsMaster.DataSet.Close;
   dsDetail.DataSet.Close;
   dsDetail.DataSet.Relation.KeyFieldNames := '';
   dsDetail.DataSet.Relation.MasterFieldNames := '';
   dsDetail.DataSet.Relation.Master := nil;
   dsDetail.DataSet.DataFetch.KeyFieldNames := '';
   dsDetail.DataSet.Open;
end;
// dsMaster是主数据集,dsDetail是从数据集
//设置主从前,数据集需要关闭,设置后再打开

另外,如果需要多个字段建立主从关系,那么这些字段间是分号隔开,例如:
Relation.KeyFieldNames := 'A;B';
Relation.MasterFieldNames := 'AA;BB';
KeyFieldName 和 MasterFieldNames 依顺序逐个关联
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-12-7 10:36:00 | 显示全部楼层

主从数据集提交机制

主从业务数据集提交模式,参考如下:

1、ApplyUpdate(True)提交的与该数据集有主从关系的所有数据集

2、ApplyUpdate(False)只提交当前数据集

3、ApplyUpdate与ApplyUpdate(True)相同
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-5-3 09:25 , Processed in 0.045025 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表