|
iReport условия выбора.
|
|||
---|---|---|---|
#18+
Всем привет.делаю отчет где при вводе всех значений параметра в начале отчета должна выйти надпись "все" иначе должна вывести значения какого нибудь поля. не могу понять как в коде перечислить несколько значений. пример кода. я уже что только не подставлял между этими цифрами. очень надеюсь на вашу помощь. <?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> ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2012, 15:45 |
|
iReport условия выбора.
|
|||
---|---|---|---|
#18+
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 не знаю). А может и сработает. Я бы копал в эту сторону Но это проверка на количество записей, а не на совпадение кодов. Хотя для решения этой задачи (если я правильно понял надо вывести значения из таблицы, коды которых соответствуют входному списку) мне кажется будет достаточно проверять только количество. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2012, 18:45 |
|
iReport условия выбора.
|
|||
---|---|---|---|
#18+
sanBez, спасибо Вам большое)) очередной раз Вы меня выручаете. Ваш вариант очень интересен, и Ваши догадки были верны, но предложанный вами вариант мне не подошел(возникли некоторые трудности). Но Вы мне подали отличную мысль связанную с количеством. Задача решена, позже выложу свой вариант проделанной работы.спасибоооо)) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2012, 16:50 |
|
iReport условия выбора.
|
|||
---|---|---|---|
#18+
вот сам запрос который приводит ряд наименований. 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> ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2012, 15:04 |
|
|
start [/forum/topic.php?fid=31&fpage=43&tid=1534437]: |
0ms |
get settings: |
10ms |
get forum list: |
10ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
263ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
others: | 348ms |
total: | 696ms |
0 / 0 |