首页 > BIRT, Report > BIRT 一些基础问题解答

BIRT 一些基础问题解答

2008年12月29日 发表评论 阅读评论

本来跑去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可以很轻松的包含十几个甚至几十个项目,所以这点还是很实用的。
例如:在我的附件中饼图的这些个乱码上的位置,能否添加钻取功能。客户需要,郁闷啊。

birtchartdrill

答: 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

http://www.actuatechina.com/thread852.html

分类: BIRT, Report 标签:
  1. zro
    2009年2月10日01:47 | #1

    请教:第一个问题中,点击图表的超链接时需要将点击的字段的值传给要显示的报表,我直接用row["字段名"],得到的结果是永远只能查看最后一个字段值为参数的记录,正确应该怎么做,谢谢!

  2. 2009年2月11日03:44 | #2

    birt 所有超链接都有四种类型:无 , URL , bookmark , drill through. 你要传参数给另一个报表,选第四个,里面选择你要给的参数值跟对应的另一个报表的参数名.
    确定一下你本身的两个报表不互相连接的时候是否是正常的.

  3. 2009年2月18日04:47 | #3

    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 上有个用户跟你问了同样的问题我才搞懂的.

  4. fuxj
    2009年4月2日19:06 | #4

    我现在需要将一个字段从数据库里面查出来,比如SEX,值是整型的,我现在要根据值的多少展现不通的数据,比如“0”的时候展现“男人”,“1”的时候展现“女人”,“2”的时候展现“人妖”,请问脚本该怎么写啊?如果不用脚本有其他的方法吗?
    谢谢了!~~

  5. 2009年4月2日19:17 | #5

    你在安迅的论坛问了这个问题,又跑来我这里问,….. 简单来说,就是birt 里面的mapping 功能,在table property 的第3个选项卡

  1. 本文目前尚无任何 trackbacks 和 pingbacks.