Relatorio Fonte de dados personalizada jasperReport Ireport

2 respostas
S

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!

2 Respostas

F
usa o code fica assim oh
public class CustomDataSource implements JRDataSource{

 private List<MyBean> myBean;
 private int index = -1;

 public CustomDataSource(List<MyBean> 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;
 }
 }
S

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

Criado 2 de dezembro de 2008
Ultima resposta 3 de dez. de 2008
Respostas 2
Participantes 2