Ireport javaBeans

13 respostas
H

Fiquei assustado com a quantidade de tutoriais do iReport com conexão com o banco e nenhum exemplo de criação utilizando javabean.
Estou utilizando o iReport 1.3.0, e gostaria de criar um relatoria utilizando javabeans…
1 - eu criei uma classe com alguns beans para testar

<blockquote>public class MyFirstBean

{

private String nome;

private int idade;

private double altura;
public String getNome()

{

return nome;

}
public void setNome(String nome)

{

this.nome = nome;

}
public int getIdade()

{

return idade;

}
public void setIdade(int idade)

{

this.idade = idade;

}
public double getAltura()

{

return altura;

}
public void setAltura(double altura)

{

this.altura = altura;

}

}</blockquote>

No classpath do ireport eu coloquei o folder dessa classe, isso esta certo?

2- quando vou tentar criar uma query, seleciono a aba java bean data source e não aparece nenhuma classe para eu recuperar os fields da um erro de Class Not Found Error3 - Eu posso criar os campos dinamicos do relatorio sem precisar ler nada por alguma query?

Grato

13 Respostas

G

Cara,tenho a mesma duvida que vc,espero um dia sana-la.

V

É o seguinte, não dá para utilizar um javabean como fonte de dados. Nesse caso, melhor que dá pra fazer é utilizar um Map ou um List.

H

ta bem, mas eu consigo criar os campos pro meu formulario sem o banco de dados?
pq meu programa nao tem banco de dados, então eu preciso fazer o layout do formulario, mas não sei como faze-lo sem configurar a query de entrada

F

Retomando o tópico, estou com o mesmo problema.

Uso o iReport 2.0.2. No menu Data > Query do Relatório… , depois de apanhar um pouco consegui adicionar a pasta onde está meu bean ao classpath, porém quando clico no botão Ler atributos não acontece nada. Segue o código do bean:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.spdata.tecnico.rdv;

import java.util.Date;

/**
 * @author fkj
 */
public class RDVPrintBean
{
   /*private final Date EMITIDO_EM = new Date();
   public enum   Tipo {DINHEIRO, CARTAO};
   private Tipo   tipo;*/
   private int    numeroControle;
   private short  codigoTecnico;
   private String nomeTecnico;
   private Date   dataFechamento;
   private float  totalRefeicoes;
   private float  totalHoteis; 	  	
   private float  totalPassagens;
   private float  totalDiversos;
   private float  totalVeiculos;
   private int    totalKM;

   public RDVPrintBean()
   {
   }

   /*public Tipo getTipo()
   {
      return tipo;
   }

   public void setTipo(Tipo tipo)
   {
      this.tipo = tipo;
   }*/   
   
   public short getCodigoTecnico()
   {
      return codigoTecnico;
   }

   public void setCodigoTecnico(short codigoTecnico)
   {
      this.codigoTecnico = codigoTecnico;
   }

   public Date getDataFechamento()
   {
      return dataFechamento;
   }

   public void setDataFechamento(Date dataFechamento)
   {
      this.dataFechamento = dataFechamento;
   }

   public String getNomeTecnico()
   {
      return nomeTecnico;
   }

   public void setNomeTecnico(String nomeTecnico)
   {
      this.nomeTecnico = nomeTecnico;
   }

   public int getNumeroControle()
   {
      return numeroControle;
   }

   public void setNumeroControle(int numeroControle)
   {
      this.numeroControle = numeroControle;
   }

   public float getTotalDiversos()
   {
      return totalDiversos;
   }

   public void setTotalDiversos(float totalDiversos)
   {
      this.totalDiversos = totalDiversos;
   }

   public float getTotalHoteis()
   {
      return totalHoteis;
   }

   public void setTotalHoteis(float totalHoteis)
   {
      this.totalHoteis = totalHoteis;
   }

   public int getTotalKM()
   {
      return totalKM;
   }

   public void setTotalKM(int totalKM)
   {
      this.totalKM = totalKM;
   }

   public float getTotalPassagens()
   {
      return totalPassagens;
   }

   public void setTotalPassagens(float totalPassagens)
   {
      this.totalPassagens = totalPassagens;
   }

   public float getTotalRefeicoes()
   {
      return totalRefeicoes;
   }

   public void setTotalRefeicoes(float totalRefeicoes)
   {
      this.totalRefeicoes = totalRefeicoes;
   }

   public float getTotalVeiculos()
   {
      return totalVeiculos;
   }

   public void setTotalVeiculos(float totalVeiculos)
   {
      this.totalVeiculos = totalVeiculos;
   }   
}
A

1º Criar o JAR do Projeto
2º Adiciona-lo ao classpath do IReport (Options->Classpath->Add JAR e salvem…)
3º Ler os campos na aba de javabeans

Qdo vcs forem ler os campos vcs tem que colocar onde esta a classe nos pacotes por exemplo
br.com.teste.VO.Classe

4º Criar seus relatorios…

F

Criando um JAR funcionou, mas minha aplicação é Java EE, portanto a ferramenta deveria suportar arquivos WAR também.

F

Consegui resolver, para projetos Java EE deve ser adicionada a seguinte pasta:

/caminhoAbsolutoDoSeuProjeto/build/web/WEB-INF/classes

Porém, conforme mencionei acima, se a ferramenta suportasse arquivos WAR teria me economizado um bom tempo :!:

F

Detalhe importante: pode parecer óbvio, mas se seu java bean tem propriedades que não são classes do próprio java, vc tem q adicioná-las ao seu classpath. Caso contrário quando vc mandar ler os atributos dele não vai acontecer nada, nenhuma mensagem de erro.

I

Ola,
Estou com o mesmo problema, tentei gerar o jar com o pacote entidades (onde esta meus javabeans)
adicionei este jar no classpath

mas nao funciona

como devo chamar a classe:

qual dos paths eu devo fornecer

entidade.QuestaoAudit.class
entidade.QuestaoAudit
entidade.QuestaoAudit.java

alguem poderia me ajudar

F

nomeDoPacote.nomeDaClasse

sem extensão

I

ja tentei tudo colocar jar
colocar o caminho dos arquivos
nada funciona

G

E ai galera tudo ok…

Estou com um pequeno problema com o IReport, se alguem puder me ajudar fico muito agradecido.

Meu problema e em relação a passagem de um ArrayLista para o relátorio.
Segue o Problema

Tenho as Seguintes classes;

// Classe dos titulares

class Titular{

String nome;

Integer idade;

ArrayList dep = new ArrayList();
Titular(String n, Integer i){

nome = n;

idade = i;

dep.add(new Dependente(Gustavo, M, 20));

dep.add(new Dependente(Wellington, M, 30));

dep.add(new Dependente(Jamilson, M,20));

dep.add(new Dependente(Izabel, S, 45));

}
public ArrayList get(){

return dep;

}

}
Classe dos dependentes

class Dependente{

private String nome_dep;

private String sexo;

private int idade;
Dependente(String n, String s, int i){

nome_dep = n;

sexo = s;

idade = i;

}

public void setSexo(String s){

sexo = s;

}
public String getSexo(){

return sexo;

}
public void setNome_Dep(String n){

nome_dep = n;

}
public String getNome_Dep(){

return nome_dep;

}
public void setIdade(int n){

idade = n;

}
public int getIdede(){

return this.idade;

}

}

// Classe referente ao relatório
public class RelatorioArrayList {

/**

  • @param args
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    new RelatorioArrayList().geraRelatorio();

}

public void geraRelatorio(){
Titular t = new Titular(“Jamiro”, 5;

ArrayList dep = t.get();

System.out.println(((Dependente)dep.get(1)).getNome_Dep());

Map parametros = new HashMap();

parametros.put(nome, t.nome);

parametros.put(idade, t.idade);
try {

// Objeto com arrayList

JRBeanCollectionDataSource BCD = new JRBeanCollectionDataSource(dep);

parametros.put(“dep”, BCD);

JREmptyDataSource ED = new JREmptyDataSource();

// Compila Relatório
JasperReport jasperReport = JasperCompileManager.compileReport("/Java/Workspace/reports/Rel_ArrayList.jrxml");

// Preenche relatório
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parametros, ED);

JasperViewer.viewReport(jasperPrint, true);

} catch (JRException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

catch (Exception f) {

// TODO Auto-generated catch block

f.printStackTrace();

}

}

}

IReport

No Relatório principal:
Criei três parâmetro:
nome java.lang.String
idade java.lang.Integer
dep java.lang.Object

Cofigureio subreport da seguinte maneira:

Subrelatorio:
Expressão de Conexão/Fonte de dados
USAR UM DATA SOURSE
$P{dep}

Sub-Relatório(outros)
Coloquei o path do meu relatório: “C:\Java\Workspace\Reports\RelSub_ArrayList.jasper”

No Sub Relatório:
Crie um fild:
nome_dep java.lang.String

Quando executo meu código (ECLIPSE) o seguinte erro é apresentado:

java.lang.NoSuchMethodException: Unknown property ‘nome_dep’

net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : nome_dep

Não coloquei toda a descrição dos erros por questão de espaço.
Alguém pode me ajudar com isso?
Obrigado

C

nomeDoPacote.nomeDaClasse

sem extensão

pessoal… essa dica dada pelo nosso amigo é a palavra chave…

o nomeDoPacote.nomeDaClasse

por exemplo

br.com.liax.modelo.parceironegocios.ParceiroNegocios

comigo deu certo o/

Criado 1 de fevereiro de 2007
Ultima resposta 13 de abr. de 2010
Respostas 13
Participantes 8