Tenhu um grnade problema no IReport aqui… seguinte,
tenho um relatorio que exibe o nome de crianças, suas idades e a regiao da cidade em que moram, porem o campo da região é um sub-formulario, e do jeito que esta agora, exibe todas as crianças, mas eu gostaria que exibisse apenas as crianças que moram na região norte, por exemplo.
Ou então, contar quantas crianças moram em cada região… e exibir no final do relatorio:
“Existem X crianças na região Norte.”
“Existem X crianças na região Sul.”
No seu subformulario vc pode colocar uma expressão de agrupamento para ele, por exemplo:
$F{regiao}
Nesse caso ele agruparia todo o seu conteudo pelo valor que vc passar no field região, detalhe que, sua lista ou consulta, deve estar ordenada certa por região, senão ele irá bagunçar seu relatório.
Para isso, no iReport, va em View -> Report Groups
Selecione o seu subrelatório e clique em Modify
Na tela que abrir terá uma área para vc colocar seu Group Expression
[quote=viniceranogueira]Blz, mas eu sou iniciante no IReport e não sei como fazer meu Group Expression…
Como ficaria a expressão???
E o $F{regiao} seria o Field do Sub-Relatório???
Valeu a ajuda aew!!![/quote]
[color=green]Olá.
Você deve colocar o campo $F{regiao} como valor da Expressão do Grupo.
Dessa forma toda vez que alterar a região ele irá “mostrar” a banda cabeçalho e/ou rodapé do grupo que você criou (caso você tenha definido para elas aparecerem).
Agora o que você precisa é utilizar o rodapé para exibir um total parcial desse grupo.
Para isso, crie uma variável seguindo os seguintes procedimentos:
Visualizar > Variáveis do Relatório
Tipo de Classe da Variável: Aqui você deve definir o tipo primitivo da variável a ser utilizada para realizar a contagem.
Ex: Variável Número de Crianças é Integer. Então você define como java.lang.Integer Tipo de Cálculo: Soma Resetar Tipo: Grupo Resetar Grupo: O nome do Grupo que você criou anteriormente Variável de Expressão: $F{seuCampoQuantidadeCrianças}
Agora com sua variável criada, para utilizá-la basta criar um Field recebendo $V{nomeSuaVariavel}
Deu certo mas não era exatamente o que eu precisava!!!
Eu estava pensando aqui e tive uma idéia só que não sei como executá-la.
Eu pensei em, dentro do relatório principal, nas propriedades do Sub-Relatório, na aba Sub-Relatório(Outro), Valores de Retorno do Sub-Relatório criar um valor que na “Variável de Sub-Relatório” pegar o código da região (Cod_Regiao) e na “Variável de Destino” receber o Código.
Então, criar mais variáveis no relatório principal, tipo cont_norte, cont_sul, e tratar o código recebido do Sub-Relatório e tratá-lo, com um if / else por exemplo, e ir incrementando as variáveis cont_norte, cont_sul de acordo com o retorno do tratamento.
Isso é possível???
Se for, alguém me dá uma luz aew por favooooorrrrr!!!
Não era necessario usar o Sub-Relatório, já que o resultado exibido do Sub-Relatório era apenas 1 registro.
Então eu exclui o Sub-Relatório e adicionei a consulta tudo no Relatório Principal e funcionou perfeitamente!!!
Pra quem precisar do código SQL ta aí!!!
“select Nom_Composicao_Familiar, Qtd_Idade, regiao.Cod_Regiao, Nom_Regiao from regiao
inner join bairro on bairro.Cod_Regiao=regiao.Cod_Regiao
inner join beneficiario on beneficiario.Cod_Bairro=bairro.Cod_Bairro
inner join composicao_familiar on composicao_familiar.Cod_Beneficiario=beneficiario.Cod_Beneficiario
where regiao.Cod_Regiao=10 && composicao_familiar.Qtd_Idade < 12”