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!