BIRT 一些基础问题解答
本来跑去birt-exchange.com 去下一个关于birt 用store procedure 作dataset 的文档, 看到有个中文版,就跑去actuatechina.com 下, 结果还要注册(我讨厌下东西的时候注册,我特别懒,最讨厌注册这种事) , 后来就注了个册,然后随便看了几个帖子,发现都是一些基础问题,因为很多时候BIRT的文档不可能集中在一个地方, 所以的确给很多喜欢BIRT 的朋友学习造成了一些麻烦,也有朋友抱怨说BIRT文档不好, 其实不是BIRT 文档不好,而是有很多问题都是实际的应用一个一个去解决,不可能有一份文档告诉你所有BIRT问题该怎么解决, 这就像我给你一份Java 的api 文档,你不可能知道所有java 代码该怎么写一样,还是要一个一个具体问题对应的解决, 最重要的是有示例 , 一个例子顶千言,这就是为什么需要BIRT的newsgroup , birt-exchange.com , actuatechina.com 这些资源去回答问题的, 所以没有什么必要抱怨什么没有文档, 我给你一份oracle 的参考大全,你就能成为最牛的DBA吗? 肯定不可能呀 .
下面列出一些常见的问题.
1. 作者: wc188996
希望能够在 BIRT CHART 的 category Series 上也能够实现钻取功能。有点时候在很多工程里category Series会包含很多内容,但是图片上的信息也不能完全显示,需要在category Series 上实现带参数的钻取功能。category Series可以很轻松的包含十几个甚至几十个项目,所以这点还是很实用的。
例如:在我的附件中饼图的这些个乱码上的位置,能否添加钻取功能。客户需要,郁闷啊。
答: BIRT的交互功能和script 一向是我最喜欢的, 图表的交互功能我个人认为可能是报表中最强的,(有希望打败它的可能只能在flash 图表里面找,它商业版里也有支持flash 对象的). 在一个chart 的y series 里面点击interactivity , 里面列出所有事件,选启动的mouse click 或mouse double click .Action 选Hyperlink, 然后连接你的另一个报表. 我前一个在BIRT里面高亮行的例子中http://www.gemini5201314.net/?p=151 ,那个图表就是选的Action –>Invoke Script. 如果你不是点饼图,而是点旁边的数值,就选Legend里面的interactivity , 注意Legend 还有一个Behavior 属性, 反正你都点着试一下就知道了.
作者: mjianguo
在birt2.3中,我用JDBC连数据库,创建数据集,创建参数(注:我用的是list box,Dynamic,此时没有选Allow Multiple Values),然后edit数据集,在Query中加入?,
在Paremeters中加入参数,Preview results ,没有问题。
此时我将一个参数中的Allow Multiple Values选中,Preview results时报表中就没有值了?
查看原因:edit数据集,点击Parmeters进入查看参数时,在上面显示此行错误:The report parameter ‘ipadd’ allows multiple values, which can not be used to link with data set parameter.
请问我该如何使用Allow Mulitple Values此选项?在SQL中要做什么变化吗?
不知说清楚了没有,请各位大侠指点迷经。。。先谢谢了
答: Query中的参数不支持link到allow multiple value的parameter 其中有个bug 跟它相关(2.3.1 以修正),
https://bugs.eclipse.org/bugs/show_bug.cgi?id=235252
这个bug 修正的是UI上要提示dataset 里面不能用parameter link 上UI要有提示的.
你的query 里面不能link multiple values 是因为java.sql.PreparedStatement 里面不可能setParameter(position,String[] params) 接受数组这种参数, 如果你要接受多个参数值可以:
1. dataset 的filter 里面加 xxx in params["allow multiple values"]
2. 或者在property binding 里面写 this.query.text="手工把params["multiple"]拼起来的sql"
作者: sanegod
我有这样一个需求,如附件need.jpg所示:
表格里有嵌套表!每个表绑定不同的数据集;
我有5个数据集,数据集1绑定在外层表,其他是4数据集绑定在内部的嵌套表上
z_in,z_out,z_in_cz,z_out_cz;
每个表格都一个结果,现在我想要实现:
z_in-z_out-z_in_cz-z_out_cz他们想减的结果放在aihaochazhi那个表里;
由于是四个数据集,不知道怎么实现!请大家帮忙!
把是个数据集的语句弄到一个数据这个办法考虑过,实现不了我的需求,我一定要用到4个数据集的!谢谢大家了!
答: 使用joint data set 把四个dataset 连起来,
你虽然知道每个结果肯定只有一个值,但是dataset 不可能知道呀,要是一dataset 有3个值,一个dataset 有5个值,你说最后的表格怎么画出来的.
只要你的四个dataset 使用的是同一个数据源,肯定可以用一个sql 跑出来, joint data set 一般用在不同的数据源直接dataset 连接
作者: iskytek
。。。。。。。。。。。。。。 交叉报表怎么没有分页选项
答 : 在crosstab 的row area 和column area 里面都有page break 选项呀, 分别是竖直分页和水平分页
1,birt导出PDF,如果内容是字母或数字过长,就会被截掉,怎么解决??
2,birt的WEB预览页面跟导出的PDF或打印出的样子不一样,那预览还有什么用?
答 1. 你在advanced tab 里面指定它的width 属性.
2. 它的WEB 预览是html 的呀, 你pdf 当然是不一样的.
作者: qxyang007
目前我用的MVC框架,现在要用spring在后台调用birt,请问一下,该如何调用?网上说要重载一个方法renderMergedOutputModel,但,又没有实例,请教高手,能说明一下吗?急啊!谢谢了!
答 : 可以参考一下springside 的方法.
http://www.springside.org.cn/docs/reference/Birt.htm
我在googlecode 上建的一个收集report 示例的项目. 目前主要是birt-exchange.com 上的
http://code.google.com/p/birtdemo/
参考资料
http://www.birt-exchange.com/devshare/designing-birt-reports/588-create-data-source-on-stored-procedure-in-birt/#description 使用store procedure 做dataset.
http://www.actuatechina.com/thread838.html#post4250 四dataset
http://www.actuatechina.com/thread40.html 交叉报表
http://www.actuatechina.com/thread782.html link multile values
请教:第一个问题中,点击图表的超链接时需要将点击的字段的值传给要显示的报表,我直接用row["字段名"],得到的结果是永远只能查看最后一个字段值为参数的记录,正确应该怎么做,谢谢!
birt 所有超链接都有四种类型:无 , URL , bookmark , drill through. 你要传参数给另一个报表,选第四个,里面选择你要给的参数值跟对应的另一个报表的参数名.
确定一下你本身的两个报表不互相连接的时候是否是正常的.
birt 目前版本还不支持(2.3.1), 在legend ,x axis, y axis 中都不能得到datapoint 的值,不过在chart area 中可以使用datapoint , 你在invoke script expression builder 里面的variable 可以看到datapoint. 我已经提交了一个bug 关于这个特性的
https://bugs.eclipse.org/bugs/show_bug.cgi?id=265283
newsgroup 上有个用户跟你问了同样的问题我才搞懂的.
我现在需要将一个字段从数据库里面查出来,比如SEX,值是整型的,我现在要根据值的多少展现不通的数据,比如“0”的时候展现“男人”,“1”的时候展现“女人”,“2”的时候展现“人妖”,请问脚本该怎么写啊?如果不用脚本有其他的方法吗?
谢谢了!~~
你在安迅的论坛问了这个问题,又跑来我这里问,….. 简单来说,就是birt 里面的mapping 功能,在table property 的第3个选项卡