Grouping এর ধারণা এবং JasperReports এ Grouping কনফিগার করা

Report Grouping এবং Summarization - জ্যাসপার রিপোর্ট (JasperReports) - Java Technologies

385

Grouping হল একটি রিপোর্ট ডিজাইনের কৌশল যা ডেটাকে নির্দিষ্ট বিভাগে ভাগ করে, যাতে আপনি সম্পর্কিত ডেটাকে একত্রিত এবং সহজভাবে উপস্থাপন করতে পারেন। JasperReports-এ grouping ব্যবহৃত হয় যখন আপনাকে ডেটাকে এমনভাবে সাজাতে হয়, যাতে প্রতিটি গ্রুপের জন্য আলাদা অংশ (যেমন, শিরোনাম, সাবটোটাল, ইত্যাদি) দেখানো যায়।

Grouping রিপোর্টের বিভিন্ন অংশে ডেটার শ্রেণিবিভাগ এবং সাজানোর জন্য ব্যবহৃত হয়, যেমন বিক্রয়ের রিপোর্টে আপনি বিভিন্ন পণ্যের গ্রুপিং করতে পারেন এবং প্রতিটি পণ্যের জন্য বিক্রয় পরিসংখ্যান দেখাতে পারেন। এটি ডেটার মধ্যে সম্পর্ক সহজে দেখানোর জন্য ব্যবহৃত হয়, যেমন মাস ভিত্তিক বিক্রয়, পণ্য ভিত্তিক বিক্রয় ইত্যাদি।


JasperReports এ Grouping এর ধারণা

JasperReports-এ grouping সাধারণত group fields এবং group headers ব্যবহার করে করা হয়। আপনি একটি বা একাধিক ফিল্ডের উপর ভিত্তি করে ডেটাকে গ্রুপ করতে পারেন এবং গ্রুপের জন্য বিশেষ শিরোনাম, সাবটোটাল বা অন্যান্য কাস্টম আউটপুট কনফিগার করতে পারেন।

Grouping এ প্রধান উপাদানগুলি:

  1. Group Expression:
    • একটি group expression ব্যবহার করে আপনি কোন ফিল্ড বা মানের উপর ভিত্তি করে ডেটাকে গ্রুপ করবেন। এটি আপনার গ্রুপের ভিত্তি স্থাপন করবে।
  2. Group Header:
    • গ্রুপের জন্য একটি শিরোনাম (header) তৈরি করা হয়, যা গ্রুপের নাম বা অন্যান্য ডেটা প্রদর্শন করে।
  3. Group Footer:
    • গ্রুপের শেষে সাবটোটাল বা অন্যান্য পরিসংখ্যান দেখানোর জন্য গ্রুপ ফুটার ব্যবহার করা হয়।
  4. Group Total:
    • প্রতিটি গ্রুপের মোট বা গড় মান হিসাব করতে group total ব্যবহার করা হয়।

JasperReports এ Grouping কনফিগার করা

ধরা যাক, আপনি একটি বিক্রয়ের রিপোর্ট তৈরি করছেন এবং আপনি চান যে রিপোর্টটি প্রতি পণ্য ভিত্তিক গ্রুপিং করা হোক। নীচে গ্রুপিং কনফিগার করার উদাহরণ দেওয়া হলো।

1. JRXML ফাইল উদাহরণ:

<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">
    
    <!-- ডেটা সোর্স এবং কুয়েরি -->
    <queryString>
        <![CDATA[SELECT product_name, quantity, price FROM sales]]>
    </queryString>

    <!-- Field Definitions -->
    <field name="product_name" class="java.lang.String"/>
    <field name="quantity" class="java.lang.Integer"/>
    <field name="price" class="java.lang.Double"/>

    <!-- Grouping Configuration -->
    <group name="productGroup">
        <groupExpression><![CDATA[$F{product_name}]]></groupExpression>
    </group>

    <!-- Group Header for Product -->
    <band height="20" splitType="Stretch">
        <textField>
            <reportElement x="0" y="0" width="200" height="20"/>
            <textFieldExpression><![CDATA["Product: " + $F{product_name}]]></textFieldExpression>
        </textField>
    </band>

    <!-- Detail Section -->
    <detail>
        <band height="20">
            <textField>
                <reportElement x="0" y="0" width="100" height="20"/>
                <textFieldExpression><![CDATA[$F{quantity}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="100" y="0" width="100" height="20"/>
                <textFieldExpression><![CDATA[$F{price}]]></textFieldExpression>
            </textField>
        </band>
    </detail>

    <!-- Group Footer for Product Total -->
    <groupFooter>
        <band height="20">
            <textField>
                <reportElement x="0" y="0" width="200" height="20"/>
                <textFieldExpression><![CDATA["Total for " + $F{product_name} + ": "]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="200" y="0" width="100" height="20"/>
                <textFieldExpression><![CDATA[$V{PRODUCT_TOTAL}]]></textFieldExpression>
            </textField>
        </band>
    </groupFooter>
</jasperReport>

Explanation of the Above Example:

  1. Group Expression:
    • <groupExpression>: এখানে product_name ফিল্ডে গ্রুপিং করা হয়েছে, অর্থাৎ ডেটা গ্রুপ হবে পণ্য অনুযায়ী।
  2. Group Header:
    • গ্রুপের শিরোনাম হিসেবে product_name ফিল্ডের নাম প্রদর্শন করা হবে।
  3. Detail Section:
    • এই অংশে মূল ডেটা প্রদর্শিত হবে, যেমন quantity এবং price
  4. Group Footer:
    • প্রতিটি পণ্য গ্রুপের শেষে sub-total বা product total প্রদর্শন করা হবে। এখানে, $V{PRODUCT_TOTAL} ব্যবহার করা হয়েছে যা group total হিসাব করবে।

2. Group Total এবং Subtotal Calculation

JasperReports-এ group total বা subtotal গণনা করতে variable ব্যবহার করা হয়। এখানে একটি variable তৈরি করা হয়েছে যা product total গণনা করবে।

<variable name="PRODUCT_TOTAL" class="java.lang.Double" calculation="Sum">
    <variableExpression><![CDATA[$F{quantity} * $F{price}]]></variableExpression>
</variable>
  • $F{quantity} * $F{price}: প্রতিটি পণ্যের জন্য মোট মূল্য গণনা করা হচ্ছে, যেখানে quantity এবং price ফিল্ডের মান গুণ করা হচ্ছে।
  • calculation="Sum": এটি গ্রুপের জন্য মোট হিসাব করবে।

3. Java কোড দিয়ে Grouping এর সাথে রিপোর্ট ফিলিং

রিপোর্ট ফিলিংয়ের জন্য JasperFillManager ব্যবহার করা হয় এবং রিপোর্টে grouping কার্যকরী করার জন্য ডেটা এবং প্যারামিটার পাস করা হয়।

import net.sf.jasperreports.engine.*;
import java.sql.Connection;
import java.util.HashMap;

public class ReportGenerator {
    public static void main(String[] args) {
        try {
            // JRXML ফাইল থেকে রিপোর্ট তৈরি করা
            String reportPath = "path/to/salesReport.jasper";  // Path to compiled jasper report
            JasperReport jasperReport = JasperCompileManager.compileReport(reportPath);

            // JDBC ডেটাবেস সংযোগ
            Connection connection = JDBCDataSource.getConnection();  // Get JDBC Connection

            // প্যারামিটার
            HashMap<String, Object> parameters = new HashMap<>();
            parameters.put("ReportTitle", "Sales Report by Product");

            // রিপোর্ট ফিলিং (গ্রুপিংসহ)
            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, connection);

            // রিপোর্ট এক্সপোর্ট করা (PDF)
            JasperExportManager.exportReportToPdfFile(jasperPrint, "sales_report_by_product.pdf");
        } catch (JRException e) {
            e.printStackTrace();
        }
    }
}

Group By করার সুবিধা এবং ব্যবহার

  1. ডেটার শ্রেণীবিভাগ:
    • Grouping ডেটার শ্রেণীবিভাগে সহায়তা করে, যেমন বিক্রয় রিপোর্টে আপনি গ্রুপ করতে পারেন পণ্য অনুযায়ী বা মাস অনুযায়ী।
  2. ডেটার বিশ্লেষণ:
    • আপনি রিপোর্টের মধ্যে ডেটা বিশ্লেষণ করতে পারবেন গ্রুপ অনুযায়ী, যেমন মোট, গড়, সর্বোচ্চ বিক্রয় ইত্যাদি।
  3. প্রতিটি বিভাগের জন্য আলাদা শিরোনাম:
    • গ্রুপিংয়ের মাধ্যমে প্রতিটি বিভাগের জন্য আলাদা শিরোনাম এবং উপস্থাপনা তৈরি করা সহজ।
  4. কাস্টম রিপোর্ট:
    • গ্রুপিং ব্যবহার করে আপনি কাস্টম রিপোর্ট ডিজাইন করতে পারেন যেখানে প্রতিটি গ্রুপের জন্য আলাদা সাবটোটাল, গ্র্যান্ড টোটাল, এবং কাস্টম ডেটা প্রদর্শন করা হয়।

JasperReportsgrouping ব্যবহার করে আপনি রিপোর্টের ডেটাকে শ্রেণীবিভাগ এবং বিশ্লেষণ করতে পারেন, যেমন গ্রুপের মধ্যে সাবটোটাল বা মোট হিসাব করা। এটি ডেটার মধ্যে সম্পর্ক দেখাতে সহায়তা করে এবং বিশেষভাবে ব্যবসায়িক রিপোর্টিং সিস্টেমে গুরুত্বপূর্ণ ভূমিকা পালন করে। JRXML ফাইলের মাধ্যমে গ্রুপিং কনফিগারেশন করা হয় এবং Java কোড দিয়ে রিপোর্ট ফিলিং এবং এক্সপোর্ট করা হয়।

Content added By
Promotion

Are you sure to start over?

Loading...