JasperReports একটি শক্তিশালী রিপোর্টিং লাইব্রেরি যা dynamic reports তৈরি করতে ব্যবহার করা হয়। আপনি রিপোর্টের সময় User Input গ্রহণ করতে parameters ব্যবহার করতে পারেন। Parameters হল সেই পরিবর্তনশীল মান যা রিপোর্টের রেন্ডারিং (rendering) প্রক্রিয়া শুরু করার আগে ব্যবহারকারী বা অ্যাপ্লিকেশন থেকে গ্রহণ করা হয়। এগুলি সাধারণত filters, search criteria, date ranges, বা user selections হিসেবে ব্যবহৃত হয়।
এই নিবন্ধে আমরা JasperReports-এ report parameters ব্যবহার করে user input নেওয়া এবং রিপোর্টে parameters পাঠানোর প্রক্রিয়া আলোচনা করব।
Report Parameters কিভাবে কাজ করে?
- Parameter Definition: প্রথমে রিপোর্টে parameter ডিফাইন করতে হয়, যেমন ব্যবহারকারী কী ধরণের ইনপুট প্রদান করবে (যেমন: তারিখ, নাম, সংখ্যা ইত্যাদি)।
- User Input: রিপোর্ট চলাকালীন parameter ইনপুট প্রদান করা হয়।
- Data Filtering: সেই ইনপুটটি data source বা query এ ব্যবহার করা হয় রিপোর্টের জন্য ডেটা নির্বাচন করতে।
- Report Generation: রিপোর্টটি parameter values নিয়ে তৈরি করা হয় এবং আউটপুট হিসাবে প্রিন্ট করা হয়।
JasperReports Studio তে Parameter তৈরি করা
JasperReports Studio তে parameters খুব সহজেই তৈরি করা যায়। আপনি parameter এর ধরণ (যেমন, String, Date, Integer, ইত্যাদি) এবং default value কনফিগার করতে পারেন।
Parameter তৈরি করার ধাপ:
- JasperReports Studio খুলুন এবং নতুন রিপোর্ট তৈরি করুন।
- রিপোর্টের parameters ট্যাব নির্বাচন করুন।
- New Parameter বোতাম ক্লিক করে একটি নতুন parameter তৈরি করুন।
- Name এবং Type নির্বাচন করুন (যেমন: String, Integer, Date ইত্যাদি)।
- Default Value Expression বা User Input প্রদান করতে পারেন।
Example: Date Range Filter Parameter
ধরা যাক, আপনি একটি রিপোর্ট তৈরি করতে চান যা একটি date range দ্বারা sales ডেটা ফিল্টার করবে।
Step 1: Parameter Definition in JRXML
প্রথমে, JRXML ফাইলে parameter ডিফাইন করতে হবে:
<parameter name="StartDate" class="java.util.Date"/>
<parameter name="EndDate" class="java.util.Date"/>
এখানে, StartDate এবং EndDate দুটি parameter তৈরি করা হয়েছে যেগুলো ব্যবহারকারীর কাছ থেকে ইনপুট নেওয়া হবে।
Step 2: SQL Query with Parameters
পরবর্তীতে, এই parameters ব্যবহার করে SQL query তৈরি করুন। উদাহরণস্বরূপ:
<queryString>
<![CDATA[
SELECT * FROM sales WHERE sale_date BETWEEN $P{StartDate} AND $P{EndDate}
]]>
</queryString>
এখানে, SQL query তে $P{StartDate} এবং $P{EndDate} placeholders হিসেবে ব্যবহার করা হয়েছে। এগুলো রিপোর্টের parameters হিসেবে কাজ করবে এবং ব্যবহারকারী যখন রিপোর্টটি চালাবে তখন এই ইনপুটগুলি পাস করা হবে।
Step 3: Fill the Report with Parameters
Java Code থেকে আপনি এই parameters পাঠাতে পারবেন। নিচে একটি উদাহরণ দেওয়া হলো:
import net.sf.jasperreports.engine.*;
import java.util.*;
import java.text.SimpleDateFormat;
public class ReportWithParameter {
public static void main(String[] args) {
try {
// Set up parameters
Map<String, Object> parameters = new HashMap<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// Set start and end dates
parameters.put("StartDate", sdf.parse("2024-01-01"));
parameters.put("EndDate", sdf.parse("2024-12-31"));
// Compile the report
JasperReport jasperReport = JasperCompileManager.compileReport("path/to/report.jrxml");
// Fill the report with parameters and data
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JREmptyDataSource());
// Export the report to PDF
JasperExportManager.exportReportToPdfFile(jasperPrint, "output/sales_report.pdf");
System.out.println("Report generated successfully!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
এখানে, আমরা parameters হিসাবে StartDate এবং EndDate সেট করেছি, যা রিপোর্ট ফিলিংয়ের সময় SQL query-তে ব্যবহার করা হবে।
User Input নেওয়া (Dynamic Parameters)
JasperReports Studio তে parameters তৈরি করার সময়, আপনি একটি dynamic user input নিতে পারেন। যেমন একটি date picker বা text field ব্যবহার করে ব্যবহারকারী এই parameters এর মান ইনপুট করতে পারে।
Step 1: Parameter UI Configuration
JasperReports Studio তে আপনি parameters এর UI কনফিগার করতে পারেন:
- Parameter Type: String, Date, Integer, Double, ইত্যাদি।
- Input Prompt: ব্যবহারকারীর জন্য একটি prompt তৈরি করুন যা তাকে ইনপুট দিতে প্রম্পট করবে। যেমন: "Enter Start Date" বা "Enter End Date"।
- Default Value: আপনি default value সেট করতে পারেন যদি ব্যবহারকারী কোন ইনপুট না দেন।
Step 2: Parameter Value Prompt
একটি TextField বা DatePicker ব্যবহার করে ব্যবহারকারী ইনপুট দিতে পারবেন:
- DateRange: ব্যবহারকারী যখন StartDate এবং EndDate ইনপুট করে, তখন সেই মানগুলি রিপোর্টের parameters হিসেবে পাঠানো হবে।
Report Parameters এর ধরণ
JasperReports এ parameters সাধারণত বিভিন্ন ধরণের হতে পারে। নিচে তাদের কিছু উদাহরণ দেওয়া হলো:
- String Parameters:
- ব্যবহারকারী নাম, অবস্থান, ইত্যাদি ইনপুট দিতে পারে।
<parameter name="Name" class="java.lang.String"/>
- Integer Parameters:
- সংখ্যা সম্পর্কিত ইনপুট, যেমন: প্রোডাক্ট কোড, সংখ্যা, পরিমাণ ইত্যাদি।
<parameter name="Quantity" class="java.lang.Integer"/>
- Date Parameters:
- Date ইনপুট যেমন: রেজিস্ট্রেশন তারিখ, অর্ডার তারিখ ইত্যাদি।
<parameter name="OrderDate" class="java.util.Date"/>
- Boolean Parameters:
- Boolean প্যারামিটার, যেমন: রিপোর্টটি দেখানো উচিত কি না, ফিল্টার প্রয়োগ করা উচিত কি না।
<parameter name="IncludeDetails" class="java.lang.Boolean"/>
JasperReports Studio তে Parameter Handling
JasperReports Studio তে parameters ব্যবহারের জন্য:
- Report Parameters উইন্ডো থেকে নতুন parameter তৈরি করুন।
- Prompting for User Input করতে Input Controls ব্যবহার করুন (যেমন: TextBox, DatePicker, ComboBox)।
- Parameters এর default values অথবা dynamic values সেট করুন।
- SQL Queries বা Expressions-এ parameters ব্যবহার করুন।
JasperReports-এ Report Parameters ব্যবহার করে আপনি user input নিতে পারেন যা রিপোর্টের কাস্টমাইজেশন এবং dynamic data ফিল্টারিংয়ের জন্য অত্যন্ত গুরুত্বপূর্ণ। এটি আপনার রিপোর্টকে আরও ইন্টারেক্টিভ এবং ব্যবহারকারী-বান্ধব করে তোলে। রিপোর্ট তৈরির সময় parameters ব্যবহার করে আপনি date ranges, filters, user preferences ইত্যাদি ইনপুট নিতে পারবেন এবং সেই অনুযায়ী ডেটা প্রদর্শন করতে পারবেন।
JasperReports Studio এবং Java code ব্যবহারের মাধ্যমে আপনি সহজেই dynamic reports তৈরি করতে পারেন, যেখানে ব্যবহারকারী তাদের প্রয়োজনীয় ইনপুট দিয়ে রিপোর্টের আউটপুট কাস্টমাইজ করতে পারবেন।
Read more