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 তৈরি করার একটি শক্তিশালী পদ্ধতি।
Read more