Ireport com Detail dinamico

21 respostas
C

Pessoal,
Eu estou precisando criar um relatório para que o detail seja dinâmico,
necessito passar o tamanho dele via parametros, alguem tem uma dica como fazer isso?

Obrigado.

21 Respostas

J

Pois é, também tenho uma dúvida bem parecida que é a seguinte: No meu relatório tem um cabeçalho onde ficaram os dados de um paciente e no Detail os tipos de exames que o mesmo realizou, então o comportamento que desejo é que quando a quantidade de exames de um determinado paciente terminar que a página seja quebrada e iniciada outra página com os dados do novo paciente, e caso o total de exames de um paciente seja o suficiente para ir para outra folha que o cabeçalho não mude até a quantidade de exame terminar.

Agradeço desde já a colaboração de todos.

C

Eu to querendo setar o tamanho da banda por fora do ireport via java, as margens funcionam muito bem usando o codigo abaixo.

JasperDesign design = JRXmlLoader.load("/caminho.jrxml");  

    design.setTopMargin(50);  
    design.setLeftMargin(20);  
    design.setRightMargin(2);  
    design.setBottomMargin(50);  
                  JasperReport jasperReport = JasperCompileManager.compileReport(design);

Mas no caso da banda detail, eu achei só instanciando um novo objeto, que não é o caso necessito apenas
mudar o tamanho da banda ja criada.
Caso alguem ja tenha feito agradeço a ajuda, pra mim vai ser de extrema importância,
muito obrigado.

G

O caso do JMARQ, basta criar um Group agrupado por “paciente”, assim você tem as opções de quebrar página a cada agrupamento

C

O ireport utilizado é o 4.5.

G

Já que você compila ele toda vez, altera o tamanho da detail no próprio xml…

C

Gerva esse tamanho da banda deve vir do banco de dados.

M

Da o select antes, pega o tamanho, seta o detail e invoca o relatorio.

C

Então o problema é passar o valor pra banda detail, pois ela que eu saiba não aceita parâmetro. To pesquisando quando achar uma solução posto aqui, muito obrigado.

G

Exatamente, ela não aceita parametro, mas como você compila o .jrxml toda vez, você pode alterar diretamente ele antes de compilar. (com manipulação de arquivo)

A

cristianrm, por que você precisa passar o tamanho do detail como parâmetro?

Ele já fornece vários recursos para crescer conforme a demanda.

Qual sua situação exatamente?

C

Abel, eu preciso para gerar etiquetas, elas precisam ser configuradas no cliente, o tamanho da banda é importante para o alinhamento
das etiquetas no papel, 1 mm a mais e 1mm a menos no tamanho da banda da uma diferença enorme na impressão.

Gerva as margens eu passo os valores e compilo depois, a banda eu acho que não da pra fazer assim, a não ser que eu recrie toda a etiqueta via codigo
java, que nesse caso não vai valer a pena pq a etiqueta tem muitos detalhes.

G

Acho que vocẽ não entendeu…
To falando pra manipular o arquivo e alterar só a tag do tamanho do Detail
Ex:
No xml tem uma tag ± assim <detail> <band height="15" splitType="Stretch"> ..., aí vocẽ só muda o 15 para o tamanho…

C

Gerva, pra eu alterar blz sem problemas, mas como que o cliente ai fazer isso na aplicação?
O cliente que vai alterar o tamanho da banda, entendeu?
Vai ter uma tela onde ele(Cliente) vai manipular margens e banda do relatório.
O que você disse seria perfeito se no lugar do height desse para colocar um parâmetro,
ai resolveria todos os problemas hehe.

Obrigado.

G

Mas o arquivo “/caminho.jrxml” é um XML mano…
Você pode alterar ele por código…

Você faz o seu programa abrir o arquivo, procurar aquela tag e muda ela pro valor que o usuário informou…

C

Gerva entendi , você está dizendo em editar o código .jrxml direto sem usar as classes do próprio
ireport, vou fazer o teste aqui depois falo para vocês.

Obrigado.

G

Exatamente, fica mais bonito se existir uma forma de fazer isso com classes do próprio IReport, mas na ausência delas…

C

Eu tinha tentado fazer apenas com a classes do ireport, não tinha pensado por esse lado :slight_smile:

G

Funcionou?
Caso sim, coloque um [RESOLVIDO] no título do post :wink:

C

Gerva desculpe ainda não fiz, assim que estiver pronto coloco como resolvido.

F

oi pessoal, aproveitando o tópico
como seria para crescer de acordo com o tamanho do texto que busco do banco?
exemplo: já coloquei para que meu campo texto cresça se o texto ultrapassar seu tamanho, mas e o details? tem que crescer também né?

Obrigado.

F

já consegui, eu utilizei direto no XML, valeuuuu…

Criado 12 de dezembro de 2011
Ultima resposta 27 de dez. de 2011
Respostas 21
Participantes 6