सबसे पहले आपने यह निर्दिष्ट नहीं किया कि आप किस प्रकार का एप्लिकेशन बनाना चाहते हैं, इसलिए मैं अपनी प्रतिक्रिया पर थोड़ा सामान्य हूं। इसके अलावा, आपने यह भी उल्लेख नहीं किया है कि क्या आप पहले से ही अपनी पहली रिपोर्ट बनाने में कामयाब रहे हैं (मेरा मतलब है, बिना किसी उपयोगकर्ता इनपुट के)। तो, नीचे मैं एक जैस्पर रिपोर्ट बनाने के लिए आवश्यक भाग दिखा रहा हूँ:
public void generateReport(ActionEvent actionEvent) throws FileNotFoundException {
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(PopulateBean.createBeanCollection());
Map parameters = new HashMap();
try {
InputStream is = new FileInputStream(new File("Source path to template.jrxml"));
OutputStream os=new FileOutputStream(new File("Resulting report.pdf"));
JasperDesign jasperDesign = JRXmlLoader.load(is);
JasperReport jasperReport =
JasperCompileManager.compileReport(jasperDesign);
JasperPrint jasperPrint =
JasperFillManager.fillReport(jasperReport, parameters, ds);
JasperExportManager.exportReportToPdfStream(jasperPrint, os);
} catch (JRException e) {
e.printStackTrace();
}
}
यह कोड आपके आवेदन में एकीकृत किया जाना चाहिए। आप जो हिस्सा मांग रहे हैं वह है:
Map parameters = new HashMap();
आपको बस उपयोगकर्ता द्वारा डाले गए इनपुट को इस मानचित्र में डालना है। उदाहरण, यदि आपके पास एक JSF पृष्ठ है, तो आप इसके UI घटक का मूल्य ले सकते हैं और इस मानचित्र में संग्रहीत कर सकते हैं
parameters.put("type_code", getTypeCodeUIComponent().getValue());
आप ऊपर दिए गए कोड में देखेंगे कि यह नक्शा रिपोर्ट को भेज दिया गया है:
JasperFillManager.fillReport(jasperReport, parameters, ds);
केवल एक चीज जो बची है, वह है iReport में अपनी रिपोर्ट क्वेरी को संपादित करना। सबसे पहले आप ठीक उसी नाम के साथ एक पैरामीटर बनाते हैं जो मानचित्र में डाला गया था (इस उदाहरण में "type_code"। ध्यान दें, यह केस संवेदनशील है)। दूसरा, आपको WHERE क्लॉज का उपयोग करना चाहिए जहां आप इस पैरामीटर के आधार पर टाइप कॉलम को फ़िल्टर करते हैं, नीचे देखें:और यहां आप कुछ ट्यूटोरियल देखें:1 और 2
आशा है कि ये मदद करेंगे!