Relatório usando ireport com objeto - Desktop

Boa tarde pessoal!!!

peço uma ajudinha de vc’s,
eh o seguinte, estou fazendo uma aplicacao de controle, onde ele acessa o banco de dados e busca os dados, ate ai ta tranquilo
jogo os dados em uma jtable e depois de jogados na jtable eu quero imprimi-los, mais ai que o bicho ta pegando, pq quero usar o ireport e nao sei como fazer isso, passar esses dados para serem impressos, nao precisa nem mostrar o que sera impresso, ja pode ser impresso direto para a impressora 'mas com uma formatação"
se alguem puder ajudar agradeço!!!

:smiley:

Olá amigo.

O Irreport não pega dos dados da sua aplicação .

O Ireport trás os dados DIRETO DO BANCO DE DADOS.

Quando vc vai criar um relatorio, vc vai especificar o banco de dados que o relatorio irá buscar , e o camando SQL que trará os dados para o relatorio.

… Bom … falar é facil, … o Irreport é até bastante intuitivo, mas existem coisas que se alguem não te falar, tu vai demorar muito para descubrir. Infelismente, o material que circula na internet sobre o Irreport é muito pobre, e você terá que pesquisasr um bocado para aprender a usaro o Irreport/Jasper Report… o que eu posso te ajudar no momento é o seguinte:

http://www.javafree.org/javabb/viewtopic.jbb?t=3154

aki te um tutorial legal…

se vc tiver paciencia, quando eu chegar em casa, eu te mando um tuto , que é SHOW DE BOLA , mas é em ingles, espero que isso não seja problema…

PS , na área de tutoriais e artigos do GUJ também tem bastante,

Como já disse, o material na internet sobre o Irrepor é muito excasso, e os poucos que tem muitas vezes são de versões diferentes das atuais, mas vai tentandu quebrar o galho ai, e te mando akela apostila q citei

FALOW

[quote=javando]Olá amigo.

O Irreport não pega dos dados da sua aplicação .

O Ireport trás os dados DIRETO DO BANCO DE DADOS.

Quando vc vai criar um relatorio, vc vai especificar o banco de dados que o relatorio irá buscar , e o camando SQL que trará os dados para o relatorio.

… Bom … falar é facil, … o Irreport é até bastante intuitivo, mas existem coisas que se alguem não te falar, tu vai demorar muito para descubrir. Infelismente, o material que circula na internet sobre o Irreport é muito pobre, e você terá que pesquisasr um bocado para aprender a usaro o Irreport/Jasper Report… o que eu posso te ajudar no momento é o seguinte:

http://www.javafree.org/javabb/viewtopic.jbb?t=3154

aki te um tutorial legal…

se vc tiver paciencia, quando eu chegar em casa, eu te mando um tuto , que é SHOW DE BOLA , mas é em ingles, espero que isso não seja problema…

PS , na área de tutoriais e artigos do GUJ também tem bastante,

Como já disse, o material na internet sobre o Irrepor é muito excasso, e os poucos que tem muitas vezes são de versões diferentes das atuais, mas vai tentandu quebrar o galho ai, e te mando akela apostila q citei

FALOW[/quote]

javando,

Na verdade, o IReport/JasperReports pode sim gerar relatórios a partir de objetos. Basta que você passe para ele uma classe que extenda Collection. Abaixo segue um fragmento do código que eu uso:

	public void showReport(String report, Map params, 
			Collection collection, boolean showPrint) throws ReportException {
		
		JasperPrint jasperPrint;
		JasperViewer jasperViewer;
		JRDataSource dataSource;
		
		if (collection != null){
			dataSource = new JRBeanCollectionDataSource(collection);
		}
		else{
			dataSource = null;
		}
		
		try{

			jasperPrint = JasperFillManager.fillReport(report, params, dataSource);
		
			if (showPrint){
				jasperViewer = new JasperViewer(jasperPrint, false);
				jasperViewer.setZoomRatio(0.75F);
				jasperViewer.setLocationRelativeTo(null);
				jasperViewer.show();
			}
			else{
				JasperPrintManager.printReport(jasperPrint, true);
			}
		}
		catch(JRException exception){
			throw new ReportException(exception);
		}
	}

Tem Jeito Sim!!!
Eu passei mals bocados pra encontrar como fazer a impressão do relatorio no Ireport sem conexao com o banco de dados…

Aqui vai o jetito com eu consegui…


public class Inicio {

	public void exibirRelatorio() {
		
		// Caminho onde está o  arquivo .jasper	
		String caminhoRelJasper = "C:"+File.separator+"develop"+
		File.separator+"code"+File.separator+"report-gi"+File.separator+
		"webapp"+File.separator+"WEB-INF"+File.separator+"jasper"+
		File.separator+"Boleto.jasper";
	 	
		// Armazena em uma lista os dados que vc irá imprimir
		List listaLivros = getLivros();
				

		// Stream com o .jasper
		InputStream relJasper = getClass().getResourceAsStream(caminhoRelJasper);
	
		// O datasource
		JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(listaLivros);

		// Parametros do relatorios
		Map parametros = new HashMap();

		JasperPrint impressao = new JasperPrint();
		
		try {

			impressao = JasperFillManager.fillReport(caminhoRelJasper ,parametros, ds);
			
			JasperViewer viewer = new JasperViewer(impressao, true);
			viewer.setVisible(true);
                                                //Nome e diretorio onde vai ser gerado o PDF
			String destFileName  ="C:\geraPDF.pdf";
			JasperExportManager.exportReportToPdfFile(impressao,destFileName);
			JasperExportManager.exportReportToHtmlFile(impressao,destFileNameHTML);		
		} catch (JRException e) {
			System.out.println(e.getMessage());
			System.out.println("PRINTSTACKTRACE = ");
			e.printStackTrace();
		}

	}

Falow

Karaka , dessa eu não sabia …

Valew gente XD

valeu ai pela presteza
vou tentar fazer aki
se eu conseguir eu posto o codigo todo comentado pra ajudar a galera!!!

:slight_smile:

Esse artigo aki é exatamente o que vcs precisam

Link: http://blog.apollo-ti.com/?p=8

FLwS…

[quote=feltraco]Esse artigo aki é exatamente o que vcs precisam

Link: http://blog.apollo-ti.com/?p=8

FLwS…[/quote]

Nossa, pelo que ele fala ai eh o q estou precisando mesmo
mais eh uma pena que nao aprendi a fazer relatorios e nem sub-relatorios, e ja dei uma olhada em alguns tutoriais e nao compreendi muito bem!!!
vou continuar tentando!!!
valew ai feltraco!!!
:slight_smile:

nesse artigo eu deixei os códigos fontes da aplicação
e os fontes (JRXML) do jasper tb…

tenta se basear no que ta feito
qq duvida pode falar la no blog ou aki

FLwS

[quote=feltraco]nesse artigo eu deixei os códigos fontes da aplicação
e os fontes (JRXML) do jasper tb…

tenta se basear no que ta feito
qq duvida pode falar la no blog ou aki

FLwS[/quote]

feltraco, me desculpa ai, mais eh que nao estou conseguindo fazer!!!
peguei o exemplo la do seu blog e nem consegui abri-lo no ireport!! ou entao minha ignorancia e grande, rsss
se vc tiver algum tutorial d como criar relatorios mais simples… ou algo do tipo,
os .jasper nem abre no ireport, como q fasso pra editar e criar???
me de uma ajuda ai!
:?:

O arquivo jasper, eh o arquivo compilado. Os fontes sao JRXML, use estes para abrir.

http://blog.apollo-ti.com/wp-content/uploads/2008/01/mini-tutorial_relatorios_java_jasperreports_e_ireport.pdf

Nesta apostila mostra a criação de um formulario simples, com um sub-relatorio utilizando MySQL, e como inseri-lo em uma pagina JSP.
Procure sobre as bandas do relatorio:
Page Header, Title, Detail, etc…

Lembre-se: quando vc esta editando no IReports, vc salva um arquivo JRXML, no IReports mesmo tem uma opção para
compilar o arquivo, que entao sera gerado um .jasper

Caso tenha algum problema, diga exatamente em que parte sentiu dificuldades, fica mais facil ajudar…

FLwS…

Pessoal, desculpe reativar o tópico. Estou começando a trabalhar com Ireport e Jasper, tenho dois relatórios feitos no Ireport que geraram dois arquivos .jasper que já estão no meu projeto. Segui os passos do tutorial do arquivo em pdf: mini tutorial…pdf. No Ireport o relatório ficao show. Mas quando vou chamá-lo pelo Servlet dá problema.

Estou usando o servlet abaixo, está dando erro http 500:
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Servlet execution threw an exception
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:36
root cause

Print Stack Trace:
net.sf.jasperreports.engine.JRException: java.lang.reflect.InvocationTargetException

Quando compilei vi que o erro acontece quando tenta carregar o arquivo jasper. Marquei a linha do meu código onde a execução para. Alguém pode me dar uma luz? Ou mesmo me passar um Servlet que posso usar? Valeu…

package Relatorios;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperManager;
import net.sf.jasperreports.engine.JasperPrint;

public class Relatorios extends HttpServlet {

public static Connection con;
public static String banco = “banco”; // Nome do banco de dados
public static String usuario = “usuario”; // Usuario do banco
public static String senha = “senha”; // Senha

protected void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {

String datainicial = req.getParameter(“dataini”);
String datafinal = req.getParameter(“datafim”);

conexao(); // Faz a conexão
// Na variavel pathJasper ficara o caminho do diretório para
// os relatórios compilados (.jasper)
String pathJasper = getServletContext().getRealPath(
“/WEB-INF/classes/Relatorios”)

  • “\”;
    // A variavel path armazena o caminho real para o contexto
    // isso é util pois o seu web container pode estar instalado em lugares diferentes
    String path = getServletContext().getRealPath("/");
    // Parametros do relatorio
    Map parametros = new HashMap();
    // O único parametro que devemos passar é o PathRelAutores
    // é o caminho pro RelAutores.jasper (que foi subtituido pelo
    // valor fixo ?D:/iReport-0.4.0/RelAutores.jasper?)

parametros.put(“CAMINHO”, pathJasper + “Soma.jasper”);
parametros.put(“DATAINI”, datainicial);
parametros.put(“DATAFIM”, datafinal);
try {

// (AQUI ELE DÁ ERRO!!!)
JasperPrint impressao = JasperFillManager.fillReport(pathJasper

  • “Faturamento.jasper”, parametros, con);

// Grava o relatório em disco em pdf
JasperManager.printReportToPdfFile(impressao, path

  • “/RelatorioLivros.pdf”);
    // Redireciona para o pdf gerado
    res.sendRedirect(“RelatorioLivros.pdf”);
    } catch (Exception e) {
    res.getWriter().println("Erro ao gerar o relatório: " + e);
    }
    }
    // Cria a conexão
    public void conexao() {
    try {
    if (con == null || con.isClosed()) {
    Class.forName(“com.mysql.jdbc.Driver”);
    con = DriverManager.getConnection(
    “jdbc:mysql://192.168.3.5:3306/” + banco, usuario, senha);
    }
    } catch (Exception e) {
    System.out.println(“não foi possível conectar ao banco ->”);
    e.printStackTrace();
    }
    }
    protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1)
    throws ServletException, IOException {
    doPost(arg0, arg1);
    }
    }