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
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???
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
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
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}
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!