powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / iReport. Вопрос знатокам.
13 сообщений из 13, страница 1 из 1
iReport. Вопрос знатокам.
    #38030904
rail13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет. Очередной вопрос связанный c iReport.
У меня в отчете есть n кол-во ячеек и нужно чтоб ячейка перемещалась влево если предыдущая ячейка пустая или null.
Пример. что сейчас имею.


|значение1| |значение2| |пусто или null | |значение4| |значение5| |значение6| |пусто или null | |значение8|

а нужно чтоб вместо пустой ячейки переместилась ячейка с значением.

пример. чего хочу добиться.

|значение1| |значение2| |значение4| |значение5| |значение6| |значение8|

у кого какие соображения? буду рад принять различные подсказки, предположения.
...
Рейтинг: 0 / 0
iReport. Вопрос знатокам.
    #38031399
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rail13,

Но уже теперь здесь есть люди, которые желают странного. (Аркадий Стругацкий, Борис Стругацкий. Попытка к бегству)

Сдвижку влево я видел только в Table. Когда ставишь условие на столбец (Column Print When). Так как данных несколько строк (? если это так), то наверно для каждой строки можно вызывать сабрепорт, в котором отображается таблица. В сабрепорт передавать параметры: значение1, значение2, и т.д. (текущая запись main отчета). В таблице сабрепорта параметры отображать в Table Header и ставить условие на каждый столбец по соответствующему параметру. А в main вообще не выводить поля. Где-то так
...
Рейтинг: 0 / 0
iReport. Вопрос знатокам.
    #38067912
rail13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanBez, спасибо за ответ.
создал компонент "table" и поместил в поле "summary". Для созданного компонента "table" создал "New Dataset". Далее в "Column Header" поместил шапку будущей таблицы, а в "Detail" поместил поля которые нужно отобразить. Далее для каждой колонки "Detail"
в "Column Properties" прописал условие вывода нужного нам поля (Column Print When:$F{field_1}!=null ; $F{field_2}!=null итд)


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

Не понял. Можно пару вопросов для уточнения?

1.Как можно ставить условие на столбец в таблице в зависимости от поля, которое в одной строке таблицы может быть null, а в другой, например, 100,25 ? А вы ставите условие на весь столбец. Как оно работает? Вы пробовали тестить, если в столбце разные данные, а не все равны null? Например, первое значение !=null, а второе равно null.

2. Я предполагал, что изначальная задача - отображать несколько строк с разным количеством столбцов. Как пример

знач1|знач2|знач4|знач5 (знач3 равно null)
зная1|знач5| (знач2,3,4 - три значения равны null)

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

Поясните плиз решение, может пригодится когда-нибудь.
P.S. Если я что-то не то написал или где-то ступил, прошу простить. Башка раскалывается. Наверно конец света приходит :)
...
Рейтинг: 0 / 0
iReport. Вопрос знатокам.
    #38073022
rail13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanBez,


Не понял. Можно пару вопросов для уточнения?

1.Как можно ставить условие на столбец в таблице в зависимости от поля, которое в одной строке таблицы может быть null, а в другой, например, 100,25 ? А вы ставите условие на весь столбец. Как оно работает? Вы пробовали тестить, если в столбце разные данные, а не все равны null? Например, первое значение !=null, а второе равно null.

2. Я предполагал, что изначальная задача - отображать несколько строк с разным количеством столбцов. Как пример

знач1|знач2|знач4|знач5 (знач3 равно null)
зная1|знач5| (знач2,3,4 - три значения равны null)

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

Поясните плиз решение, может пригодится когда-нибудь.
P.S. Если я что-то не то написал или где-то ступил, прошу простить. Башка раскалывается. Наверно конец света приходит :)



1) К чему Вы клоните я понял. Проверял.

прописал условие на столбец !=null
поставил галочку каждому необходимому полю (Blank when null)

Я тоже изначально ожидал, что если в одном столбце появится null и какое нибудь значение (с учетом "Column Print When:$F{field_n}!=null"),то столбец вовсе не отобразится...

и вот что у меня получилось.

было


столбец1|столбец2|столбец4|столбец5|столбец6|столбец7|столбец8|столбец9|

наименование1| 465 | null | 87 | null | null | null | null | null |

наименование2| 465 | 654 | null | 5 | null | null | null | null |

наименование3| null | null | 87 | 5 | null | null | null | 546 |

наименование4| 465 | 888 | 87 | 5 | null | null | null | 654 |

наименование5| 465 | 999 | null | 5 | null | null | null | 465 |

наименование6| 465 | null | 87 | null | null | null | null | 789 |



стало


столбец1|столбец2|столбец4|столбец5|столбец9|

наименование1| 465 | | 87 | | |

наименование2| 465 | 654 | | 5 | |

наименование3| | | 87 | 5 | 546 |

наименование4| 465 | 888 | 87 | 5 | 654 |

наименование5| 465 | 999 | | 5 | 465 |

наименование6| 465 | | 87 | | 789 |




Вроде как работает)
...
Рейтинг: 0 / 0
iReport. Вопрос знатокам.
    #38073050
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rail13,

Чудяса.
У меня был обратный результат на тестовом отчете. Если первое значение было null, то весь столбец прятался. Если по вашему примеру, то четвертого столбца с пятерками (null, 5, 5, 5, null) у меня вообще не было. Налабал я этот отчет быстро, сильно не погружался, может и обдернулся где-то
...
Рейтинг: 0 / 0
iReport. Вопрос знатокам.
    #38073061
rail13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
......................столбец1|столбец2|столбец4|столбец5|столбец6|столбец7|столбец8|столбец9|

наименование1|465........|null........|87.........|.null........|null.........|nul.........|null........|nul.........|

наименование2|465........|654........|null........|.5..........|nul..........|null.........|null........|null........|

наименование3|null.... ...|null.........|87.........|.5..........|null..........| null........|null........|546.......|

наименование4|465........|888.........|87........|.5..........|null..........|null..........|null........|654.......|

наименование5|465........ |.999.......|null.......|.5..........|null..........|null..........|null........|465.......|





стало


......................столбец1|столбец2|столбец4|столбец5|столбец9|

наименование1| 465.......|............|.....87.....|.............|.............|

наименование2| 465.......|654.......|..............|5...........|.............|

наименование3|.............|............|87.......... |5...........|546........|

наименование4|465........|888.......|87..........|5...........|654.........|

наименование5|465........|999.......|..............|5..........|465......... |
...
Рейтинг: 0 / 0
iReport. Вопрос знатокам.
    #38073066
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rail13,

Дя я понял, можно было не форматировать. Ну у вас работает и чудненько :). А мне не нужно пока
...
Рейтинг: 0 / 0
iReport. Вопрос знатокам.
    #38073073
rail13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может быть в типах данных все дело? вот у меня "значение_n" тип данных "String".
...
Рейтинг: 0 / 0
iReport. Вопрос знатокам.
    #38073762
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rail13,

Да пофиг какой тип данных. $F{field_1} != null для каждой записи имеет свое значение. То что оно у вас работает я рассматриваю как случайное попадание в цель. Где гарантия что этот финт будет работать и дальше? Вы можете объяснить принцип по которому оно работает? На основании какой записи происходит проверка на отображение столбца.
Встраивать такой код в свое приложение лично я считаю неправильным. Уж тогда $V какую-нибудь заводить и вычислять в expression для нее как $V || $F{filed_1} != null И условие на столбец по этой переменной. Вот это не рухнет.
А ваше решение опасно. Я бы так не делал
...
Рейтинг: 0 / 0
iReport. Вопрос знатокам.
    #38074400
rail13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня же около 30 столбцов с разными полями (field_1-field_30) и для каждого столбца соответствующее условие печати. для первого столбца 1ый филд с условием, для второго столбца 2ой филд с условием итд. Я похоже не могу уловить мысль, которую Вы хотите до меня донести(
Но идея с $V мне понравилась. Спасибо)
...
Рейтинг: 0 / 0
iReport. Вопрос знатокам.
    #38074460
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rail13,

Допустим у нас всего один столбец

Я хочу чтобы вы себе задали вопрос: для какого именно значения из пяти отображенных записей (например у вас в одном столбце: null, 5, 5, 5, null) проверяется условие Column Print When $F{filed_1} != null

Для первой записи? Для последней? Для каждой? В какой момент работает эта проверка?
Если после того как подняты все записи, то как идет проверка по первому значению?

Вы точно знаете как отрабатывает эта проверка? Я - нет. Если есть ссылки на доку, где такое описано, ткните меня в них. Или на код jasper'a
...
Рейтинг: 0 / 0
iReport. Вопрос знатокам.
    #38074710
rail13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все догнал)) К сожалению я не владею такой информацией. Исходя из этого разумнее будет воспользоваться вашей подсказкой с $V.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / iReport. Вопрос знатокам.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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