今天看了一个例子,但是不是很明白
们在IReport中,已经设置了其动态查询为SELECT
     Suppliers."CompanyName" AS Suppliers_CompanyName,
     Suppliers."ContactName" AS Suppliers_ContactName,
     Suppliers."ContactTitle" AS Suppliers_ContactTitle,
     Suppliers."City" AS Suppliers_City,
     Suppliers."Country" AS Suppliers_Country
FROM
     "dbo"."Suppliers" Suppliers
而在jsp页面中,为什么要重新查询?
在jsp页面中的代码是
public void createPdfReport(){
String fileName="";
String strDate="";
String sql="";Map parameters=new HashMap();
parameters.put("rpt,"sss"); //傳入的parameters引數
sql =" select CompanyName ,ContactName , ";
sql+=" ContactTitle , City , Country ";
sql+=" from Suppliers ";
sql+=" where ContactTitle like '%Sales%' "; //在此試捉出與Sales有關
sql+=" order by Country , ContactTitle ";
Connection conn = this.createConnection(); //建立資料庫連線
try {
Statement stm = conn.createStatement();
ResultSet rs = stm.executeQuery(sql);
fileName = "D:\\iReport\\iReport-0.4.0\\Work\\TestiReport.jasper";
JasperFillManager.fillReportToFile(fileName,parameters,
newJRResultSetDataSource(rs));
fileName = "D:\\iReport\\iReport-0.4.0\\Work\\TestiReport.jrprint";
JasperExportManager.exportReportToPdfFile(fileName);
}
catch (Exception ex) {
System.out.println("Error : "+ex.toString());
}是不是可以把ireport中的查询删除掉,然后利用fillReportToFile来进行动态查询呢?
如果是这样的话
我怎么在ireport里面设置我要显示的字段?

解决方案 »

  1.   

    可以删除ireport中的查询,但可以保留你原来设置的字段,只要在jsp中的sql查询的字段与之保持一致即可。
    如ireport中有个field为company,则sql中须有select company …与之匹配。
      

  2.   

    这样子的话在ireport中还是达不到动态查询的结果啊如果我要弄成在jsp中查询了什么字段,那么在报表中就显示什么字段这样子能实现吗?
      

  3.   

    你是用结果集的话肯定是可以动态查询的。
    另外,你要搞清楚,ireport主要是用来做模板的,也就是说你得先用ireport编译生成一个.jasper文件放到你的工程中,这个文件包含了查询的field的信息,jsp中的查询是要以他为基础的。
      

  4.   

    你想在ireport中设置动态的field名字来适应jsp查询,这目前应该还不能实现。