标题:
版主 您好!有问题请教您
[打印本页]
作者:
xiaoxia211314
时间:
2010-3-27 10:56
标题:
版主 您好!有问题请教您
加我QQ 545969565 谢谢 我最近为了用报表快疯掉了
作者:
xiaoxia211314
时间:
2010-3-27 11:19
我想了解下!1:那个生成的XML文件是不是我所做成的模板,
2:设计器里面的数据源下的sql语句 是不是能传参数进去 怎么传的 我看了文档没有看懂!
3:能不能使用JavaBean做数据源 要是可以的话 请问下怎么做
作者:
admin
时间:
2010-3-29 12:51
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 类.
作者:
xiaoxia211314
时间:
2010-3-29 16:10
谢谢了 我已经搞懂找个啦!还有点其他的没有搞懂,就是我传值的那个问题 我从页面接收到了参数,只能通过你上面 给我的那个方式吗?
我想按照我的想法,我的想法是 从页面接收到参数 通过Action传到servlet上处理和判断那些属性值后 然后在封装 在传到URL中,我试了 一个早上没有结果!
JOR真的好用 要是这个问题解决了,报表就在不是问题了 嘿嘿 谢谢版主了
作者:
admin
时间:
2010-3-29 17:09
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 两个类.
作者:
xiaoxia211314
时间:
2010-3-30 09:45
真是好主意 谢谢了 有问题在请教您
作者:
xiaoxia211314
时间:
2010-3-30 14:22
还有个问题 就是里面的宏的运用,select * from 订单查询 where 1==1 ${has(year)?(”and 年份=”+year):””)} 那个year在哪儿定义的?是不是就是那个设计器里面变量定义的。如果是的话 第一个has(year)这个语句就会执行,那这句话还有什么意义。如果不是tomca就给抛出异常如下:UnKnown column 'year' in 'where clause' 请版主给我多介绍点关于宏的运用 谢谢
作者:
admin
时间:
2010-3-30 15:12
你的web表单上,如果有 <input type='text' name='year' >这个时候,并且,你使用的是 reportviewer, 则你的报表,就会有year变量 即,has(year)为真
如果你用自己的servlet,则,你必须
job.setParameter("year",request.getParameter("year")) ,则has(year)为真,如果你不这么做,则为假.
作者:
admin
时间:
2010-3-30 15:59
当你在 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端传过来的参数,都一个不落地传到报表任务中去了,这么解释你也许更明白一点.
欢迎光临 杰表技术论坛 (http://bbs.jatools.com/)
Powered by Discuz! 6.1.0