Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cách in nhiều báo cáo có mã vạch \ hoặc nhiều mã vạch trong một báo cáo

Nó có thể dễ dàng thực hiện với việc sửa đổi nhỏ truy vấn của bạn mà không cần lập trình theo một số cách.

Giải pháp 1. Sử dụng một báo cáo có thành phần Mã vạch trong băng tần Chi tiết

Bạn có thể sử dụng mẫu của một báo cáo để tạo nhiều mã vạch trong một báo cáo.

Trong trường hợp này, queryString biểu thức (hoạt động cho Oracle DB) sẽ như thế này:

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

- nó tạo ra một giá trị từ trình tự nhiều lần nếu bạn cần. $ P {số lượng} tham số xác định số hàng (mã vạch) sẽ được tạo.

rjxml đang hoạt động tệp:

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

Kết quả sẽ là ( $ P {số lượng} ==5 ):

Trong trường hợp của bạn, queryString biểu thức sẽ như thế này:

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

và biểu thức của Mã vạch thành phần sẽ là:

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

Giải pháp 2. Sử dụng băng tần Tiêu đề nhóm

Bạn có thể sử dụng cùng một queryString biểu thức như trong giải pháp đầu tiên. Nhóm trên rownum trường sẽ giúp chúng tôi tạo đơn báo cáo có nhiều mã vạch thuộc nhóm riêng (một nhóm - một mã vạch). Mã vạch thành phần phải được đặt vào Tiêu đề nhóm ban nhạc.

Sử dụng isStartNewPage thuộc tính chúng ta có thể quản lý để tạo nhóm trên trang mới hay không.

rjxml tệp:

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

Trong trường hợp isStartNewPage ="false" cho nhóm rownumGroup kết quả sẽ là ( $ P {số lượng} ==7 ):

Trong trường hợp isStartNewPage ="true" cho nhóm rownumGroup kết quả sẽ là ( $ P {số lượng} ==5 ):

Giải pháp 3. Sử dụng báo cáo phụ

Chúng tôi có thể thêm Báo cáo phụ thành phần của Chi tiết ban nhạc ( xem giải pháp đầu tiên ) hoặc Tiêu đề nhóm ( xem giải pháp thứ hai ) ban nhạc. Trong trường hợp này, bạn có thể thêm vào báo cáo phụ không chỉ Mã vạch nhưng mọi thứ bạn muốn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sự cố tò mò với Oracle UNION và ORDER BY

  2. Cách cài đặt SQLcl trên máy Mac

  3. Làm cách nào để CHỌN từ cột kiểu đối tượng trong Oracle 11g?

  4. Trang web ngừng hoạt động và nguồn cấp dữ liệu Twitter

  5. Tự động tăng trong Oracle mà không cần sử dụng trình kích hoạt