[RESOLVIDO]AJUDA...com ArrayList no iReport

14 respostas
K

PessoALL, to aki de novo…dessa vez e o seguinte…como eu trabalho com arrayList no iReports?

Aki na minha aplicação eu criei um arry com os valores e seu tipos corretos para passar para o iRepots…so que ao criar esse array, eu so peguei os valores ficando um array assim…

[1,2007-08-2009], pois tenho um campo integer e um date…

mas qdo passei isso para o iReports deu erro, falando que os campos não são reconhecidos…

No meu relatorio eu tenho somente dois campos um “date” e outro “value”. Mas como to passando so o array com os valores deu pau…

E por isso mesmo…???

Pelo amo de Deus alguem me ajuda ai… :cry:
Ja to a 3 dias com isso…Alguem tem algum exemplo ou ideia e como me ajudar…
Favor gnt da um Help ai…

Abs

14 Respostas

L

Ola, que tipo de DataSource vc esta usando?

Coloque um pedaço do seu código para ficar mais claro…

K

ta assim :

ArrayList listAllSV = (ArrayList) request.getSession().getAttribute("receitas");
			JRDataSource jrds = new JRBeanCollectionDataSource(listAllSV);

Ou seja eu pego o array da sessao e to jogando como ta ai.

L

Não teria como encapsular esses atributos dentro de um VO, para que vc possa usar JRBeanArrayDataSource ou JRBeanCollectionDataSource?

Se não der para fazer o citado acima vc pode criar um DataSource personalizado, basta criar uma classe e implementar a classe JRDataSource…

Metaleiro

[color=darkblue]Apenas para teste, tente fazer o seguinte, converta os valores que estão dando erro para String ou Object e faça o mesmo no .jasper, verifique se funciona [/color]

K

a questao e seguinte…qdo eu jogo a lista que pego do banco…essa lista por causa da arquitetura que desenvolvo em cima dela me retorna uma lista de String…

Como no meu iReports tenho campos date, e integer…da erro de compilaçao.

Então fiz esse array com os tipos certos…so que ele não esta associando com o nome do campo…

Se eu fizer essa classe DataSource como devo fazer?

L

karol_JavaGirl:
ta assim :

ArrayList listAllSV = (ArrayList) request.getSession().getAttribute("receitas");
			JRDataSource jrds = new JRBeanCollectionDataSource(listAllSV);

Ou seja eu pego o array da sessao e to jogando como ta ai.

Para vc usar JRBeanCollectionDataSource seus atributos devem estar encapsulados dentro de uma classe, pois ele usa reflexão para recuperar os valores do atributo, e so lembrando que quando vc trabalha com este tipo de DataSource, a coleção passada deve conter o mesmo tipo de objeto, pois jasper interpreta que cada posição de sua coleção é uma tupla, ou seja, ele recupera o objeto e realiza a invocação do método levando em consideração o nome do campo do relatorio.

class teste{
  private Integer id;
  private Date data;
  // get's e set's para os atributos
}
K

Qdo converto campos do iReport para o tipo String funciona…perfeitamente…

O problema e que tenho um totalizador, então não tem como eu converte-lo para String…a não ser que por alguma expressão eu consiga somar os valores, mas não sei se e possivel fazer isso no iReport.

K

leandrolw…

No caso então eu tenho que fazer esse array dos tipo ai corretos da seguinte forma

ArrayList<ReceitaBean> receitaBean = new ArrayList<ReceitaBean>

Onde ReceitaBean, e a classe onde esta os get e set dos atributos.

Correto?

L

karol_JavaGirl:
Qdo converto campos do iReport para o tipo String funciona…perfeitamente…

O problema e que tenho um totalizador, então não tem como eu converte-lo para String…a não ser que por alguma expressão eu consiga somar os valores, mas não sei se e possivel fazer isso no iReport.

Vc esta tentando totalizar qual valor ([1,2007-08-2009], pois tenho um campo integer e um date… )

L

karol_JavaGirl:
leandrolw…

No caso então eu tenho que fazer esse array dos tipo ai corretos da seguinte forma

ArrayList&lt;ReceitaBean&gt; receitaBean = new ArrayList&lt;ReceitaBean&gt;

Onde ReceitaBean, e a classe onde esta os get e set dos atributos.

Correto?

Correto

K

Blz leandrolw vou tentar…aki…Qualquer coisa posto de novo…

E sobre totalizar tenho que totalizar o campo valor…que é integer…mas isso eu faço usando o total la do iReport…por isso preciso que o campo seja integer…

K

Primeiramente obrigado pela paciencia ai…rsrs

Consegui resolver da seguinte forma.

Criei um arrayList
Depois fiz um Iterator com a lista a ser varida
Criei um HaspMap
e adicionei os valores que eu precei e feito isso add o haspMap no arrayList que tinha feito…

//Cria um ArrayList
		ArrayList lista = new ArrayList();
		//interage com a lista
		Iterator i = receita.iterator();
		HashMap linha = null;
		//loop para varrer os registros.
		while(i.hasNext()){
		        registro = i.next();
			linha = new HashMap();
			linha.put("valor", registro.getInteger("valor"));
			linha.put("data", registro.getString("data"));
			lista.add(linha);
		}

ai depois foi so jogar a lista na sessao e pegar la no servlet…

Vlw…espero que isso ajude alguem que esteja sofrendo tbm por ai…

Abs.

JohnTortugo

Ajudou sim!!!

G
Karol é isso que esta tirando noite de sonos meus estou fazendo isso que vc postou e chega a visualizar o relatorio mais so mostra a ultima informação do array ... tem como vc postar um exemplo mehor para que o relatorio percorra mostrando os dados todos
Criado 14 de julho de 2009
Ultima resposta 11 de fev. de 2010
Respostas 14
Participantes 5