比较一行中的两列并删除它们是否匹配

时间:2016-06-01 11:29:09

标签: jasper-reports

我想在iReport中创建一个报告,这将显示一行Car权重,其中包括预期的权重和实际权重。我期待只展示实际重量和预期重量之间不同的汽车。我还希望在右侧显示一个额外的列,显示它们之间的差异。

E.g。

CAR         Expected Weight           ActualWeight           WeightDIFF
-------------------------------------------

> NUGLN9L       2000kg                    2200kg      200kg

> YBOL9GT        1700kg                   1700kg      0kg (Shouldn't display this row)

> CL55GBP        1100kg                   2200kg      1100kg

jrxml 的部分:

    <columnHeader>
        <band height="61" splitType="Stretch">
            <textField>
                <reportElement x="108" y="0" width="100" height="20" uuid="205a44be-528a-4d6b-83e7-85cc0f417fd6"/>
                <textFieldExpression><![CDATA[$F{car}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="219" y="0" width="100" height="20" uuid="704e546a-d4f1-4d8d-b5e7-a7ac8154d882"/>
                <textFieldExpression><![CDATA[$F{expectedWeight}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="332" y="0" width="100" height="20" uuid="08846a54-7415-4f32-a0ef-41f2770e2278"/>
                <textFieldExpression><![CDATA[$F{ActualWeight}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="443" y="0" width="100" height="20" uuid="7ebea114-3303-48c0-b877-f0940c62aa7f"/>
                <textFieldExpression><![CDATA[$F{WeightDIFF}]]></textFieldExpression>
            </textField>
        </band>
    </columnHeader>

任何帮助都会很棒

2 个答案:

答案 0 :(得分:1)

正如@AlexK所指出的,你可以使用Print when表达式。

<band>行之后,添加以下内容(我假设$ F {WeightDIFF}为Integer):

<printWhenExpression><![CDATA[$F{WeightDIFF} > 0]]></printWhenExpression>

答案 1 :(得分:1)

如果您使用的是iReport设计器,则可以选择屏幕上的字段,在右侧的属性窗格中,每个字段都有一个Print When Expression属性。您可以创建变量(布尔值最简单)。 E.G

!$F{CarWeight1}.equals($F{CarWeight2})

创建一个变量并将其设置为布尔值。当每个字段上的表达式属性时,将变量放入print中。当格式化时,每个字段为空白时也值得勾选删除行。

希望这有帮助。