Jasper/Ireport parametros para gerar Relatorio

Galera,

Como devo proceder para a seguinte situação:

Tenho um tela no qual existe duas opções uma que eu peço uma lista todos os codigos e outra que peço para lista apenas alguns codigos,
Desenvolvi a seguinte Query:
select * from vw_produtos_operados
where duto IN($P!{DUTOS}) and ano = $P{ANO} and mes = $P{MES}
order by duto,produto,sentido

No HashMap eu passo a seguinte instrução EX: valores.put(“DUTOS”,"‘A2’,‘A4’,‘A6’");
Pois bem, da forma que esta ele lista apenas os ítens que estão no HashMap,
Porém, como devo proceder qdo eu selecionar a opção para listar todos os codigos

Att.

Rocha

Oba … eu costumo fazer o relatório deixando o WHERE que é variável para uma variável inteira … ficaria mais ou menos assim:

select * from vw_produtos_operados where ano = $P{ANO} and mes = $P{MES} $P{!appendCondition} order by duto,produto,sentido

claro que o appendCondition teria [quote]AND duto IN(‘A2’,‘A4’)[/quote] ou nada pra listar tudo.

Não esquece que com esse esquema talvez o seu group by e order by tb tenham que ser dinâmicos …

[quote=“smota”]Oba … eu costumo fazer o relatório deixando o WHERE que é variável para uma variável inteira … ficaria mais ou menos assim:

select * from vw_produtos_operados where ano = $P{ANO} and mes = $P{MES} $P{!appendCondition} order by duto,produto,sentido

claro que o appendCondition teria [quote]AND duto IN(‘A2’,‘A4’)[/quote] ou nada pra listar tudo.

Não esquece que com esse esquema talvez o seu group by e order by tb tenham que ser dinâmicos …[/quote]

Mota,

Conforme vc disse acima, eu fiz exatamente

Criei um Paramentro e dentro desse paramentro ficou assim
new String(“and duto IN($P!{DUTOS})”)
Sendo assim, minha query ficou dessa forma
select * from vw_produtos_operados
where ano = $P{ANO} and mes = $P{MES} $P!{PARAMETRO}
order by duto,produto,sentido

E dentro do Meu HashMap ficou assim
valores.put(“ANO”,new Integer(2004));
valores.put(“MES”,new Integer(02));
valores.put(“DUTOS”,"‘A2’,‘A4’,‘A6’,‘A8’");
valores.put(“PARAMETRO”,"");

Porém quando mando executar ele não filtra ou seja traz todos os registros
Porém é estranho pois no meu HashMap eu estou passando somente os dutos ‘A2’,‘A4’,‘A6’,‘A8’
Vc saberia me dizer o pq disso???

Obrigado

rocha

[/b]

Vc colocou o valor default do parametros como :

new String(“and duto IN($P!{DUTOS})”)

porem está passando vazio no HashMap… Dessa forma, ele fica vazio! e nao faz o filtro mesmo !

Para funcionar legalzinho, crie uma VARIAVEL params e coloque no valor default dela:

$P!{DUTOS}!=null && ! $P!{DUTOS}.equals("")?"and duto IN($P!{DUTOS})":""

Daih, vc usa essa variavel no seu where!

Borges

Conforme vc disse acima, fiz tudo da forma proposta
Criei um novo parametro
<parameter name=“PARAMETRO” isForPrompting=“false” class=“java.lang.String”>
<defaultValueExpression><![CDATA[($P{DUTOS}!=null && !$P{DUTOS}.equals("")?“and duto IN($P!{DUTOS})”:"")]]></defaultValueExpression>

Substitui a parte da minha Query por:
select * from vw_produtos_operados
where ano = $P{ANO} AND mes = $P{MES} $P!{PARAMETRO}
order by duto,produto,sentido

Porem, memo assim, ele continua não filtrando o Relatório

Att.

Rocha

Vc nao leu direito o q eu escrevi !!!

Eu nao disse pra vc criar outro PARAMETRO …

Eu disse para vc criar uma VARIAVEL! :shock:

Alexandre

Criei a variavel, e substitui minha Query

select * from vw_produtos_operados
where ano = $P{ANO} AND mes = $P{MES} $V{PARAMETRO}
order by duto,produto,sentido

Porém, na hora da execução ela gera um erro, ou seja ele naum entende a variavel Parametro criada, isso já aconteceu com vc???

Obrigado

java.sql.SQLException: Token SQL92 nÒo suportado na posiþÒo: 73: PARAMETRO
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:169)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:211)
at oracle.jdbc.dbaccess.DBError.check_error(DBError.java:905)
at oracle.jdbc.driver.OracleSql.handleToken(OracleSql.java:152)
at oracle.jdbc.driver.OracleSql.handleODBC(OracleSql.java:112)
at oracle.jdbc.driver.OracleSql.parse(OracleSql.java:64)
at oracle.jdbc.driver.OracleConnection.nativeSQL(OracleConnection.java:7
75)
at oracle.jdbc.driver.OracleStatement.expandSqlEscapes(OracleStatement.j
ava:4957)
at oracle.jdbc.driver.OracleStatement.parseSqlKind(OracleStatement.java:
4946)
at oracle.jdbc.driver.OraclePreparedStatement.(OraclePreparedState
ment.java:212)
at oracle.jdbc.driver.OraclePreparedStatement.(OraclePreparedState
ment.java:168)
at oracle.jdbc.driver.OracleConnection.privatePrepareStatement(OracleCon
nection.java:614)
at oracle.jdbc.driver.OracleConnection.prepareStatement(OracleConnection
.java:492)
at dori.jasper.engine.util.JRQueryExecuter.executeQuery(JRQueryExecuter.
java:209)
at dori.jasper.engine.util.JRQueryExecuter.executeQuery(JRQueryExecuter.
java:142)
at dori.jasper.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:423)
at dori.jasper.engine.fill.JRFiller.fillReport(JRFiller.java:119)
at dori.jasper.engine.JasperFillManager.fillReport(JasperFillManager.jav
a:219)
at dori.jasper.engine.JasperFillManager.fillReport(JasperFillManager.jav
a:159)
at TesteRelatorioDuto.main(TesteRelatorioDuto.java:31)

NESTED BY :
java.sql.SQLException: Token SQL92 nÒo suportado na posiþÒo: 73: PARAMETRO
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:169)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:211)
at oracle.jdbc.dbaccess.DBError.check_error(DBError.java:905)
at oracle.jdbc.driver.OracleSql.handleToken(OracleSql.java:152)
at oracle.jdbc.driver.OracleSql.handleODBC(OracleSql.java:112)
at oracle.jdbc.driver.OracleSql.parse(OracleSql.java:64)
at oracle.jdbc.driver.OracleConnection.nativeSQL(OracleConnection.java:7
75)
at oracle.jdbc.driver.OracleStatement.expandSqlEscapes(OracleStatement.j
ava:4957)
at oracle.jdbc.driver.OracleStatement.parseSqlKind(OracleStatement.java:
4946)
at oracle.jdbc.driver.OraclePreparedStatement.(OraclePreparedState
ment.java:212)
at oracle.jdbc.driver.OraclePreparedStatement.(OraclePreparedState
ment.java:168)
at oracle.jdbc.driver.OracleConnection.privatePrepareStatement(OracleCon
nection.java:614)
at oracle.jdbc.driver.OracleConnection.prepareStatement(OracleConnection
.java:492)
at dori.jasper.engine.util.JRQueryExecuter.executeQuery(JRQueryExecuter.
java:209)
at dori.jasper.engine.util.JRQueryExecuter.executeQuery(JRQueryExecuter.
java:142)
at dori.jasper.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:423)
at dori.jasper.engine.fill.JRFiller.fillReport(JRFiller.java:119)
at dori.jasper.engine.JasperFillManager.fillReport(JasperFillManager.jav
a:219)
at dori.jasper.engine.JasperFillManager.fillReport(JasperFillManager.jav
a:159)
at TesteRelatorioDuto.main(TesteRelatorioDuto.java:31)

NESTED BY :
dori.jasper.engine.JRException: Error executing report query :

select * from vw_produtos_operados
where ano = ? AND mes = ? $V{PARAMETRO}
order by duto,produto,sentido

&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt; &lt;!-- Created with iReport - A designer for JasperReports --&gt; &lt;!DOCTYPE jasperReport PUBLIC &quot;//JasperReports//DTD Report Design//EN&quot; &quot;http&#58;//jasperreports.sourceforge.net/dtds/jasperreport.dtd&quot;&gt; &lt;jasperReport name=&quot;Teste&quot; columnCount=&quot;1&quot; printOrder=&quot;Vertical&quot; orientation=&quot;Portrait&quot; pageWidth=&quot;595&quot; pageHeight=&quot;842&quot; columnWidth=&quot;535&quot; columnSpacing=&quot;0&quot; leftMargin=&quot;30&quot; rightMargin=&quot;30&quot; topMargin=&quot;20&quot; bottomMargin=&quot;20&quot; whenNoDataType=&quot;NoPages&quot; isTitleNewPage=&quot;false&quot; isSummaryNewPage=&quot;false&quot;&gt; &lt;parameter name=&quot;DUTOS&quot; isForPrompting=&quot;true&quot; class=&quot;java.lang.String&quot;/&gt; &lt;queryString&gt;&lt;!&#91;CDATA&#91; select 'A' from dual where $V!&#123;PARAM&#125; &#93;&#93;&gt;&lt;/queryString&gt; &lt;field name=&quot;A&quot; class=&quot;java.lang.String&quot;/&gt; &lt;variable name=&quot;PARAM&quot; class=&quot;java.lang.String&quot; resetType=&quot;Report&quot; calculation=&quot;Nothing&quot;&gt; &lt;variableExpression&gt;&lt;!&#91;CDATA&#91;$P&#123;DUTOS&#125;!=null &amp;&amp; ! $P&#123;DUTOS&#125;.equals&#40;&quot;&quot;&#41;?&quot;and duto IN&#40;&quot; + $P&#123;DUTOS&#125; + &quot;&#41;&quot;&#58;&quot;&quot;&#93;&#93;&gt;&lt;/variableExpression&gt; &lt;/variable&gt; &lt;title&gt; &lt;band height=&quot;50&quot;&gt; &lt;/band&gt; &lt;/title&gt; &lt;pageHeader&gt; &lt;band height=&quot;50&quot;&gt; &lt;/band&gt; &lt;/pageHeader&gt; &lt;columnHeader&gt; &lt;band height=&quot;30&quot;&gt; &lt;/band&gt; &lt;/columnHeader&gt; &lt;detail&gt; &lt;band height=&quot;50&quot;&gt; &lt;textField isStretchWithOverflow=&quot;false&quot; pattern=&quot;&quot; isBlankWhenNull=&quot;false&quot; evaluationTime=&quot;Now&quot; hyperlinkType=&quot;None&quot; &gt; &lt;reportElement mode=&quot;Transparent&quot; x=&quot;73&quot; y=&quot;30&quot; width=&quot;80&quot; height=&quot;11&quot; forecolor=&quot;#000000&quot; backcolor=&quot;#FFFFFF&quot; positionType=&quot;FixRelativeToTop&quot; isPrintRepeatedValues=&quot;true&quot; isRemoveLineWhenBlank=&quot;false&quot; isPrintInFirstWholeBand=&quot;false&quot; isPrintWhenDetailOverflows=&quot;false&quot;/&gt; &lt;textElement textAlignment=&quot;Left&quot; verticalAlignment=&quot;Top&quot; lineSpacing=&quot;Single&quot;&gt; &lt;font fontName=&quot;Helvetica&quot; pdfFontName=&quot;Helvetica&quot; size=&quot;10&quot; isBold=&quot;false&quot; isItalic=&quot;false&quot; isUnderline=&quot;false&quot; isPdfEmbedded =&quot;false&quot; isStrikeThrough=&quot;false&quot; /&gt; &lt;/textElement&gt; &lt;textFieldExpression class=&quot;java.lang.String&quot;&gt;&lt;!&#91;CDATA&#91;$F&#123;A&#125;&#93;&#93;&gt;&lt;/textFieldExpression&gt; &lt;/textField&gt; &lt;/band&gt; &lt;/detail&gt; &lt;columnFooter&gt; &lt;band height=&quot;30&quot;&gt; &lt;/band&gt; &lt;/columnFooter&gt; &lt;pageFooter&gt; &lt;band height=&quot;50&quot;&gt; &lt;/band&gt; &lt;/pageFooter&gt; &lt;summary&gt; &lt;band height=&quot;50&quot;&gt; &lt;/band&gt; &lt;/summary&gt; &lt;/jasperReport&gt;

Borges

Consegui resolver, mas não da forma que vc disse

Quando coloco uma variavel na Query ele dá um erro e diz que não suporta, entaum oque eu fiz
Não criei a Variável e Sim um Parametro e passei o mesmo na Query e na condição desse parametro criado:
($P{DUTOS}!=null ? " and duto IN(" + (String)$P{DUTOS} + “)”:"")
Sou obrigado a fazer um Casting para String do parametro $P{DUTOS}

Valeu pela Dica

Obrigado

Rocha

Ok

Borges,

Pelos seus posts, parece que vc usa Linux, certo?
Estou usando o iReports e JasperReports no Conectiva 10 e estou tendo alguns problemas.

Parece que a banda title está subindo muito na pagina a ponto
de quase desaparecer, enquanto que a banda pageFooter simpesmente desaparece.

A visualização através do iReport JasperView apresenta as bandas certinhas.

Se eu processo o mesmo relatório no windows, a visualização e a impressão são efetuadas corretamente.

Você já teve um problema desse tipo?

[]'s

Robert

:frowning:

Please compilo un jsp y sale el error HTTP Status 500 -


type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: org/eclipse/jdt/internal/compiler/env/INameEnvironment
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:498)
at org.apache.jsp.html_jsp._jspService(html_jsp.java:106)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:92)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)

root cause

java.lang.NoClassDefFoundError: org/eclipse/jdt/internal/compiler/env/INameEnvironment
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2328)
at java.lang.Class.getConstructor0(Class.java:2640)
at java.lang.Class.newInstance0(Class.java:321)
at java.lang.Class.newInstance(Class.java:303)

el paquete org/eclipse/jdt/internal/compiler/env/INameEnvironment ya lo tengo al mismo nivel del proyecto, que debo hacer??GRACIAS!