簡體   English   中英

不同頁面中的Jasper Report打印組值

[英]Jasper Report print group values in different pages

使用iReport 4.1.3時,我遇到了這個基本問題。 我有兩個表“訂單”和“ order_details”。 我根據order_details中的每個訂單映射購物車中的各種產品。 例如:在訂單表中,我有:

order_id
123
456

在order_details表中,我將有:
order_id product_id
123 abc1
123 abc2
第456章
456 efg2
456 efg3

我在ireport中創建了以下jrxml:

    <?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="merchant_invoice" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
        <property name="ireport.zoom" value="1.0"/>
        <property name="ireport.x" value="0"/>
        <property name="ireport.y" value="0"/>
        <parameter name="order_ids" class="java.lang.String">
            <defaultValueExpression><![CDATA[]]></defaultValueExpression>
        </parameter>
        <queryString>
            <![CDATA[select
    o.order_id,od.product_id
    from cscart_orders o
    inner join cscart_order_details od on od.order_id=o.order_id
    where o.order_id in ($P{order_ids})]]>
        </queryString>
        <field name="order_id" class="java.math.BigInteger"/>
        <field name="product_id" class="java.math.BigInteger"/>
        <group name="order_id_group" isStartNewPage="true" isReprintHeaderOnEachPage="true">
            <groupExpression><![CDATA[$F{order_id}]]></groupExpression>
            <groupHeader>
                <band height="25">
                    <textField>
                        <reportElement x="6" y="3" width="380" height="20"/>
                        <textElement/>
                        <textFieldExpression><![CDATA["header for order_id "+$F{order_id}]]></textFieldExpression>
                    </textField>
                </band>
            </groupHeader>
            <groupFooter>
                <band height="25">
                    <textField>
                        <reportElement x="8" y="3" width="291" height="20"/>
                        <textElement/>
                        <textFieldExpression><![CDATA["Footer for order id : "+$F{order_id}]]></textFieldExpression>
                    </textField>
                </band>
            </groupFooter>
        </group>
        <background>
            <band splitType="Stretch"/>
        </background>
        <detail>
            <band height="30" splitType="Stretch">
                <textField>
                    <reportElement x="8" y="4" width="270" height="20"/>
                    <textElement/>
                    <textFieldExpression><![CDATA["Products with id :"+$F{product_id}]]></textFieldExpression>
                </textField>
            </band>
        </detail>
    </jasperReport>

但是,當我使用參數'123,456'對其進行預覽時,我只會得到一個頁面,其中僅包含第一訂單(即訂單123)的詳細信息。我沒有弄錯我在哪里做錯了。 請幫助。

如果您選擇多個訂單ID,則查詢應如下所示

select
o.order_id,od.product_id
from cscart_orders o
inner join cscart_order_details od on od.order_id=o.order_id
where $X{IN,o.order_id,order_ids}

參數order_ids的類應為“ java.util.Collection”,並且還可以提供默認值表達式

 <parameter name="order_ids" class="java.util.Collection"> 
 <defaultValueExpression><![CDATA[new ArrayList(Arrays.asList(new String[] {"123","456"}))]]></defaultValueExpression>
</parameter>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM