java 如何将日期作为参数传递给 jasper 报告

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/12172711/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-31 07:53:39  来源:igfitidea点击:

How to pass Date as parameter to jasper report

javajasper-reports

提问by Code Hungry

I am trying to create JRreport which is taking start_date and end_date as parameters.

我正在尝试创建以 start_date 和 end_date 作为参数的JR报告。

The query:

查询:

SELECT * FROM emp WHERE joining_date BETWEEN $P{frm_date} AND $P{to_date}

The code:

代码:

Date from_date = dt_from_date.getDate();
Date to_date = dt_to_date.getDate();
java.sql.Date frm_dte = new java.sql.Date(from_date.getTime());
java.sql.Date to_dte = new java.sql.Date(to_date.getTime());
try {
    HashMap map = new HashMap();
    map.put("$P{frm_date}", frm_dte);
    map.put("$P{to_date}", to_dte);
    JasperPrint jp = JasperFillManager.fillReport(is, map, con);
    JRViewer jv = new JRViewer(jp);
    JFrame jf = new JFrame();
    jf.getContentPane().add(jv);
    jf.validate();
    jf.setVisible(true);
    jf.setSize(new Dimension(800, 600));
    jf.setLocation(300, 100);
    jf.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
} catch (JRException ex) {
    ex.printStackTrace();
}

Can we pass Two Parameters to same Column in the table? Eg:

我们可以将两个参数传递给表中的同一列吗?例如:

map.put("joining_date", frm_dte); 
map.put("joining_date", to_dte);

回答by Mohammod Hossain

You can pass date as string format type as follow,

您可以将日期作为字符串格式类型传递如下,

if(from_date!=null)
{
      formattedEndDate=new SimpleDateFormat("yyyy-MM-dd").format(from_date);
}

if(getStartDate()!=null)
{
    formattedStartDate=new SimpleDateFormat("yyyy-MM-dd").format(to_date);
}

回答by Alex K

Your code is wrong.

你的代码是错误的。

You should pass parameters as below:

您应该传递如下参数:

Map<String, Object> map = new HashMap<String, Object>();
map.put("frm_date", frm_dte);
map.put("to_date", to_dte);

You don't need to add P${}to the parameter's name.

您不需要添加P${}到参数的名称。



There are a lot of samples in JasperReportsdistribution package.

JasperReports分发包中有很多示例。

You can look at this samplefor more details.

您可以查看此示例以了解更多详细信息。

回答by Dinup Kandel

private JasperPrint generateReport() {
    Connection conn = null;
    JasperPrint myJPrint = null;
    try {

        conn =yourconnectionName;

        // parameters to be passed to the report
        Map<String, Object> params = new HashMap();

        // Loading my jasper file
        JasperDesign jasperDesign = null;
        JasperReport jasperReport = null;

        params.put("REPORT_DIR",yourClassName.class.getClassLoader()
                        .getResource("yourJasperFileName.jrxml").toString().replace("yourJasperFileName.jrxml", ""));
        jasperDesign = JasperManager.loadXmlDesign(yourClassName.class
                .getClassLoader().getResourceAsStream("yourJasperFileName.jrxml"));
        params.put("joining_date", frm_dte);
         params.put("leaving_date", frm_dte);
        jasperReport = JasperCompileManager.compileReport(jasperDesign);

        /*
         * Filling the report with data from the database based on the
         * parameters passed.
         */
        myJPrint = JasperFillManager.fillReport(jasperReport, params, conn);
        params.clear();

    } catch (JRException ex) {
        ex.printStackTrace();
    }

    return myJPrint;

}