Problema no Jasper

Bom Dia Galeraaa!!!

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.”

por exemplo.

Alguem da uma maum aeeeeewwww???

Valeeuuuuuu

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

Espero ter ajudado.

[]'s

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=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}

Tenta aí, qualquer dúvida só falar. Até.[/color]

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!!!

Aew Galera!!!

Consegui resolver o problema aqui!!!

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”

Qualquer esclarecimento, me mande um e-mail!!
viniceranogueira@gmail.com