jasper-reports - 尝试在 jasper studio 中添加数据透视表时,如何避免错误递增交叉表数据集?

标签 jasper-reports pivot crosstab

我想在 jasper 报告中添加一个数据透视表(交叉表)。添加数据透视表后,下载文件时出现错误。我尝试通过运行查询进行调试,但没有错误,我还尝试通过在 View 上显示参数来进行调试,参数显示没有错误,我还尝试显示查询结果,并且数据显示出来了。

那么我的问题是什么?以及如何修复我的代码?

详细信息带

<detail>
    <band height="230">
        <crosstab>
            <reportElement x="167" y="30" width="200" height="200" uuid="b1977adf-e860-43cf-8940-fe4862f16621"/>
            <rowGroup name="KOMPETENSI1" width="60">
                <bucket class="java.lang.String">
                    <bucketExpression><![CDATA[$F{KOMPETENSI}]]></bucketExpression>
                </bucket>
                <crosstabRowHeader>
                    <cellContents mode="Opaque" style="Crosstab_CH">
                        <textField>
                            <reportElement x="0" y="0" width="60" height="20" uuid="72845a66-f743-4f35-8091-02df93de67d0"/>
                            <textFieldExpression><![CDATA[$V{KOMPETENSI1}]]></textFieldExpression>
                        </textField>
                    </cellContents>
                </crosstabRowHeader>
                <crosstabTotalRowHeader>
                    <cellContents>
                        <staticText>
                            <reportElement x="0" y="0" width="-2147483648" height="-2147483648" uuid="5792f3fa-1bb5-4134-91e1-b51918c05ec0"/>
                            <text><![CDATA[Total KOMPETENSI1]]></text>
                        </staticText>
                    </cellContents>
                </crosstabTotalRowHeader>
            </rowGroup>
            <columnGroup name="TAHUN1" height="20">
                <bucket class="java.lang.String">
                    <bucketExpression><![CDATA[$F{TAHUN}]]></bucketExpression>
                </bucket>
                <crosstabColumnHeader>
                    <cellContents mode="Opaque" style="Crosstab_CH">
                        <textField>
                            <reportElement x="0" y="0" width="60" height="20" uuid="fd89bbdf-eb6c-4c75-ab2c-9414ccd88458"/>
                            <textFieldExpression><![CDATA[$V{TAHUN1}]]></textFieldExpression>
                        </textField>
                    </cellContents>
                </crosstabColumnHeader>
                <crosstabTotalColumnHeader>
                    <cellContents>
                        <staticText>
                            <reportElement x="0" y="0" width="-2147483648" height="-2147483648" uuid="2d91db64-a9d7-43d3-b1c5-4c61412de5a1"/>
                            <text><![CDATA[Total TAHUN1]]></text>
                        </staticText>
                    </cellContents>
                </crosstabTotalColumnHeader>
            </columnGroup>
            <columnGroup name="JOB1" height="20">
                <bucket class="java.lang.String">
                    <bucketExpression><![CDATA[$F{JOB}]]></bucketExpression>
                </bucket>
                <crosstabColumnHeader>
                    <cellContents mode="Opaque" style="Crosstab_CH">
                        <textField>
                            <reportElement x="0" y="0" width="60" height="20" uuid="6adc10a6-8c28-4d17-bc6d-32727f7a8805"/>
                            <textFieldExpression><![CDATA[$V{JOB1}]]></textFieldExpression>
                        </textField>
                    </cellContents>
                </crosstabColumnHeader>
                <crosstabTotalColumnHeader>
                    <cellContents>
                        <staticText>
                            <reportElement x="0" y="0" width="-2147483648" height="-2147483648" uuid="fe8d03a8-5308-4845-b868-2b4cec45c2b5"/>
                            <text><![CDATA[Total JOB1]]></text>
                        </staticText>
                    </cellContents>
                </crosstabTotalColumnHeader>
            </columnGroup>
            <measure name="LEVEL_JOB_MEASURE1" class="java.lang.String">
                <measureExpression><![CDATA[$F{LEVEL_JOB}]]></measureExpression>
            </measure>
            <measure name="LEVEL_KOMPETENSI_MEASURE1" class="java.lang.String">
                <measureExpression><![CDATA[$F{LEVEL_KOMPETENSI}]]></measureExpression>
            </measure>
            <crosstabCell width="60" height="20">
                <cellContents mode="Opaque" style="Crosstab_CD">
                    <textField>
                        <reportElement x="0" y="0" width="60" height="10" uuid="0e4ec703-4f2c-4389-bb9b-02a7f8df230e"/>
                        <textFieldExpression><![CDATA[$V{LEVEL_JOB_MEASURE1}]]></textFieldExpression>
                    </textField>
                    <textField>
                        <reportElement x="0" y="10" width="60" height="10" uuid="8f49c8dc-e172-4407-ba54-6aa077591235"/>
                        <textFieldExpression><![CDATA[$V{LEVEL_KOMPETENSI_MEASURE1}]]></textFieldExpression>
                    </textField>
                </cellContents>
            </crosstabCell>
            <crosstabCell width="60" height="20" columnTotalGroup="TAHUN1">
                <cellContents mode="Opaque" style="Crosstab_CT">
                    <textField>
                        <reportElement x="0" y="0" width="60" height="10" forecolor="#FFFFFF" uuid="78be64d3-2d78-411f-9d60-3b545311e376"/>
                        <textFieldExpression><![CDATA[$V{LEVEL_JOB_MEASURE1}]]></textFieldExpression>
                    </textField>
                    <textField>
                        <reportElement x="0" y="10" width="60" height="10" forecolor="#FFFFFF" uuid="47ac3c87-fee5-4e99-bade-9304180bdc2c"/>
                        <textFieldExpression><![CDATA[$V{LEVEL_KOMPETENSI_MEASURE1}]]></textFieldExpression>
                    </textField>
                </cellContents>
            </crosstabCell>
            <crosstabCell width="60" height="20" columnTotalGroup="JOB1">
                <cellContents mode="Opaque" style="Crosstab_CG">
                    <textField>
                        <reportElement x="0" y="0" width="60" height="10" uuid="94604b9b-36f7-4572-8c24-c48a538503b8"/>
                        <textFieldExpression><![CDATA[$V{LEVEL_JOB_MEASURE1}]]></textFieldExpression>
                    </textField>
                    <textField>
                        <reportElement x="0" y="10" width="60" height="10" uuid="8f2f6f73-049e-45ae-9d5b-fe55abad0c24"/>
                        <textFieldExpression><![CDATA[$V{LEVEL_KOMPETENSI_MEASURE1}]]></textFieldExpression>
                    </textField>
                </cellContents>
            </crosstabCell>
            <crosstabCell width="60" height="20" rowTotalGroup="KOMPETENSI1">
                <cellContents mode="Opaque" style="Crosstab_CT">
                    <textField>
                        <reportElement x="0" y="0" width="60" height="10" forecolor="#FFFFFF" uuid="41785b14-fc8f-4c85-928b-0df8555ffcb5"/>
                        <textFieldExpression><![CDATA[$V{LEVEL_JOB_MEASURE1}]]></textFieldExpression>
                    </textField>
                    <textField>
                        <reportElement x="0" y="10" width="60" height="10" forecolor="#FFFFFF" uuid="0cfec42f-0f33-46ff-9367-2c0c4978744c"/>
                        <textFieldExpression><![CDATA[$V{LEVEL_KOMPETENSI_MEASURE1}]]></textFieldExpression>
                    </textField>
                </cellContents>
            </crosstabCell>
            <crosstabCell width="60" height="20" rowTotalGroup="KOMPETENSI1" columnTotalGroup="TAHUN1">
                <cellContents mode="Opaque" style="Crosstab_CT">
                    <textField>
                        <reportElement x="0" y="0" width="60" height="10" forecolor="#FFFFFF" uuid="1081fcf5-f921-47a0-89c0-923b9be4fd73"/>
                        <textFieldExpression><![CDATA[$V{LEVEL_JOB_MEASURE1}]]></textFieldExpression>
                    </textField>
                    <textField>
                        <reportElement x="0" y="10" width="60" height="10" forecolor="#FFFFFF" uuid="0215fe30-2917-40a7-84d1-2cdac6216373"/>
                        <textFieldExpression><![CDATA[$V{LEVEL_KOMPETENSI_MEASURE1}]]></textFieldExpression>
                    </textField>
                </cellContents>
            </crosstabCell>
            <crosstabCell width="60" height="20" rowTotalGroup="KOMPETENSI1" columnTotalGroup="JOB1">
                <cellContents mode="Opaque" style="Crosstab_CT">
                    <textField>
                        <reportElement x="0" y="0" width="60" height="10" forecolor="#FFFFFF" uuid="ba2855de-e2bf-4354-9c4f-67105912b4d7"/>
                        <textFieldExpression><![CDATA[$V{LEVEL_JOB_MEASURE1}]]></textFieldExpression>
                    </textField>
                    <textField>
                        <reportElement x="0" y="10" width="60" height="10" forecolor="#FFFFFF" uuid="202c0fa6-308b-4a7e-9656-33eea6859d89"/>
                        <textFieldExpression><![CDATA[$V{LEVEL_KOMPETENSI_MEASURE1}]]></textFieldExpression>
                    </textField>
                </cellContents>
            </crosstabCell>
        </crosstab>
    </band>
</detail>

参数定义:

<parameter name="pPersonId" class="java.lang.String">
    <defaultValueExpression><![CDATA[]]></defaultValueExpression>
</parameter>
<parameter name="npp" class="java.lang.String"/>

查询:

<queryString>
    <![CDATA[select CASE WHEN (JENJAB like 'SEVP') THEN '4' 
    WHEN (JENJAB like 'EVP') THEN '4' WHEN (JENJAB like 'SVP') THEN '4' 
    WHEN (JENJAB like 'SVP') THEN '4' WHEN (JENJAB like 'AVP') THEN '3' 
    WHEN (JENJAB like 'AVP') THEN '2' END AS LEVEL_JOB, kompetensi, 
    level_kompetensi, tahun, job from OL_ASSESSMENT_RESULT 
    where tahun in (select tahun from ( select distinct tahun  
    from OL_ASSESSMENT_RESULT order by tahun desc)  
    where ROWNUM <=3 ) and npp = $P{npp}]]>
</queryString>

字段声明:

<field name="KOMPETENSI" class="java.lang.String"/>
<field name="LEVEL_JOB" class="java.lang.String"/>
<field name="LEVEL_KOMPETENSI" class="java.lang.String"/>
<field name="TAHUN" class="java.lang.String"/>
<field name="JOB" class="java.lang.String"/>

错误:

JRRuntimeException: Error incrementing crosstab dataset
Caused by: JRException: Crosstab data has already been processed

enter image description here

最佳答案

您的问题是您已将数据透视表、crosstab 放入detail 区域,并使用crosstab 的报表数据源。

因此,在数据源中的每条记录上,报表都会迭代详细信息区域,创建使用相同数据源的新交叉表。这不起作用并给你错误

JRException: Crosstab data has already been processed

解决方案

  1. 将交叉表完全移至summarytitle 区域 删除细节带。

  2. 为交叉表创建特定的subDataset

关于jasper-reports - 尝试在 jasper studio 中添加数据透视表时,如何避免错误递增交叉表数据集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35549251/

相关文章:

jasper-reports - 如何将 .jasper 文件反编译为 .jrxml 文件

jasper-reports - 如何在多个字段的组合上添加组带?

jasper-reports - JasperReports : Hide frame B within frame A, 如果帧 B 中的一个字段为空或为空

MYSQL逆向 "filesystem"迭代

r - 所有列的从长到宽

python - 如何查找数据透视表中列的位置

mysql - 如何透视 MySQL 实体-属性-值模式

postgresql - Postgres :\copy syntax error in . sql文件

postgresql - 排序查询 Crosstab Postgres

PostgreSQL 返回和 sql 元组描述不兼容