报表工具的动态数据源实现
来源:互联网 发布:mysql的端口号 编辑:程序博客网 时间:2024/06/05 16:38
- 博客分类:
有时候我们需要用参数动态指定数据源,或将多数据源连接为单数据源,或向子报表、table控件动态传入数据源名。对于此类需求,报表工具经常要借助高级语言实现或牺牲安全性以降低复杂度,尤其是BIRT、Jasper等单源报表。
使用免费的集算器可以弥补这一不足。集算器封装了丰富的结构化计算函数,支持动态解析表达式,支持多数据源混合计算,书写简单脚本就能实现动态数据源。集算器还提供了简单易用的JDBC接口,报表工具可将集算器脚本文件当做数据库存储过程执行,传入参数并用JDBC获得返回结果。
集算器与报表工具的集成结构如下:
伦理片 http://www.dotdy.com/
下面举例说明集算器根据参数动态切换数据源的基本过程:
数据源myDB1和oraDB分别指向不同的数据库,两库中有相同结构的表sOrder,报表需要根据参数动态连接数据源,查询并展现sOrder中金额大于1000的订单。
myDB1中sOrder部分数据如下:
oraDB中sOrder部分数据如下:
集算器代码:=${pSource}.query(“select * from sOrder where Amount>?”,pAmount)
pSource、pAmount都是报表参数,其中pSource代表数据源名,${…}表示将字符串或字符串变量解析为表达式,pAmount代表订单金额。
当pSource=”myDB1”时,A1的计算结果如下:
当pSource=”oraDB”时,A1的计算结果如下
报表工具可用JDBC的方式调用集算器脚本,就像调用普通数据库中的存储过程,形如:call 脚本文件名(参数1…参数N)。集算器的返回结果会以普通数据集的形式参与报表计算。
作为专业的报表数据源工具,集算器还可以实现更多的计算,下面分别举例。
多源数据join后计算
Sales是mysql数据库中的表,存储着多名销售员每天的多个订单,其中字段SellerId是销售员编号。emp是mssql数据库中的表,存储着销售员信息,其中字段EId是销售员编号。现在需要在报表中展现:订单编号、日期、金额、销售员名字、部门名称,条件是:订单日期在最近N天(比如30天)或者订单属于某几个受关注的部门(比如Markeding和Finance)。部分源数据如下:
库表sales
库表emp
集算器代码:
A1,A2:查询数据库,myDB1和myDB2分别直向mysql和mssql。
A3:将A1中的SellerId字段替换成A2中对应的记录,关联字段为EId。A3的计算结果如下(蓝色字体表示该数据项包含下级成员):
当A2中找不到对应的记录时,函数switch默认保留A1中记录,对应的SellerId显示为空,效果类似于左连接。如果想进行内连接,应当使用选项@i,形如:
影音先锋电影 http://www.iskdy.com/
A4:对关联结果进行过滤,第1个条件是:订单日期在最近N天(对应参数days),表达式为。第2个条件是:订单属于某几个受关注的部门(对应参数depts),表达式是。运算符||表示逻辑关系“或”。
函数after可以算出相对时间,函数array可以按分隔符将字符串拆分为集合。函数pos可以找出成员在集合中的位置。SellerId.Dept表示SellerId字段对应的记录的Dept字段。
- 报表工具的动态数据源实现
- 报表工具的动态数据源实现
- 用脚本实现报表的动态数据源
- 润乾集算报表实现动态数据源
- 报表制作工具的数据源复选参数
- 无数据源的规则报表的实现
- VS2005下水晶报表如何实现动态数据源绑定?
- VS2005下水晶报表如何实现动态数据源绑定
- [转]VS2005下水晶报表实现动态数据源绑定
- 如何利用报表工具FineReport实现报表列的动态展示
- 不定列(动态列)报表的数据源处理
- 润乾报表:动态改变填报更新数据的数据源
- 润乾报表:动态改变填报更新数据的数据源
- PB动态报表的实现
- 动态水晶报表的实现
- 报表数据源的做成
- C#中如何实现DataTable作为水晶报表的数据源?
- ireport_几种不同的数据源_实现报表制作
- 发布项目,Upload AppStore解决ITMS-90096问题
- poj2236
- AFNetworking 实现下载功能(总结)
- 计算机技术领域当前的主流技术及其社会需求调查报告
- WIN7 64位系统安装JDK并配置环境变量
- 报表工具的动态数据源实现
- C#API service EF 打印出DB查询语句
- CSS实现父层透明,子层不透明
- 【DB】对数据的操作
- Python 获取当前时间
- 欢迎使用CSDN-markdown编辑器
- PHP推送apps
- 最全Pycharm教程(6)——将Pycharm作为Vim编辑器使用
- The type javax.servlet.http.HttpServletRequest cannot be resolved.