sql >> Databáze >  >> RDS >> Oracle

Jak vytisknout několik zpráv s čárovým kódem \ nebo několik čárových kódů v jedné zprávě

To lze snadno provést s malými úpravami vašeho dotazu bez programování několika způsoby.

Řešení 1. Použití jedné zprávy s komponentou Barcode v pásmu Detail

Šablonu jedné zprávy můžete použít pro generování několika čárových kódů v jednom nahlásit.

V tomto případě queryString výraz (funguje pro Oracle DB) bude vypadat takto:

SELECT seq_barcode.nextval AS barcode, rownum FROM dual CONNECT BY LEVEL <= $P{quantity}

- generuje hodnotu ze sekvence tolikrát, kolikrát potřebujete. $P{množství} Parametr určuje počet řádků (čárových kódů), které mají být vygenerovány.

Pracovní rjxml soubor:

<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>

Výsledek bude ($P{množství} ==5 ):

Ve vašem případě queryString výraz bude vypadat takto:

SELECT to_char(PALLET_ID_NO_SEQ.nextval) AS barcode, rownum FROM dual CONNECT BY LEVEL <= $P{quantity}

a výraz čárového kódu komponenta bude:

new com.pepkorit.BarbecueRotateRenderer(
    net.sourceforge.barbecue.BarcodeFactory.createCode128C($F{barcode}),
    false, true, 1, 50, 190, 50)

Řešení 2. Použití skupiny záhlaví skupiny

Můžete použít stejný queryString výraz jako v prvním řešení. Skupina na rownum pole nám pomůže vygenerovat jednotlivý report s mnoha čárovými kódy patřícími do vlastní skupiny (jedna skupina - jeden čárový kód). Čárový kód komponenta by měla být umístěna do záhlaví skupiny kapela.

Pomocí isStartNewPage vlastnost, kterou můžeme zvládnout generovat skupinu na nové stránce nebo ne.

Soubor rjxml soubor:

<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>

V případě isStartNewPage="false" pro skupinu rownumGroup výsledek bude ($P{quantity}==7 ):

V případě isStartNewPage="true" pro skupinu rownumGroup výsledek bude ($P{množství} ==5 ):

Řešení 3. Použití podsestavy

Můžeme přidat Podsestava komponentu do Podrobnosti pásmo (viz první řešení ) nebo Záhlaví skupiny (viz druhé řešení ) kapela. V tomto případě můžete do podsestavy přidat nejen čárový kód komponentu, ale vše, co chcete.



  1. Příkaz MySQL TABLE

  2. Jak exportovat výsledek dotazu do csv v Oracle SQL Developer?

  3. Získání seznamu dat v rozsahu v PostgreSQL

  4. ORACLE a TRIGGERS (vloženo, aktualizováno, odstraněno)