Relatório usando ireport com objeto - Desktop

11 respostas
marcosact

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:

11 Respostas

J

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

P

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

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);
		}
	}
felipebizz

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

J

Karaka , dessa eu não sabia …

Valew gente XD

marcosact

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

:slight_smile:

feltraco

Esse artigo aki é exatamente o que vcs precisam

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

FLwS…

marcosact

feltraco:
Esse artigo aki é exatamente o que vcs precisam

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

FLwS…

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:

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

marcosact

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

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!
:?:

feltraco

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…

fabianoat

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);
    }
    }
Criado 25 de dezembro de 2007
Ultima resposta 5 de mai. de 2008
Respostas 11
Participantes 6