Ola boa tarde estou criando um relatorio estilo ‘orcamento de vendas’ que nele tenho os dados da empresa os dados do cliente e dados dos
produtos, e estou usando o JRBeanCollectionDataSource como datasource… porem estou tendo problemas com o meu subrelatorio que
nele deveria conter os produtos, segue informacoes . o relatorio principal ele preenche corretamente, porem o subreport q esta na banda detail ( o subreport dexei com 2 bandas Detail e Nodata).
Eu faco a leitura de um txt lendo ele linha a linha e cada linha armazeno numa variave, a linha dos produtos tenho varios produtos separados por um VAL_MARK
por exemplo: 0001;0002; da mesma forma tenho as desricoes dos produtos produto1;produto2;
Para criar o subreport usando o wizard do Ireport (4.1.3) Fiz os seguintes passos
1º Create a new report
2º Selecionei blank a4
3º Conections/Data Source Usei a mesma definida no relatorio master
4º Fiedls e Grop By dexei em branco ( nao traz nada)
5º Subreport exp Store the directory name in a paramentrer
6º Conetion exp Use the same Conection used to fill the master report
#Código
public class JOrcamento {
private DadosOrcamento dadosOrcamento;
private Cliente cliente;
private CondicaoPagamento condicaoPagamento;
private Loja loja;
private Outros outros;
private ArrayList<Produtos> produtos;
private Totais totais;
public ArrayList<Produtos> getProdutos() {
return produtos;
}
public void setProdutos(ArrayList<Produtos> produtos) {
this.produtos = produtos;
}
}
Classe principal
public class principal {
....
Produtos produtotemp = new Produtos();
produtotemp.setPro_codigo(dados[Constantes.EMAIL$PRO_CODIGO]);
produtotemp.setPro_descricao(dados[Constantes.EMAIL$PRO_DESCRICAO]);
String[] array_codigo = produtotemp.getPro_codigo().split(
Character.toString(Constantes.VAL_MARK));
String[] array_descricao = produtotemp.getPro_descricao().split(
Character.toString(Constantes.VAL_MARK));
int TotalProd = Integer.parseInt(array_item.length + ) - 1;
ArrayList<Produtos> listaprodutos = new ArrayList<Produtos>();
for (int prod = 0; prod <= TotalProd; prod++) {
Produtos produto = new Produtos();
produto.setPro_codigo(array_codigo[prod]);
produto.setPro_ref_embalagem(array_referencia[prod]);
produto.setPro_descricao(array_descricao[prod]);
listaprodutos.add(produto);
}
....
JOrcamento jOrcamento = new JOrcamento();
jOrcamento.setDadosOrcamento(dadosorcamento);
jOrcamento.setLoja(loja);
jOrcamento.setCliente(cliente);
jOrcamento.setProdutos(listaprodutos);
jOrcamento.setTotais(total);
jOrcamento.setOutros(outro);
jOrcamento.setCondicaoPagamento(condpagamento);
Collection<JOrcamento> lista = new ArrayList<JOrcamento>();
lista.add(jOrcamento);
JRDataSource jrds = new JRBeanCollectionDataSource(lista);
}
No ireport criei um report defindo meu datasource como o JOrcamento,
ao clicar em read atributes me traz
cliente (br.com.saci.Cliente)
condicaoPagamento (br.com.saci.CondicaoPagamento)
dadosOrcamento (br.com.saci.DadosOrcamento)
loja (br.com.saci.Loja)
outros (br.com.saci.Outros)
produtos (java.util.ArrayList)
totais (br.com.saci.Totais)
Com isso eu acesso por exemplo os fiedls no relatorio
$F{loja}.getLj_razao_social() e traz os dados normalmente, na band
detail eu fiz a chamada para um subreport soh q de vez eu ler
br.com.saci.JOrcamento eu li br.com.saci.Produtos, ae q nada funciona
mais dentro do subreport