发新话题
打印

版主 您好!有问题请教您

版主 您好!有问题请教您

加我QQ 545969565  谢谢 我最近为了用报表快疯掉了

TOP

我想了解下!1:那个生成的XML文件是不是我所做成的模板,
2:设计器里面的数据源下的sql语句 是不是能传参数进去 怎么传的 我看了文档没有看懂!
3:能不能使用JavaBean做数据源 要是可以的话 请问下怎么做

TOP

1, 是
2. 能传参数进去,比如你想查工资报表,那你可以在web表单中,设置一个text域用于输入查询月份,如下所示:
  <form action='reportviewer?file=d:/salary.xml'>
    <input type='text' name='mymonth'>
   </form>
    那么你在设计 salary.xml时,可以写带参数的sql,如:
  select * from tb_salary where month=${mymonth}
    具体可参照 《JOR简表使用手册》中的 参数化报表 一节

3. 你不能直接在jor设计器上,设计出javabean数据源,但你可以通过api,做到这一点,办法是使用源码中的  jatools.dom.src.ArrayNodeSource 类.

TOP

谢谢了 我已经搞懂找个啦!还有点其他的没有搞懂,就是我传值的那个问题 我从页面接收到了参数,只能通过你上面 给我的那个方式吗?
我想按照我的想法,我的想法是 从页面接收到参数 通过Action传到servlet上处理和判断那些属性值后 然后在封装 在传到URL中,我试了 一个早上没有结果!
JOR真的好用 要是这个问题解决了,报表就在不是问题了 嘿嘿 谢谢版主了

TOP

String file = (String) request.getParameter("file");
         FileInputStream is = new FileInputStream(new File(file););
         ReportJob job = new ReportJob(is);
         job.setParameter("mymonth",request.getParameter("mymonth"))  // 把参数传到报表引擎里去
       // 输出报表到response上
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        job.printAsDHTML(ff, out);

具体你可以参照 JatoolsReportServlet, ReportWriter 两个类.

TOP

真是好主意 谢谢了 有问题在请教您

TOP

还有个问题 就是里面的宏的运用,select * from 订单查询 where 1==1 ${has(year)?(”and 年份=”+year):””)} 那个year在哪儿定义的?是不是就是那个设计器里面变量定义的。如果是的话 第一个has(year)这个语句就会执行,那这句话还有什么意义。如果不是tomca就给抛出异常如下:UnKnown column 'year' in 'where clause' 请版主给我多介绍点关于宏的运用  谢谢

TOP

你的web表单上,如果有 <input type='text' name='year'  >这个时候,并且,你使用的是 reportviewer, 则你的报表,就会有year变量 即,has(year)为真

如果你用自己的servlet,则,你必须
job.setParameter("year",request.getParameter("year"))  ,则has(year)为真,如果你不这么做,则为假.

TOP

当你在 http://localhost:8080/jor/reportviewer?file=d:/a.xml时,服务器端会调用

tools\reportviewer.jsp -> ReportTag.java
在ReportTag.java 的 113-116行,有如下代码:

            for (Enumeration en = request.getParameterNames(); en.hasMoreElements();) {
                String name = (String) en.nextElement();
                job.setParameter(name, request.getParameter(name));
            }

从中可以看出,web端传过来的参数,都一个不落地传到报表任务中去了,这么解释你也许更明白一点.

TOP

发新话题