TEC1401.Report开发技术总结 - 第四章 使用Oracle Reports开发报表-创建一个矩阵报表(3/4)

来源:互联网 发布:微信点餐外卖源码 编辑:程序博客网 时间:2024/06/05 08:47

 

第四章   创建一个矩阵式报表

1.     建立矩阵式报表的需求

建立一个矩阵式报表必须要满足以下四个条件:

1)     在数据模型中必须至少建立四个组。

2)     其中之一必须是交叉组

3)     至少有两个组是交叉组的子组,这两个组用于矩阵式报表中的标题。

4)     至少有一个单元组,这个组中的值用于填写矩阵中的单元格。

2.     建立单查询矩阵报表

单查询矩阵式报表的数据模型由一个查询和四个组组成。由于Oracle Reports为单查询生成一个缺省的组,所以还必须手工为其建立一个交叉组和它的两个子组。

下面举例说明建立单查询式报表的步骤如下:

1)     在对象导航器中,单击“报表”节点,然后在工具栏中单击创建小图标。则在“报表”节点下会出现一个新的报表节点;

2)     在新报表结点下,双击“数据模型”节点,弹出:“报表编辑器-数据模型”窗口;

3)     在“报表编辑器-数据模型”窗口中创建一个查询:

SELECT count(oh.order_number) "count",       ot.name "type",       party.party_name "name"  FROM oe_order_headers_all oh,       oe_transaction_types_tl ot,       hz_cust_accounts        cust,       hz_parties              party WHERE oh.order_number BETWEEN 29380 AND 29480   AND oh.order_type_id = ot.transaction_type_id   AND oh.sold_to_org_id = cust.cust_account_id   AND ot.language = userenv('LANG')   AND cust.party_id = party.party_id   AND oh.org_id = 285 GROUP BY ot.name,party.party_name;

   则生成一个查询“Q_1”和一个组“G_1

    

4)     分别从G_count组中拖出nametype列,创建两个新组“G_name”、“G_type;


5)     在工具栏中单击“交叉单元”,在绘画区拖出一个矩形框,将G_nameG_type两个组框在其中;


6)     单击“报表向导”图标,在风格栏中,选取“矩阵(Matrix)”;

7)     在“行”页中,选取“name”作为第一级矩阵行域。

8)     在“列”页中,选择“type”作为第一级矩阵列域。

9)     在“单元”页中,选择“count”作为矩阵单元的值。

10)   在“标签”页中,根据需要修改域和总计的标签。

11)   在“模板”页中,选择合适的模板。

12)   单击“完成”按钮,则出现报表的动态预览格式

3.     建立多查询矩阵报表

多查询式报表包含两个或两个以上组的数据。对于在主组中检索出来的每一个值,对子组进行查询,并从数据库中检索出相关的数据。

下面举例说明建立多查询矩阵式报表的步骤如下:

1)     在对象导航器中,单击“报表”节点,然后在工具栏中单击“创建”小图标,则在“报表”节点下会出现一个新的“报表”节点;

2)     在新报表节点下,双击“数据模型”节点,弹出“报表编辑器-数据模型”窗口;

3)     在“报表编辑器-数据模型”窗口中创建第一个查询Q_name

SELECT distinct ot.name "type"  FROM oe_order_headers_all oh,       oe_transaction_types_tl ot WHERE oh.order_number BETWEEN 29380 AND 29480   AND oh.order_type_id = ot.transaction_type_id   AND ot.language = userenv('LANG')

4)     在“报表编辑器-数据模型”窗口中创建第二个查询Q_type

SELECT distinct party.party_name "name"  FROM oe_order_headers_all oh,       hz_cust_accounts        cust,       hz_parties              party WHERE oh.order_number BETWEEN 29380 AND 29480   AND oh.sold_to_org_id = cust.cust_account_id   AND cust.party_id = party.party_id   AND oh.org_id = 285

5)     在“报表编辑器-数据模型”窗口中创建第二个查询Q_MATRIX

SELECT count(oh.order_number) "count",       ot.name "type",       party.party_name "name"  FROM oe_order_headers_all oh,       oe_transaction_types_tl ot,       hz_cust_accounts        cust,       hz_parties              party WHERE oh.order_number BETWEEN 29380 AND 29480   AND oh.order_type_id = ot.transaction_type_id   AND oh.sold_to_org_id = cust.cust_account_id   AND ot.language = userenv('LANG')   AND cust.party_id = party.party_id   AND oh.org_id = 285 GROUP BY ot.name,party.party_name;

6)     在工具栏中单击“交叉单元”小图标,在绘图区中拖出一个矩形框把G_nameG_type两个组框在其中;

7)     在工具栏中单击“数据连接”小图标,在G_name中的nameG_count中的name1之间,G_type中的typeG_MATRIX中的type1之间建立连接;


8)     单击“报表向导”图标,在风格栏中,选取“矩阵(Matrix)”。

9)     在“组”页中选择G_1(横向)、G_name(纵向)、G_type(横向)、G_count(纵向)

10)   在“域”页中选择显示域name,type,count

11)   在“便签”页中,根据需要修改域和总计的标签。

12)   在“模板”页中,选择合适的模板。

13)   单击“完成”按钮,则出现报表的动态预览格式。

0 0
原创粉丝点击