powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JasperReports детали
15 сообщений из 15, страница 1 из 1
JasperReports детали
    #38641522
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как можно сделать, чтоб информации в первая колонке reportDate
Отображалась 1 раз для всез записей (была общей), а не как сейчас дублируется для каждой строчки
...
Рейтинг: 0 / 0
JasperReports детали
    #38641527
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
printWhenExpression - и там задаешь условие выводить только в первой строке.
...
Рейтинг: 0 / 0
JasperReports детали
    #38641733
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-Как можно сделать, чтоб информации в первая колонке reportDate
Отображалась 1 раз для всез записей (была общей), а не как сейчас дублируется для каждой строчки

Во первых нужна группировка по этой строке.
Потом в мастере iReports при создании таблицы указываешь использовать эту группировку.
...
Рейтинг: 0 / 0
JasperReports детали
    #38642009
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-,

http://community.jaspersoft.com/questions/803459/formatting-sql-results-prevent-repeated-rowcolumn-data
Решается одной кнопкой. Если даты одинаковые.

Группировка - это усложнение отчета. Лишнее усложнение вредно
PrintWnehExpression - вариант, но здесь имхо менее удобно. Если даты разные, то самое оно
...
Рейтинг: 0 / 0
JasperReports детали
    #38642019
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanBez,

Ну углядел, что здесь $P, а не $F. Тогда сброс Print Repeated Values (ссылку кидал) и ноу проблем
...
Рейтинг: 0 / 0
JasperReports детали
    #38642040
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да спасибо, с датой раобрался

Вопрос, еще а почему не растягиватся прямоугольник в котором эта дата находится

Код: java
1.
2.
3.
                                               <rectangle>
                                                               <reportElement uuid="fcf3a897-e41c-4715-af3c-c73698509d2c" style="DefaultRectangle" positionType="Float" stretchType="RelativeToBandHeight" isPrintRepeatedValues="false" x="0" y="0" width="63" height="20" isPrintInFirstWholeBand="true" isPrintWhenDetailOverflows="true"/>
                                               </rectangle>



Ставлю strech = RelativeToBandHeight убираю isPrintRepeatedValues, чтоб был один, но все равно он печатается только для первой строчки
...
Рейтинг: 0 / 0
JasperReports детали
    #38642102
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-,

Здесь RelativeToBandHeight прямо не поможет.
Насколько я понимаю как ты делал отчет: в detail есть фактически эта строка с $P и полями.
Каждая строка - это фактически полный detail. И $P растягивается на одну строку, чего и не видно.

Если хочется чтобы одно значение $P растягивалось под все строки и находилось вертикально посередине отчета, тут извращаться надо.

Навскидку приходят в голову два варианта: кривой и трудоемкий:
Кривой: Выводить через PwintWhenExpression, посчитав количество записей в отчете перед! его выполнением и передав это количество в качестве параметра. И PwintWhenExpression = текущая_запись равна $P{всего_записей} пополам.

Трудоемкий: кинуть все кроме $P в сабрепорт. Сабрепорт - поместить в detail справа от $P{параметр_дата}. Тогда как раз получится, что $P при выводе растянется под detail, в которой уже будет не одна запись, а все записи сабрепорта.

Затраты и в том и в другом случае. В первом на вычисления и дополнительные frame, чтобы выглядело красиво. И наверняка вылезут проблемы если записей больше чем на 1 страницу.
Во втором на сабрепорт.

Кривой вариант я не пробовал (на форумах кто-то извращался).
С сабрепортом работает. Но у меня в первом поле обычно группа (значения разные). Вариантов у меня других нет.
А здесь оверхедом попахивает
...
Рейтинг: 0 / 0
JasperReports детали
    #38642425
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanBez,
да спасибо, второй вариант получился


Возникло только дубление строк
те subreport показывает N строчек

а главный report показывает 2 subreporta (лежит на detail) может в этом причина
...
Рейтинг: 0 / 0
JasperReports детали
    #38642553
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дизайн отчета

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<parameter name="SUBREPORT_DIR" class="java.lang.String">
- <defaultValueExpression>
- <![CDATA[""
  ]]> 
  </defaultValueExpression>
  </parameter>
……………….
- <subreport>
  <reportElement uuid="fd345f4c-2bdf-4cec-8870-cef88ef267ef" x="63" y="0" width="699" height="20" /> 
- <connectionExpression>
- <![CDATA[ 
$P{REPORT_CONNECTION}
  ]]> 
  </connectionExpression>
- <subreportExpression>
- <![CDATA[ 
$P{SUBREPORT_DIR} + subReport.jasper"
  ]]> 
  </subreportExpression>
  </subreport>



В iReport все отлично подтягивается

Так вызываю в Java
beanData для subReport
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
    public static JasperPrint fillReportWithSubReport(final String reportName
            , final String subReportName
            , final Map<String, Object> params
            , final List<? extends Object> beanData) throws JRException {

        final InputStream inputReportStream = JRUtils.class.getClassLoader()
                .getResourceAsStream("ru/jasper/" + reportName + ".jasper");
        final JasperReport jasperReport = (JasperReport) JRLoader.loadObject(inputReportStream);

        final InputStream inputSubReportStream = JRUtils.class.getClassLoader().
                getResourceAsStream("ru/jasper/" + subReportName + ".jasper");
        final JasperReport jasperSubReport = (JasperReport) JRLoader.loadObject(inputSubReportStream);

        params.put("SUBREPORT_DIR", jasperSubReport);

        jasperReport.setWhenNoDataType(WhenNoDataTypeEnum.ALL_SECTIONS_NO_DETAIL);

        return JasperFillManager.fillReport(jasperReport, params, new JRBeanCollectionDataSource(beanData));
    }



Ошибка
Код: java
1.
2.
3.
4.
Caused by: java.lang.ClassCastException: net.sf.jasperreports.engine.JasperReport incompatible with java.lang.String
                at AccountingBookDragMetal_1400157995944_255158.evaluate(AccountingBookDragMetal_1400157995944_255158.java:196)
                at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:190)
                ... 83 more



Но если переделаю дизайн отчета, так понимаю не будет работать в iReport
...
Рейтинг: 0 / 0
JasperReports детали
    #38642605
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-,

Что то ты чуток лишнего наворотил.

По вопросу "сабрепорт отображается дважды":
Он будет выводиться столько раз, сколько элементов в new JRBeanCollectionDataSource(beanData)
Я на шаблоне сказал кинуть его в detail, так как обычно у меня групп слева много. У тебя одна группа, поэтому $P и сабрепорт
надо переместить в Title band или в Summary band. Как тебе удобнее. Извиняюсь, ступил.

По вызову JasperFillManager.fillReport(...)

- В основном отчете тебе DataSource вообще не нужен, поэтому передать последним параметром пустой DataSource
- В параметры кинуть beanData (там насколько я понимаю все что должно выводиться в сабрепорте)
- В jrxml определить параметр $P{myData} типа java.util.Collection и пихнуть в него свою коллекцию
- $P{SUBREPORT_DIR} это строка, а ты в нее объект JasperReport гонишь, вот и ClassCastException
- выкинуть из java-кода fillReportWithSubReport все что касается сабрепорта. Не нужно это. Только fillReport основного отчета и все что нужно к нему.

Код: java
1.
2.
3.
4.
5.
Map<String,Object> params = new HashMap<String,Object>();
params.put("myData", beanCollection);
params.put("SUBREPORT_DIR", "ru/jasper/");

return JasperFillManager.fillReport(jasperReport, params, new JREmtpyDataSource());


в отчете (jrxml) в выражении для сабрепорта прописать
Код: java
1.
$P{SUBREPORT_DIT}+ "subReportNameПрямоГвоздямиКакТамОнНазываетсяУТебя.jasper"


в DataSource для сабрепорта написать expression типа
Код: java
1.
new JRBeanCollectionDataSource($P{myData})


ну где-то так вообщем
...
Рейтинг: 0 / 0
JasperReports детали
    #38642705
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanBez,

new JRBeanCollectionDataSource($P{myData})
Пишет что не может быть разрешен для типа
...
Рейтинг: 0 / 0
JasperReports детали
    #38642734
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-,

Это при компиляции отчета? Покажи кусок из jrxml с объявлением этого параметра. Чтобы тип виден был
...
Рейтинг: 0 / 0
JasperReports детали
    #38643266
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за направление, переделал так

java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
        params.put("SUBREPORT_DIR", "ru/jasper/");
        params.put("subReportRows", new JRBeanCollectionDataSource(beanData));

        jasperReport.setWhenNoDataType(WhenNoDataTypeEnum.ALL_SECTIONS_NO_DETAIL);

        return JasperFillManager.fillReport(jasperReport, params, new JREmptyDataSource());[
/SRC]

jrxml
[SRC java]
  <parameter name="subReportRows" class="net.sf.jasperreports.engine.JRDataSource" /> 
.....
- <subreport>
  <reportElement uuid="fd345f4c-2bdf-4cec-8870-cef88ef267ef" x="63" y="0" width="699" height="20" /> 
- <dataSourceExpression>
- <![CDATA[ 
$P{subReportRows}
  ]]> 
  </dataSourceExpression>
- <subreportExpression>
- <![CDATA[ 
$P{SUBREPORT_DIR} + "SubReport.jasper"
  ]]> 
  </subreportExpression>
  </subreport>



Заработал
...
Рейтинг: 0 / 0
JasperReports детали
    #38643323
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-,

Победил - отлично.
Только вот задача трансформировалась от "не выводить дубликаты" до "отобразить с группировкой". Я ратовал за отсутствие лишнего усложнения, а получилось лишний сабрепорт сгенерен.

Я вот и думаю, может стоило прислушаться к совету mad_nazgul? Надо как-нибудь попробовать...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
JasperReports детали
    #39149637
srov77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста, как можно в jasperreports программно изменить количество бандов (например croup). Есть одна квитанция, нужно напечатать несколько экземпляров, не хочу печатать каждый экземпляр на новом листе.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JasperReports детали
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]