IReport+Subrelatorio+Hibernate

[quote=wagne23]raf4ever, mudei como vc disse e continua sem buscar o convenio do paciente. Olha como ficou.
Eu coloquei como teste o parametro idConvenio para imprimir e ele sai como null, e coloquei tambem a propriedade idConvenio e essa sim vem com valor, o que está parecendo é que ele não está ligando o parametro com o valor da propriedade.

[/quote]

Vc criou esse ‘idConvenio’ no relatorio pai e no subreport?

Sim

Então é simples.

Abra a aba Propriedades do seu subreport(clique no subreport dentro do relatório pai) e na opção ‘Parameters’ mapeie o parametro que deseja.

[quote=wagne23]Então hvivox. vc viu o meu exemplo anterior, la eu mostrei como passar esse list para o relatorio:

Codigo que gera o relatorio passando um list.

[code] JasperPrint jpt = null;

public void geraRelatorio(Collection data) throws JRException, Exception {
    Map parameters = new HashMap();
    jpt = JasperFillManager.fillReport("RAH.jasper", parameters, new JRBeanCollectionDataSource(data, false));
    JasperViewer.viewReport(jpt, false);
}

[/code]

Repare que esse metodo recebe uma collection como parametro, então vc so precisa fazer a sua pesquisa com data inicio e data fim (Com hibernate ou JDBC)e colocar esse retorno dentro de um list, ai vc passa esse list para o metodo, ai é gerado o relatorio[/quote]

Entedi a logica do codigo java mas… no relatorio propriamento dito? como preparar o relatorio para receber um list ao inves de uma Query? no meu caso meu relatorio está configurado assim:

	<parameter name="ParanDataInicial" class="java.util.Date">
		<parameterDescription><![CDATA[Data inicial]]></parameterDescription>
		<defaultValueExpression><![CDATA[new Date()]]></defaultValueExpression>
	</parameter>
	<parameter name="ParanDataFinal" class="java.util.Date">
		<parameterDescription><![CDATA[Data final limite do parametro]]></parameterDescription>
		<defaultValueExpression><![CDATA[new Date()]]></defaultValueExpression>
	</parameter>
	<parameter name="DiretorioImagens" class="java.util.List" isForPrompting="false">
		<defaultValueExpression><![CDATA["br/com/sisportaria/visao/resources/icones/"]]></defaultValueExpression>
	</parameter>
	<queryString>
		<![CDATA[SELECT
     visitante.`Vis_nome` AS visitante_Vis_nome,
     setor.`Set_nome` AS setor_Set_nome,
     registrovisita.`Reg_dataVisita` AS registrovisita_Reg_dataVisita,
     registrovisita.`Reg_horaEntrada` AS registrovisita_Reg_horaEntrada,
     registrovisita.`Reg_horaSaida` AS registrovisita_Reg_horaSaida,
     registrovisita.`Reg_usuarioLogado` AS registrovisita_Reg_usuarioLogado
FROM
     `visitante` visitante INNER JOIN `registrovisita` registrovisita ON visitante.`Vis_codigo` = registrovisita.`Reg_Vis_codigo`
     INNER JOIN `colaborador` colaborador ON registrovisita.`Reg_Col_codigo` = colaborador.`Col_codigo`
     INNER JOIN `setor` setor ON colaborador.`Col_Set_codigo` = setor.`Set_codigo`
WHERE
     registrovisita.`Reg_status` = "Encerrado" and
     registrovisita.`Reg_dataVisita` between $P{ParanDataInicial} and $P{ParanDataFinal}
ORDER BY
     registrovisita.`Reg_dataVisita` ASC,
     registrovisita.`Reg_horaEntrada` ASC,
     registrovisita.`Reg_horaSaida` ASC]]>
	</queryString>

Estou utilizando queryString tenho que substituir a list ou coisa parecida essa é minha grande duvida. Alguém se abilita a responder???

att

Este link mostra passo-a-passo como criar subrelatorios e além disso ensina atrabalhar com array. http://www.furutani.com.br/2009/02/tutorial-de-jasperreports-usando-arraylist-de-vo/

Ainda continuo como duvidas para configurar o relatorio no iReport para receber um list.

Alguém pode ajudar?

hvivox , vc viu o exemplo que eu mostrei. La mostra como configurar o ireport para receber um list.

[code] JasperPrint jpt = null;

public void geraRelatorio(Collection data) throws JRException, Exception {
    Map parameters = new HashMap();
    jpt = JasperFillManager.fillReport("RAH.jasper", parameters, new JRBeanCollectionDataSource(data, false));
   // passa para o metodo fillReport um JRBeanCollectionDataSource
   //com a list que vc recuperou do banco
    JasperViewer.viewReport(jpt, false);
}

[/code]

   jpt = JasperFillManager.fillReport("RAH.jasper", parameters, new JRBeanCollectionDataSource(data, false));

O erro está ocorrendo neste parantro new JRBeanCollectionDataSource(data, false) acredito que seja configuração no relatorio

Não entendo uma coisa! vc tem que ter um consulta para ser mostrado o fieldName, pelo query report depois disso vc associa o fieldname ao TextField correto? se eu nao tiver nenhum consulta então como faço isso??

[quote=hvivox] jpt = JasperFillManager.fillReport("RAH.jasper", parameters, new JRBeanCollectionDataSource(data, false));

O erro está ocorrendo neste parantro new JRBeanCollectionDataSource(data, false) acredito que seja configuração no relatorio

Não entendo uma coisa! vc tem que ter um consulta para ser mostrado o fieldName, pelo query report depois disso vc associa o fieldname ao TextField correto? se eu nao tiver nenhum consulta então como faço isso?? [/quote]

alguém pode dar um força ???

Mas qual o erro que está dando? Faça Assim no relatorio, no ireport em query report selecione em Query language o tipo para hibernate Query language, e escreva a query em HQL tipo:

Para isso vc tem que ter adicionado o jar da sua aplicação no ireport.
Ai ele vai disponobilizar os campos do seu “bean” para adicionar como variaveis e poder colocar no seu relatorio associando aos TextFields.

[quote=wagne23]Mas qual o erro que está dando? Faça Assim no relatorio, no ireport em query report selecione em Query language o tipo para hibernate Query language, e escreva a query em HQL tipo:

Para isso vc tem que ter adicionado o jar da sua aplicação no ireport.
Ai ele vai disponobilizar os campos do seu “bean” para adicionar como variaveis e poder colocar no seu relatorio associando aos TextFields.[/quote]

Certo! já estou conectando o iReport com o hibernate.

Mas… além do que vc informou é necessario fazer outro tipo de configuração para que o relatorio receba um LIST?

Por que tudo isso q vc informou já estou fazendo. o iReport o relatorio roda. Mas quando executo o relatorio pelo iReport não jogo um list para ele, correto. Mas quando rodo pela aplição eu preciso jogar um LIST para o relatorio.

Não ha necessidade de fazer outra configuração. Ele ta retornando algum erro?
Só a observação de que vc tem que passar um JRBeanCollectionDataSource para o metodo fillReport, sendo que o seu List vc passa no construtor do JRBeanCollectionDataSource.

JasperPrint jpt = null; Map parameters = new HashMap(); jpt = JasperFillManager.fillReport("SeuRelatorio.jasper", parameters, new JRBeanCollectionDataSource(seuListPreenchido, false)); JasperViewer.viewReport(jpt, false);