powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / iReport условия выбора.
4 сообщений из 4, страница 1 из 1
iReport условия выбора.
    #37768458
rail13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.делаю отчет где при вводе всех значений параметра в начале отчета должна выйти надпись "все" иначе должна вывести значения какого нибудь поля.

не могу понять как в коде перечислить несколько значений. пример кода. я уже что только не подставлял между этими цифрами.
очень надеюсь на вашу помощь.



<?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="Analiz_TEK_DET_PRIHOD_subreport2" language="groovy" pageWidth="555" pageHeight="802" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<parameter name="type1" class="java.util.List">
<defaultValueExpression><![CDATA[]]></defaultValueExpression>
</parameter>
<queryString>
<![CDATA[select TGDET_DEAL_TYPE_ID,TGDET_NAME
from TG_D_DEAL_TYPE
where $X{IN,TGDET_DEAL_TYPE_ID,type1}]]>
</queryString>
<field name="TGDET_DEAL_TYPE_ID" class="java.lang.Integer"/>
<field name="TGDET_NAME" class="java.lang.String"/>
<group name="1">
<groupExpression><![CDATA[$F{TGDET_NAME}]]></groupExpression>
<groupHeader>
<band height="20"/>
</groupHeader>
</group>
<detail>
<band height="20" splitType="Stretch">
<textField>
<reportElement positionType="Float" x="0" y="0" width="357" height="20"/>
<textElement verticalAlignment="Middle">
<font fontName="Arial"/>
</textElement>
<textFieldExpression><![CDATA[$F{TGDET_DEAL_TYPE_ID} == 2&&7&&1?"все":$F{TGDET_NAME}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
...
Рейтинг: 0 / 0
iReport условия выбора.
    #37769104
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rail13,

Каша какая-то
Ну напишете вы условие: $F{TGDET_DEAL_TYPE_ID} == 2 && $F{TGDET_DEAL_TYPE_ID} == 7 && $F{TGDET_DEAL_TYPE_ID} == 1?"все":$F{TGDET_NAME} легче вам станет?

Во-первых оно всегда ложно, упрощенный пример: а==1 && a==2 (&& - логическое И)
Во-вторых своей цели вы не добьетесь даже с || - тогда выражение будет всегда истинно (если вы все корректные коды параметров пропишете). И выведется у вас в отчете 5 раз строка "все".

Как я понимаю вы проверяете соответствие кода выводимого поля одному из параметров. И если в отчете количество записей равно числу элементов входного массива, то надо написать "все".

Я бы попробовал вставить summary банд c отображением Static text = "все" и Print When Expression на банд = $V{число_записей_в_группе} == $P{type1}.size()

А на detail банд PrintWhenExpression $V{число_записей_в_группе} != $P{type1}.size(). Вот не знаю сработает ли только оно, так как проверка должна выполняться до того пока подняты все записи в группе, а в этот момент счетчик может быть равен 1 (или 0 не знаю). А может и сработает. Я бы копал в эту сторону
Но это проверка на количество записей, а не на совпадение кодов. Хотя для решения этой задачи (если я правильно понял надо вывести значения из таблицы, коды которых соответствуют входному списку) мне кажется будет достаточно проверять только количество.
...
Рейтинг: 0 / 0
iReport условия выбора.
    #37772744
rail13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanBez, спасибо Вам большое)) очередной раз Вы меня выручаете. Ваш вариант очень интересен, и Ваши догадки были верны, но предложанный вами вариант мне не подошел(возникли некоторые трудности). Но Вы мне подали отличную мысль связанную с количеством. Задача решена, позже выложу свой вариант проделанной работы.спасибоооо))
...
Рейтинг: 0 / 0
iReport условия выбора.
    #37829597
rail13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот сам запрос который приводит ряд наименований.

select TGTYF_TYPE_FINANCING_ID,TGTYF_CODE+' '+TGTYF_NAME
from TG_D_TYPE_FINANCING
where TGTYF_TYPE_FINANCING_ID in
(select d.TGTYF_TYPE_FINANCING_ID from TG_DEAL d where LOGICAL_DELETE=0)

исходя из выше описанного условия я немного изменил сам запрос. прошу сильно не ругать если что то я сделал не корректно.
вот что у меня из этого вышло. у меня работает. использовал данный кусок как subreport. буду очень рад если кому то понадобится(новичкам таким как я)

name="load_person_subreport3" language="groovy" pageWidth="432" pageHeight="432" columnWidth="432" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0">
<property name="ireport.zoom" value="1.1289478601075547"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<parameter name="financ" class="java.util.List">
<defaultValueExpression><![CDATA[]]></defaultValueExpression>
</parameter>
<queryString>
<![CDATA[select cast(TGTYF_TYPE_FINANCING_ID as varchar) as TGTYF_TYPE_FINANCING_ID,TGTYF_CODE+' '+TGTYF_NAME as financ,cast( (select count(TGTYF_TYPE_FINANCING_ID)
from TG_D_TYPE_FINANCING
where TGTYF_TYPE_FINANCING_ID in
(select d.TGTYF_TYPE_FINANCING_ID from TG_DEAL d where LOGICAL_DELETE=0)
and $X{IN,TGTYF_TYPE_FINANCING_ID,financ}) as varchar) as om
from TG_D_TYPE_FINANCING
where TGTYF_TYPE_FINANCING_ID in
(select d.TGTYF_TYPE_FINANCING_ID from TG_DEAL d where LOGICAL_DELETE=0)
and $X{IN,TGTYF_TYPE_FINANCING_ID,financ}]]>
</queryString>
<field name="TGTYF_TYPE_FINANCING_ID" class="java.lang.String"/>
<field name="financ" class="java.lang.String"/>
<field name="om" class="java.lang.String"/>
<variable name="financ_1" class="java.lang.Integer" calculation="Count">
<variableExpression><![CDATA[$F{financ}]]></variableExpression>
</variable>
<detail>
<band height="20" splitType="Stretch">
<textField>
<reportElement x="0" y="0" width="312" height="20" isPrintWhenDetailOverflows="true">
<printWhenExpression><![CDATA[$F{om}<'2']]></printWhenExpression>
</reportElement>
<textElement verticalAlignment="Middle">
<font fontName="Times New Roman" size="12"/>
</textElement>
<textFieldExpression><![CDATA[$F{financ}]]></textFieldExpression>
</textField>
<textField>
<reportElement positionType="Float" x="0" y="0" width="312" height="20" isRemoveLineWhenBlank="true" isPrintWhenDetailOverflows="true"/>
<textElement verticalAlignment="Middle">
<font fontName="Times New Roman" size="12"/>
</textElement>
<textFieldExpression><![CDATA[$V{financ_1}==2?" Все":" "]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / iReport условия выбора.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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