??xml version="1.0" encoding="utf-8" standalone="yes"?>日韩和欧美的一区,国产精品久久久久9999赢消 ,国产乱视频在线观看http://www.aygfsteel.com/zqli/category/18314.html为学日益Qؓ(f)道日损?/description>zh-cnThu, 26 Apr 2007 09:17:22 GMTThu, 26 Apr 2007 09:17:22 GMT60L水晶报表的数据库验证界面?/title><link>http://www.aygfsteel.com/zqli/archive/2007/04/26/113847.html</link><dc:creator>放水老?/dc:creator><author>放水老?/author><pubDate>Thu, 26 Apr 2007 09:01:00 GMT</pubDate><guid>http://www.aygfsteel.com/zqli/archive/2007/04/26/113847.html</guid><wfw:comment>http://www.aygfsteel.com/zqli/comments/113847.html</wfw:comment><comments>http://www.aygfsteel.com/zqli/archive/2007/04/26/113847.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/zqli/comments/commentRss/113847.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/zqli/services/trackbacks/113847.html</trackback:ping><description><![CDATA[<p><strong> WinFormQ?/strong>           <br>                this.crystalReportViewer1.ReportSource = this.customerByLivingPlace1;<br>                // 数据库Login<br>               <br>                foreach (CrystalDecisions.Shared.IConnectionInfo connection in this.customerByLivingPlace1.DataSourceConnections)<br>                {<br>                    connection.SetConnection("localhost", "Real_EstatePC", "**", "**");<br>                }<br>                this.crystalReportViewer1.Refresh();<br>           // 子报表的Login<br>             foreach (CrystalDecisions.CrystalReports.Engine.ReportDocument sr in document.Subreports)<br>             {<br>                 foreach (CrystalDecisions.Shared.IConnectionInfo connection in this.customerByLivingPlace1.DataSourceConnections)<br>                 {<br>                      connection.SetConnection("localhost", "Real_EstatePC", "**", "**");<br>                 }<br>             }<br><br><br>注:(x)customerByLivingPlace1指向rpt?br><br><br><strong>WebFormQ?/strong><br> 首先,Zd方便,数据库的用户名和密码先写到Web.config? <br><appSettings> <br>    <add key="DBServerName" value="你的数据库服务器" /> <br>    <add key="DBUserID" value="sa" /> <br>    <add key="DBPassWord" value="UU1Tc3lzdGVt" /> <br></appSettings> </p> <p>然后写个cLl一验证d <br>using System; <br>using System.Collections.Generic; <br>using System.Text; <br>using System.Configuration; </p> <p>namespace BLL <br>{ <br>    public class LoginCrystalReport <br>    {         <br>        public void Login( CrystalDecisions.CrystalReports.Engine.ReportDocument report) <br>        { <br>            string serverName=ConfigurationManager.AppSettings["DBServerName"]; <br>            string userId = ConfigurationManager.AppSettings["DBUserID"]; </p> <p>            string passWord=ConfigurationManager.AppSettings["DBPassWord"]; <br>            <br>            //Set Database Logon to main report <br>            foreach (CrystalDecisions.Shared.IConnectionInfo connection in report.DataSourceConnections) <br>            { <br>                if (connection.ServerName == serverName) <br>                { <br>                    connection.SetLogon(userId, passWord); <br>                } <br>            } </p> <p>            //Set Database Logon to subreport <br>            foreach (CrystalDecisions.CrystalReports.Engine.ReportDocument subreport in report.Subreports) <br>            { <br>                foreach (CrystalDecisions.Shared.IConnectionInfo connection in subreport.DataSourceConnections) <br>                { <br>                    if (connection.ServerName == serverName) <br>                    { <br>                        connection.SetLogon(userId, passWord); <br>                    } <br>                } <br>            } <br>        } </p> <p>        <br>    } <br>} <br><br></p> <img src ="http://www.aygfsteel.com/zqli/aggbug/113847.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/zqli/" target="_blank">放水老?/a> 2007-04-26 17:01 <a href="http://www.aygfsteel.com/zqli/archive/2007/04/26/113847.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个Jasperreport多表打印代码实战http://www.aygfsteel.com/zqli/archive/2006/12/17/88322.html放水老?/dc:creator>放水老?/author>Sun, 17 Dec 2006 02:44:00 GMThttp://www.aygfsteel.com/zqli/archive/2006/12/17/88322.htmlhttp://www.aygfsteel.com/zqli/comments/88322.htmlhttp://www.aygfsteel.com/zqli/archive/2006/12/17/88322.html#Feedback0http://www.aygfsteel.com/zqli/comments/commentRss/88322.htmlhttp://www.aygfsteel.com/zqli/services/trackbacks/88322.html源码如下Q?br />
<%@taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
<%@taglib uri="/WEB-INF/struts-nested.tld" prefix="nested"%>
<%@taglib uri="/WEB-INF/struts-template.tld" prefix="template"%>
<%@taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles"%>
<%@taglib uri="<%@taglib uri="<%@taglib uri="<%@taglib uri="<%@page import="java.sql.*"%>
<%@page import="net.sf.jasperreports.engine.JasperFillManager"%>
<%@page import="net.sf.jasperreports.engine.JasperRunManager"%>
<%@page import="net.sf.jasperreports.engine.*"%>
<%@page import="net.sf.jasperreports.engine.util.*"%>
<%@page import="net.sf.jasperreports.engine.export.*"%>
<%@page import="net.sf.jasperreports.j2ee.servlets.*"%>
<%@page import="java.util.*"%>
<%@page import="java.io.*"%>
<%@page import="net.sf.jasperreports.engine.JasperPrintManager"%>
<%@page import="net.sf.jasperreports.view.*"%>
<%@page import="java.sql.*, javax.sql.DataSource, javax.naming.InitialContext"%>
<%@page import="java.lang.*"%>
<%
  InitialContext ctx = new InitialContext();
  DataSource ds = (DataSource) ctx.lookup("java:/MSSQLDS");
  Connection conn = ds.getConnection();
  //String accNo ="200672395001";
  //String projID ="200672395121";
  String accNo = request.getParameter("accNo");
  String projID = request.getParameter("proId");
  File reportFile1 = new File(application.getRealPath("/report/kuaibao1.jasper"));
  File reportFile2 = new File(application.getRealPath("/report/kuaibao2.jasper"));
  File reportFile3 = new File(application.getRealPath("/report/kuaibao3.jasper"));
  File reportFile4 = new File(application.getRealPath("/report/kuaibao4.jasper"));
  if (!reportFile1.exists() || !reportFile2.exists() || !reportFile3.exists() || !reportFile3.exists() || !reportFile4.exists())
    throw new JRRuntimeException("Fidsfsfd. The report design must be compiled first.");
  JasperReport jasperReport1 = (JasperReport) JRLoader.loadObject(reportFile1.getPath());
  JasperReport jasperReport2 = (JasperReport) JRLoader.loadObject(reportFile2.getPath());
  JasperReport jasperReport3 = (JasperReport) JRLoader.loadObject(reportFile3.getPath());
  JasperReport jasperReport4 = (JasperReport) JRLoader.loadObject(reportFile4.getPath());
  Map parameters = new HashMap();
  parameters.put("accNo", accNo);
  parameters.put("projID", projID);
  JasperPrint jasperPrint1 =
      JasperFillManager.fillReport(
          jasperReport1,
          parameters,
          conn
      );
  JasperPrint jasperPrint2 =
      JasperFillManager.fillReport(
          jasperReport2,
          parameters,
          conn
      );
  JasperPrint jasperPrint3 =
      JasperFillManager.fillReport(
          jasperReport3,
          parameters,
          conn
      );
  JasperPrint jasperPrint4 =
      JasperFillManager.fillReport(
          jasperReport4,
          parameters,
          conn
      );
  response.setContentType("application/ms_word");
  JRExporter exporter = null;
  exporter = new JRRtfExporter();
  List reportlist = (List)new java.util.ArrayList();
  reportlist.add(jasperPrint1);
  reportlist.add(jasperPrint2);
  reportlist.add(jasperPrint3);
  reportlist.add(jasperPrint4);
  // System.out.println(reportlist.size() + "list");
  byte[] bytes;
  ByteArrayOutputStream baos = new ByteArrayOutputStream();
  exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, reportlist);
  exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos);
  exporter.exportReport();
  // exporter.exportReportToStream();
  bytes = baos.toByteArray();
  // System.out.println(bytes+"bytes");
  if (bytes != null && bytes.length > 0) {
    try {
     // response.reset();
      response.setContentType("application/ms_word");
      response.setHeader("Content-disposition",
                         "attachment; filename=yourReport.rtf");
      response.setContentLength(bytes.length);
      ServletOutputStream ouputStream = response.getOutputStream();
      ouputStream.write(bytes, 0, bytes.length);
      //ouputStream.flush();
      ouputStream.close();
      response.reset();
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
    finally {

      conn.close();
    }
  }
%>



]]>
[转]使用Jasperreport作ؓ(f)报表控g开发胖客户端报表应?http://www.aygfsteel.com/zqli/archive/2006/12/17/88320.html放水老?/dc:creator>放水老?/author>Sun, 17 Dec 2006 02:31:00 GMThttp://www.aygfsteel.com/zqli/archive/2006/12/17/88320.htmlhttp://www.aygfsteel.com/zqli/comments/88320.htmlhttp://www.aygfsteel.com/zqli/archive/2006/12/17/88320.html#Feedback0http://www.aygfsteel.com/zqli/comments/commentRss/88320.htmlhttp://www.aygfsteel.com/zqli/services/trackbacks/88320.html阅读全文

]]>
[转]使用Jasperreport作ؓ(f)报表控g开发Web报表应用http://www.aygfsteel.com/zqli/archive/2006/12/17/88319.html放水老?/dc:creator>放水老?/author>Sun, 17 Dec 2006 02:23:00 GMThttp://www.aygfsteel.com/zqli/archive/2006/12/17/88319.htmlhttp://www.aygfsteel.com/zqli/comments/88319.htmlhttp://www.aygfsteel.com/zqli/archive/2006/12/17/88319.html#Feedback0http://www.aygfsteel.com/zqli/comments/commentRss/88319.htmlhttp://www.aygfsteel.com/zqli/services/trackbacks/88319.html 1 、概q?/span>

如何实现 ?span lang="EN-US">Web报表有很多的选择Q自定义CSSQHTML或是XSLTQXML或是其他控gQ特别是支持图表的控Ӟ比如Qjfreechart。本文作为Web报表的一U实现方式,你用Jasperreport作ؓ(f)报表控gQ第一、二部分已经对制作报表和开发胖客户端报表应用做了介l,其实有很多的文章可以参考实现第三部分的内容Q不止是我写的这文章?o:p>

2 、数据连接徏?/span>

参?/span> http://blog.csdn.net/jemlee2002/archive/2004/09/28/JJEM.aspxQ?/span> q里有详l的介绍数据库的q接q程?span lang="EN-US">

3 、拷贝必要的 jar 文g?/span> Web 应用?/span> WEB-INF\lib 目录

每个Web应用都会(x)有WEB-INF目录Q但是lib是不一定有的,如果没有创建它Q本文需要的jar库文件有3个:(x)

jasperreports-0.5.3.jar Qjasperreports执行旉要的API

iTextAsian.jar Q亚z字W集支持

itext-1.02b.jar Q其他字W集支持

如果你的报表全英文或是不需要支持亚z字W集Q那?span lang="EN-US">iTextAsian.jar、可以不要?o:p>

4 、创?/span> repotrs 目录q导?/span> .jasper 文g

?span lang="EN-US">Web应用中根目录下创建repotrs目录Q其实这是一U徏议,没有必要完全按照q样做,你可以根据你的业务需要创建N个目录或是层ơ目录?o:p>

?span lang="EN-US">.jasper文g拯到repotrs目录下,比如例子中的BusinessRpt.jasper文g?o:p>

5 、例子程?/span>

Test.jsp文g的内容:(x)

<%@ page session="false" %>

<%@ page import="dori.jasper.engine.*" %>

<%@ page import="javax.naming.*"%>

<%@ page import="java.sql.*"%>

<%@ page import="javax.sql.*"%>

<%@ page import="java.util.*" %>

<%@ page import="java.io.*" %>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title></title>

<%  

   DataSource ds = null;

   try{

        InitialContext ctx=new InitialContext();

        ds=(DataSource)ctx.lookup("java:comp/env/jdbc/mysql");

        Connection conn = ds.getConnection();

        //装蝲jasper文g

        File business_rpt = new File(application.getRealPath("/reports/BusinessRpt.jasper"));

        //配置参数Q可以参考《第二部分:(x)使用Jasperreport作ؓ(f)报表控g开发胖客户端报表应用?o:p>

         // http://blog.csdn.net/jemlee2002/archive/2004/10/08/JJem3.aspx

        //ProjectName是iReport的变?P{ProjectName}的名Uͼ

        //参考第一部分?.6d参数和用参?o:p>

        //proname是从界面上获取的倹{?o:p>

Map parameters = new HashMap();

        parameters.put("ProjectName ", proname);

        // JasperRunManager是一个输出控制管理类Q下文会(x)提及(qing)部分内容

        JasperRunManager.runReportToHtmlFile(business_rpt.getPath(),parameters,conn);

       //如果创徏报表成功Q则转向该报表,其实可以把报表套在框架内Q这样实现比较有意义的报表格式?o:p>

        response.sendRedirect("/reports/BusinessRpt.html");

   }catch(Exception ex){

       out.print("出现例外Q信息是:"+ex.getMessage());

       ex.printStackTrace();

   }

%>

</head>

<body>

</body>

</html>

6 、关?/span> JasperRunManager

JasperRunManager有很多的静态方法,控制输出的格式,比如输出格式是pdf或是html{,览JasperRunManager的一些方法,q样对开发报表输出有帮助?o:p>

7 、输出内?/span>

例子中输出格式是?span lang="EN-US">HTML文g格式Q所以web服务器可以直接解释ƈ昄Q效果不错?o:p>



]]>
Q{QJasperReport 用户手册http://www.aygfsteel.com/zqli/archive/2006/12/11/87004.html放水老?/dc:creator>放水老?/author>Mon, 11 Dec 2006 11:39:00 GMThttp://www.aygfsteel.com/zqli/archive/2006/12/11/87004.htmlhttp://www.aygfsteel.com/zqli/comments/87004.htmlhttp://www.aygfsteel.com/zqli/archive/2006/12/11/87004.html#Feedback0http://www.aygfsteel.com/zqli/comments/commentRss/87004.htmlhttp://www.aygfsteel.com/zqli/services/trackbacks/87004.html阅读全文

]]>
Q{Q用iReport制作报表的详l过E(Windows环境下)http://www.aygfsteel.com/zqli/archive/2006/12/11/87002.html放水老?/dc:creator>放水老?/author>Mon, 11 Dec 2006 11:36:00 GMThttp://www.aygfsteel.com/zqli/archive/2006/12/11/87002.htmlhttp://www.aygfsteel.com/zqli/comments/87002.htmlhttp://www.aygfsteel.com/zqli/archive/2006/12/11/87002.html#Feedback0http://www.aygfsteel.com/zqli/comments/commentRss/87002.htmlhttp://www.aygfsteel.com/zqli/services/trackbacks/87002.html

提示:在有些板块,文中的图片看不到Q徏议到我的blog览文章Q?a target="_blank">http://blog.csdn.net/jemlee2002/
文章会(x)涉及(qing)3个方面的内容Q?/p>

W一部分Q用iReport制作报表的详l过E(Windows环境下)

W二部分Q用Jasperreport作ؓ(f)报表控g开发胖客户端报表应?/p>

W三部分Q用Jasperreport作ؓ(f)报表控g开发Web报表应用



1、前a

在网l上可以搜烦到很多用iReport和Jasperreport配合实现各种报表d的文章,但是我觉得很有一(几乎没有Q做一个比较详l的介绍如何使用iReport制作报表的全q程Q我所看过的文章的基本思想是覆盖面q,很多内容都是提及(qing)卌Qƈ不是开发h员都有时间ؓ(f)每个实践p旉自己实现Q如果能有更详细的资料,那岂不是一件乐事。出于这个念头促使我写这文章,希望能对那些使用iReport和Jasperreport朋友有所帮助Q特别是需要亲w去实现报表的朋友,希望能给你们带来一点帮助。本文不是对iReport的每个细节进行介l,关于iReport的每个细节可以参考iReport|站的资料,但是可能得花费一些费用。一般用h有必要付些费用,因ؓ(f)我们兛_的是如何制作我们需要的报表Q而不是去扩展iReportQ比如制作iReport的插件?br />

2、准?/h1>

2.1、下载JDK

地址Q?a target="_blank">http://www.sun.comQ选择1.3以上版本Q徏?font face="Times New Roman">1.4.2以上版本Q,安装JDKQ默认安装即可;如果你的pȝ已经有安装过JDK或是?font face="Times New Roman">JRE卛_省略q一步骤Q验?font face="Times New Roman">JDK或是JRE是否可以默认q行Q在命o(h)行(CMDQ打?font face="Times New Roman">X:>java 如果出现Q?font face="Times New Roman">UsageQ?font face="Times New Roman">java……………………?.开头的一堆信息既是通过验证。否则必进行配|,配置信息如下Q在windows的环境变量设|:(x)

pathQ在最后面加入?font face="Times New Roman">;java的安装目录?/p>

JAVA_HOME Q?font face="Times New Roman">java的安装目录?/p>

CLASSPATHQ?font face="Times New Roman">java的安装目?font face="Times New Roman">\\bin?br />重新验证JDK或是JRE是否可以在CMDM位置q行

2.2、下载iReport

地址Q?a target="_blank">http://ireport.sourceforge.net/Q选择0.3.2版本Q发E之前ؓ(f)止徏议用的版本Q解?font face="Times New Roman">iReport在Q意目录,解压后的文g里面有一?font face="Times New Roman">iReport.batQ通过双击Q过大约30U钟如果可以弹出iReport的主H体卌明你的系l已l可以运?font face="Times New Roman">iReport了,如果不能弹出ȝ体,一般是W一步骤错误Q或是没有完成?/p>

2.3、准备数据库

iReport支持l大部分数据库,只要该数据库能提?font face="Times New Roman">JDBC驱动器。本文提?font face="Times New Roman">MySql数据库作Z子,但是文章最后会(x)提到如何配置Oracle的支持。关于数据库的安装和建立表不属于本文的范_(d)请参考其他资料。本文假讑ַl安装了MySql和在MySql已经有一些表Qƈ且确定表中已l有数据了?/p>

*【特别提C?font face="Times New Roman">MySql的版本要求与iReport文g夹下?font face="Times New Roman">Lib目录的?font face="Times New Roman">MySql驱动E序兼容Q笔者徏议到http://dev.mysql.com/downloads/下蝲最新版?font face="Times New Roman">mysql的驱动器Q这样就不会(x)应ؓ(f)JDBC驱动器的问题而当心数据库的支持问题?/p>

2.4、启动MySql服务

Mysql使用的的字符集是重要的问题,特别是对需要中文报表的朋友Q应该特别注意这个问题?font face="Times New Roman">

2.5、确定商务逻辑

       也就是希望完成什么样的报表Q务。需要实现的报表的详l描qͼq是实现报表的业务条Ӟ否则所有的dl大部分没有意义。本文用一?font face="Times New Roman">Bug记录表ؓ(f)例,本文的例子是制作一个根据项目和目中的模块分组?font face="Times New Roman">Bug量统计?br />

3、开始配|基本信?/h1>

3.1、配|界面用的语言和报表输\?/h2>

       W一ơ进入系l是英文环境Q可以通过?font face="Times New Roman">Tools】-?font face="Times New Roman">Options】开启配|iReportpȝ的基本信息对话框。在?font face="Times New Roman">Language”选项里面选择你需要的界面语言Q比如“中文-中国”。点凅R?font face="Times New Roman">Apply】按钮,pȝ既把整个界面中文化?/p>

       在配|iReportpȝ的基本信息对话框中选择【编译?font face="Times New Roman">LabelQ之后决定你的报表输\径,可以把“编译在报表数据文g夹”选择打勾Q这h表的jrxml文g?font face="Times New Roman">jasper文g放|同一文g夏V(在新建报表时?x)要求你?font face="Times New Roman">jrxml文g保存到指定的文g夹)

?font face="Times New Roman">Options】选项中的一部分参数修改不能通过?font face="Times New Roman">Apply】按钮直接v作用Q比如?font face="Times New Roman">Look&Feel”,必须重新启动iReport才能起作用。不知道是不是iReport?font face="Times New Roman">BugQ!最后【存】?/p>

3.2、配|MySql的数据库q接

       q就是报表与数据库的接口。可以通过【资料来源】-【连?font face="Times New Roman">/资料来源】开启配|列表对话框Q?font face="Times New Roman">iReport?x)记录以前用的所有连接,除非你手工删除这些连接,否则所有的q接都会(x)存在q接/资料来源配置列表对话框中Q不是否确实可用?/p>

       点击?font face="Times New Roman">New】进入配|新q接界面Q如图:(x)

填写JDBCq接需要的信息QiReport支持多种数据源连接,如图Q?br />

本文只是介绍DataBase JDBC Connectionq接方式Q这也是最常用的方式,特别是在嵌入式报表应用。所有的信息填写q测试通过之后Q最后就是保存信息。回到配|列表对话框Q关闭对话框Q完成MySql数据库JDBCq接配置?br />提示Q如果你需要报表提供中文内Ҏ(gu)C可以在JDBC URL下工夫,比如输入Q?br />jdbc:mysql://localhost/SUBRDB?user=****&password=****&useUnicode=true&characterEncoding=GB2312
其中?***h换成数据库的用户合密码?br />

3.3、新Z个空报表的基本配|?/h2>

单击工具栏的W一个工具?font face="Times New Roman">New Report”,新徏一个报表,输入报表名称和定义报表的一些参敎ͼ比如名称输入BugsRptQ例子是做一个项目的Bug量统计报表),单击?font face="Times New Roman">More?】选择标签Q填写或是选择XML~码Q这是关pd你的XML支持的字W集的选择Q请Ҏ(gu)需要选择Q比如需要你?font face="Times New Roman">XML文g支持中文Q那么可以输?font face="Times New Roman">GB2312或是GBKQ之后点凅R?font face="Times New Roman">OK】按钮,q入报表的设计界面?/p>

*【特别提C】请在开始Q何工作之前保存报表,q时iReport提示保存报表的位|,选择合适的位置之后输入BugsRpt作ؓ(f)名称?/p>

3.4、定义报表可能需要的字体cd?qing)其属?/h2>

       一个报表的内容五花八门Q有表头、栏位名、数据、其他变量信息等{,如果q些信息都是一致的字体和属性(比如颜色Q,那么整个报表死气沉沉,昑־很粗p了。我们可以在为报表添加每个元素时定义元素的属性,但是那是一个多么费时的工作Q如果能预先定义一些属性的l合Q之后在创徏每个元素时只需选择q些l合的其中一个即可,省事又快速?/p>

       单击【预览】-【报表字体】开启自定义l合对话框。单凅R?font face="Times New Roman">New】进入定义详l对话框Q如图:(x)按照图中的顺序填写信息和步骤Q依ơ定义“表头”、“组”、“列”、“列内容”、“统计计”、“其他”等6中字体组合。注意PDF内嵌字体的选择Q如果你需要报表时以PDF文g格式提供Q那么对此需要作出选择?br />

4、理解几个重要的概念

4.1、iReport的输出格?/h2>

iReport的预览输出格式可以支持以下几U:(x)

PDF?font face="Times New Roman">HTML?font face="Times New Roman">CSV?font face="Times New Roman">JAVA2D?font face="Times New Roman">Excel、纯文字?font face="Times New Roman">JRViewerQ其中最常用的是PDF?font face="Times New Roman">JRViewer。本文以JRViewerZ子?font face="Times New Roman">JRViewer是直接以C/S方式作ؓ(f)报表的输出格式,?font face="Times New Roman">JFrame框架下输出?font face="Times New Roman">Jasperreport提供默认?font face="Times New Roman">JRViewer输出cR?/p>

4.2、报表的动态对象变量、参数、字D?/h2>

在?font face="Times New Roman">iReport的过E中?x)碰到很多与变量Q?font face="Times New Roman">VariablesQ、参敎ͼParametersQ、字D(FieldsQ这些有关的内容Q我们要介绍q些对象的用和意义Q?/p>

·字段Q?font face="Times New Roman">FieldsQ:(x)是数据库抽取出来的,希望在报表中出现的数据库内容。比如一?font face="Times New Roman">ID的所有倹{?font face="Times New Roman">$F{ filedsName }

·参数Q?font face="Times New Roman">ParametersQ:(x)q是你的应用需要提供给报表的入口,比如你希望在报表被解释的时候提?font face="Times New Roman">Where语句的条件|那么可以用参敎ͼParametersQ?font face="Times New Roman">$P{ parameterName }

·变量Q?font face="Times New Roman">VariablesQ:(x)q是报表中一些逻辑q算的表玎ͼ比如l计倹{?font face="Times New Roman">$V{ variablesName }

每种对象的定义格式如每个对象的后面说明,比如定义一个变量(VariablesQ,那么表达式就写成$V{ variablesName }Q报表中出现的就是这个变量的名称。后文会(x)详细的介l用方法?/p>

4.3、编译、静态运行、动态运?/h2>

Jasperreportq行旉要的是一?font face="Times New Roman">jasper后缀的文Ӟ~译q程其实是?font face="Times New Roman">jrxml后缀的文件生?font face="Times New Roman">jasper后缀的文件。(可以参?font face="Times New Roman">Jasperreport的运行原理)

静态运行和动态运行是相对的,后者带数据源运行,比如带数据库q行。前者就是静态文本运行,和数据源无关Q如果报表中出现和数据源有关的对象,则以null昄?/p>

4.4、报表结?/h2>

       一个报表的l构大致?font face="Times New Roman">?/font>个部分:(x)title?font face="Times New Roman">pageHeader?font face="Times New Roman">columnHeader?font face="Times New Roman">detial?font face="Times New Roman">columnFooter?font face="Times New Roman">pageFooter?font face="Times New Roman">summary?font face="Times New Roman">groupHeader?font face="Times New Roman">groupfooter?br />

·TitleQ每个报表一般会(x)有一个名字,比如×××销售报表,title是搁置q个名称的最好地方了Q当然你也可以根据需要搁|在合适的地方?/p>

·pageHeaderQ报表的一些公p素,比如늠、创建时间、创Zh{信息放|在q里是比较好的选择?/p>

·columnHeaderQ无可非议的q里是放|列的名UͼC不是列数据?/p>

·DetialQ放|需要@环的数据Q比如销售记录数据?/p>

·columnFooterQ放|列U别的统计计值或是列的说明?/p>

·pageFooterQ放|页U别的统计值或是页的说明?/p>

·SummaryQ可能需要对几页Q你的报表可能有几个늻成)的统计倹{比?font face="Times New Roman">50个销售记录共占用?font face="Times New Roman">3,那么攄q些l计记录的统计值最好的地方是summary?/p>

·groupHeaderQ每个表的内容可能需要根据某个属性进行划分显C内容和计算内容Q比如希望以月䆾为单位每l分开昄销售记录,那么可以定义一个组Q组的定义参考后文)Q?font face="Times New Roman">groupHeader是攄l说明或是组标志最好的地方?/p>

·GroupfooterQ放|组的统计或是说?br />

5、向表添加对?/h1>

5.1、添加静态对?/h2>

可以通过工具栏的工具d静态对象,比如文本Q点凅R?b>T】,之后在报表的I白处单击,如此卛_把静态对象添加到报表Q然后拖动对象的Ҏ(gu)Q它的大小合适,双击对象弹出对象的属性配|对话框Q切换到?font face="Times New Roman">Font?font face="Times New Roman">LabelQ在?font face="Times New Roman">Report font”的ComBox选择“表头”字体,Q表头字体是前文提供的自定义属性组合)Q再切换到?font face="Times New Roman">Static Text?font face="Times New Roman">LabelQ修改表头的名字Q比如?font face="Times New Roman">Bugl计报表”或是“销售记录统计表”等{与业务有关的内宏V添加图片,L(fng)凅R?font face="Times New Roman">Image Tool】,之后的操作与TextcM。其他静态对象操作步骤类伹{?br />

5.2、用连?/h2>

       q记得前文提供的Q?font face="Times New Roman">3.2节)配置MySql数据库连接吗Q这里我们将要用前文配|的q接了。选择菜单【徏立】-【用动态连接】开启可选的动态连接,选择M一个你需要的q接最后?font face="Times New Roman">OK】,保存报表Q这样你的报表就使用了这个连接了?/p>

*【特别提C】此q接必须与以后应用程序用的q接一致?br />

5.3、创建SQL查询语句

       SQL语句是对MRDBMS起作用的语言Q外部用户需要用这些语a理l护数据库中的数据,同样的,iReport也是需要这么做Q我们需要提供查询数据库的语aQ?font face="Times New Roman">SQL语句Q这PiReport卛_通过?font face="Times New Roman">SQL语句获取数据Q之后组l到报表中ƈ昄出来Q以满用户的需要ؓ(f)目的?/p>

       通过菜单【资料来源】-【报表查询】开?font face="Times New Roman">SQL输入对话框,q在?font face="Times New Roman">Report SQL Query?font face="Times New Roman"> Label中输?font face="Times New Roman">SQL语句如图Q图中的?font face="Times New Roman">Automatically Retrieve Fields?font face="Times New Roman">checkbox和?font face="Times New Roman">ReadFields?font face="Times New Roman">Button是确认自动获取还是手动获取数据库表的可用Fields。单凅R?font face="Times New Roman">OK】,保存报表?br />

5.4、创?font face="宋体">字段动态对?/h2>

报表的动态对象有变量、参数、字D,前文提及(qing)了他们的概念Q这里将要一一讲解如何使用?/p>

字段也就是数据库中的字段Q通过菜单【预览】-【报表字Dc(din)开启字D늚列表Q工h上可以找到相应的工具Q,可以拖放L字段到报表的M位置Q比如拖动一部分Bug的内容字D到detialD(内容无关紧要Q只要知道原理)?/p>

5.5、创建组

l是一个很重要的概念,一个报表可以多个组Q每个组以一个关键字为标讎ͼ比如希望Bugl计是根据项目(或是产品Q进行统计的。那么可以设立一个项目标记的l。如图:(x)

l的参数讑֮可以看界面即可理解部分,其中最主要的是“Group expression”,q是必须输入格式正确的ƈ且存在的字段名称Q本文的“proname”是【字Dc(din)中的一个元素。依此类推,建立其他的组对象。每建立一个组Q在报表的界面上都会(x)出现该组对应的段Q如图:(x)至于他们的意义和容纳的内容参考?.4报表l构”,他们是首֯应出现的。(Header和FooterQ?br />

5.6、添加参数和使用参数

我们重申参数作用Q一般是需要外界提供参数给报表的入口,比如SQL语句的where条g的表辑ּ。通过【预览】-【报表参数】开启报表参数列表对话框Q工h上可以找到相应的工具Q。如图:(x)输入名称?qing)其他参数。【ok?保存报表?br />

那么如何使用呢?打开SQL语句对话框,参考?font face="Times New Roman">5.3创徏SQL查询语句”,q时候的SQL语句应该是:(x)
SELECT *

FROM bugs  where proname=$P{ProjectName} order by proname,modulename
注意其中的红体字部分Q就是把刚才定义的变量运用到SQL语句了。这样当应用提供参数Ӟ只要指定提供l这个参敎ͼ那么报表解释引擎卛_替换q些变量然后再执?font face="Times New Roman">SQL
语句Q在W二部分提到~程Ӟ?x)提供参数设定代码?br />

5.7、添加变量和使用变量

变量的定义类似参敎ͼ通过【预览】-【报表变量】开启报表变量列表对话框Q工h上可以找到相应的工具Q,如图Q图中定义的变量的作用是Q定义一?font face="Times New Roman">Bug的计数器Q数据类型是java.lang.Integer,使用Count函数q行l计字段testerQ作用范围是模块l,也就是统计模块的Bug量。其中的tester可以Ҏ(gu)其他非组对象Q比?font face="Times New Roman">proname是组对象Q就不要用作q里的统计参数。以上提供的是自定义变量Q其实iReportpȝq有提供一些内嵌(BuildinQ的变量Q比如页码,行记录数{,视需要而用?br />

6、最后的报表

6.1、完成后的报?/h2>

6.2、预览报?br />

点击动态运行报表,出现如图内容Q?/font>

7、ȝ

W一部分只是介绍了如何制作一个动态数据报表,其实iReportq有提供很多的特性供开发h员用,比如q图、饼图、及(qing)各种形状的图形等Q满企业绝大部分应用的需求。希望你能l研Iƈ充分利用?font size="3">    

    关于使用Oracle数据库作为数据源的内容:(x)提供与用的Oracle版本对应?font face="Times New Roman">JDBC驱动Q把驱动攄?font face="Times New Roman">iReport?font face="Times New Roman">lib目录Q配|数据库?font face="Times New Roman">JDBCq接时如图:(x)其它操作基本没有区别?/p>

8、补充内?/h1>

8.1、实现表?/h2>

可以在Detial中加入必要线条实现表|配合columnFooter、columnHeader、Detialq?个位|实玎ͼ(zhn)可以试试画U的位置Q?br />



]]> վ֩ģ壺 | Ӧ| ֳ| | ̩| | Դ| | ˳| | | Դ| | Ϫ| ں| ʩ| | | | | | ػ| ̨ʡ| | | ʵ| | ij| | | ͨ| | Ƿ| | | | | | ɽ| | Ȫ|