频道栏目
读书频道 > 软件开发 > JAVA > JasperReports+iReport报表开发详解
3.2.2 使用Parameters动态生成Date区间的测试
2013-06-04 14:10:56     我来说两句
收藏   我要投稿
本书主要讲解Java技术领域著名的开源报表框架JasperReports和iReport软件的使用,重点介绍如何使用iReport报表模板进行报表的开发。全书共8章:初识JasperReports(介绍如何使用iReport软件搭建报表开发环境);...  立即去当当网订购

使用“$P{参数名称}”还可以查询Date区间。新建报表模板,添加两个参数,它们的参数类型都是java.sql.Timestamp,Parameters参数的属性设置如图3.21所示。
 

3.21  设置参数数据类型

 

设计报表使用的SQL语句,属性值定义如图3.22所示。
 

3.22  报表使用的SQL语句

 

数据表userinfotable的表结构如图3.23所示。
 

3.23  userinfotable表结构

 

数据表userinfotable中的数据内容如图3.24所示。
 

3.24  数据表内容

 

在iReport中添加4个Fields对象,并将它们拖曳到Detail 1栏中,效果如图3.25所示。
 

3.25  Detail 1中有4Fields对象

 

新建Web项目,Servlet核心代码如下:

public class test extends HttpServlet

{   public void doGet(HttpServletRequest request, HttpServletResponse response)

    throws ServletException, IOException

    {   try

        {   ServletOutputStream servletOutputStream = response.getOutputStream();

            InputStream reportStream = getServletConfig().getServletContext()

            .getResourceAsStream("report3.jasper");

            String url = "jdbc:sqlserver://localhost:1079;databaseName=ghydb";

            String username = "sa";

            String password = "";

            String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";

            Class.forName(driverName);

              Connection connection=DriverManager.getConnection(url, username,password);

            String beginDateString = "2000-1-1 00:00:00";

            String endDateString = "2000-1-1 23:59:59";

            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

              Timestamp beginDate=new Timestamp(sdf.parse(beginDateString).getTime());

            Timestamp endDate = new Timestamp(sdf.parse(endDateString).getTime());

            HashMap parameters = new HashMap();

            parameters.put("beginDate", beginDate);

            parameters.put("endDate", endDate);

            JasperRunManager.runReportToPdfStream(reportStream,

            servletOutputStream, parameters, connection);

            response.setContentType("application/pdf");

            servletOutputStream.flush();

            servletOutputStream.close();

        }

        catch (JRException e)

        {   // TODO Auto-generated catch block

            e.printStackTrace();

        }

        catch (ClassNotFoundException e)

        {   // TODO Auto-generated catch block

            e.printStackTrace();

        }

        catch (SQLException e)

        {   // TODO Auto-generated catch block

            e.printStackTrace();

        }

        catch (ParseException e)

        {   // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }

}

项目运行效果如图3.26所示。
 

3.26  正确取出时间区间内的数据

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:3.2.1 使用Parameters动态生成userid值
下一篇:3.2.3 使用Parameters动态生成where语句
相关文章
图文推荐
排行
热门
最新书评
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站