इसे कई तरीकों से प्रोग्रामिंग के बिना आपकी क्वेरी के छोटे संशोधन के साथ आसानी से किया जा सकता है।
समाधान 1. विवरण बैंड में बारकोड घटक के साथ एकल रिपोर्ट का उपयोग करना
एक . में कई बारकोड जेनरेट करने के लिए आप एकल रिपोर्ट के टेम्प्लेट का उपयोग कर सकते हैं रिपोर्ट।
इस मामले में क्वेरीस्ट्रिंग एक्सप्रेशन (Oracle . के लिए काम करता है) डीबी) इस तरह होगा:
SELECT seq_barcode.nextval AS barcode, rownum FROM dual CONNECT BY LEVEL <= $P{quantity}
- यह अनुक्रम से एक मूल्य उत्पन्न करता है जितनी बार आपको आवश्यकता होती है। $P{quantity} पैरामीटर उत्पन्न होने वाली पंक्तियों (बारकोड) की संख्या निर्धारित करता है।
काम कर रहे rjxml फ़ाइल:
<jasperReport ...>
<parameter name="quantity" class="java.lang.Integer">
<defaultValueExpression><![CDATA[20]]></defaultValueExpression>
</parameter>
<queryString>
<![CDATA[SELECT seq_barcode.nextval AS barcode, rownum FROM dual CONNECT BY LEVEL <= $P{quantity}]]>
</queryString>
<field name="BARCODE" class="java.lang.Integer"/>
<field name="ROWNUM" class="java.lang.Integer"/>
<title>
<band height="82" splitType="Stretch">
<textField>
<reportElement x="145" y="18" width="240" height="20"/>
<textElement/>
<textFieldExpression><![CDATA["The number of barcodes is: " + $P{quantity}]]></textFieldExpression>
</textField>
</band>
</title>
<detail>
<band height="47" splitType="Stretch">
<componentElement>
<reportElement x="145" y="10" width="200" height="28"/>
<jr:barbecue xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" type="2of7" drawText="false" checksumRequired="false">
<jr:codeExpression><![CDATA[$F{BARCODE}]]></jr:codeExpression>
</jr:barbecue>
</componentElement>
</band>
</detail>
</jasperReport>
परिणाम होगा ($P{quantity} ==5 ):
आपके मामले में queryString एक्सप्रेशन इस तरह होगा:
SELECT to_char(PALLET_ID_NO_SEQ.nextval) AS barcode, rownum FROM dual CONNECT BY LEVEL <= $P{quantity}
और बारकोड . की अभिव्यक्ति घटक होगा:
new com.pepkorit.BarbecueRotateRenderer(
net.sourceforge.barbecue.BarcodeFactory.createCode128C($F{barcode}),
false, true, 1, 50, 190, 50)
समाधान 2. समूह हैडर बैंड का उपयोग करना
आप उसी queryString का उपयोग कर सकते हैं पहले समाधान के रूप में अभिव्यक्ति। rownum . पर समूह फ़ील्ड हमें एकल . उत्पन्न करने में मदद करेगी अपने स्वयं के समूह (एक समूह - एक बारकोड) से संबंधित कई बारकोड के साथ रिपोर्ट करें। बारकोड घटक को समूह शीर्षलेख में रखा जाना चाहिए बैंड।
isStartNewPage . का उपयोग करना संपत्ति हम नए पृष्ठ पर समूह उत्पन्न करने के लिए प्रबंधित कर सकते हैं या नहीं।
rjxml फ़ाइल:
<jasperReport ...>
<parameter name="quantity" class="java.lang.Integer">
<defaultValueExpression><![CDATA[20]]></defaultValueExpression>
</parameter>
<queryString>
<![CDATA[SELECT seq_barcode.nextval AS barcode, rownum FROM dual CONNECT BY LEVEL <= $P{quantity}]]>
</queryString>
<field name="BARCODE" class="java.lang.Integer"/>
<field name="ROWNUM" class="java.lang.Integer"/>
<group name="rownumGroup" isStartNewPage="true">
<groupExpression><![CDATA[$F{ROWNUM}]]></groupExpression>
<groupHeader>
<band height="50">
<componentElement>
<reportElement x="145" y="11" width="200" height="28"/>
<jr:barbecue xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" type="2of7" drawText="false" checksumRequired="false">
<jr:codeExpression><![CDATA[$F{BARCODE}]]></jr:codeExpression>
</jr:barbecue>
</componentElement>
</band>
</groupHeader>
</group>
<title>
<band height="82" splitType="Stretch">
<textField>
<reportElement x="145" y="18" width="240" height="20"/>
<textElement/>
<textFieldExpression><![CDATA["The number of barcodes is: " + $P{quantity}]]></textFieldExpression>
</textField>
</band>
</title>
</jasperReport>
मामले में isStartNewPage="false" समूह के लिए rownumGroup परिणाम होगा ($P{quantity}==7 ):
मामले में isStartNewPage="true" समूह के लिए rownumGroup परिणाम होगा ($P{quantity} ==5 ):
समाधान 3. सबरिपोर्ट का उपयोग करना
हम सबरेपोर्ट जोड़ सकते हैं विवरण . का घटक बैंड (पहला समाधान देखें ) या समूह हैडर (दूसरा समाधान देखें ) बैंड। इस मामले में आप सबरिपोर्ट में न केवल बारकोड . जोड़ सकते हैं घटक, लेकिन वह सब कुछ जो आप चाहते हैं।