我试图根据计算的数据在报告中对JasperReports中的数据进行分组。
我有一组活动数据。下面是一个高度简化的数据设置。 Step
只是按字段排序(在我的实际数据中,它是一个开始时间)。 Phase
(此处简化为3,但实际上更多)表示活动是离开(D),途中(E)还是到达(A)。 IdealBlock
是我想要对活动进行分组的内容,但数据库中没有实际字段。如您所见,出发指示一个新块,并且所有后续行具有相同的块编号,直到下一次出发(实际业务逻辑更复杂)。
Step Phase IdealBlock 1 D 1 2 E 1 3 E 1 4 A 1 5 D 2 6 E 2 7 E 2 8 A 2
由于没有真正的IdealBlock
字段,我希望能够计算块并具有块页脚。我已经制作了一个报告版本,该报告使用$F{IdealBlock}
表示群组表达式,而看起来很好与预期的2个群组。
但是,我的实际数据没有该字段。我试图创建一个" Block"变量来计算它:
Initial Value Expression: 1
Variable Expression: $V{Block} + ("D".equalsIgnoreCase($F{Phase}) ? 1 : 0)
或者如果您更喜欢JRXML:
<variable name="Block" class="java.lang.Integer">
<variableExpression><![CDATA[$V{Block} +
("D".equalsIgnoreCase($F{Phase}) ? 1 : 0)]]></variableExpression>
<initialValueExpression><![CDATA[0]]></initialValueExpression>
</variable>
当我使用$V{Block}
作为群组表达时,每行都会成为自己的群组。我希望它与我使用$F{IdealBlock}
时的工作方式相同(或几乎相同)。
所以我想知道:
这是示例JRXML文件,其中包含查询的SELECT部分中包含的数据。我使用的是JasperReports 5.6和SQL Server 2014,不过我也在JasperReports 6.3上尝试过相同的行为。
<?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="TestGroupWithVariable" language="groovy" pageWidth="612" pageHeight="792" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="765c6d1b-f59c-42c7-93a2-834625a91271">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<queryString>
<![CDATA[SELECT 1 as Step, 'D' AS Phase, 1 as IdealBlock
UNION SELECT 2, 'E', 1
UNION SELECT 3, 'E', 1
UNION SELECT 4, 'A', 1
UNION SELECT 5, 'D', 2
UNION SELECT 6, 'E', 2
UNION SELECT 7, 'E', 2
UNION SELECT 8, 'A', 2]]>
</queryString>
<field name="Step" class="java.lang.Integer"/>
<field name="Phase" class="java.lang.String"/>
<field name="IdealBlock" class="java.lang.Integer"/>
<variable name="Block" class="java.lang.Integer">
<variableExpression><![CDATA[$V{Block} +
("D".equalsIgnoreCase($F{Phase}) ? 1 : 0)]]></variableExpression>
<initialValueExpression><![CDATA[0]]></initialValueExpression>
</variable>
<group name="Block">
<groupExpression><![CDATA[$F{IdealBlock}]]></groupExpression>
<groupHeader>
<band height="22">
<textField>
<reportElement x="451" y="0" width="57" height="20" uuid="f4620cd3-77ee-45e8-ad7e-d171e84b45ad"/>
<textFieldExpression><![CDATA[$V{Block}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="400" y="0" width="51" height="20" uuid="452d3259-ce0d-44d7-9b31-744612dc68f4"/>
<text><![CDATA[Block Var]]></text>
</staticText>
<line>
<reportElement x="0" y="15" width="570" height="1" uuid="e220ec89-82c3-40fb-ba74-a5c55987e810"/>
<graphicElement>
<pen lineWidth="2.0"/>
</graphicElement>
</line>
<textField>
<reportElement x="51" y="0" width="100" height="20" uuid="3036504c-a816-4692-9bda-d4a35ca62d5a"/>
<textFieldExpression><![CDATA[$F{IdealBlock}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="0" y="0" width="51" height="20" uuid="a8c7ad92-af7b-4e86-8666-56ca0a91ed71"/>
<text><![CDATA[Ideal Blk]]></text>
</staticText>
</band>
</groupHeader>
<groupFooter>
<band height="25">
<textField>
<reportElement x="188" y="0" width="100" height="20" uuid="7f7ecb95-3178-467c-b13f-058dfcd122fd"/>
<textFieldExpression><![CDATA["END BLK " + $V{Block}]]></textFieldExpression>
</textField>
<line>
<reportElement x="0" y="0" width="570" height="1" uuid="52270f1e-069c-4684-a546-37acdea2def4"/>
</line>
</band>
</groupFooter>
</group>
<detail>
<band height="25" splitType="Stretch">
<staticText>
<reportElement x="110" y="0" width="40" height="20" uuid="02df6d93-4270-4edd-9540-b48a64173a22"/>
<text><![CDATA[Phase]]></text>
</staticText>
<textField>
<reportElement x="150" y="0" width="70" height="20" uuid="12983d11-44af-4d11-9528-f87794056c8c"/>
<textFieldExpression><![CDATA[$F{Phase}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="21" y="0" width="30" height="20" uuid="c8ea21cc-b260-4e93-bf1d-3ce293ee63e8"/>
<text><![CDATA[Step]]></text>
</staticText>
<textField>
<reportElement x="51" y="0" width="54" height="20" uuid="d8e93236-f7a4-48ed-8174-fe2fcb51bcbc"/>
<textFieldExpression><![CDATA[$F{Step}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="222" y="0" width="62" height="20" uuid="8edc5a1c-120c-4186-bbe6-f5adfc155209"/>
<text><![CDATA[IdealBlock]]></text>
</staticText>
<textField>
<reportElement x="284" y="0" width="62" height="20" uuid="d6ef4317-9aa2-449e-bb42-35c30ea80a5f"/>
<textFieldExpression><![CDATA[$F{IdealBlock}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="451" y="2" width="57" height="20" uuid="368be047-58c3-432d-b5bd-ea0653aa5b06"/>
<textFieldExpression><![CDATA[$V{Block}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="400" y="2" width="51" height="20" uuid="f70c15a3-be06-4205-abe9-a657620ba700"/>
<text><![CDATA[Block Var]]></text>
</staticText>
</band>
</detail>
</jasperReport>