JasperReports-এ complex expressions এবং conditional logic ব্যবহার করে রিপোর্টের মধ্যে বিভিন্ন ডেটার ভিত্তিতে ডায়নামিক কনটেন্ট তৈরি করা যায়। এটি বিশেষভাবে প্রয়োজনীয় যখন আপনি রিপোর্টে শর্তসাপেক্ষ ডেটা, কাস্টম লজিক, বা ডেটা ফিল্টারিং করতে চান। Conditional expressions এবং complex expressions ব্যবহার করে রিপোর্টের ফরম্যাট, ডেটা এবং লজিক কাস্টমাইজ করা সম্ভব।
Complex Expressions in JasperReports
JasperReports-এ complex expressions সাধারণত textFieldExpression, variableExpression, summaryExpression, printWhenExpression ইত্যাদি ক্ষেত্রে ব্যবহৃত হয়। এগুলোর মাধ্যমে আপনি বিভিন্ন শর্ত, গণনা, বা কাস্টম লজিক প্রয়োগ করতে পারেন।
Complex Expression উদাহরণ:
ধরা যাক, আপনার একটি রিপোর্টে Product এর Price এবং Discount দেওয়া আছে, এবং আপনি চান যে, Discount এর মান ১০% এর বেশি হলে একটি নির্দিষ্ট কলামে "High Discount" এবং কম হলে "Low Discount" দেখানো হোক।
textFieldExpression ব্যবহার:
<textField>
<reportElement x="0" y="0" width="200" height="30"/>
<textFieldExpression>
<![CDATA[
$F{discount} > 10 ? "High Discount" : "Low Discount"
]]>
</textFieldExpression>
</textField>
এখানে, $F{discount} ফিল্ডের মান যদি ১০ এর বেশি হয়, তাহলে "High Discount" দেখাবে, নতুবা "Low Discount" দেখাবে। এটি একটি conditional expression যা JasperReports-এ ব্যবহার করা হয়েছে।
Conditional Logic in JasperReports
JasperReports-এ conditional logic ব্যবহার করা হলে, আপনি বিভিন্ন ডেটা শর্তে ভিত্তি করে নির্দিষ্ট কাজ করতে পারেন, যেমন conditional text বা field display।
Conditional Logic উদাহরণ:
আপনি যদি চান যে, Sales রিপোর্টে যদি কোনো প্রোডাক্টের Quantity ১০০ এর বেশি থাকে, তাহলে সেই প্রোডাক্টের Price এবং Quantity উভয় ক্ষেত্রেই আলাদা আউটপুট দেখানো হবে। অন্যথায়, কেবল Price দেখানো হবে।
printWhenExpression ব্যবহার:
<textField>
<reportElement x="0" y="50" width="200" height="30"/>
<textFieldExpression><![CDATA[$F{price}]]></textFieldExpression>
<printWhenExpression><![CDATA[$F{quantity} > 100]]></printWhenExpression>
</textField>
এখানে, printWhenExpression শর্তটি নির্ধারণ করে যে, যদি quantity > 100 হয়, তখন শুধুমাত্র Price ফিল্ডটি প্রদর্শিত হবে। যদি শর্ত মেলে না, তবে এটি প্রদর্শিত হবে না।
Multiple Conditions with Nested Expressions
JasperReports-এ আপনি একাধিক শর্তের ভিত্তিতে কাস্টম nested expressions ব্যবহার করতে পারেন। এটি অনেক ধরনের boolean condition বা logical operation চেইন করে করতে হয়।
Nested Expressions উদাহরণ:
ধরা যাক, আপনি চান যদি Quantity ১০০ এর বেশি এবং Price ৫০ এর বেশি হয়, তবে "High Sales" দেখাবে, অন্যথায় "Low Sales" দেখাবে।
<textField>
<reportElement x="0" y="100" width="200" height="30"/>
<textFieldExpression>
<![CDATA[
($F{quantity} > 100 && $F{price} > 50) ? "High Sales" : "Low Sales"
]]>
</textFieldExpression>
</textField>
এখানে && (logical AND) অপারেটর ব্যবহার করে দুটি শর্ত যাচাই করা হয়েছে। যদি দুটি শর্তই মেলে, তাহলে "High Sales" প্রদর্শিত হবে, নতুবা "Low Sales"।
Conditional Formatting Based on Values
JasperReports-এ শর্তসাপেক্ষ text formatting এবং style পরিবর্তন করতে style বা conditional styles ব্যবহার করা যেতে পারে।
Conditional Formatting উদাহরণ:
ধরা যাক, আপনি চান যদি Price একটি নির্দিষ্ট পরিমাণের (যেমন, ১০০০ এর বেশি) বেশি হয়, তবে তার জন্য bold red text এবং যদি তা কম হয়, তবে normal text প্রদর্শিত হবে।
Conditional Style Example:
<styles>
<style name="highPrice" isDefault="false" fontSize="12" bold="true" forecolor="#FF0000"/>
<style name="lowPrice" isDefault="true" fontSize="12" bold="false"/>
</styles>
<textField>
<reportElement x="0" y="150" width="200" height="30"/>
<textFieldExpression><![CDATA[$F{price}]]></textFieldExpression>
<textElement>
<font fontName="Arial" size="12"/>
<conditionalStyle>
<conditionExpression><![CDATA[$F{price} > 1000]]></conditionExpression>
<style name="highPrice"/>
<style name="lowPrice"/>
</conditionalStyle>
</textElement>
</textField>
এখানে, conditionalStyle ব্যবহার করা হয়েছে যা Price ফিল্ডের মানের উপর ভিত্তি করে শর্তসাপেক্ষ স্টাইল প্রয়োগ করবে। যদি Price > 1000 হয়, তাহলে bold red text প্রযোজ্য হবে, অন্যথায় সাধারণ ফন্ট স্টাইল থাকবে।
Complex Expressions for Calculations
JasperReports-এ complex expressions ব্যবহার করে আপনি অংক গাণিতিক হিসাব, সময় এবং তারিখ হিসাব, এবং অন্যান্য লজিক্যাল হিসাব করতে পারেন।
Calculation Example (Sum, Average):
ধরা যাক, আপনি চান রিপোর্টে সমস্ত প্রোডাক্টের মোট Price এবং Quantity এর গড় বের করতে। আপনি Variables এবং Expressions ব্যবহার করে এমন হিসাব করতে পারেন।
<variable name="totalPrice" class="java.lang.Double" calculation="Sum">
<variableExpression><![CDATA[$F{price}]]></variableExpression>
</variable>
<variable name="totalQuantity" class="java.lang.Integer" calculation="Sum">
<variableExpression><![CDATA[$F{quantity}]]></variableExpression>
</variable>
<variable name="averagePrice" class="java.lang.Double" calculation="Average">
<variableExpression><![CDATA[$F{price}]]></variableExpression>
</variable>
<textField>
<reportElement x="0" y="200" width="200" height="30"/>
<textFieldExpression><![CDATA[$V{totalPrice}]]></textFieldExpression>
</textField>
এখানে:
totalPriceএবংtotalQuantityপ্রতিটি প্রোডাক্টের Price এবং Quantity এর যোগফল হিসাব করছে।averagePriceফিল্ডটি গড় মান হিসাব করছে।
- Complex Expressions ব্যবহার করে JasperReports-এ আপনি কাস্টম গণনা, ডেটার প্রক্রিয়া এবং আউটপুট কাস্টমাইজেশন করতে পারেন।
- Conditional Logic (যেমন
if,else, ternary operators) ব্যবহার করে আপনি রিপোর্টে ডেটার শর্তসাপেক্ষ প্রক্রিয়া পরিচালনা করতে পারেন। - Conditional Formatting এবং Style Customization এর মাধ্যমে রিপোর্টের ভিজ্যুয়াল স্টাইল কাস্টমাইজ করা যায়।
- Calculation Expressions (যেমন গড়, যোগফল, শতাংশ) ব্যবহার করে আপনি রিপোর্টে বিভিন্ন ধরনের ডেটা বিশ্লেষণ করতে পারেন।
এই টেকনিকগুলো JasperReports-এর ক্ষমতা বৃদ্ধি করতে সহায়তা করে, বিশেষ করে যখন রিপোর্টগুলোর মধ্যে ডায়নামিক কনটেন্ট, ডেটা ফিল্টারিং, এবং কাস্টম লজিক প্রয়োজন।
Read more