我目前正在撰写一份报告,并注意到我正在重复上述值。问题不在于值是重复的,而是我得到的值在第一个初始值之后应为0。
例如:
我的报告显示的估算运费可能是$700
,而且由于订单分为3次发货,报告会打印$700
3次。这不是真的,因为估计的运输只应计算一次。
我正在使用iReport
我的问题是: 如何保持第一个重复值相同但每个值设置为' 0' ?
这是我的SQL
SELECT
CUSTOMER."NAME" AS CUSTOMER_NAME,
SO."NUM" AS SO_NUM,
COMPANY."NAME" AS COMPANY_NAME,
SHIPCARTON."FREIGHTAMOUNT" AS SHIPCARTON_FREIGHTAMOUNT,
SHIP."SOID" AS SHIP_SOID,
SOITEM."UNITPRICE" AS SOITEM_UNITPRICE,
PRODUCT."PARTID" AS PRODUCT_PARTID,
SHIP."DATESHIPPED" AS SHIP_DATESHIPPED
FROM
"CUSTOMER" CUSTOMER INNER JOIN "SO" SO ON CUSTOMER."ID" = SO."CUSTOMERID"
INNER JOIN "SHIP" SHIP ON SO."ID" = SHIP."SOID"
INNER JOIN "SOITEM" SOITEM ON SO."ID" = SOITEM."SOID"
INNER JOIN "PRODUCT" PRODUCT ON SOITEM."PRODUCTID" = PRODUCT."ID"
INNER JOIN "SHIPCARTON" SHIPCARTON ON SHIP."ID" = SHIPCARTON."SHIPID",
"COMPANY" COMPANY
WHERE
PRODUCT."PARTID" = 947
AND SHIP."DATESHIPPED" BETWEEN $P{From} AND $P{To}
AND SHIPCARTON."FREIGHTAMOUNT" != 0
ORDER BY
2
更新
现在我的变量shipPriceDif
无法计算我的新变量estimatedShipPrice
。即使将变量设置为组。
这是一张进一步解释的图片 -
答案 0 :(得分:1)
添加到你的sql SOITEM."SOID"
(我们检查这是否重复),你得到一个字段
<field name="SOID" class="java.lang.Integer"/>
在SOID
<group name="SOID">
<groupExpression><![CDATA[$F{SOID}]]></groupExpression>
</group>
然后创建一个变量,使用计算SOID
<variable name="SOID_Count" class="java.lang.Integer" resetType="Group" resetGroup="SOID" calculation="Count">
<variableExpression><![CDATA[$F{SOID}]]></variableExpression>
</variable>
此代码的jrxml中的序列为
<field name="SOID" class="java.lang.Integer"/>
<variable name="SOID_Count" class="java.lang.Integer" resetType="Group" resetGroup="SOID" calculation="Count">
<variableExpression><![CDATA[$F{SOID}]]></variableExpression>
</variable>
<group name="SOID">
<groupExpression><![CDATA[$F{SOID}]]></groupExpression>
</group>
此变量现在可用于评估您是否有重复的SOID,重复SOID
textField
的示例如果重复SOID
则显示0
<textField pattern="###0">
<reportElement x="143" y="0" width="105" height="20" uuid="a0e2ae10-906e-4d0f-aebd-30fc0c694aca">
</reportElement>
<textElement textAlignment="Right" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$V{SOID_Count}<=1?$F{SOITEM_UNITPRICE}:0]]></textFieldExpression>
</textField>
您希望改善报告的那一天,只需在您的论坛中添加groupHeader
个频段,然后将textField放入此频段