0

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

查询:

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

编码:

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();
}

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

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

3 回答 3

2

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

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);
}
于 2012-08-29T07:33:20.630 回答
1

你的代码是错误的。

您应该传递如下参数:

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

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


JasperReports分发包中有很多示例。

您可以查看此示例以获取更多详细信息。

于 2012-08-29T07:57:54.647 回答
0
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;

}
于 2012-08-29T08:03:20.917 回答