图 3-23 追加连接条件向导
(3) 追加查询字段:与追加表同时使用,参数为追加字段的表达式、显示名和别名。
图 3-24 追加字段向导
(4) 按参数追加条件:根据参数取值的不同追加不同的筛选条件,参数为参数名和
筛选字段。
图 3-25 按参数追加条件向导
4.2 数据加工
〃 查询结果集(ResultSet):由二维数据集合(数据体)及其列信息(元数据,包括列名、列数据类型等信息)构成的一个数据载体。查询引擎中使用的结果集为Borland公司开发的
第 18 页
DataSet。
〃 数据加工(Data Process):数据加工是指某个(或某几个)结果集在经过一系列加工算法的变换后得到另一个结果集,而后者通常是业务上要求的展现结果。相关的算法又称为加工滤镜,滤镜通常支持输入多个结果集和输出一个结果集,并可以嵌套使用。
数据加工与SQL整理的区别在于:前者在SQL查询之后进行,作用的对象是结果集;后者在查询之前进行,作用的对象是SQL定义。
在数据加工的编码向导中,提供了多种实用加工滤镜。图示的数据加工代码把ID分别为“male”和“female”的两个结果集按照deptname字段为键进行了左外连接,并在连接结果中保留了“deptname”、“mpsnnum”、“fpsnnum”三列。
图 3-26 数据加工代码
以下简单介绍几种数据加工算法的编码向导使用方法:
(1) 由查询获得结果集:根据查询ID和参数变量获得查询结果集,这里的参数变量
是指需要传给目标查询的参数哈希表,默认可以是当前查询的参数哈希表,见
图3-27,不需修改。
第 19 页
图 3-27 获得结果集向导
(2) 公式设置:参数为公式列名、返回值数据类型和公式,如果公式列名不存在则
新增一列,否则将该列的内容更新为公式返回值。一个公式也可以引用另一个
公式列的计算结果。
图 3-28 公式编辑
第 20 页
图 3-29 公式定义
(3) 结果集连接:指定两个结果集的连接字段、连接方式和连接后的保留字段,得
到连接后的结果集。
图 3-30 结果集连接向导
(4) 结果集联合:指定两个列结构相兼容的结果集,得到联合(union)后的结果。
图 3-31 结果集联合向导
第 21 页
4.3 穿透规则
〃 数据穿透:假定报表R1上存在某个区域A1,A1内部有若干业务数据,如果以A1为出发点能够切换到另一张报表R2的上的区域A2,而且A1和A2的内部数据存在着某种内在联系,则称可以从R1穿透到R2。当这种穿透行为传递下去,我们就可以了解某张报表的数据明细,甚至追溯到它的数据来源。通常我们会把上述的区域选为一个表格行或者一个表单元,而上述的内在联系就称为穿透规则。
一个查询上可以定义多个穿透规则,每个规则需要指定穿透的目标查询,同时目标查询上要创建一个过滤型参数,用于接收穿透区域的取值。
如我们现在定义了两个查询:公司部门和部门人员,如图3-32。我们希望在浏览公司部门的时候选中某个部门能穿透到部门人员查询查看这个部门下的所有员工。这首先需要我们在公司部门的查询列和部门人员的查询参数之间建立一个关联关系。这里我们选择公司部门的部门编码(deptcode)列;在部门人员查询里加入一个查询参数部门编码(deptcode,源查询列和目标查询参数名字不一定要相同,但是含义要一致),并在查询定义里引用该参数作为过滤条件。
图3-32 公司部门(上)和部门人员(下)
第 22 页