JasperReport + Sub-relatorio + Parametro

7 respostas
A

To passando para um subrelatorio o ID_MATERIAL que eu pego da consulta que faco no relatorio principal. O problema esta na hora que utilizo esse parametro na consulta do sub-relatorio. Eu fiz o seguinte :
1 - Coloco a consulta

SELECT ID_ALMOX FROM   MATERIALALMOXARIFADO

2 - Depois dou um Read fields. Seleciono o campo retornado e mando registrar campo . Ai entao eu coloco WHERE ID_MATERIAL = $P{ID_MATERIAL} no final da consulta e mando salvar consulta.

3 - Quando eu mando executar o relatorio principal, aparece o .pdf como se a consulta no Sub-relatorio tivesse apenas assim :

SELECT ID_ALMOX FROM MATERIALALMOXARIFADO

Ou seja ele nao ta consultando utilizando o parametro passado . Alguem pode dar uma ajuda ?

7 Respostas

R

vc declarou o ID_MATERIAL no sub-relatorio e no principal??
acho q deveria funcionar assim…

vou ver meus relatorios feitos q tenho em casa e posto aki novamente mais tarde…

falow

A

“rbarioni”:
vc declarou o ID_MATERIAL no sub-relatorio e no principal??
acho q deveria funcionar assim…

vou ver meus relatorios feitos q tenho em casa e posto aki novamente mais tarde…

falow

Declarei nos dois . Cara eu fiz o seguinte :
1 - Criei dois relatorios : o principal e um secundario .
No principal fiz isso :
– Crie um parametro conexao no campo parametro do tipo java.sql.Connection e no campo Default Value Expression coloquei : java.sql.DriverManager.getConnection(“jdbc:firebirdsql:192.168.0.4:E:/Database/Interbase/maspec.gdb”,“nome”,“senha”)

    • Criei tb o parametro ID_MATERIAl , que vou passar para o Sub-relatorio.
      – Coloquei um objeto sub-relatorio no principal e setei na segunda aba : Use connection Expression e coloquie tb minha conexao ; $P{minhaConexao} no campo destinado para tal fim. Na terceira aba eu coloquei “/home/teste/secundario.jasper” e o parametro que estou passando ($P{ID_MATERIAL}).

Fui entao para o sub-relatorio (secundario) e configurei da forma que eu te falei no post passado, e ta dando esse problema .

R

bom, eu fiz assim:

no relatorio principal, tenho minha SQL e um parametro do tipo Connection…alem disso, tb tenho um parametro q ira receber o caminha do sub-relatorio…por ex: C:
elatorios

no meu sub-relatorio, tenho minha SQL tb, um parametro do tipo Connection e o parametro q recebe o parametro do principal contendo o caminho dos sub-relatorio…

nas propriedades do sub, dentro do principal (nakela tela com 3 abas), na terceira aba em subreport expression colokei String, e no primeiro campo coloquei:

$P{rootDir}+"meuSub.jasper"

para ele poder achar o sub-relatorio…

e no ultimo campo da aba, colokei o parametro q o sub ira recber e q tb foi declaradao no principal…assim:

Param name = $P{param}
Param expression = $F{campo fisico do param}

deu p/ entender??

A

Valeu cara deu certo !!! O meu problema era que nao tava colocando o campo $F{ID_MATERIAL} na na aba 3 do sub-relatorio, entao eu tava passando o parametro, mas nao tava passando o seu valor !!

Pq vc nao coloca logo o caminho do seu sub-relatorio direto no campo Subreport Expression(na propriedade do sub na aba 3) ao inves de passar um parametro de caminho ??

valeu !!

R

flexibilidade e portabilidade…

eu, pelo menos, uso o arquivo .jasper gerado p/ gerar relatorios…

entao, se um dia, mudar o caminho dos relatorios, basta alterar uma linha de codigo, ao inves de alterar todos os relatorios…

valew

A

Eh verdade , no caso de muitos relatorios eh melhor mesmos passar o caminho como parametro !!

R

nao precisa nem ter mtos relatorios…

imagina q vc tenha 5 relatorios…um dia, muda o caminho deles…imagina ter q abrir 5 relatorios, alterar o caminho das pastas e compila-los de novo…

outro motivo eh se seu sistema for multi-plataformas…os SOs lidam de maneiras diferentes com os diretorios…

procure fazer as coisas de modo q facilite sua vida qdo for altera-las… :wink: :wink: :wink:

Criado 5 de julho de 2004
Ultima resposta 6 de jul. de 2004
Respostas 7
Participantes 2