Передача параметров из основного отчета в подзаголовок в Джаспере - программирование
Подтвердить что ты не робот

Передача параметров из основного отчета в подзаголовок в Джаспере

У меня есть JasperReport, где я передаю отчет Date из основного отчета в дополнительный отчет. Это прекрасно работает. У меня также есть другой, где я передаю один и тот же параметр в дополнительный отчет, который имеет несколько SubReports. Когда я просматриваю его в Ireports, все страницы для него выглядят пустыми, что означает, что вызываются суб-дочерние отчеты, но дата отчета не передается, так как весь отчет суб-sub SQL связан с датой отчета. Как я могу получить поле "Дата отчета" в суб-отчетах? Когда я просматриваю SubReport и печатаю в отчете Дата всех дат отчета, все четыре страницы заполняются правильными данными.

4b9b3361

Ответ 1

Выполните следующие шаги, чтобы передать параметры в подзаголовки:

  • Создайте основной параметр отчета, например DATE_PARAM.
  • Откройте вспомогательный отчет и создайте параметр с тем же именем и тем же типом.
  • Вернуться к основному отчету
  • Щелкните правой кнопкой мыши по вспомогательному отчету, выберите свойства
  • Выберите параметр
  • Добавить параметр из основного отчета в дополнительный отчет с именем параметра с таким же именем параметра

Параметр передается из основного отчета в подрепорт.

Ответ 2

Я предполагаю, что они используют значение по умолчанию.

Предполагая, что имя параметра в основном отчете TEST_DATE, а имя в подзадаче TEST_DATE2, вам нужно добавить следующее между элементами открытия и закрытия subreport в XML:

<subreportParameter name="TEST_DATE2">
    <subreportParameterExpression><![CDATA[$P{TEST_DATE}]]></subreportParameterExpression>
</subreportParameter>

Для полноты, вот пример, который содержит основной отчет и подчиненный отчет, который должен работать, просто изменив значение для SUBREPORT_DIR, чтобы указать, где вы их разместили.

report1.jrxml

<?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="report1" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="7e2bc622-d768-437e-8c33-fc777bc06f8c">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <parameter name="TEST_DATE" class="java.util.Date"/>
    <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
        <defaultValueExpression><![CDATA["C:\\Reports\\"]]></defaultValueExpression>
    </parameter>
    <pageHeader>
        <band height="83" splitType="Stretch">
            <textField>
                <reportElement uuid="4a2cf434-4473-48db-a89f-17a19d25cc4c" x="0" y="0" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$P{TEST_DATE}]]></textFieldExpression>
            </textField>
            <subreport>
                <reportElement uuid="54c02e96-6d47-49db-9b9c-58e1dd153242" x="0" y="30" width="200" height="35"/>
                <subreportParameter name="TEST_DATE2">
                    <subreportParameterExpression><![CDATA[$P{TEST_DATE}]]></subreportParameterExpression>
                </subreportParameter>
                <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
                <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "report1_subreport1.jasper"]]></subreportExpression>
            </subreport>
        </band>
    </pageHeader>
</jasperReport>

report1_subreport1.jrxml

<?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="report1_subreport1" language="groovy" pageWidth="200" pageHeight="35" whenNoDataType="AllSectionsNoDetail" columnWidth="200" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="3cedac90-63cb-43cb-9d0f-e401543e65dd">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <parameter name="TEST_DATE2" class="java.util.Date" isForPrompting="false"/>
    <pageHeader>
        <band height="35" splitType="Stretch">
            <textField>
                <reportElement uuid="ca7f3da6-79f0-4d95-92db-6c5dbf777df9" x="0" y="15" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$P{TEST_DATE2}]]></textFieldExpression>
            </textField>
        </band>
    </pageHeader>
</jasperReport>

Ответ 3

Если вы используете iReport для создания отчетов, откройте основной отчет в iReport и выберите Subreport и перейдите в раздел property отчета, щелкните по свойству Parameters и перейдите на вкладку Copy from master. Оттуда вы можете выбрать параметры, которые вы хотите передать в дополнительный отчет.