BIRT使用小技术总结

1.调试方法:

   可以先在编辑器中运行,然后再在项目中跑。

2.功能有:

   SQL参数:like '%' || ? || '%'  ,不能'?'
   可以根据入参值来动态改变数据集的SQL
   动态显示隐藏列
   统计列

3.参数传递方法
  1.使用报表参数

  2.使用DATA SET的脚本编辑方法:注意此法不要再用报表参数了,如果要用的话,还是要用问号?

var org_ids = params["org_id"];
this.queryText="SELECT A.CUST_ID, A.CUST_NAME,A.Org_Id,B.ORGANIZE_NAME"+
" FROM SO1.CM_CUSTOMER A, SEC.SEC_ORGANIZE B  "+
" WHERE A.Org_Id = B.ORGANIZE_ID   and A.Org_Id in ("+org_ids+") ";

 4.常见错误

现象:

Caused by: org.mozilla.javascript.EvaluatorException: unterminated string literal
原因:
可能是因为SQL的""没有封闭导致的。

 

现象:

对数据库里面存的时间类型的值为2030-01-01而非2003-9-23 16:41:32时,在BIRT里面如果类型定义为Date Time时,后面会带上中午12:00

解决:

修改SQL:TO_CHAR(t.expire_date, 'YYYY-MM-DD HH24:MI:SS'),并且BIRT里面类型改为字符串

 

现象:

查不到数据

原因:

可以先把WHERE条件去掉,如果去掉后能查,则可能WHERE里面拼的有问题,如a.id like  '%230%'可以,a.id =230不可以,可能是类型引起的,在编辑数据集的output columns里面可以设置

 

现象:

用birt2.2设计的报表,在用birt2.3.1打开并保存以后,在web工程里面就无法显示了,给出“+ There is no report design object available.”这样的提示,我用birt2.3.1本身的预览可以显示出来结果,我的JDK是1.5.0,请教是何原因呢,是不是要添加什么东西进去呢,谢谢!
详细报错如下:

org.eclipse.birt.report.exception.ViewerException: There is no report design object available.
at org.eclipse.birt.report.context.ViewerAttributeBean.__init(Unknown Source)
at org.eclipse.birt.report.context.BaseAttributeBean.init(Unknown Source)
at org.eclipse.birt.report.context.ViewerAttributeBean.(Unknown Source)
at org.eclipse.birt.report.context.BirtContext.__init(Unknown Source)
at org.eclipse.birt.report.context.BaseContext.(Unknown Source)
at org.eclipse.birt.report.context.BirtContext.(Unknown Source)
at org.eclipse.birt.report.servlet.ViewerServlet.__getContext(Unknown Source)
at org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet.doGet(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.eclipse.birt.report.filter.ViewerFilter.doFilter(Unknown Source)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:866)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:716)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1498)
at java.lang.Thread.run(Unknown Source)

 原因:

你2.2版本的报表在2.3里面编辑再保存的话birt会自动将文件版本升级,而你工程里面
的版本应该还是2.2的,故打不开2.3版本的报表!!!
两个解决办法:

1:设计你工程里面配置的birt
2:将你XML里面的这两行代码替换成2.2版本的
<report xmlns="http://www.eclipse.org/birt/2005/design" version="3.2.16" id="1">
<property name="createdBy">Eclipse BIRT Designer Version 2.3.0.v20080606 Build &lt;2.3.0.v20080618-0630></property>
你可以看看你在2.2版本里面建的报表,直接COPY过来就能用了,
我昨天就碰到了这个问题,就是用第二种方法解决的!!!

你可能感兴趣的:(birt)