八、创建交叉报表和统计

8.1 创建交叉报表和统计

一、创建报表和配置数据源

新建一个报表,改好自己的名字,然后next进行下一步。


选择一个空白报表(Blank Report),单击finish完成。


新建数据源,这里使用的是协同数据库,选择Date Explore标签 右键单击Data Sources 新建一个数据源。选择JDBC Data Source 命名为 clmpdemo 然后单击next 


利用JDBC链接数据源,然后点击测试链接,提示成功后,点击finish完成。


注:在应用里面,可以设置为JNDI链接。具体是在报表文件中,增加一列JNDI设置,如下所示:

  1. <data-sources>  
  2.         <oda-data-source extensionID="org.eclipse.birt.report.data.oda.jdbc" name="clmpdemo" id="7">  
  3.             <text-property name="displayName"></text-property>  
  4.             <list-property name="privateDriverProperties">  
  5.                 <ex-property>  
  6.                     <name>contentBidiFormatStr</name>  
  7.                     <value>ILYNN</value>  
  8.                 </ex-property>  
  9.                 <ex-property>  
  10.                     <name>metadataBidiFormatStr</name>  
  11.                     <value>ILYNN</value>  
  12.                 </ex-property>  
  13.             </list-property>  
  14.             <property name="odaDriverClass">oracle.jdbc.driver.OracleDriver</property>  
  15.             <property name="odaURL">jdbc:oracle:thin:@127.0.0.1:1521:eccl</property>  
  16.             <property name="odaUser">clmp</property>  
  17.             <encrypted-property name="odaPassword" encryptionID="base64">ZWNjbDIwMDk=</encrypted-property>  
  18.             <!--新增JNDI设置-->  
  19.             <property name="odaJndiName">java:/comp/env/clmp</property>  
  20.         </oda-data-source>  
  21. </data-sources>  

建立一个新的数据集,New data sets ,命名为clmprfq,点击next。

构建数据集的sql语句,如下所示:


Sql语句内容如下:

select CLMP.QTLINE.QTL_NAME,

CLMP.QTLINE.QTL_MODEL,

CLMP.QTLINE.QTL_BIDPRICE,

CLMP.QTLINE.QTL_BIDQUANTITY,

CLMP.QTLINE.QTL_REMARK,

CLMP.QUOTATION.QT_VD_ID,

CLMP.QUOTATION.QT_VD_NAME,

CLMP.QUOTATION.QT_US_ID,

CLMP.QUOTATION.QT_US_NAME

from CLMP.QUOTATION,CLMP.QTLINE

where CLMP.QTLINE.QTL_QT_ID=CLMP.QUOTATION.QT_ID

and CLMP.QUOTATION.QT_RFQ_ID=?

创建一个报表参数,命名为rfqID。如下

创建一个总价的计算列:



然后再数据集clmprfq中引用这个参数,如下图所示:


数据集到此配置完毕,预览结果如下:


配置Data Cubes

新建Data Cubes,右键new data cubes


为cubes命名,并设置数据集


创建分组和汇总字段


创建之后形成的多维数据集如下图所示:


设计报表主体

先切换到Palette标签,然后拖拽一个Grid(网格)到空白报表中:


网格选取的是1行2列的,如下所示:


在第一行中输入该报表的标题,在第二行中拖拽一个交叉表:


切换到Data Explorer 选项卡上,将维度,及度量源依次拖拽到相应的交叉表中:


然后增加总价一列,左击(或者右击)在出现的选项中有Totals一项,如下图:


并勾选行和列需要总计的字段,如下图:


完成后的报表设计如下:


到此,已经基本上完成了,我们可以预览看下结果


8.2 多维交叉报表和维度过滤

实际上我们还能增加行和列的统计功能,以及增加统计的维度。

新建报表cross.rptdesign,使用示例数据库,SQL选择查询数据源,新建数据集data set:

select * from CLASSICMODELS.PAYMENTS

增加计算列year,month


year的表达式如下:

var v = row["PAYMENTDATE"];

    v = v.toString();

    v = v.substring(0, 4);

v;

month的表达式如下

var s="";

var v= row["PAYMENTDATE"];

v=v.toString();v=v.substring(5,7);

function aaa(v){    

var s="";    

if(v=="01" || v=="02" || v=="03")s=" 一季度";    

if(v=="04" || v=="05" || v=="06")s=" 二季度";   

  if(v=="07" || v=="08" || v=="09")s="三季度";   

  if(v=="10" || v=="11" || v=="12")s="四季度";

return s;

}

s=aaa(v);

s;

新建多维数据集:


我们把customernumber和year作为一级交叉列,把month作为year的二级交叉列,新建交叉表,分别把组和组1放置在交叉表的列头上:


选中交叉表,在下面的交叉表属性选项卡下,有行区域和列区域,可以增加统计和小计:


做适当的布局和美化,如下图所示:


预览结果如下:


当然,交叉报表也可以增加映射,过滤器,突出显示属性,例如我们增加一个参数

静态文本框参数persionId


过滤组1/year,筛选条件为data[“year”]不等于params["persionId"].value


运行时,我们过滤掉2003年的数据,则预览效果如下:


排序和突出显示和普通网格报表类似,不作更多案例。

8.3 表头的设计

关于表头斜线的绘制,方法有两个:

第一个是插入一个已经绘制好的图片:


效果如下:


另一种是用BIRT的方法绘制:

我们新建一个报表diagonal.rptdesign,使用示例数据库,空白模板,sql选择查询数据源,我们新建数据集data set:

SELECT CLASSICMODELS.PRODUCTS.PRODUCTLINE, CLASSICMODELS.PRODUCTS.PRODUCTNAME, 

(CLASSICMODELS.ORDERDETAILS.PRICEEACH * CLASSICMODELS.ORDERDETAILS.QUANTITYORDERED) AS TOTAL

FROM CLASSICMODELS.PRODUCTS, CLASSICMODELS.ORDERDETAILS

WHERE CLASSICMODELS.PRODUCTS.PRODUCTCODE = CLASSICMODELS.ORDERDETAILS.PRODUCTCODE

然后新建多维数据集:

行列组分别为productline,productname数据集属性列,摘要为TOTAL


布局如下:


我们在表头插入一个1行1列的网格,在网格单元格的属性中,我们可以看到对角线属性:


修改,增加两条黑色细实线。

然后在网格里插入文本:

  1. <div style="margin-left:120px; margin-top:10px;">ProductName</div><br>  
  2. <div style="margin-left:50px;">Total</div>  
  3. <br>  
  4. <div style="margin-left:30px;">ProductLine</div>  

值得注意的是,网格的行高度一定要和表头的行高度一样,而且必须设置为固定数值的大小,不是##%:


预览,效果如下:



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
EOS Report开发指南: 01 EOS Report概述 01.01 EOS Report简介 01.02 EOS Report总体结构 01.03 EOS Report功能特性 02 EOS Report入门 02.01 EOS Report基础知识 02.02 EOS Report业务概念 02.03 报表入门开发示例 02.03.01 分析设计 02.03.02 示例实现 02.03.02.01 创建项目 02.03.02.02 创建报表erd文件 02.03.02.03 创建JDBC数据源 02.03.02.04 创建JDBC数据集 02.03.02.05 创建纵向展开字段集 02.03.02.06 设置单元格数据 02.03.02.07 设置展开区域 02.03.03 预览报表 03 EOS Report应用开发过程 04 EOS Report使用参考 04.01 创建项目 04.02 创建报表erd文件 04.03 设置数据源 04.03.01 创建数据源 04.03.01.01 创建JDBC数据源 04.03.01.02 创建SDO数据源 04.03.01.03 创建XML数据源 04.03.02 修改数据源 04.03.03 删除数据源 04.04 设置数据集 04.04.01 创建数据集 04.04.01.01 创建JDBC数据集 04.04.01.01.01 新建数据集 04.04.01.01.02 编辑查询SQL 04.04.01.01.03 设置输出列 04.04.01.01.04 设置计算列 04.04.01.01.05 编辑数据集变量 04.04.01.01.06 记录过滤 04.04.01.01.07 提取记录数 04.04.01.01.08 预览数据集 04.04.01.01.09 动态SQL 04.04.01.02 创建SDO数据集 04.04.01.03 创建XML数据集 04.04.02 修改数据集 04.04.03 删除数据集 04.05 设置报表字段集 04.05.01 创建纵向/双向展开字段集 04.05.01.01 选择数据集 04.05.01.02 绑定数据集变量 04.05.01.03 数据集记录过滤 04.05.01.04 编辑字段集列表和属性 04.05.01.05 汇总 04.05.01.06 子表对齐 04.05.02 创建交叉字段集 04.05.02.01 选择数据集 04.05.02.02 选择行维分组字段 04.05.02.03 选择列维分组字段 04.05.02.04 设置度量 04.05.02.05 为统计项设置公式 04.05.02.06 子表对齐 04.05.03 修改报表字段集 04.05.04 删除报表字段集 04.06 设置表样 04.06.01 导入Excel文件 04.06.02 设置单元格样式 04.06.03 合并/拆分单元格 04.07 设置单元格类型 04.07.01 静态文本 04.07.02 公式 04.07.03 图像 04.07.04 图表 04.07.05 斜线 04.07.06 条形码 04.08 设置展开区域 04.08.01 单个报表的展开区域 04.08.02 复合报表的展开区域 04.08.03 主子报表的展开区域 04.09 编辑单元格 04.09.01 单元格杂项属性 04.09.02 复制或移动单元格 04.09.03 插入空白单元格、行或列 04.09.04 设置行高/列宽 04.09.05 删除单元格、行或列 04.09.06 重置单元格 04.09.07 设置表格背景图 04.10 设置报表参数 04.10.01 创建报表参数 04.10.02 引用报表参数 04.10.03 修改报表参数 04.10.04 删除报表参数 04.11 设置融合/被动填充方式 04.12 设置动态行高/列宽 04.13 设置提交参数 04.14 设置报表属性 04.15 设置样式风格 04.15.01 新建样式风格 04.15.02 修改样式风格 04.15.03 删除样式风格 04.16 预览报表 04.17 打印设置 04.17.01 页面设置 04.17.01.01 页面 04.17.01.02 页边距 04.17.01.03 页眉/页脚 04.17.01.04 水印 04.17.01.05 分页控制 04.17.02 打印预览 04.17.03 票据套打 04.17.03.01 扫描票据 04.17.03.02 创建带背景图的报表 04.17.03.03 页面设置 05 EOS Report应用开发指南 05.01 双向分组报表 05.01.01 案例描述 05.01.02 案例实现 05.02 图表 05.02.01 案例描述 05.02.02 案例实现 05.03 主子报表 05.03.01 案例描述 05.03.02 案例实现 05.03.02.01 案例实现一 05.03.02.02 案例实现二 05.04 复合报表 05.04.01 案例描述 05.04.02 案例实现 05.05 条件风格 05.05.01 案例描述 05.05.02 案例实现 05.06 交叉表 05.06.01 案例描述 05.06.02 案例实现
第一章 设计 7 1.1、控制键 8 1.2、鼠标操作 9 1.3、工具栏 10 1.3.1、设计模式工具栏 10 1.3.2、“标准”工具栏 10 1.3.3、“文本”工具栏 11 1.3.4、“边框”工具栏 12 1.3.5、“对齐”工具栏 12 1.4、设计选项 13 1.5、报表设置 15 1.6 页面设置 16 第二章 创建报表 19 2.1、报表对象 20 2.2、“世界,你好!”报表示例 20 2.3、“Text”组件 21 2.4、在“Text”组件中使用HTML标记 23 2.5、通过“Text”组件显示公式 24 2.6、FastReport中的Bands 25 2.7、Data Band 26 2.8、TfrxDBDataSet组件 27 2.9、“客户列表”报表 27 2.10、通过text组件显示数据表字段 29 2.11别名 30 2.12、变量。 30 2.13、“Picture”控件 32 2.14、图形报表 33 2.15、多行文本显示 34 2.16、文本拆分 36 2.17、组件的Wrap 37 2.18、显示数据表中的数据 38 2.19、标签式打印 40 2.20、子bands 42 2.21、组件的移动 43 2.22、两个数据阶的报表(主—细) 43 2.23、页首和页尾数据Band 46 2.24、多页报表 47 第三章 分组集合体 50 3.1、分组打印 51 3.2、其他分组特性 53 3.3页码的重设 55 3.4、组的操作 55 3.5、行数 56 3.6、函数集 57 3.7、页和报表统计 60 3.8、插入汇总函数 61 第四章 格式化、加强 62 4.1、格式化输出结果 63 4.2、内嵌格式化 63 4.3、条件显示 65 4.4、分行显示数据行的颜色 66 第五章 嵌套报表 68 5.1嵌套报表 69 5.2、设计子报表 69 5.3、子报表中的限制 69 5.4、PrintOnParent选项 70 第六章 脚本 72 6.1、体验脚本语言 73 6.2、脚本结构 76 6.3、“世界你好!”脚本 78 6.4、脚本中组件对象的使用 79 6.5、调用报表变量列表中的变量。 79 6.6、调用数据表子段 80 6.7、脚本中调用汇总函数 80 6.8、报表中变量值的显示 80 6.9、事件 81 6.10、一个使用“OnBeforePrint”事件的例子 82 6.11、在组头打印组的汇总信息 84 6.12、“OnAfterData”事件 88 6.13、Service组件 89 6.13.1、Report组件 89 6.13.2、Engine组件 90 6.13.3、“OutLine”组件 91 6.13.4、引擎组件的使用 91 6.15 Anchors 94 6.16 “Outline” 组件的使用方法 96 6.17 “OnManualBuild” 页面事件 98 6.18 脚本中的组件的建立 104 第七章 交叉报表 106 7.1、创建交叉报表 108 7.2、改变显示 110 7.3、使用函数 112 7.4、对结果进行排序 112 7.5、组合标题的表格 113 7.6、调整单元格的宽度 115 7.7、字体颜色和突出显示 117 7.8、使用脚本语言管理组件 118 7.9、调整行和列的大小 123 7.10、手动填充表格单元 124 7.11、在表格单元中加入其他组件 126 7.12、一些有用的设置 129 第八章 制图表 132 8.1、chart数据中数字的限制 137 8.2、设置 137 8.3、指定数字制表 138 8.4、利用脚本进行制表 139 8.5、在delphi环境中创建报表的打印 139 第九章 点阵报表 140 9.1、点阵报表使用交叉报表 144 9.2、点阵报表的打印 145 9.3、命令组件 146 第十章 对话框窗体 147 10.1、控件 148 10.2、“世界你好!”报表 149 10.3、输入参数,并传递到报表中 150 10.4、组件的交互 150 10.5、多个对话框表单 151 10.6、对话框窗体的管理 152 第十一章 数据访问组件 155 11.1、组件的描述 156 11.1.1、TfrxDBLookupCombobox组件 157 11.1.2、TfrxADOTable组件 157 11.1.3、TfrxAdoQuery组件 159 11.1.4、TfrxADODatabase组件 161 11.2、创建报表 161 11.3、简单的列表式报表 162 11.4、参数查询报表 163 11.5、其他可用配置 164 第十二章 报表的继承性 166 12.1、创建报表 167 1

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值