Foros del Web » Programación para mayores de 30 ;) » Java »

consulta con parametros en jasper report

Estas en el tema de consulta con parametros en jasper report en el foro de Java en Foros del Web. hola, no soy muy entendida en jasper report, pero hasta ahora habia echo uns cuantas cosillas facilonas y me habian salido bien. Lo que me ...
  #1 (permalink)  
Antiguo 11/03/2008, 11:46
Avatar de cris_maco  
Fecha de Ingreso: abril-2007
Ubicación: Salamanca
Mensajes: 254
Antigüedad: 17 años
Puntos: 0
consulta con parametros en jasper report

hola, no soy muy entendida en jasper report, pero hasta ahora habia echo uns cuantas cosillas facilonas y me habian salido bien. Lo que me pasa es que ahora que intento sacar unos datos con una consulta un poco ms complicada, me da la siguiente excepcion:

java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
at com.mysql.jdbc.PreparedStatement.setInternal(Prepa redStatement.java:2085)
at com.mysql.jdbc.PreparedStatement.setString(Prepare dStatement.java:1182)
at net.sf.jasperreports.engine.query.JRJdbcQueryExecu ter.createStatement(JRJdbcQueryExecuter.java:264)
at net.sf.jasperreports.engine.query.JRJdbcQueryExecu ter.createDatasource(JRJdbcQueryExecuter.java:103)
at net.sf.jasperreports.engine.fill.JRFillDataset.cre ateQueryDatasource(JRFillDataset.java:671)
at net.sf.jasperreports.engine.fill.JRFillDataset.set Datasource(JRFillDataset.java:615)
at net.sf.jasperreports.engine.fill.JRFillDataset.set ParameterValues(JRFillDataset.java:604)
at net.sf.jasperreports.engine.fill.JRBaseFiller.setP arameters(JRBaseFiller.java:871)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill (JRBaseFiller.java:689)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill (JRBaseFiller.java:647)
at net.sf.jasperreports.engine.fill.JRFiller.fillRepo rt(JRFiller.java:63)
at net.sf.jasperreports.engine.JasperFillManager.fill Report(JasperFillManager.java:402)
at sun.reflect.NativeMethodAccessorImpl.invoke(Native MethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(De legatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.struts.actions.DispatchAction.dispatchM ethod(DispatchAction.java:274)
at org.apache.struts.actions.DispatchAction.execute(D ispatchAction.java:194)
at org.apache.struts.action.RequestProcessor.processA ctionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process( RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(Act ionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doGet(Actio nServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:803)

......
NESTED BY :
java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
........

NESTED BY :
net.sf.jasperreports.engine.JRException: Error preparing statement for executing the report query :

select fechaIng, concepto, cuantia, nombre, descripcion from ingresos where fechaIng like '?-?-%'
at net.sf.jasperreports.engine.query.JRJdbcQueryExecu ter.createStatement(JRJdbcQueryExecuter.java:309)
at net.sf.jasperreports.engine.query.JRJdbcQueryExecu ter.createDatasource(JRJdbcQueryExecuter.java:103)
at net.sf.jasperreports.engine.fill.JRFillDataset.cre ateQueryDatasource(JRFillDataset.java:671)
at net.sf.jasperreports.engine.fill.JRFillDataset.set Datasource(JRFillDataset.java:615)
at net.sf.jasperreports.engine.fill.JRFillDataset.set ParameterValues(JRFillDataset.java:604)
at net.sf.jasperreports.engine.fill.JRBaseFiller.setP arameters(JRBaseFiller.java:871)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill (JRBaseFiller.java:689)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill (JRBaseFiller.java:647)
at net.sf.jasperreports.engine.fill.JRFiller.fillRepo rt(JRFiller.java:63)
at net.sf.jasperreports.engine.JasperFillManager.fill Report(JasperFillManager.java:402)
at es.unoabogados.hibernate.struts.action.IngresosAct ion.exportar(IngresosAction.java:326)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Native MethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(De legatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.struts.actions.DispatchAction.dispatchM ethod(DispatchAction.java:274)
at org.apache.struts.actions.DispatchAction.execute(D ispatchAction.java:194)
at org.apache.struts.action.RequestProcessor.processA ctionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process( RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(Act ionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doGet(Actio nServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:803)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invo ke(StandardWrapperValve.java:228)
at org.apache.catalina.core.StandardContextValve.invo ke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invok e(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.servic e(CoyoteAdapter.java:216)
at org.apache.coyote.http11.Http11Processor.process(H ttp11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11Conn ectionHandler.process(Http11Protocol.java:634)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run( JIoEndpoint.java:445)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
at com.mysql.jdbc.PreparedStatement.setInternal(Prepa redStatement.java:2085)
at com.mysql.jdbc.PreparedStatement.setString(Prepare dStatement.java:1182)
at net.sf.jasperreports.engine.query.JRJdbcQueryExecu ter.createStatement(JRJdbcQueryExecuter.java:264)
... 34 more


Yo supongo que es por algo que estoy haciendo mal en la consulta. Pongo la consulta tambien:

<queryString><![CDATA[select fechaIng, concepto, cuantia, nombre, descripcion from ingresos where fechaIng like '$P{anyo}-$P{mes}-%']]></queryString>

los parametros de mes y anyo estan declarados previamente a la consulta:
<parameter name="anyo" isForPrompting="false" class="java.lang.String">
<defaultValueExpression ><![CDATA["0000"]]></defaultValueExpression>
</parameter>
<parameter name="mes" isForPrompting="false" class="java.lang.String">
<defaultValueExpression ><![CDATA["00"]]></defaultValueExpression>
</parameter>

y en la clase java donde hago la llamada para generar el reporte tambien los incluyo bien.

Como ya he dicho no soy muy entendida en este tema, asi que no se como hacer para que la consulta funcione bien y he mirado en paginas donde se pasan parametros y creo que lo hago bien, a lo mejor es el tipo de consulta que estoy haciendo...

gracias
  #2 (permalink)  
Antiguo 22/12/2008, 06:01
 
Fecha de Ingreso: diciembre-2008
Mensajes: 1
Antigüedad: 15 años, 4 meses
Puntos: 0
Sonrisa Respuesta: consulta con parametros en jasper report

Hola, yo uso jasper reports con sql server 2005 express y me funciona. También tuve el problema que describes en tu mensaje, logré solucionarlo revisando la consulta sql y la sintaxis de uso de los parámetros de ireports. También tuve problemas cuando utilizaba string en vez de date ó viceversa. Si revisas todo esto seguro que te funcionará, sino, escribeme y tal vez te pueda ayudar,
saludos............
  #3 (permalink)  
Antiguo 22/12/2008, 14:28
 
Fecha de Ingreso: diciembre-2008
Mensajes: 8
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: consulta con parametros en jasper report

He trabajado con jasperreports, y es muy probable que se trate de un problema de tipo de datos.

Como decían arriba, al tratar de obtener alguna fecha ( o al compararla) es posible que la estés tratando como un string. Revisa si el campo fechaIng es string. Sino, mejor transformarlo a string, y luego haz la comparación con el LIKE. Es lo único que se me ocurre que puede fallarte, ya que ese SQLException suele ocurrir en esos casos (si, me ha pasado antes, por eso te lo digo).

Avisa en caso de cualquier duda, si la recomendación no sirvió.

Bye.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:23.