Jasper/Ireport parametros para gerar Relatorio

11 respostas
R

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

11 Respostas

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

AND duto IN(‘A2’,‘A4’)
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 …

R

“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

AND duto IN(‘A2’,‘A4’)
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 …

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]

aborges

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!

R

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

aborges

Vc nao leu direito o q eu escrevi !!!

Eu nao disse pra vc criar outro PARAMETRO …

Eu disse para vc criar uma VARIAVEL! :shock:

R

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

aborges

&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;

R

Borges

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

Quando coloco uma variavel na Query ele  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

aborges

Ok

rmlang

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

L

: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!

Criado 11 de maio de 2004
Ultima resposta 15 de abr. de 2005
Respostas 11
Participantes 5