2011-12-21 94 views
0

我想设置参数的值其实值数据集在主报表参数字段设置,但数据集的参数不填充的都是相同的name.Even如果它没有显示的默认值选项来设置主要报告参数值。我正在使用ireport 4.0.2.So你能告诉我如何动态地设置数据集中参数的值,这是我通过HashMap传递的。设置动态值数据集参数/ Mainreport的默认值参数的iReport

在此先感谢您的帮助。

` 

<subDataset name="dataset1"> 
     <parameter name="ID" class="java.lang.Integer" isForPrompting="false"> 
      </parameter> 
     <queryString> 
      <![CDATA[select FIELD_LABEL,MONTHLY,ANNUAL,SUM FROM SALARY_DETAILS WHERE CANDIDATE_ID=$P{ID}]]> 
     </queryString> 
     <field name="FIELD_LABEL" class="java.lang.String"/> 
     <field name="MONTHLY" class="java.lang.Integer"/> 
     <field name="ANNUAL" class="java.lang.Integer"/> 
     <field name="SUM" class="java.lang.Integer"/> 
    </subDataset> 
` 

<parameter name="CANDIDATE_ID" class="java.lang.Integer"/> 
    <queryString> 
     <![CDATA[SELECT FIRST_NAME,LAST_NAME,DATE_OF_JOINING ,DESIGNATION,LABEL,SUM 
FROM CANDIDATE C 
LEFT JOIN PROFILE_INFO PI ON PI.ID = C.PROFILE_ID 
LEFT JOIN LEVELS L ON PI.LEVEL_ID = L.ID 
LEFT JOIN SALARY_DETAILS SD ON SD.CANDIDATE_ID = C.ID 
WHERE C.ID=$P{CANDIDATE_ID} GROUP BY C.ID=$P{CANDIDATE_ID}]]> 
    </queryString> 
    <field name="FIRST_NAME" class="java.lang.String"/> 
    <field name="LAST_NAME" class="java.lang.String"/> 
    <field name="DATE_OF_JOINING" class="java.sql.Date"/> 
    <field name="DESIGNATION" class="java.lang.String"/> 
    <field name="LABEL" class="java.lang.String"/> 
    <field name="SUM" class="java.lang.Integer"/> 

final String driverClass = "com.mysql.jdbc.Driver"; 
      final String connectionURL = "jdbc:mysql://localhost:3306/mydb"; 
      final String userID = "root"; 
      final String userPassword = "root"; 
      HashMap<String, Integer> map = new HashMap<String, Integer>(); 
      map.put("CANDIDATE_ID",1); 
      map.put("ID",1); 
      Connection con = null; 
      Class.forName(driverClass).newInstance(); 
      con = DriverManager.getConnection(connectionURL, userID,userPassword); 
      InputStream input = new FileInputStream(new File(
        "/home/user/Desktop/OfferLetter.jrxml")); 
      JasperDesign design = JRXmlLoader.load(input); 
      JasperReport report = JasperCompileManager.compileReport(design); 
      JasperPrint print = JasperFillManager.fillReport(report,map, con); 

      OutputStream pdfOP = new FileOutputStream(new File(
        "/home/user/Desktop/OfferLetter.pdf")); 

      JasperExportManager.exportReportToPdfStream(print, pdfOP); 
      pdfOP.close(); 
      con.close(); 
+0

你是在谈论iReport(gui模板设计器)还是关于JasperReports API?你想设置参数或数据源? – 2011-12-21 13:27:55

+0

喜Alex..Thanks您的回复......这是关于iReport的GUI模板设计在数据集中,我创建一个参数,我想动态填充,但是当我通过hasmap它不填充记得输入值数据集parameter.But在案例主要报告参数是通过hashmap填充值。我在主要报表查询中使用了两个查询,而在数据集查询中使用了另一个查询。在数据集查询中,我使用数据集参数,即使我试图将其默认值设置为主报表参数值,但未显示参数名称。 – Anil 2011-12-22 04:51:03

+0

你能发布模板和代码吗? – 2011-12-22 06:31:02

回答

0

我得到了我的答案,希望它能帮助一些人。

我改变列表数据源的配置和映射为数据集的主要报告参数。

Right Click on List(component) -> Edit list(Component) -> Data source -> use connection expression -->Add parameter and map with default value of main report.