Как я могу получить первую запись таблицы, используя один и тот же источник данных для основного отчета и таблицы в отчетах Jasper?

В соответствии с моими требованиями к дизайну я пытаюсь создать простой отчет Jasper (используя Jasper-soft Studio в версии 6.12) с таблицей, в которой основной отчет и таблица должны быть заполнены кодом Java с использованием объекта JRResultSetDataSource с тем же выполнением запроса или данными. source, а также подсчет количества записей в заголовке страницы из числа строк, выбранных в таблице из базы данных.

Но проблема в том, что либо только таблица заполняется через источник данных, либо заполняется только основной отчет, либо при предоставлении одного и того же источника данных как для основного отчета, так и для таблицы первая запись таблицы отсутствует, потому что указатель записи в источник данных увеличивается по мере того, как источник данных передается из основного отчета в таблицу. Я также не могу клонировать источник данных, чтобы предоставить копию источника данных в таблицу, поскольку он не поддерживается для JRResultSetDataSource.

Я хочу использовать один и тот же источник данных для заполнения таблицы и заполнения текстовых полей, присутствующих в основном отчете.

Java-код-

 Connection con;
 Statement stmt;
 ResultSet rs;

 try {
      Class.forName("org.postgresql.Driver");
      con=DriverManager.getConnection("jdbc:postgresql://localhost:5432/jasperexamples", "postgres", "password");
       stmt=con.createStatement();
       String query= "select * from product";
       rs=stmt.executeQuery(query);
            
       JRResultSetDataSource rsdt = new JRResultSetDataSource(rs);

       String jasperReport = "/home/sakshi/JaspersoftWorkspace/MyReports/JasperProduct.jasper";
       JasperPrint jp1 = JasperFillManager.fillReport(jasperReport, new HashMap<String, Object>(),rsdt);

        JasperViewer jv = new JasperViewer(jp1);
        jv.setVisible(true);
        con.close();
  }
  catch(Exception e) {
        e.printStackTrace();
  }

Jrxml код-

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.12.2.final using JasperReports Library version 6.12.2-75c5e90a222ab406e416cbf590a5397028a52de3  -->
<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="JasperProduct" pageWidth="842" pageHeight="595" orientation="Landscape" columnWidth="802" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="0d6d7195-8cff-4512-be5d-258e505e6836">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
    <style name="Table_TH" mode="Opaque" backcolor="#F0F8FF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
            <topPen lineWidth="0.5" lineColor="#000000"/>
            <leftPen lineWidth="0.5" lineColor="#000000"/>
            <bottomPen lineWidth="0.5" lineColor="#000000"/>
            <rightPen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <style name="Table_CH" mode="Opaque" backcolor="#BFE1FF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
            <topPen lineWidth="0.5" lineColor="#000000"/>
            <leftPen lineWidth="0.5" lineColor="#000000"/>
            <bottomPen lineWidth="0.5" lineColor="#000000"/>
            <rightPen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <style name="Table_TD" mode="Opaque" backcolor="#FFFFFF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
            <topPen lineWidth="0.5" lineColor="#000000"/>
            <leftPen lineWidth="0.5" lineColor="#000000"/>
            <bottomPen lineWidth="0.5" lineColor="#000000"/>
            <rightPen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <subDataset name="Dataset1" uuid="0dc50125-a9d2-458b-82aa-27bfa253f3e9">
        <queryString>
            <![CDATA[]]>
        </queryString>
        <field name="id" class="java.lang.Integer"/>
        <field name="prouductname" class="java.lang.String"/>
        <field name="productprize" class="java.lang.String"/>
        <field name="company" class="java.lang.String"/>
    </subDataset>
    <queryString>
        <![CDATA[]]>
    </queryString>
    <field name="id" class="java.lang.Integer"/>
    <field name="prouductname" class="java.lang.String"/>
    <field name="productprize" class="java.lang.String"/>
    <field name="company" class="java.lang.String"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="79" splitType="Stretch">
            <property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.FreeLayout"/>
            <staticText>
                <reportElement x="0" y="20" width="802" height="30" uuid="463c4bc3-254d-4c78-a35e-0096dc006165"/>
                <box leftPadding="5"/>
                <textElement verticalAlignment="Middle">
                    <font size="24"/>
                </textElement>
                <text><![CDATA[Product Report]]></text>
            </staticText>
        </band>
    </title>
    <pageHeader>
        <band height="55" splitType="Stretch">
            <staticText>
                <reportElement x="5" y="17" width="110" height="30" uuid="836aa66c-e052-4ca1-ac75-feb821efa866"/>
                <textElement verticalAlignment="Middle">
                    <font size="14"/>
                </textElement>
                <text><![CDATA[Report Count]]></text>
            </staticText>
            <textField textAdjust="StretchHeight">
                <reportElement x="125" y="17" width="100" height="30" uuid="500a4853-c045-4897-a007-6e77598a31c7"/>
                <textElement verticalAlignment="Middle">
                    <font size="14"/>
                </textElement>
                <textFieldExpression><![CDATA[$V{REPORT_COUNT}]]></textFieldExpression>
            </textField>
        </band>
    </pageHeader>
    <detail>
        <band height="199" splitType="Stretch">
            <componentElement>
                <reportElement x="0" y="34" width="802" height="126" uuid="dc722ea3-7c31-439b-996c-bb3892426aea">
                    <property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.VerticalRowLayout"/>
                    <property name="com.jaspersoft.studio.table.style.table_header" value="Table_TH"/>
                    <property name="com.jaspersoft.studio.table.style.column_header" value="Table_CH"/>
                    <property name="com.jaspersoft.studio.table.style.detail" value="Table_TD"/>
                    <property name="com.jaspersoft.studio.components.autoresize.proportional" value="true"/>
                </reportElement>
                <jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
                    <datasetRun subDataset="Dataset1" uuid="2c3773b9-e3a5-4046-a9d7-825487945fbb">
                        <datasetParameter name="REPORT_DATA_SOURCE">
                            <datasetParameterExpression><![CDATA[$P{REPORT_DATA_SOURCE}]]></datasetParameterExpression>
                        </datasetParameter>
                    </datasetRun>
                    <jr:columnGroup width="802" uuid="35fb663c-fc50-45f9-8715-575fe5aa27f4">
                        <property name="com.jaspersoft.studio.components.table.model.column.name" value="Columns [4]"/>
                        <jr:tableHeader style="Table_TH" height="30" rowSpan="1">
                            <staticText>
                                <reportElement mode="Opaque" x="0" y="0" width="802" height="30" uuid="9cdc6108-4308-449a-9995-182837f26b4d"/>
                                <box leftPadding="3"/>
                                <textElement verticalAlignment="Middle">
                                    <font size="18"/>
                                </textElement>
                                <text><![CDATA[Product Details]]></text>
                            </staticText>
                        </jr:tableHeader>
                        <jr:columnGroup width="802" uuid="2282f969-105d-4cf7-9714-ce0eef6e7a2a">
                            <property name="com.jaspersoft.studio.components.table.model.column.name" value="Columns [4]"/>
                            <jr:tableFooter style="Table_TH" height="30" rowSpan="1">
                                <textField textAdjust="StretchHeight">
                                    <reportElement mode="Opaque" x="0" y="0" width="802" height="30" uuid="4aa3d9f1-22dd-44bb-b002-b1fc83349c66"/>
                                    <textElement verticalAlignment="Middle">
                                        <font size="13"/>
                                    </textElement>
                                    <textFieldExpression><![CDATA[$V{REPORT_COUNT}]]></textFieldExpression>
                                </textField>
                            </jr:tableFooter>
                            <jr:column width="200" uuid="88208a30-4a0d-4a22-8558-c9347efcab95">
                                <property name="com.jaspersoft.studio.components.table.model.column.name" value="Column1"/>
                                <jr:columnHeader style="Table_CH" height="30" rowSpan="1">
                                    <staticText>
                                        <reportElement mode="Opaque" x="0" y="0" width="200" height="30" uuid="c7b0da69-05cb-4e00-b215-501476c06697"/>
                                        <box leftPadding="3"/>
                                        <textElement verticalAlignment="Middle">
                                            <font size="12" isBold="true" isItalic="false"/>
                                        </textElement>
                                        <text><![CDATA[Id]]></text>
                                    </staticText>
                                </jr:columnHeader>
                                <jr:detailCell style="Table_TD" height="30">
                                    <textField textAdjust="StretchHeight">
                                        <reportElement x="0" y="0" width="200" height="30" uuid="69c964ef-8985-4b28-adf2-eb89663ffa3c"/>
                                        <box leftPadding="3"/>
                                        <textElement verticalAlignment="Middle">
                                            <font size="12"/>
                                        </textElement>
                                        <textFieldExpression><![CDATA[$F{id}]]></textFieldExpression>
                                    </textField>
                                </jr:detailCell>
                            </jr:column>
                            <jr:column width="190" uuid="26ed996c-7261-48e1-bfdd-5492a313bee9">
                                <property name="com.jaspersoft.studio.components.table.model.column.name" value="Column2"/>
                                <jr:columnHeader style="Table_CH" height="30" rowSpan="1">
                                    <staticText>
                                        <reportElement mode="Opaque" x="0" y="0" width="190" height="30" uuid="294980bc-20b3-472e-999f-5be40daacf01"/>
                                        <box leftPadding="3"/>
                                        <textElement verticalAlignment="Middle">
                                            <font size="12" isBold="true" isItalic="false"/>
                                        </textElement>
                                        <text><![CDATA[Product Name]]></text>
                                    </staticText>
                                </jr:columnHeader>
                                <jr:detailCell style="Table_TD" height="30">
                                    <textField textAdjust="StretchHeight">
                                        <reportElement x="0" y="0" width="190" height="30" uuid="30e24e73-2357-40a9-ba78-a8dff9938ab9"/>
                                        <box leftPadding="3"/>
                                        <textElement verticalAlignment="Middle">
                                            <font size="12"/>
                                        </textElement>
                                        <textFieldExpression><![CDATA[$F{prouductname}]]></textFieldExpression>
                                    </textField>
                                </jr:detailCell>
                            </jr:column>
                            <jr:column width="220" uuid="efd0925b-65d3-438e-950c-95fefc05998e">
                                <property name="com.jaspersoft.studio.components.table.model.column.name" value="Column3"/>
                                <jr:columnHeader style="Table_CH" height="30" rowSpan="1">
                                    <staticText>
                                        <reportElement mode="Opaque" x="0" y="0" width="220" height="30" uuid="1480c534-2f5f-4cc7-96be-e275415b8cd0"/>
                                        <box leftPadding="3"/>
                                        <textElement verticalAlignment="Middle">
                                            <font size="12" isBold="true" isItalic="false"/>
                                        </textElement>
                                        <text><![CDATA[Product Prize]]></text>
                                    </staticText>
                                </jr:columnHeader>
                                <jr:detailCell style="Table_TD" height="30">
                                    <textField textAdjust="StretchHeight">
                                        <reportElement x="0" y="0" width="220" height="30" uuid="2df7f400-4845-4ebe-a874-c3ae91ccba2e"/>
                                        <box leftPadding="3"/>
                                        <textElement verticalAlignment="Middle">
                                            <font size="12"/>
                                        </textElement>
                                        <textFieldExpression><![CDATA[$F{productprize}]]></textFieldExpression>
                                    </textField>
                                </jr:detailCell>
                            </jr:column>
                            <jr:column width="192" uuid="dfd8aead-b732-4300-8a47-29b0a6b7605b">
                                <property name="com.jaspersoft.studio.components.table.model.column.name" value="Column4"/>
                                <jr:columnHeader style="Table_CH" height="30">
                                    <staticText>
                                        <reportElement mode="Opaque" x="0" y="0" width="192" height="30" uuid="7fac6d69-f0eb-4ff2-82de-152872d9930d"/>
                                        <box leftPadding="3"/>
                                        <textElement verticalAlignment="Middle">
                                            <font size="12" isBold="true"/>
                                        </textElement>
                                        <text><![CDATA[Company]]></text>
                                    </staticText>
                                </jr:columnHeader>
                                <jr:detailCell style="Table_TD" height="30">
                                    <textField textAdjust="StretchHeight">
                                        <reportElement x="0" y="0" width="192" height="30" uuid="701bebcf-d200-4cf8-bd88-37f4578be852"/>
                                        <box leftPadding="3"/>
                                        <textElement verticalAlignment="Middle">
                                            <font size="12"/>
                                        </textElement>
                                        <textFieldExpression><![CDATA[$F{company}]]></textFieldExpression>
                                    </textField>
                                </jr:detailCell>
                            </jr:column>
                        </jr:columnGroup>
                    </jr:columnGroup>
                </jr:table>
            </componentElement>
        </band>
    </detail>
    <pageFooter>
        <band height="62">
            <staticText>
                <reportElement x="0" y="20" width="160" height="30" uuid="dca10f20-8fa6-4e1b-8d48-16b549783ac6"/>
                <box leftPadding="3">
                    <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                    <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                    <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                    <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                </box>
                <textElement verticalAlignment="Middle">
                    <font size="13" isBold="true"/>
                </textElement>
                <text><![CDATA[Company Name: ]]></text>
            </staticText>
            <textField textAdjust="StretchHeight">
                <reportElement x="160" y="20" width="642" height="30" uuid="2e69e42c-7588-429b-a0dc-42042e24bd61"/>
                <box leftPadding="3">
                    <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                    <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                    <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                    <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                </box>
                <textElement verticalAlignment="Middle">
                    <font size="13"/>
                </textElement>
                <textFieldExpression><![CDATA[$F{company}]]></textFieldExpression>
            </textField>
        </band>
    </pageFooter>
</jasperReport>

Я видел разные подходы -

  • добавьте первую пустую строку в источник данных перед передачей ее в отчет.
  • передача двух источников данных — одного в таблицу и одного в основной отчет (но оба работают с одним и тем же источником данных, что снижает производительность).

Но я не думаю, что эти подходы хороши.

А также ссылались на разные ссылки, но они не работали в соответствии с моими требованиями к дизайну.

Может ли кто-нибудь предложить лучший подход для решения этой проблемы.

заранее спасибо


person Sakshi Sharma    schedule 07.07.2020    source источник
comment
Если вам нужен тот же источник данных, почему вы просто не перетаскиваете поля из основного отчета в детальную полосу, а не создаете таблицу?   -  person Pals    schedule 07.07.2020
comment
Потому что я хочу это в формате таблицы   -  person Sakshi Sharma    schedule 13.07.2020