Subreport Integration এবং Main Report এর সাথে Data Exchange

Subreports ব্যবস্থাপনা - জ্যাসপার রিপোর্ট (JasperReports) - Java Technologies

316

JasperReports এ subreports ব্যবহার করে আপনি মূল রিপোর্টের মধ্যে বিভিন্ন ছোট রিপোর্ট সংযুক্ত করতে পারেন। এটি বিশেষভাবে উপকারী যখন আপনার রিপোর্টের একটি অংশ আরেকটি রিপোর্টের মাধ্যমে প্রদর্শন করতে হয়। Subreport Integration মূল রিপোর্টের সাথে ডেটা এক্সচেঞ্জ করার জন্য ব্যবহার করা হয়, যাতে আপনি একটি বৃহত্তর রিপোর্টে ডাইনামিক উপাদান যোগ করতে পারেন।


Subreport Integration:

Subreport হল এমন একটি রিপোর্ট যা অন্য একটি রিপোর্টের ভিতরে অন্তর্ভুক্ত করা হয়। এটি nested reports তৈরিতে সহায়ক এবং অনেক ধরনের ডেটা সেগমেন্ট বা ডিজাইন কনটেন্ট দেখানোর জন্য ব্যবহৃত হয়।

Subreport Integration এর সুবিধা:

  1. Modular Design: Subreport ব্যবহারের মাধ্যমে আপনি একটি বড় রিপোর্টকে ছোট, রিসাইক্লেবল অংশে ভাগ করতে পারেন।
  2. Data Sharing: Main report এবং subreport একে অপরের সাথে ডেটা শেয়ার করতে পারে।
  3. Reusability: Subreports একাধিক মূল রিপোর্টে ব্যবহার করা যায়, ফলে কোড পুনরায় ব্যবহার সহজ হয়।

Subreport ব্যবহার করার প্রক্রিয়া:

  1. Subreport তৈরি: প্রথমে একটি subreport তৈরি করুন। এটি একাধিক ক্ষেত্র, ভেরিয়েবল, এবং ফিল্টার থাকতে পারে।
  2. Subreport Integration: মূল রিপোর্টে subreport ব্যবহার করুন এবং ডেটা বিনিময়ের জন্য parameters, fields বা data sources শেয়ার করুন।

Subreport তৈরি এবং ব্যবহার করা

Step 1: Subreport তৈরি করা:

ধরা যাক, আপনি একটি Employee রিপোর্ট তৈরি করছেন এবং এর মধ্যে আপনি Department সম্পর্কিত তথ্য দেখতে চান। আপনি EmployeeReport নামে একটি মূল রিপোর্ট তৈরি করবেন এবং DepartmentReport নামে একটি subreport তৈরি করবেন।

DepartmentReport.jrxml (Subreport):

<?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="DepartmentReport" pageWidth="595" pageHeight="842" columnWidth="515" leftMargin="40" 
    rightMargin="40" topMargin="40" bottomMargin="40">
    
    <field name="departmentId" class="java.lang.Integer"/>
    <field name="departmentName" class="java.lang.String"/>

    <detail>
        <band height="20">
            <textField>
                <reportElement x="0" y="0" width="200" height="20"/>
                <textFieldExpression><![CDATA[$F{departmentName}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

এখানে, DepartmentReport একটি subreport যেটি departmentName এবং departmentId ফিল্ড দেখাবে।


Step 2: Main Report তৈরি করা:

এখন, মূল রিপোর্টে subreport ব্যবহার করা হবে। EmployeeReport.jrxml নামক রিপোর্টে DepartmentReport subreport অন্তর্ভুক্ত করা হবে।

EmployeeReport.jrxml (Main Report):

<?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="EmployeeReport" pageWidth="595" pageHeight="842" columnWidth="515" leftMargin="40" 
    rightMargin="40" topMargin="40" bottomMargin="40">
    
    <field name="employeeId" class="java.lang.Integer"/>
    <field name="employeeName" class="java.lang.String"/>
    <field name="departmentId" class="java.lang.Integer"/>

    <!-- Subreport Integration -->
    <subreport>
        <reportElement x="0" y="40" width="500" height="100"/>
        <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{departmentId})]]></dataSourceExpression>
        <subreportExpression><![CDATA["DepartmentReport.jasper"]]></subreportExpression>
    </subreport>

    <detail>
        <band height="40">
            <textField>
                <reportElement x="0" y="0" width="200" height="20"/>
                <textFieldExpression><![CDATA[$F{employeeName}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>
  • Subreport Integration: <subreport> ট্যাগের মধ্যে subreportExpression এবং dataSourceExpression ব্যবহার করে আপনি subreport যোগ করেছেন।
  • dataSourceExpression: এখানে $F{departmentId} এর মাধ্যমে মূল রিপোর্টের ডেটা departmentId এর সাথে subreport এর জন্য ডেটা পাঠানো হচ্ছে।

Step 3: Main Report এবং Subreport এর মধ্যে Data Exchange

JasperReports main report এবং subreport এর মধ্যে ডেটা শেয়ার করতে parameters, fields, এবং data sources ব্যবহার করে ডেটা এক্সচেঞ্জ করতে সাহায্য করে।

Parameters Exchange Example:

  1. Subreport প্যারামিটার প্রেরণ: আপনি মূল রিপোর্টের প্যারামিটারগুলো subreport এ পাঠাতে পারেন। উদাহরণস্বরূপ, employeeId এর ভিত্তিতে departmentId ফিল্ড দেখানো হবে।
<subreport>
    <reportElement x="0" y="40" width="500" height="100"/>
    <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{departmentId})]]></dataSourceExpression>
    <subreportExpression><![CDATA["DepartmentReport.jasper"]]></subreportExpression>
    <subreportParameter>
        <subreportParameterExpression><![CDATA[$P{employeeId}]]></subreportParameterExpression>
    </subreportParameter>
</subreport>
  1. Main Report থেকে Subreport Parameters পাঠানো: যখন রিপোর্টটি পূর্ণ হবে, আপনি main report থেকে subreport এর প্যারামিটার হিসেবে employeeId পাঠাতে পারবেন, যা subreport এ ডেটা ফিল্টার করবে।

Step 4: রিপোর্ট কম্পাইল এবং জেনারেট করা

  1. JasperReport Compile: প্রথমে মূল রিপোর্ট এবং subreport কম্পাইল করতে হবে। এটি .jrxml ফাইল থেকে .jasper ফাইল তৈরি করবে।
JasperReport mainReport = JasperCompileManager.compileReport("EmployeeReport.jrxml");
JasperReport subReport = JasperCompileManager.compileReport("DepartmentReport.jrxml");
  1. Fill Report with Data: পরে মূল রিপোর্টে ডেটা যোগ করতে হবে এবং subreport সহ রিপোর্ট পূর্ণ করতে হবে।
Map<String, Object> parameters = new HashMap<>();
parameters.put("employeeId", 1);
parameters.put("departmentId", 101);

JasperPrint jasperPrint = JasperFillManager.fillReport(mainReport, parameters, dataSource);
  1. Export Report to PDF: রিপোর্ট তৈরি হলে, তা PDF, HTML, Excel বা অন্যান্য ফরম্যাটে এক্সপোর্ট করা যেতে পারে।
JasperExportManager.exportReportToPdfFile(jasperPrint, "EmployeeReport.pdf");

  • Subreport Integration: JasperReports-এ subreport ব্যবহার করা অত্যন্ত সুবিধাজনক যখন মূল রিপোর্টের ভিতরে অন্য রিপোর্টের আউটপুট অন্তর্ভুক্ত করতে হয়।
  • Data Exchange: মূল রিপোর্ট এবং subreport এর মধ্যে ডেটা শেয়ার করতে parameters, fields, এবং data sources ব্যবহার করা হয়।
  • Modular Reports: Subreports ব্যবহার করে আপনি রিপোর্টের গঠনকে মডুলার করতে পারেন, যা পরবর্তীতে রিসাইক্লেবল ও ব্যবহারে সহজ হয়ে ওঠে।

JasperReports এর এই ক্ষমতা আপনাকে ডাইনামিক এবং কাস্টম রিপোর্ট তৈরি করতে সক্ষম করে, যেখানে রিপোর্টের ভিতরে একাধিক উপাদান এবং ডেটা মডিউল সহজভাবে একসাথে কাজ করতে পারে।

Content added By
Promotion

Are you sure to start over?

Loading...