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.
- 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;
-
}
- }
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!