JasperReports একটি শক্তিশালী এবং নমনীয় রিপোর্টিং টুল যা fields, parameters, এবং variables ব্যবহারের মাধ্যমে রিপোর্টে ডেটা যুক্ত করতে এবং কাস্টম লজিক প্রয়োগ করতে সাহায্য করে। এই তিনটি উপাদান রিপোর্টের data প্রক্রিয়াকরণের জন্য অত্যন্ত গুরুত্বপূর্ণ, এবং তাদের সঠিকভাবে ব্যবহার করা রিপোর্টের আউটপুট এবং কার্যকারিতা উন্নত করতে পারে।
1. Report Fields
Fields হল রিপোর্টের মূল ডেটা যেগুলি রিপোর্টে শো হয়। একটি field সাধারণত আপনার ডেটা সোর্স থেকে আসা একটি কলাম বা মান হতে পারে। যেমন একটি Database থেকে ডেটা নেওয়া হলে, প্রতিটি column একটি field হবে।
Best Practice:
- Fields সাধারণত JDBC Data Source বা JavaBeans Data Source-এর মাধ্যমে রিপোর্টে যোগ করা হয়।
Report Fields কনফিগারেশন:
- Database থেকে Field: যদি আপনি JDBC Data Source ব্যবহার করছেন, তাহলে SQL Query থেকে প্রতিটি কলাম একটি field হিসেবে রিপোর্টে যোগ হয়।
- JavaBeans থেকে Field: যদি আপনি JavaBeans Data Source ব্যবহার করেন, তাহলে JavaBean ক্লাসের getter মেথড থেকে মান আসে।
উদাহরণ:
public class Person {
private String name;
private int age;
// Getter and Setter methods
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
এখানে, name এবং age হল fields যা আপনার রিপোর্টে প্রদর্শিত হবে।
2. Parameters
Parameters হল এমন পরিবর্তনশীল ডেটা যা রিপোর্টের সময় প্রেরণ করা হয়। Parameters সাধারণত রিপোর্টের রেন্ডারিংয়ের সময় dynamic values হিসেবে ব্যবহৃত হয়, এবং ব্যবহারকারীর ইনপুট বা অ্যাপ্লিকেশন থেকে প্রেরিত মান হিসেবে কাজ করে।
Best Practice:
- Parameters ব্যবহার করুন যখন রিপোর্টের ডেটা বা আউটপুট dynamic করতে চান। যেমন, ব্যবহারকারী একটি নির্দিষ্ট date range বা region নির্বাচন করলে সেই অনুযায়ী রিপোর্ট জেনারেট হবে।
Parameter কনফিগারেশন:
- Parameter ডিফাইন করা: JasperReports Studio-এ আপনি Report Parameters ট্যাব থেকে নতুন parameters তৈরি করতে পারেন।
- Java কোড থেকে Parameters পাঠানো: JasperFillManager.fillReport() মেথডের মাধ্যমে parameters পাঠানো হয়।
উদাহরণ:
PersonReport.jrxml (Parameter example):
<parameter name="StartDate" class="java.util.Date"/>
<parameter name="EndDate" class="java.util.Date"/>
Java কোড:
import net.sf.jasperreports.engine.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Date;
public class ParameterExample {
public static void main(String[] args) {
try {
// Parameters
Map<String, Object> parameters = new HashMap<>();
parameters.put("StartDate", new Date());
parameters.put("EndDate", new Date());
// Fill the report with data
JasperReport jasperReport = JasperCompileManager.compileReport("path/to/report.jrxml");
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JREmptyDataSource());
// Export to PDF
JasperExportManager.exportReportToPdfFile(jasperPrint, "output/report_with_parameters.pdf");
} catch (JRException e) {
e.printStackTrace();
}
}
}
এখানে, StartDate এবং EndDate হল parameters যা Java কোডের মাধ্যমে রিপোর্টে প্রেরিত হচ্ছে।
3. Variables
Variables হল রিপোর্টের মধ্যে computed values। এগুলি সাধারণত aggregated values, summaries, বা calculations হতে পারে। Variables ব্যবহার করা হয় যখন আপনাকে ডেটা থেকে dynamic calculations করতে হয়, যেমন গড়, মোট, বা মানের পরিসীমা নির্ধারণ।
Best Practice:
- Variables ব্যবহার করুন যখন আপনার রিপোর্টে aggregated calculations বা running totals করতে হবে।
Variable কনফিগারেশন:
- Variable ডিফাইন করা: JasperReports Studio-এ আপনি Report Variables ট্যাব থেকে নতুন variables তৈরি করতে পারেন।
- Types of Variables:
- Simple Variables: যেমন sum, count, average।
- Running Variables: যেমন running total, cumulative sum।
উদাহরণ:
PersonReport.jrxml (Variable example):
<variable name="TotalAge" class="java.lang.Integer" calculation="Sum">
<variableExpression><![CDATA[$F{age}]]></variableExpression>
</variable>
Java কোড:
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import java.util.*;
public class VariableExample {
public static void main(String[] args) {
try {
// Create sample data
List<Person> personList = new ArrayList<>();
personList.add(new Person("John", 25));
personList.add(new Person("Jane", 30));
JRBeanCollectionDataSource jrDataSource = new JRBeanCollectionDataSource(personList);
// Compile the report
JasperReport jasperReport = JasperCompileManager.compileReport("path/to/report.jrxml");
// Fill the report with data
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, jrDataSource);
// Export to PDF
JasperExportManager.exportReportToPdfFile(jasperPrint, "output/report_with_variable.pdf");
} catch (JRException e) {
e.printStackTrace();
}
}
}
class Person {
private String name;
private int age;
// Constructor
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Getter
public int getAge() {
return age;
}
}
এখানে, TotalAge একটি variable যা age ফিল্ডের sum ধারণ করবে এবং রিপোর্টে দেখাবে।
Report Fields, Parameters, and Variables এর মধ্যে পার্থক্য
| উপাদান | বর্ণনা | ব্যবহার |
|---|---|---|
| Fields | রিপোর্টে প্রদর্শিত ডেটা যা ডেটা সোর্স থেকে আসা। | RDBMS, JavaBeans, XML থেকে ডেটা প্রদর্শন। |
| Parameters | রিপোর্টে dynamic ডেটা বা ইনপুট যা রিপোর্টের সময় পাঠানো হয়। | রিপোর্টের কাস্টমাইজেশন, ব্যবহারকারী ইনপুট বা সময়সীমা। |
| Variables | রিপোর্টে calculated values বা aggregated data। | গণনা, মোট, গড়, সাপোর্টেড ক্যালকুলেশন। |
- Fields, Parameters, এবং Variables এই তিনটি উপাদান JasperReports-এ ডেটার প্রসেসিং এবং কাস্টমাইজেশনের জন্য অত্যন্ত গুরুত্বপূর্ণ।
- Fields ব্যবহার করে আপনি data রিপোর্টে যোগ করেন, Parameters দিয়ে আপনি dynamic ইনপুট বা ডেটা কাস্টমাইজ করেন এবং Variables ব্যবহার করে আপনি calculations বা aggregated data হিসাব করেন।
- এই উপাদানগুলির সঠিক ব্যবহার আপনার রিপোর্টের কার্যকারিতা এবং কাস্টমাইজেশন ক্ষমতা significantly বাড়াতে পারে।
JasperReports-এ Report Field হল একটি মূল উপাদান যা রিপোর্টের ভিতরে থাকা ডেটা উপস্থাপন করে। Field সাধারণত একটি data source থেকে ডেটা সংগ্রহ করে এবং সেই ডেটাকে রিপোর্টের মধ্যে দৃশ্যমান করে তোলে। এটি একটি dynamic element হিসাবে কাজ করে যা রিপোর্টে প্রদর্শিত হওয়া তথ্যের একটি অংশ, যেমন নাম, তারিখ, সংখ্যা বা অন্যান্য ডেটা।
Report Field এর ধরন
- Text Field:
- সাধারণত একটি ফ্রি টেক্সট বা ডেটা প্রিন্ট করার জন্য ব্যবহার করা হয়।
- এটি সাধারণত static টেক্সট (যেমন, "Name: ") অথবা dynamic টেক্সট (যেমন, একটি ডেটাবেসের ফিল্ড) প্রদর্শন করতে ব্যবহৃত হয়।
- Static Text:
- এটি একটি সাধারণ টেক্সট ফিল্ড যা কোনো ডেটা শো করার জন্য নয়, বরং কোনো লেবেল বা নির্দিষ্ট শব্দ বা বাক্য প্রদর্শন করার জন্য ব্যবহৃত হয়।
- Image Field:
- এটি একটি ফিল্ড যেখানে ইমেজ বা গ্রাফিক্স শো করা হয়।
- Subreport Field:
- আপনি যদি একটি রিপোর্টের মধ্যে অন্য রিপোর্ট ইমবেড করতে চান, তবে আপনি subreport ব্যবহার করতে পারেন। এটি একটি নির্দিষ্ট রিপোর্টের অন্য রিপোর্টের আউটপুট প্রদর্শন করে।
- Barcodes:
- JasperReports বারকোড সমর্থন করে এবং আপনি barcode field ব্যবহার করে বারকোড প্রিন্ট করতে পারেন।
Report Field কিভাবে কাজ করে?
JasperReports-এ Fields ডেটা সোর্স থেকে ডেটা নিয়ে আসে এবং সেই ডেটাকে রিপোর্টে প্রদর্শন করে। এটি expression এর মাধ্যমে কাজ করে যা রিপোর্টের ভিতরের ডেটা ফিল্ডের জন্য ব্যবহৃত হয়। একাধিক field ব্যবহার করে আপনি আপনার রিপোর্টের ভিতরে বিভিন্ন ধরনের ডেটা বা তথ্য উপস্থাপন করতে পারেন।
Field Mapping
- Field Definitions:
- প্রতিটি field একটি field name এবং expression দ্বারা চিহ্নিত করা হয়।
- ফিল্ডের নাম রিপোর্ট ডিজাইনে ডিফাইন করা থাকে, এবং এটি ডেটা সোর্স থেকে উপযুক্ত মানের সাথে ম্যাপ করা হয়।
- Field Expressions:
- Expression হল একটি স্ট্রিং যা ডেটা সোর্সের ক্ষেত্র থেকে মান বের করতে ব্যবহার হয়। এটি সাধারণত একটি Java expression বা JasperReports Expression Language (JEXL) হতে পারে।
- উদাহরণস্বরূপ, একটি field যা
nameফিল্ডের মান দেখায়, সেই ক্ষেত্রেExpressionহবে$F{name}।
- Text Field Example:
- একটি text field সাধারণত এমন কিছু দেখাবে:
এটি ব্যবহার করা হবে JasperReport এর layout-এ, যেমন:
<textField> <reportElement x="0" y="0" width="100" height="30" uuid="b3f19a21-80df-4fe2-bba5-bf56adf548b7"/> <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression> </textField>- এখানে,
nameহল field name, এবংexpressionহবে$F{name}।
- Field Types:
- JasperReports বিভিন্ন ধরনের ফিল্ড সাপোর্ট করে, যেমন:
- Text: সাধারণ পাঠ্য।
- Number: সংখ্যা।
- Date: তারিখ।
- Boolean: বুলিয়ান (যেমন: true বা false)।
- JasperReports বিভিন্ন ধরনের ফিল্ড সাপোর্ট করে, যেমন:
- Report Field Expressions Example:
যদি আপনি একটি number field ডেটাবেস থেকে নিয়ে আসেন, তাহলে expression হবে:
<textFieldExpression><![CDATA[$F{price}]]></textFieldExpression>- এটি
priceনামে ফিল্ডের মান রিপোর্টে দেখাবে।
Report Fields এর অন্যান্য বৈশিষ্ট্য
Field Types
- Text Field: রিপোর্টের জন্য সাধারণ টেক্সট প্রদর্শন করার জন্য ব্যবহৃত হয়।
- Image Field: ইমেজ প্রদর্শনের জন্য ব্যবহৃত হয়।
- Subreport Field: এক রিপোর্টের ভিতরে আরেকটি রিপোর্ট এমবেড করার জন্য ব্যবহৃত হয়।
- Barcode Field: বারকোড বা QR কোড প্রদর্শনের জন্য ব্যবহৃত হয়।
Field Expression Language
JasperReports-এ expression language হিসেবে Java ব্যবহার করা হয়। এতে $F{fieldName} সyntaxt ব্যবহার করা হয় ফিল্ডের মান প্রদর্শন করার জন্য।
- Static Text: শুধুমাত্র কনস্ট্যান্ট টেক্সট যোগ করতে ব্যবহার হয়। উদাহরণ:
"Hello, World!" - Field Expressions: ডেটা সোর্সের মানের জন্য একটি ডায়নামিক এক্সপ্রেশন ব্যবহার করা হয়। উদাহরণ:
$F{fieldName}। - Parameters and Variables: আপনি রিপোর্টে parameters এবং variables ব্যবহার করে আরও জটিল এক্সপ্রেশন তৈরি করতে পারেন।
Field Examples
- String Field:
আপনি যদি
nameফিল্ডের মান বের করতে চান, তাহলে expression হবে:$F{name}
- Date Field:
যদি আপনি
dateফিল্ডের মান দেখাতে চান, তাহলে expression হবে:$F{date}.toString()
- Calculated Field:
যদি আপনি দুটি ফিল্ডের যোগফল দেখতে চান, যেমন
priceএবংtax, তাহলে expression হবে:$F{price} + $F{tax}
Report Field ব্যবহার করে জটিল রিপোর্ট তৈরি
আপনি যদি জটিল রিপোর্ট তৈরি করতে চান, যেমন একটি customer report যেখানে তাদের নাম, ঠিকানা, এবং প্রোডাক্টের অর্ডার তথ্য দেখানো হয়, তবে বিভিন্ন ধরনের ফিল্ড এবং ফিল্ড এক্সপ্রেশন ব্যবহার করে এই ডেটাগুলো ডায়নামিকভাবে সিরিয়ালাইজ করতে পারেন।
<detail>
<band height="20" splitType="Stretch">
<!-- Name Field -->
<textField>
<reportElement x="0" y="0" width="100" height="20"/>
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
</textField>
<!-- Address Field -->
<textField>
<reportElement x="120" y="0" width="200" height="20"/>
<textFieldExpression><![CDATA[$F{address}]]></textFieldExpression>
</textField>
<!-- Order Total Field -->
<textField>
<reportElement x="0" y="25" width="100" height="20"/>
<textFieldExpression><![CDATA[$F{orderTotal}]]></textFieldExpression>
</textField>
</band>
</detail>
Field Expressions এবং Variables
Parameters:
- Parameters ব্যবহার করা হয় চলমান রিপোর্টের জন্য কাস্টম ইনপুট নিয়ে আসতে, যেমন একটি নির্দিষ্ট ডেটা ফিল্টার করা।
Variables:
- রিপোর্টের মধ্যে গণনা করা যেতে পারে এমন কিছু মান (যেমন: মোট, গড়) সংরক্ষণ করতে Variables ব্যবহার করা হয়।
- Report Fields JasperReports-এর সবচেয়ে গুরুত্বপূর্ণ উপাদান, যা ডেটা থেকে রিপোর্ট তৈরি করতে ব্যবহৃত হয়।
- JasperReports-এ Text Field, Image Field, Subreport Field, Barcode Field ইত্যাদি ধরন রয়েছে যা আপনাকে রিপোর্টে ডেটা শো করার জন্য বিভিন্ন উপায় প্রদান করে।
- Field Expressions এবং JasperReports Expression Language ব্যবহার করে ডেটা সোর্স থেকে মানগুলো dynamic ভাবে রিপোর্টে প্রদর্শন করা যায়।
JasperReports এর মাধ্যমে রিপোর্ট তৈরি করার সময় Field এবং তাদের expressions বুঝে কাজ করা খুবই গুরুত্বপূর্ণ।
JasperReports-এ Report Parameters একটি অত্যন্ত গুরুত্বপূর্ণ ভূমিকা পালন করে, কারণ এই প্যারামিটারগুলো আপনাকে রিপোর্টে ডায়নামিক ডেটা এবং কাস্টমাইজেশন প্রদান করতে সাহায্য করে। রিপোর্টের প্যারামিটারগুলি ব্যবহারকারী ইনপুট গ্রহণ, রিপোর্টের কনফিগারেশন নিয়ন্ত্রণ এবং রিপোর্টের বিভিন্ন অংশে ডেটা ফিল্টার করতে সহায়ক।
Report Parameters এর মূল ধারণা
- Parameter Definition:
- রিপোর্টের প্যারামিটার সাধারণত ব্যবহারকারী অথবা অ্যাপ্লিকেশন থেকে প্রাপ্ত ডাইনামিক ইনপুট হিসেবে রিপোর্টে প্রবাহিত হয়।
- Usage of Parameters:
- প্যারামিটারগুলি রিপোর্টের মধ্যে নির্দিষ্ট ভ্যালু বা ডেটার জন্য ফিল্টার বা শর্ত হিসেবে ব্যবহার করা হয়। যেমন: তারিখ, ব্যবহারকারী নির্বাচন, অথবা রিপোর্টের শিরোনাম।
- Data Source Filtering:
- প্যারামিটারগুলি সাধারণত রিপোর্টের জন্য SQL কোয়েরি বা ডেটা সোর্স থেকে ফিল্টারিং অপারেশন করতে ব্যবহৃত হয়।
JasperReports এ Report Parameters ব্যবহার করা
Step 1: Report Parameter Definition
রিপোর্টের প্যারামিটারগুলি JRXML ফাইলে <parameter> ট্যাগের মাধ্যমে সংজ্ঞায়িত করা হয়।
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports
http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"
name="SalesReport" language="java" pageWidth="595" pageHeight="842">
<!-- Define the parameter -->
<parameter name="StartDate" class="java.util.Date"/>
<parameter name="EndDate" class="java.util.Date"/>
<!-- Fields and Report Content -->
</jasperReport>
এই উদাহরণে, আমরা দুটি Date প্যারামিটার StartDate এবং EndDate তৈরি করেছি, যা রিপোর্টে ব্যবহারকারীকে তারিখের সীমা নির্বাচন করতে সাহায্য করবে।
Step 2: Parameter ব্যবহার করে SQL Query Filtering
প্যারামিটার ব্যবহার করে ডেটা সোর্স থেকে SQL কোয়েরি ফিল্টার করা যেতে পারে। উদাহরণস্বরূপ:
<queryString>
<![CDATA[
SELECT order_id, order_date, total_amount
FROM orders
WHERE order_date BETWEEN $P{StartDate} AND $P{EndDate}
]]>
</queryString>
এখানে, StartDate এবং EndDate প্যারামিটারগুলি ব্যবহার করে ডেটাবেস থেকে order_date ফিল্ডের ভিত্তিতে রিপোর্টের ডেটা ফিল্টার করা হচ্ছে।
Step 3: Report Parameters ইনপুট নেওয়া
যখন রিপোর্টটি চলবে, তখন JasperReports প্যারামিটারগুলি ব্যবহারকারী বা অ্যাপ্লিকেশন থেকে ইনপুট নিতে পারে। অ্যাপ্লিকেশন থেকে parameters প্রদান করার সময় আপনি তাদের মান পাঠাতে পারেন।
Java কোডে Parameter Pass করা:
import net.sf.jasperreports.engine.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Date;
public class JasperReportExample {
public static void main(String[] args) {
try {
// Define parameters
Map<String, Object> parameters = new HashMap<>();
parameters.put("StartDate", new Date(2023, 1, 1));
parameters.put("EndDate", new Date(2023, 12, 31));
// Compile JRXML file to Jasper report
JasperReport jasperReport = JasperCompileManager.compileReport("SalesReport.jrxml");
// Fill the report with data from database
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JREmptyDataSource());
// Export the report to PDF
JasperExportManager.exportReportToPdfFile(jasperPrint, "SalesReport.pdf");
System.out.println("Report generated successfully!");
} catch (JRException e) {
e.printStackTrace();
}
}
}
এখানে, parameters.put("StartDate", new Date(2023, 1, 1)) এবং parameters.put("EndDate", new Date(2023, 12, 31)) দ্বারা প্যারামিটার ইনপুট দেওয়া হচ্ছে এবং রিপোর্টে ব্যবহৃত হচ্ছে।
Step 4: Parameter Displaying in the Report
প্যারামিটারগুলি রিপোর্টের বিভিন্ন অংশে (যেমন শিরোনাম বা ফুটার) ব্যবহার করা যেতে পারে। যেমন:
<textField>
<reportElement x="0" y="0" width="200" height="20"/>
<textFieldExpression><![CDATA["From: " + $P{StartDate} + " To: " + $P{EndDate}]]></textFieldExpression>
</textField>
এখানে, StartDate এবং EndDate প্যারামিটার রিপোর্টের শিরোনামে From: [start date] To: [end date] হিসেবে প্রদর্শিত হবে।
Report Parameters এর সুবিধা
- Dynamic Reports:
- রিপোর্ট প্যারামিটারগুলি রিপোর্টের ডেটা ফিল্টারিং এবং কাস্টমাইজেশনের জন্য সাহায্য করে। ব্যবহারকারী তার প্রয়োজন অনুযায়ী ইনপুট দিতে পারে এবং রিপোর্টটি সেই অনুযায়ী পরিবর্তিত হবে।
- Reusable Reports:
- এক ধরনের রিপোর্টের কাঠামো দিয়ে বিভিন্ন ডেটার ভিত্তিতে রিপোর্ট তৈরি করা সম্ভব, যা আরও অধিক কার্যকর এবং পুনঃব্যবহারযোগ্য।
- User-Driven Input:
- রিপোর্টের জন্য প্যারামিটার ব্যবহারকারী ইনপুট গ্রহণ করতে পারে, যেমন: তারিখ, নির্দিষ্ট আঞ্চলিক ডেটা, বা ব্যবহারকারী ভিত্তিক রিপোর্ট।
- SQL Query Filtering:
- প্যারামিটার ব্যবহার করে SQL কোয়েরি ফিল্টার করা যায়, যাতে রিপোর্টটি নির্দিষ্ট কন্ডিশন অনুযায়ী ডেটা প্রদর্শন করে।
Common Use Cases for JasperReports Parameters
- Date Range Reports:
- প্যারামিটার ব্যবহার করে ব্যবহারকারী একটি তারিখের রেঞ্জ নির্বাচন করতে পারে এবং রিপোর্টটি ঐ তারিখের মধ্যে ডেটা প্রদর্শন করবে।
- User-specific Reports:
- প্যারামিটার ব্যবহার করে ব্যবহারকারীর আইডি বা নাম ব্যবহার করে রিপোর্ট তৈরি করা যায়।
- Filtering Data:
- SQL বা অন্যান্য ডেটাবেস প্রশ্নে প্যারামিটার ব্যবহার করে ডেটা ফিল্টারিং করা সম্ভব।
- Report Customization:
- রিপোর্টের বিভিন্ন অংশে প্যারামিটার ব্যবহার করে কাস্টমাইজেশন করা যায়, যেমন রিপোর্ট শিরোনাম, ফুটার, টেবিলের কন্টেন্ট ইত্যাদি।
- Report Parameters JasperReports-এ একটি অত্যন্ত শক্তিশালী ফিচার যা রিপোর্টে ডায়নামিক ডেটা, কাস্টম ইনপুট, এবং ফিল্টারিং যুক্ত করতে ব্যবহৃত হয়।
- Parameters ব্যবহার করে আপনি SQL কোয়েরি থেকে ডেটা ফিল্টার করতে পারেন, রিপোর্ট কনফিগারেশন এবং আউটপুট কাস্টমাইজ করতে পারেন।
- JasperReports-এর প্যারামিটারগুলি রিপোর্টের ডেটা প্রসেসিং আরও নমনীয় এবং ইন্টারঅ্যাকটিভ করে তোলে, যা ব্যবহারকারীর জন্য সুবিধাজনক।
JasperReports একটি শক্তিশালী টুল যা dynamic reports তৈরি করতে পারে, যেখানে রিপোর্টের কন্টেন্ট, লেআউট বা স্টাইল ডেটা এবং ব্যবহারকারীর ইনপুট অনুযায়ী পরিবর্তিত হয়। Report Parameters ব্যবহার করে আপনি রিপোর্টের কনফিগারেশন এবং ডেটার ফিল্টারিং কাস্টমাইজ করতে পারেন।
Parameters ব্যবহার করা হয় রিপোর্টের জন্য নির্দিষ্ট ডেটা বা কনফিগারেশন সরবরাহ করার জন্য। এগুলি সাধারণত রিপোর্টের ভেতরের ডেটা সোর্স থেকে ডেটা চয়ন, ডেটা ফিল্টার, বা রিপোর্টের শিরোনাম বা অন্যান্য কাস্টমাইজেশনের জন্য ব্যবহৃত হয়।
JasperReports এ Report Parameters এর ভূমিকা:
- Dynamic Data Selection:
- রিপোর্টের প্যারামিটার ব্যবহার করে আপনি কাস্টম ডেটা নির্বাচন করতে পারেন (যেমন, একটি নির্দিষ্ট ডেটা রেঞ্জ বা ফিল্টার).
- Customizing Report Content:
- রিপোর্টের কনটেন্ট (শিরোনাম, ফিল্ড নাম, তারিখ, ব্যবহারকারীর ইনপুট ইত্যাদি) প্যারামিটার দ্বারা কাস্টমাইজ করা যায়।
- User Input Based Filtering:
- রিপোর্টের মধ্যে ডেটা ফিল্টারিং, যেমন তারিখের রেঞ্জ বা নির্দিষ্ট ক্রাইটেরিয়া অনুযায়ী, প্যারামিটার দ্বারা পরিচালিত হয়।
- Reusable Reports:
- একবার রিপোর্ট তৈরি করলে, বিভিন্ন প্যারামিটার দিয়ে আপনি একই রিপোর্টকে বিভিন্ন পরিস্থিতিতে ব্যবহার করতে পারবেন।
JasperReports এ Parameters ব্যবহার:
ধাপ 1: JRXML ফাইলে Parameters ডিফাইন করা
প্রথমত, JRXML টেমপ্লেটে প্যারামিটার ডিফাইন করা হয়। এটি ফাইলের <parameter> ট্যাগের মাধ্যমে করা হয়।
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports
http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"
name="DynamicReport" language="java" pageWidth="595" pageHeight="842"
columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<!-- Define the parameter -->
<parameter name="StartDate" class="java.util.Date"/>
<parameter name="EndDate" class="java.util.Date"/>
<!-- Define fields -->
<field name="transactionDate" class="java.util.Date"/>
<field name="amount" class="java.lang.Double"/>
<title>
<band height="50">
<staticText>
<reportElement x="0" y="0" width="555" height="30"/>
<textElement textAlignment="Center">
<font size="18"/>
</textElement>
<text><![CDATA[Transaction Report]]></text>
</staticText>
</band>
</title>
<detail>
<band height="20">
<textField>
<reportElement x="0" y="0" width="200" height="20"/>
<textFieldExpression><![CDATA[$F{transactionDate}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="220" y="0" width="100" height="20"/>
<textFieldExpression><![CDATA[$F{amount}]]></textFieldExpression>
</textField>
</band>
</detail>
<!-- Use parameter in query -->
<queryString>
<![CDATA[
SELECT transactionDate, amount FROM transactions
WHERE transactionDate BETWEEN $P{StartDate} AND $P{EndDate}
]]>
</queryString>
</jasperReport>
বর্ণনা:
<parameter name="StartDate" class="java.util.Date"/>এবং<parameter name="EndDate" class="java.util.Date"/>প্যারামিটারগুলো রিপোর্টে ইনপুট হিসেবে ব্যবহার করা হবে।- SQL কুয়েরিতে
$P{StartDate}এবং$P{EndDate}প্যারামিটার দিয়ে ডেটা ফিল্টার করা হবে, যেখানে ব্যবহারকারী নির্দিষ্ট তারিখ রেঞ্জ দেবেন।
ধাপ 2: Parameters পাঠানো এবং রিপোর্ট তৈরি করা
প্যারামিটার ব্যবহার করে রিপোর্টে ডেটা সরবরাহ করতে, আপনাকে JasperFillManager এর মাধ্যমে প্যারামিটার মান প্রদান করতে হবে এবং রিপোর্ট তৈরি করতে হবে।
import net.sf.jasperreports.engine.*;
import java.util.HashMap;
import java.util.Map;
import java.sql.*;
import java.util.Date;
public class JasperReportWithParameters {
public static void main(String[] args) {
try {
// JRXML থেকে JasperReport তৈরি করা
JasperReport jasperReport = JasperCompileManager.compileReport("DynamicReport.jrxml");
// Parameters পাঠানো
Map<String, Object> parameters = new HashMap<>();
parameters.put("StartDate", java.sql.Date.valueOf("2023-01-01"));
parameters.put("EndDate", java.sql.Date.valueOf("2023-12-31"));
// JDBC Connection Setup
String url = "jdbc:mysql://localhost:3306/your_database"; // আপনার ডাটাবেস URL
String username = "your_username";
String password = "your_password";
Connection connection = DriverManager.getConnection(url, username, password);
// ডাটাবেস থেকে ডেটা নিয়ে রিপোর্ট তৈরি করা
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, connection);
// PDF ফাইল হিসেবে রিপোর্ট এক্সপোর্ট করা
JasperExportManager.exportReportToPdfFile(jasperPrint, "dynamic_report.pdf");
System.out.println("Report generated successfully!");
} catch (SQLException | JRException e) {
e.printStackTrace();
}
}
}
কোড ব্যাখ্যা:
- Parameters Map: প্যারামিটার মানগুলি
parameters.put()দ্বারা পাঠানো হয়, যেখানেStartDateএবংEndDateএর মান ডেটাবেস থেকে ডেটা ফিল্টার করতে ব্যবহৃত হয়। - JDBC Connection: ডাটাবেসের সাথে সংযোগ স্থাপন করা হয়েছে, যেখানে রিপোর্টে ব্যবহার করা ডেটা কোয়েরি করা হবে।
- JasperFillManager.fillReport(): প্যারামিটার এবং ডেটাবেস কানেকশন ব্যবহার করে রিপোর্টটি ফিল করা হয়।
- JasperExportManager.exportReportToPdfFile(): রিপোর্টটি PDF ফরম্যাটে এক্সপোর্ট করা হয়।
ধাপ 3: রিপোর্টের আউটপুট
এখন, প্যারামিটার ভিত্তিক রিপোর্ট dynamic_report.pdf নামে তৈরি হবে, যেখানে শুধুমাত্র নির্দিষ্ট তারিখের মধ্যে থাকা transactionDate এবং amount ফিল্ড থাকবে।
প্যারামিটার ব্যবহারকারীর ইনপুট অনুযায়ী
যদি আপনি প্যারামিটার হিসেবে ওয়েব ইন্টারফেস বা কমান্ড লাইন আর্গুমেন্ট ব্যবহার করতে চান, তবে আপনি প্যারামিটার গ্রহণ করতে পারেন এবং রিপোর্টের জন্য ডায়নামিক ডেটা পাঠাতে পারেন।
- Report Parameters ব্যবহার করে আপনি dynamic reports তৈরি করতে পারেন, যেখানে রিপোর্টের কন্টেন্ট, ডেটা সোর্স, বা অন্যান্য কনফিগারেশন প্যারামিটার দিয়ে কাস্টমাইজ করা হয়।
- JasperReports-এ parameters ফিল্টার, কাস্টম শিরোনাম বা অন্যান্য ডেটার জন্য খুবই গুরুত্বপূর্ণ। আপনি SQL queries বা JasperReports expression-এ প্যারামিটার ব্যবহার করতে পারেন।
- JDBC DataSource এবং JasperReports এর মাধ্যমে dynamic reports তৈরি করা সহজ, যা আপনার ডেটা অনুসারে রিপোর্ট কাস্টমাইজ করে এবং এক্সপোর্ট করতে সাহায্য করে।
এটি JasperReports ব্যবহার করে dynamic reports তৈরি করার একটি শক্তিশালী পদ্ধতি।
JasperReports একটি শক্তিশালী রিপোর্টিং টুল যা Java অ্যাপ্লিকেশনগুলোতে JSON, XML, ডেটাবেস ইত্যাদি ডেটা সোর্স থেকে রিপোর্ট তৈরি করতে ব্যবহৃত হয়। JasperReports রিপোর্টের মধ্যে Variables একটি গুরুত্বপূর্ণ অংশ, যেগুলি রিপোর্টের মধ্যে ডেটা সঞ্চয় এবং calculation বা aggregation করতে ব্যবহৃত হয়। JasperReports-এর variables ব্যবহার করে আপনি রিপোর্টের মধ্যে বিভিন্ন ধরনের গণনা যেমন sum, average, count ইত্যাদি করতে পারেন।
এছাড়া, JasperReports ব্যবহার করে Group-wise Aggregation বা Calculation প্রক্রিয়া করা সম্ভব, যার মাধ্যমে আপনি নির্দিষ্ট গ্রুপের উপর ভিত্তি করে ফলাফল বের করতে পারেন। এই ধরনের সুবিধা financial reports, statistical reports, বা অন্য যে কোনও ধরনের রিপোর্টে ব্যবহৃত হয় যেখানে সঠিক হিসাব এবং অঙ্কের প্রয়োজন হয়।
JasperReports Variable এর ধারণা
JasperReports-এর Variable একটি ডাইনামিক ভ্যালু যা রিপোর্টের ভিতরে ব্যবহার হয় এবং এর মান calculated হয়। এই ভ্যালু সাধারণত রিপোর্টের বিভিন্ন band (যেমন, detail, summary, header) তে ব্যবহার করা হয়। Variables সাধারণত sum, average, count এবং অন্যান্য statistical calculations জন্য ব্যবহৃত হয়।
JasperReports এ Variables প্রধানত দুটি উপায়ে কাজ করে:
- Calculation: Variables বিভিন্ন ধরনের গণনা সম্পাদন করতে ব্যবহৃত হয়।
- Aggregation: গ্রুপিং বা অন্যান্য aggregation হিসাবের জন্য ব্যবহৃত হয়, যেমন total, average, maximum, minimum ইত্যাদি।
Variables তৈরি করার উপায়
JasperReports এর Variables সাধারণত JRXML ফাইলে সংজ্ঞায়িত করা হয়। প্রতিটি variable এর জন্য তিনটি প্রধান বৈশিষ্ট্য থাকে:
- Name: ভ্যারিয়েবলের নাম।
- Class: ভ্যারিয়েবলের ডেটা টাইপ (যেমন
Integer,Double,String, ইত্যাদি)। - Calculation: গণনার ধরন (যেমন
Sum,Average,Countইত্যাদি)।
Variable Declaration in JRXML
<variable name="totalSales" class="java.lang.Double" calculation="Sum">
<variableExpression><![CDATA[$F{salesAmount}]]></variableExpression>
</variable>
এখানে, totalSales একটি ভ্যারিয়েবল যা salesAmount ফিল্ডের উপর ভিত্তি করে sum গণনা করবে।
Variables ব্যবহার করে Aggregation এবং Calculation
JasperReports এ aggregation এবং calculation করার জন্য বিভিন্ন ধরনের calculation types ব্যবহার করা যায়, যেমন:
- Sum: নির্দিষ্ট ফিল্ডের সব মানের যোগফল।
- Count: নির্দিষ্ট মানের কাউন্ট।
- Average: নির্দিষ্ট ফিল্ডের গড়।
- Minimum: নির্দিষ্ট ফিল্ডের সর্বনিম্ন মান।
- Maximum: নির্দিষ্ট ফিল্ডের সর্বোচ্চ মান।
1. Sum Calculation Example
ধরা যাক, একটি রিপোর্টে আমরা মোট বিক্রয়ের যোগফল বের করতে চাই। এখানে, আমরা salesAmount ফিল্ডের sum বের করব।
JRXML Example for Sum Calculation:
<variable name="totalSales" class="java.lang.Double" calculation="Sum">
<variableExpression><![CDATA[$F{salesAmount}]]></variableExpression>
</variable>
এখানে, totalSales ভ্যারিয়েবলটি salesAmount ফিল্ডের সব মানের যোগফল বের করবে।
Step 1: Use the Variable in the Report
<detail>
<band height="30">
<textField>
<reportElement x="0" y="0" width="250" height="30"/>
<textFieldExpression><![CDATA["Total Sales: " + $V{totalSales}]]></textFieldExpression>
</textField>
</band>
</detail>
এখানে, $V{totalSales} ভ্যারিয়েবলের মান "Total Sales: " সহ ডিটেইল সেকশনে প্রদর্শিত হবে।
2. Count Calculation Example
ধরা যাক, আমরা একটি রিপোর্টে কতটি আইটেম বিক্রি হয়েছে তা গণনা করতে চাই। আমরা salesAmount ফিল্ডের জন্য count ব্যবহার করব।
JRXML Example for Count Calculation:
<variable name="itemCount" class="java.lang.Integer" calculation="Count">
<variableExpression><![CDATA[$F{salesAmount}]]></variableExpression>
</variable>
এখানে, itemCount ভ্যারিয়েবলটি salesAmount ফিল্ডের মানের গুণগত সংখ্যা গুনে গণনা করবে।
Step 1: Use the Variable in the Report
<detail>
<band height="30">
<textField>
<reportElement x="0" y="0" width="250" height="30"/>
<textFieldExpression><![CDATA["Items Sold: " + $V{itemCount}]]></textFieldExpression>
</textField>
</band>
</detail>
এখানে, $V{itemCount} ভ্যারিয়েবলের মান "Items Sold: " সহ ডিটেইল সেকশনে প্রদর্শিত হবে।
3. Average Calculation Example
ধরা যাক, একটি রিপোর্টে আমরা salesAmount এর গড় হিসাব করতে চাই।
JRXML Example for Average Calculation:
<variable name="averageSales" class="java.lang.Double" calculation="Average">
<variableExpression><![CDATA[$F{salesAmount}]]></variableExpression>
</variable>
এখানে, averageSales ভ্যারিয়েবলটি salesAmount ফিল্ডের গড় বের করবে।
Step 1: Use the Variable in the Report
<detail>
<band height="30">
<textField>
<reportElement x="0" y="0" width="250" height="30"/>
<textFieldExpression><![CDATA["Average Sales: " + $V{averageSales}]]></textFieldExpression>
</textField>
</band>
</detail>
এখানে, $V{averageSales} ভ্যারিয়েবলের মান "Average Sales: " সহ ডিটেইল সেকশনে প্রদর্শিত হবে।
4. Group-wise Aggregation Example
JasperReports এ Group-wise Aggregation করতে হলে, আপনাকে group ব্যবহার করতে হবে। ধরুন, আমরা একটি রিপোর্টে Region-wise sales এর sum করতে চাই।
JRXML Example for Group-wise Sum Calculation:
<group name="RegionGroup">
<groupExpression><![CDATA[$F{region}]]></groupExpression>
<groupFooter>
<band height="40">
<textField>
<reportElement x="0" y="0" width="500" height="30"/>
<textFieldExpression><![CDATA["Total for Region " + $F{region} + ": " + $V{totalSales}]]></textFieldExpression>
</textField>
</band>
</groupFooter>
</group>
<variable name="totalSales" class="java.lang.Double" calculation="Sum">
<variableExpression><![CDATA[$F{salesAmount}]]></variableExpression>
</variable>
এখানে, RegionGroup নামে একটি গ্রুপ তৈরি করা হয়েছে এবং প্রতি Region অনুযায়ী salesAmount এর sum totalSales ভ্যারিয়েবল দিয়ে করা হয়েছে।
- Variables JasperReports এ aggregation এবং calculation করতে ব্যবহৃত হয়। আপনি যেমন sum, count, average ইত্যাদি হিসাব করতে পারেন, তেমনি গ্রুপ ভিত্তিক হিসাবও করতে পারবেন।
- JasperReports এ ভ্যারিয়েবল ব্যবহার করা হলে তা রিপোর্টের মধ্যে বিভিন্ন grouping, subtotals, averages, এবং অন্যান্য statistical calculations কে সহজ করে তোলে।
- Variables তৈরি করার জন্য JRXML ফাইলে ট্যাগ ব্যবহার করতে হয় এবং প্রতিটি ভ্যারিয়েবলের জন্য calculation নির্ধারণ করতে হয়।
- JasperReports দিয়ে data aggregation এবং grouping এর মাধ্যমে শক্তিশালী এবং ডাইনামিক রিপোর্ট তৈরি করা সম্ভব।
Read more