Relatorio Fonte de dados personalizada jasperReport Ireport

Olá pessoal! seguinte, estou tentando gerar um rel com uma fonte dados personalizada, utilizando o ireport. Eh, vamos supor que tenho essa classe que implementa a interface… Peguei ela de outro tópico, mas a minha dúvida é a partir desse ponto.

  1. public class CustomDataSource implements JRDataSource{
  2. private List<MyBean> myBean;  
    
  3. private int index = -1;  
    
  4. public CustomDataSource(List<MyBean> myBean){  
    
  5.     this.myBean = myBean;  
    
  6. }  
    
  7. public boolean next() throws JRException{  
    
  8.     index++;  
    
  9.     return (index < myBean.length());  
    
  10. }  
    
  11. public Object getFieldValue(JRField field) throws JRException  
    
  12. {  
    
  13.     Object value = null;  
    
  14.     String fieldName = field.getName();  
    
  15.     if ("movimentacao".equals(fieldName)){  
    
  16.         value = myBean.get(index).getMovimentacao();  
    
  17.     }  
    
  18.     else if ("debito ".equals(fieldName)){  
    
  19.         /* Quando não existir o respectivo valor retorne null  
    
  20.          * e trate no relarório com a opção no campo textField abilitando a opção (blank when null).  
    
  21.          * Assim ele não aparece no relatório */  
    
  22.         value = myBean.get(index).getDebito();  
    
  23.     }  
    
  24.     else if ("credito ".equals(fieldName)){  
    
  25.         value = myBean.get(index).getCredito();  
    
  26.     }  
    
  27.     else if ("saldo".equals(fieldName)){  
    
  28.         value = myBean.get(index).getSaldo();  
    
  29.         /*  Ou dependendo de como você implementou pode ser feito assim: 
    
  30.          *  
    
  31.          *  value = (myBean.get(index).getDebito() - myBean.get(index).getCredito()); 
    
  32.          *   
    
  33.          *  */  
    
  34.     }  
    
  35.     return value;  
    
  36. }  
    
  37. }

Eh, mais e na geracao do arquivo do relatório no ireport? Como que faz no Field?

Eu crio um Field e onde tem chave nas propriedades dele eu coloco “movimentacao”, de acordo com o if acima, entao o field fica com esse nome, o qual é passado para o public Object getFieldValue(JRField field). até ai td bem. Mas e na expressão do field? o que coloco? se eu colocar $F{movimentacao}, o relatorio nao compila, pois ele diz que nao tem “movimentacao”. Entao o que devo colocar na expressão do field no relatório? Pra ele imprimir o valor retornado: Esse value = myBean.get(index).getMovimentacao(); ? Obrigado!

usa o code fica assim oh

[code] public class CustomDataSource implements JRDataSource{

private List myBean;
private int index = -1;

public CustomDataSource(List myBean){
this.myBean = myBean;
}

public boolean next() throws JRException{
index++;
return (index < myBean.length());
}

public Object getFieldValue(JRField field) throws JRException
{
Object value = null;
String fieldName = field.getName();
if (“movimentacao”.equals(fieldName)){
value = myBean.get(index).getMovimentacao();
}
else if ("debito ".equals(fieldName)){
/* Quando não existir o respectivo valor retorne null

  • e trate no relarório com a opção no campo textField abilitando a opção (blank when null).
  • Assim ele não aparece no relatório /
    value = myBean.get(index).getDebito();
    }
    else if ("credito ".equals(fieldName)){
    value = myBean.get(index).getCredito();
    }
    else if (“saldo”.equals(fieldName)){
    value = myBean.get(index).getSaldo();
    /
    Ou dependendo de como você implementou pode ser feito assim:
  • value = (myBean.get(index).getDebito() - myBean.get(index).getCredito());
  • */
    }
    return value;
    }
    } [/code]

Olá amigo! Presta atenção nessa parte da mensagem que escrevi: “Peguei ela de OUTRO TÓPiCO, mas a minha dúvida é a partir desse ponto.” . Eu copiei de outro tópico entendeu? por isso nao quiz usar o code… senão teria que apagar todos os números de cada linha que copiei. Eu não coloquei os números manualmente se é isso que te encafifou, eu copiei o código. Flw