Ao invés de ter que mexer com sql no relatório, você faz ele de tal forma que apenas passando um List
ele ja exibe os dados
segue a classe
package gerenciador;
import java.util.List;
import javax.swing.JDialog;
import objetos.Empresa;
import relatorios.VerificaOrdem;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.view.JasperViewer;
public class Relatorio {
@SuppressWarnings("unchecked")
public static void gerarRelatorio(List lista, String caminho){
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
JDialog viewer = new JDialog(new javax.swing.JFrame(),"Visualização do Relatório", true);
viewer.setSize(screenSize.width, screenSize.height-80);
viewer.setLocationRelativeTo(null);
try {
JRBeanCollectionDataSource jrb = new JRBeanCollectionDataSource(lista);
JasperPrint meuRelatorio = JasperFillManager.fillReport(caminho, null, jrb);
//JOptionPane.showMessageDialog(null, "chegou");
JasperViewer visualizador = new JasperViewer(meuRelatorio, false);
visualizador.setSize(screenSize.width, screenSize.height-80);
viewer.getContentPane().add(visualizador.getContentPane());
viewer.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
}
o metodo gerarRelatorio espera uma lista, e uma string com o caminho
ele cria uma JDialog para visualizar o relatorio, pega o tamanho da tela e diminui 80 pixels da altura
e o JRBeanCollectionDataSource nada mais é do que a lista que exibira os relatorios
é exibido o relatorio
obs* lembrando que se for passar caminho para o relatorio em um diretorio do computador se usa 2 barras invertidas
ex: C:\\sistema\\relatorio\\relatorio.jasper
agora se for utilizar a partir da raiz do programa pode ser
/relatorio/relatorio.jasper
abraço
Nenhum comentário:
Postar um comentário