Subreport em branco

7 respostas
A

Olá .....

SIMPLIFICANDO : Estou criando um relatorio no qual eu tenho um subrelatorio q tem dois outros subrelatorio e um subrelatorio não aparece .

O meu relatorio principal só possui um subrelatorio e dentro desse subrelatorio tem outros dois um é um subrelatorio de Audio e outro é um subrelatorio de departamento. o Subrelatorio de Audio está aparecendo normal o subrelatorio de Departamento não .... eu coloquei varios System.out para ver o q está ocorrendo o meu arrayList estava sendo preenchido na dataSource porem o metodo :
public boolean next() {...}
não está sendo chamado .

ALGUEM SABE O QUE ESTÁ OCORRENDO .... ??

o meu codigo .

ESSA É A DATASOURCE PRINCIPAL , A Q EU CHAMO NA SERVELET
public class RelatorioDataSource  implements Serializable ,JRDataSource {

	Iterator<AuxiliarRelatorio> itrAtividade ; 
	Object valor; // recebe o proximo objeto 
	boolean irParaProximaAtividade = true;
	public RelatorioDataSource(List listaDeAudio){
		super();
		this.itrAtividade = listaDeAudio.iterator();
	}
	
	public boolean next() throws JRException {
		valor = itrAtividade.hasNext()? itrAtividade.next():null;
		irParaProximaAtividade = (valor !=null ); // 
		return irParaProximaAtividade;
		
	}
	public Object getFieldValue(JRField field) throws JRException {
		Object value = null ;
		AuxiliarRelatorio audios = new AuxiliarRelatorio();
		audios = (AuxiliarRelatorio) valor; 
		
		if ("ListaAudios".equals(field.getName())) {
			value = new SubRelatorioDataSource(audios.getListaAuxiliar());
		}
		return value;
	}
	
}
public class SubRelatorioDataSource implements Serializable, JRDataSource {

	Iterator<AuxiliarRelatorio> itrAtividade ; 
	Object valor; // recebe o proximo objeto 
	boolean irParaProximaAtividade = true;
	
	public SubRelatorioDataSource(List listaDeAudio){
		super();
		this.itrAtividade = listaDeAudio.iterator();
	}
	
	public boolean next() throws JRException {
		valor = itrAtividade.hasNext()? itrAtividade.next():null;
                                irParaProximaAtividade = (valor !=null ); // 
		return irParaProximaAtividade;
		
	}
	public Object getFieldValue(JRField field) throws JRException {
		Object value = null ;
		AuxiliarRelatorio aud = new AuxiliarRelatorio();
			aud = (AuxiliarRelatorio) valor; 
			if ("tipo".equals(field.getName())){
				value = aud.getTipoAudio();
			}
			
			if ("Audios".equals(field.getName())) {
				value = new JRBeanCollectionDataSource(aud.getListaAudios());
			}
			if ("SubLista".equals(field.getName())) {
				value = new TituloDataSource(aud.getSubLista());
			}
		return value;
	}
}
public class TituloDataSource implements Serializable,JRDataSource   {

	Iterator itrAtividade ; 
	Object valor; // recebe o proximo objeto 
	boolean irParaProximaAtividade = true;
	
	public TituloDataSource(List listaDeAudio){
		super();
		this.itrAtividade = listaDeAudio.iterator();
	}
	
	public boolean next() throws JRException {
		System.out.println("eNTROU EM NEXT "); 
		
		valor = itrAtividade.hasNext()? itrAtividade.next():null;
                                irParaProximaAtividade = (valor !=null ); 
		return irParaProximaAtividade;
		
	}
	public Object getFieldValue(JRField field) throws JRException {
		Object value = null ;
		SubRelatorioClienteDataView sub = new SubRelatorioClienteDataView();
			sub = (SubRelatorioClienteDataView) valor; 
			if ("duracaoTotal".equals(field.getName())){
				value = sub.getDuracaoTotal();
			}
			if ("quantidade".equals(field.getName())) {
				value = sub.getQuantidade();
				
			}
			if ("subTitulo".equals(field.getName())) {
				value = sub.getSubTitulo();
			}
			if ("valorTotal".equals(field.getName())) {
				value = sub.getValorTotal();
			}
		return value;
	}
}

7 Respostas

F

já garantiu que as listas de fato estao alimentadas?

faça um teste, um dos subs aparece neh?, duplique a lista e envie ela no outro, ve se o sub aparece…

A

filipechaves : e fiz e não aparece :cry:

F

blz, ja sabemos q o erro eh no report, hehehe.

seguinte, verifica o tipo da lista, como foi declarada no report, ve se tem algo errado ai,

verifique as propriedades do sub, compare os 2 ve se tem algo muito difrente, ahh nao esquece de marcar a opçao de imprimir repetidos.

outro detalhe, tu tens um pai, filho e 2 netos, verifique se o o pai passa as listas corretamente para o filho, e se o filho trata as listas corretamente.

A

então os dois fields que eu passo para a dataSource estão com o msm tipo …estão parecidos … e a opção de imprimir repetidos está marcada …

F

ok, tu tem um sub report em cada banda? ou os 2 na mesma banda?

tente compilar o report, sem o sub q esta funcionando (recorte ele compile e cole denovo para nao perder hehe, eu ja fiz isso =p)

ve se um nao esta sobrepondo o outro

tens a posssibilidade de encaminhar os reports?

fica meio abstrato tentar ajudar sem ver o report XD

A

é seria bem melhor se vc vesse … mas como eu posso te manda ?

F

até tem como mandar por aqui, soh eu nao sei hehehe, se alguem puder ajudar ai agradecemos

Criado 20 de outubro de 2010
Ultima resposta 20 de out. de 2010
Respostas 7
Participantes 2