2011-12-21 63 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.