2010-04-08 14 views
6

मैं जैस्पर रिपोर्ट और आईरपोर्ट का मूल्यांकन कर रहा हूं, एक आवश्यकता एक बहु पृष्ठ रिपोर्ट तैयार करने की संभावना है जिसमें प्रत्येक पृष्ठ में एक अलग रिपोर्ट होती है।विभिन्न सामग्री के साथ जैस्पर रीपॉर्ट्स मल्टी-पेज रिपोर्ट

उदाहरण:
पृष्ठ 1 2 ग्राहक
पेज 3 के लिए चालान सूची शामिल है एक ग्राहक
पृष्ठ के लिए एक वास्तविक चालान वर्ष
पेज 4 चालान की राशि का एक ग्राफ में शामिल केवल तय टेक्स्ट है (ऑपरेटर निर्देशों का कहना है ...)

क्या चार स्टैंडअलोन रिपोर्ट बनाने के बजाय ऐसी अनूठी रिपोर्ट बनाना संभव है और फिर पीडीएफ को मर्ज करें।

बहुत बहुत धन्यवाद।

फ्रांसेस्को

उत्तर

1

हाँ, यह संभव है। आप पूरी रिपोर्ट चार अलग-अलग उप-रिपोर्टों की संरचना के रूप में बना सकते हैं। इससे उनकी पुन: प्रयोज्यता और चिंताओं को अलग किया जा सकेगा।

0

हां, आप उन रिपोर्टों को भी शामिल कर सकते हैं जिनके ग्राहक के साथ कोई संबंध नहीं है "अगर यह समझ में आता है"।

इसके अलावा, चीजों को और भी अधिक मनोरंजक बनाने के लिए, इस रिपोर्ट पूरा करने के बाद, आप इसे एक और माता पिता रिपोर्ट में रख सकते हैं, तो आप एक से अधिक ग्राहकों के लिए एक ही रिपोर्ट मिल जाएगा।

8

मैंने कुछ भिन्न करने की कोशिश की।

मैंने Ireport 4.1.3 का उपयोग किया और यदि आप विस्तार 1 अनुभाग पर राइट क्लिक करते हैं तो आप एक और विवरण अनुभाग जोड़ सकते हैं।

एक बीक पेज जोड़ें और यह हो गया है।

आशा है कि यह मदद करता है :) सादर

+0

यह सही विस्तार वर्गों के परिवर्तनशील लिए काम नहीं करेगा? – CodeMonkey

3

हाँ आप कर सकते हैं एक डेटा स्रोत और पैरामीटर आपका मुख्य रिपोर्ट में प्रत्येक उप रिपोर्ट के लिए नक्शा ,

डेटा स्रोत सूची है कि के रूप में प्रदर्शित किया जाएगा शामिल हैं बनाने के द्वारा रिपोर्ट

पैरामीटर्स नक्शा रिपोर्ट में कुंजी और textfields के मान में एक टेबल

अच्छी खबर यह है कि आप कर सकते हैं समेत है ई प्रत्येक पैरामीटर में अपने सभी पृष्ठों की सभी मापदंडों प्रत्येक पृष्ठ के प्रसंस्करण के अपने मापदंडों और भूल दूसरों :) निकाल देंगे रिपोर्ट में तो नक्शा

उदाहरण:

List<Map<String, Object>> ParamList = new ArrayList<Map<String, Object>>(); 
List<JRDataSource> SourceList = new ArrayList<JRDataSource>(); 

Map<String, Object> params = new HashMap<String, Object>(); 
params.put("Page1_param1", "value1_1"); 
params.put("Page1_param2", "value1_2"); 
params.put("Page1_param3", "value1_3"); 
.. 
params.put("Page2_param1", "value2_1"); 
params.put("Page2_param2", "value2_2"); 
params.put("Page2_param3", "value2_3"); 
.. 
params.put("Page3_param1", "value3_1"); 
params.put("Page3_param2", "value3_2"); 
params.put("Page3_param3", "value3_3"); 
.. 
.. 
List listResult_1 = //select table sql for example 
List listResult_2 = //select table sql for example 
List listResult_3 = //select table sql for example 

JRDataSource dataSource_1 = new ListOfArrayDataSource(
listResult_1, new String[] {"LastName", "FirstName", "address"}); 

JRDataSource dataSource_2 = new ListOfArrayDataSource(
listResult_2, new String[] {"LastName", "FirstName", "address"}); 

JRDataSource dataSource_3 = new ListOfArrayDataSource(
listResult_3, new String[] {"LastName", "FirstName", "address"}); 

// Yes i know ! :D , we put the same params list then as i said befor every sub report will take its own parameters values, so don't worry about this task ;) 
ParamList.add(params); 
ParamList.add(params); 
ParamList.add(params); 

SourceList.add(dataSource_1); 
SourceList.add(dataSource_2); 
SourceList.add(dataSource_3); 

File reportFile = // the jrxml file template of the report 

// We can use also a list of reportFile, so that every page uses his own template :D 


CreateReport(jasperReport, ParamList, SourceList); 

} 

अब हम प्रत्येक उप रिपोर्ट बनाने और से संलग्न मुख्य रिपोर्ट:

Public void CreateReport(File reportFile, List<Map<String, Object>> ParamList, List<JRDataSource> SourceList){ 

    JasperReport jasperReport = (JasperReport) JRLoader.loadObject(reportFile.getPath()); 
    Map<String, Object> parameters = paramList.get(0); 
    JRDataSource datasource = datasourceList.get(0); 
    jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, datasource); 

    if(paramList.size()>1){ 
     for(int i=1; i < paramList.size(); i++) 
     { 
      JasperPrint jasperPrint_next = JasperFillManager.fillReport(jasperReport, paramList.get(i), datasourceList.get(i)); 
      List pages = jasperPrint_next.getPages(); 
      for (int j = 0; j < pages.size(); j++) { 
       JRPrintPage object = (JRPrintPage) pages.get(j); 
       jasperPrint.addPage(object); 
      } 
     } 
    } 

} 
संबंधित मुद्दे