ireport 日期传入参数

select*fromdrjltwheret.drrq>=to_date('$P!{Start}','yyyy-mm-dd')andt.drrq=<to_date('$P... select * from drjl t where t.drrq>=to_date('$P!{Start}','yyyy-mm-dd') and t.drrq=<to_date('$P!{end}','yyyy-mm-dd') order by drbm
写了这么一句。好像不对。
关于日期参数要怎么写的呀?
jsp传来的参数是String类型的。可是数据库里面的drrq是date类型的。所以ireport里面sql要怎么写?怎么弄呀?
展开
 我来答
boyyandgirll
推荐于2016-03-02 · TA获得超过1.3万个赞
知道大有可为答主
回答量:2万
采纳率:95%
帮助的人:8244万
展开全部
public static int iReport_print(HttpServletRequest request, HttpServletResponse response ) {
{
String getStartDate="07/25/2010"; //第二种赋值"20100725"
String getEndDate="08/25/2011"; //第二种赋值"20110825"

/*
以上变量的两种赋值格式在MyEclipse运行后均没有数据出来(运行后页面中会显示PDF界面,但该PDF界面上没有任何数据(即空白页)),个人认为是传递的日期参数格式有问题!此问题一直困扰着我...在线求高人能指点下,感激万分!
另外,worker_test2.jasper中SQL为:select distinct workerno,startdate,deptcode,enddate,workername from worker_test
where 1=1
and startdate=$P{start_date}
and enddate=$P{end_date}
其中start_date和end_date两参数类型均为java.lang.String
此语句在MS2000后台中对其赋值后(如and startdate='07/25/2010'
and enddate='08/25/2011')有数据出来
对于传递日期参数,ireport如何才能正常识别的到,而不会报类似错误Caused by: groovy.lang.MissingMethodException: No signature of method: java.lang.String.call() is applicable for argument types: (java.lang.String) values: [08/25/2011]

*/

ServletOutputStream ouputStream = null;
int return_int = 0;
try {
//报表编译之后生成的.jasper 文件的存放位置
String file_path = "D:/NetBeans6.1_code/Bug/build/web/reports/worker_test2.jasper";
File reportFile = new File(file_path);
//这个是用来联接我的SQL Server 的JDBC URL
String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=KMSDB";
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
//传递报表中用到的参数值
Map parameters = new HashMap();
//"Name"是报表中定义过的一个参数名称,其类型为String 型

parameters.put("start_date", getStartDate);
parameters.put("end_date", getEndDate);

Connection conn = DriverManager.getConnection(url, "KMS", "KMS");
//在控制台显示一下报表文件的物理路径

//String print = JasperFillManager.fillReportToFile(file_path, parameters, conn);

byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath(), parameters, conn);
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();

} catch (IOException ex) {
//Logger.getLogger(IReport_print.class.getName()).log(Level.SEVERE, null, ex);
return_int = 1;
} catch (JRException ex) {
System.out.print(ex.toString());
Logger.getLogger(IReport_print.class.getName()).log(Level.SEVERE, null, ex);
// return_int=1;
} catch (SQLException ex) {
//Logger.getLogger(IReport_print.class.getName()).log(Level.SEVERE, null, ex);
return_int = 1;
} catch (InstantiationException ex) {
//Logger.getLogger(IReport_print.class.getName()).log(Level.SEVERE, null, ex);
return_int = 1;
} catch (IllegalAccessException ex) {
//Logger.getLogger(IReport_print.class.getName()).log(Level.SEVERE, null, ex);
return_int = 1;
} catch (ClassNotFoundException ex) {
// Logger.getLogger(IReport_print.class.getName()).log(Level.SEVERE, null, ex);
return_int = 1;
}

return return_int;
}

}
更多0
亚远景信息科技
2024-12-11 广告
上海亚远景信息科技有限公司是国内汽车行业咨询及评估领军机构之一,深耕于ASPICE、敏捷SPICE、ISO26262功能安全、ISO21434车辆网络安全领域,拥有20年以上的行业经验,专精于培训、咨询及评估服务,广受全球车厂及供应商赞誉,... 点击进入详情页
本回答由亚远景信息科技提供
百度网友ff4e4d80d
2008-08-21 · TA获得超过365个赞
知道小有建树答主
回答量:458
采纳率:100%
帮助的人:329万
展开全部
iReport里面是什么类型的?
如果是String,就不需要转换了
如果是Date,把界面取得的String字符串使用subString方法格式化一下(跟iReport中格式一样)然后 new Date 的时候把转换后的String传进去就可以了。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
推荐于2016-04-08 · TA获得超过154个赞
知道小有建树答主
回答量:404
采纳率:0%
帮助的人:328万
展开全部
2个办法
1.把传入的字符串变日期 to_date('$P!{Start}','yyyy-MM-dd')
2.把日期变字符和条件进行比较 to_char(日期,'yyyy-MM-dd')
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式