Buen dia , tengo un problema ,despues de hacer mi rutina y poblar un objeto list y pasarlo como datasource me genera este error , por favor ayuda sobre como corregir este error , necesito corregirlo o comprenderlo pues no puedo usar la conexión a base de datos por diversas circunstancias a continuación explico el código que estoy usando
el reporte tiene cuatro campos (fields) ARTICULO,DESCRIPCION,VARIEDAD,SERIE
y comienzo construyendo una clase llamada ArticuloInventario con sus respectivos getters y setters
Código:
public ArticuloInventario() {
}
public ArticuloInventario(String ARTICULO,String DESCRIPCION,String VARIEDAD,String SERIE){
this.ARTICULO = ARTICULO;
this.DESCRIPCION = DESCRIPCION;
this.VARIEDAD = VARIEDAD;
this.SERIE = SERIE;
}
public void SetARTICULO(String ARTICULO){
this.ARTICULO = ARTICULO;
}
public String getARTICULO(){
return ARTICULO;
}
public void setDESCRIPCION(String DESCRIPCION){
this.DESCRIPCION = DESCRIPCION;
}
public String getDESCRIPCION(){
return DESCRIPCION;
}
public void setVARIEDAD(String VARIEDAD){
this.VARIEDAD = VARIEDAD;
}
public String getVARIEDAD(){
return VARIEDAD;
}
public void setSERIE(String SERIE){
this.SERIE = SERIE;
}
public String getSERIE(){
return SERIE;
}
}
después realizo una consulta y construyo mi objeto y lista y lo mando a mostrar el reporte con una rutina llamada MostrarReporte con el datasource como parámetro
Código:
public void BuscarArticulo() throws SQLException{
String Valor = txtArticulos.getText();
ConexionMySQL ConexionMysql = new ConexionMySQL();
Connection cn = ConexionMysql.Conectar();
try{
Statement stArticulos = cn.createStatement();
ResultSet rsArticulos = stArticulos.executeQuery("select t1.ID_ART,t1.ARTICULO,t1.DESCRIPCION,t2.VARIEDAD,t3.SERIE,t4.TALLA,t5.CANTIDAD from Articulos as t1 left outer join VARIEDADES as t2 on t1.ID_VAR = t2.ID left outer join SERIES_CORRIDAS as t3 on t1.ID_SERTAL = t3.ID_CORRIDA left outer join BC_ARTICULOS as t4 on t1.ID_ART = t4.ID_ART left outer join INVENTARIO_ACTUAL as t5 on t4.BARCODE = t5.BARCODE where t1.ARTICULO in ('" + Valor.replace(",","','") + "')");
Collection ListaArticulos = new ArrayList();
while(rsArticulos.next()){
ArticuloInventario ArticuloInv = new ArticuloInventario(rsArticulos.getString("ARTICULO"),rsArticulos.getString("DESCRIPCION"),rsArticulos.getString("VARIEDAD"),rsArticulos.getString("SERIE"));
ListaArticulos.add(ArticuloInv);
RegistroDetalle [0] = rsArticulos.getString("ID_ART");
RegistroDetalle [1] = rsArticulos.getString("ARTICULO");
RegistroDetalle [2] = rsArticulos.getString("DESCRIPCION");
RegistroDetalle [3] = rsArticulos.getString("VARIEDAD");
RegistroDetalle [4] = rsArticulos.getString("SERIE");
RegistroDetalle [5] = rsArticulos.getString("TALLA");
RegistroDetalle [6] = rsArticulos.getString("CANTIDAD");
ModeloArticulos.addRow(RegistroDetalle);
}
JRBeanCollectionDataSource DataSource = new JRBeanCollectionDataSource(ListaArticulos);
MostrarReporte(DataSource);
}
catch(Exception e){
JOptionPane.showMessageDialog(null,e);
}
finally{cn.close();}
}
y por ultimo este es mi rutina para mostrar el reporte
Código:
public void MostrarReporte(JRBeanCollectionDataSource RSDS ){
JasperReport ReporteInventario;
JasperPrint PrevioReporte;
try{
URL url = this.getClass().getResource("ConsultaInventario.jasper");
ReporteInventario = (JasperReport)JRLoader.loadObject(url);
PrevioReporte = JasperFillManager.fillReport(ReporteInventario,null,RSDS);
JasperViewer.viewReport(PrevioReporte);
}
catch(Exception e){
JOptionPane.showMessageDialog(null, e);
}
}
al ejecutar la aplicación me envía el siguiente mensaje de error
net.sf.jasperreports.engine.JRException : Error retrieving field value from bean: ARTICULO
necesito pasar los datasource asi debido a que creando la consulta en el ireport no me deja ejecutar el select * from ARTICULOS where articulo in (' Parametro')
, extrañamente si ejecuto select * from ARTICULOS where articulo in ('28-wilson') es decir sin pasarle parámetros si me permite ejecutar la sentencia pero si reemplazo el articulo por el parámetro de entrada me envía un error , si puedieran ayudarme a entender el error en cualquiera de ambos casos estare muy agradecido gracias