Aê pessoal… um amigo meu que manja de PHP, começou a desenvolver os Relats lá no trampo com o IReport… tava dando uma ajudada nele, e havíamos consertado vários erros… só que esse último de fato não consegui achar o erro mesmo… ele tem essa classe
[code]package firstreport;
import java.sql.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRPrintPage;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;
public class SecoundReport {
private static JasperPrint jp;
private static ArrayList page = new ArrayList();
private static SecoundReport sr = new SecoundReport();
public static void main(String[] args) {
ArrayList array = new ArrayList();
array.add(“13832800/2008”);
array.add(“13829094/2008”);
array.add(“13829097/2008”);
array.add(“13829098/2008”);
array.add(“160295/2008”);
//array.add(“160280/2008”);
//array.add(“160298/2008”);
//array.add(“160274/2008”);
//array.add(“160270/2008”);
//array.add(“160267/2008”);
try {
receberParametros(array);
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex);
Logger.getLogger(SecoundReport.class.getName()).log(Level.SEVERE, null, ex);
}
}
public static Connection getConnection( ) throws ClassNotFoundException, SQLException {
String driver = “org.postgresql.Driver”;
String url = “jdbc:postgresql://192.168.200.41:5432/siig_teste”;
String user = “apsuser”;
String password = “wc35v@kvy#&12”;
Class.forName(driver);
Connection con = DriverManager.getConnection( url, user, password );
return con;
}
public static void receberParametros(ArrayList array) throws Exception{
HashMap guia = new HashMap();
for(String i : array) {
guia.put(“NUM_GUIA”, i);
geraRelatorio(guia);
//System.out.println(guia);
}
/* Invoca o método para visualizar o relatório */
visualizarReport();
}
public static void geraRelatorio(HashMap aParam) throws Exception {
Connection con = getConnection();
adicionaPaginasRelatorio(aParam, con);
/* Desenha a primeira página do relatório */
jp = JasperFillManager.fillReport( “./jasper/guia.jasper”, aParam, con );
/* Remover a primeira página do relatório */
jp.removePage(0);
for(int cont = 0; cont < page.size(); cont++){
/* Adicionar as páginas ao relatório JasperPrint (jp) */
jp.addPage(page.get(cont));
}
/* Exporta o relatório para o PDF */
JasperExportManager.exportReportToPdfFile( jp, “./jasper/tmp/ImpressaoGuia.pdf” );
}
public static void adicionaPaginasRelatorio(HashMap parameters, Connection con) throws JRException, Exception {
/* Adiciona páginas ao relatório */
page.add((JRPrintPage) JasperFillManager.fillReport( “./jasper/guia.jasper”, parameters, con ).getPages().get(0));
}
public static void visualizarReport() throws JRException, Exception {
/* Visualizar o relatório na tela */
JasperViewer jrv = new JasperViewer(jp);
jrv.setVisible(true);
}
}[/code]
Quando ele executa dá um ArrayIndexOutOfBound na lata a partir do 4º índice do Array de nome array… se ficar até 4 não dá o erro, mas colocou o 5º elemento, o erro espoca na lata… Poutz… depurando a aplicação dá pra ver que o erro pipoca nessa linha
page.add((JRPrintPage) JasperFillManager.fillReport( "./jasper/guia.jasper", parameters, con ).getPages().get(0));
e ainda vai lá no ArrayList no método RangeCheck, que é onde ele estoura o erro retornando index = 0…
Mas poutz… travei aí… se puderem no olhômetro me dar uma luz do ocorrido (porque to sem poder testar isso aqui em casa) ficarei grato…
Valew Galera
{EDIT}
Era porque as Guias passadas de parâmetro ao relatório, não estavam cadastradas no Banco de Dados
Valew mais uma vez…