Ireport

15 respostas
B

Srs, Bom dia.

Uilizo o ireport 3.0.0 e 3.5.2 para gerar relatório, estou tentando importar uma classe do java no ireport.

Alguem tem alguma ideia de como fazer essa importação ?

Resumidamente:
Quero chamar um metodo dentro do ireport.
ex: br.com.guj.exemplo

Obrigado.

15 Respostas

nieri

tente ferramentas - opçoes - e adicione o projeto na aba classpath

abrax

B

Blz consegui mais mesmo assim ela nao acha meu metodo criado no java.

criei um parametro no ireport chamado Teste.

e no netbeans criei um pacote chamado Rel, dentro desse pacote criei uma classe chamada Teste com um metodo getValue()

Configuração feita no campo Teste parametro.

tipo de classe de parametro:
Rel.Teste.getValue

Valor padrao da expressao:
new $P{Teste}.getValue()

e estou tentando chamar o metdo getValue em um campo assim:
$P{Teste}.getValue();

ele mostra essa msg abaixo:
Sourced file: inline evaluation of: ``((Rel.Teste.getValue)parameter_Teste.getValue()).getValue();’’ : Class: Rel.Teste.getValue not found in namespace
Rel .Teste .getValue
Line: 1

Obrigado.

nieri

qual é a finalidade de vc acessar esse metodo?

os dados que vc utiliza para formar os campos do
relatório vem de acordo com o seu select

B

Finalidade é que preciso chamar o metodo para realizar o tratamento dos dados que vem do banco de dados

Ex adicionar 000 antes do numero 1, quando esta no banco de dados ele tira todos os zero a frente.

Tratar campo data que esta no padrão americano, com isso não precisaria fazer isso na query.

Chamando metodo me ajudaria bastante, porem não estou conseguindo chamar o metodo dentro do ireport.

Obrigado.

Bruno

alessandro.a.r

Eu uso um método para formatar valores do banco. Eu fiz o seguinte:

  • Primeiro, eu adicionei o jar que contem a classe ao meu classpath (menu opcoes > classpath > adicionar jar).
  • Depois criei uma variável e coloquei o caminho completo até o método e passei um field pro método. O field é o valor que vem do banco de dados.
    ex: br.com.site.framework.Util.formataContrato($F{contrato}.toString())
B

alessandro.a.r,

olha só eu tenho uma classe chamada:

package Rel;

public class Teste {

public String getValue(){

return funcionou a chamada ao metodo;

}

}

como eu chamaria ela no ireport, tipo eu configuro na variavel ou field.

Obs: eu ja add o jar no meu classpath porem continua não achando e dando erro.

franciscossouza

Eu costumo formatar os dados usando as classes da API do Java, através das expressions do iReport. Não da pra fazer também? :slight_smile:

B

Eu acho que sim mais ja tenho tudo em java, mais gostaria de aprender a programação do ireport tmb se você tiver o manual ou apostila.

Manda por e-mail que é show…

[email removido]

Obrigado.

Bruno

alessandro.a.r

bpmachado:
alessandro.a.r,

olha só eu tenho uma classe chamada:

package Rel;

public class Teste {

public String getValue(){

return funcionou a chamada ao metodo;

}

}

como eu chamaria ela no ireport, tipo eu configuro na variavel ou field.

Obs: eu ja add o jar no meu classpath porem continua não achando e dando erro.

Caro, além de add o jar ao classpath, tenta também adicionar a classe ou pacote através da opção “diretivas do relatório” (ou algo parecido com isso). Pra chamar o método é só tu colocar ele dentro de uma variável.
Ex: br.com.site.framework.Util.formataContrato()
Não sei se o método tem que ser static, mas acredito que deva ser, pois tu não vai estar criando uma instância. Se tu fizer isso e o ireport der uma mensagem de “classe não encontrada” então tu compila o relatório que ele vai se achar.

B

alessandro.a.r:
bpmachado:
alessandro.a.r,

olha só eu tenho uma classe chamada:

package Rel;

public class Teste {

public String getValue(){

return funcionou a chamada ao metodo;

}

}

como eu chamaria ela no ireport, tipo eu configuro na variavel ou field.

Obs: eu ja add o jar no meu classpath porem continua não achando e dando erro.

Caro, além de add o jar ao classpath, tenta também adicionar a classe ou pacote através da opção “diretivas do relatório” (ou algo parecido com isso). Pra chamar o método é só tu colocar ele dentro de uma variável.
Ex: br.com.site.framework.Util.formataContrato()
Não sei se o método tem que ser static, mas acredito que deva ser, pois tu não vai estar criando uma instância. Se tu fizer isso e o ireport der uma mensagem de “classe não encontrada” então tu compila o relatório que ele vai se achar.

Você consegue tirar uma print da sua classe dentro do java como esta mapeado o pacote e no ireport como está configurado a variavel ?

alessandro.a.r

Cara, no momento não tenho como verificar isso, mas o pacote da classe é o mesmo utilizado no ireport.

ex:

package br.com.site.framework;
public class Util{
  public static String formataContrato(){
          return "xxx";
  }
}

no ireport é só colocar o caminho completo. Eu usei essa classe dentro de um jar, então eu adicionei o jar ao classpath antes.

B

alessandro.a.r:
Cara, no momento não tenho como verificar isso, mas o pacote da classe é o mesmo utilizado no ireport.

ex:

package br.com.site.framework;
public class Util{
  public static String formataContrato(){
          return "xxx";
  }
}

no ireport é só colocar o caminho completo. Eu usei essa classe dentro de um jar, então eu adicionei o jar ao classpath antes.

Alessandro olha estou gerando o jar certinho e tals e adicionando no classpath do ireport.

Minha classe no java está:

Projeto- nome do projeto
src
uteis - nome do pacote
Uteis.java - Classe java

Dentro do java criei um metodo:

package uteis;

import java.io.BufferedReader;

public class Uteis {
public static String formataContrato(){
     return "xxx";
}

No ireport estou criando um parametro e coloco as informações assim segue abaixo:

Nome do parametro: formataContrato
Tipo de classe de parametro: uteis.Uteis.formataContrato
Valor padrão da expressão: new uteis.Uteis.formataContrato()

Ele ta gerendo erro
java.lang.ClassNotFoundException: uteis.Uteis.Uteis.formataContrato
Line: 26, Column: 101 JRXML Element: /jasperReport/parameter[1]

B

alessandro.a.r:
Cara, no momento não tenho como verificar isso, mas o pacote da classe é o mesmo utilizado no ireport.

ex:

package br.com.site.framework;
public class Util{
  public static String formataContrato(){
          return "xxx";
  }
}

no ireport é só colocar o caminho completo. Eu usei essa classe dentro de um jar, então eu adicionei o jar ao classpath antes.

Alessandro olha estou gerando o jar certinho e tals e adicionando no classpath do ireport.

Minha classe no java está:

Projeto- nome do projeto
src
uteis - nome do pacote
Uteis.java - Classe java

Dentro do java criei um metodo:

package uteis;

import java.io.BufferedReader;

public class Uteis {
public static String formataContrato(){
     return "xxx";
}

No ireport estou criando um parametro e coloco as informações assim segue abaixo:

Nome do parametro: formataContrato
Tipo de classe de parametro: uteis.Uteis.formataContrato
Valor padrão da expressão: new uteis.Uteis.formataContrato()

Ele ta gerendo erro
java.lang.ClassNotFoundException: uteis.Uteis.Uteis.formataContrato
Line: 26, Column: 101 JRXML Element: /jasperReport/parameter[1]

alessandro.a.r

o problema é esse em negrito:

O compilador acha que formataContrato é uma classe, por isso ele te lança uma ClassNotFoundException. formataContrato é um método e não pode ser usado dessa forma.

O método deve ser usado dentro de uma variável, como no código abaixo:

<variable name="contrato" class="java.lang.String" resetType="None" calculation="Nothing">
     <variableExpression><![CDATA[uteis.Uteis.formataContrato($F{contrato}.toString())]]></variableExpression>
</variable>
B

Vei você tem msn ou E-mail to tentando esse código que você mandou mais estou apanhando muito nesse ireport.

Abraços.

Obrigado.

Bruno.

Criado 23 de julho de 2009
Ultima resposta 7 de ago. de 2009
Respostas 15
Participantes 4