| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/02/2004 17:14:42
|
spranta
JavaEvangelist
![[Avatar]](/images/avatar/e3ca0449fa2ea7701a7ac53fb719c51a.png)
Membro desde: 19/01/2004 17:32:48
Mensagens: 305
Localização: Belo Horizonte
Offline
|
Olá pessoal, estou usando o jasper reports para criar relatórios e tudo acontece normalmente quando eu faço a chamada dos métodos dentro de uma aplicação que é desktop, no entanto, o mesmo não acontece quando eu tento gerar o relatório a partir de um servlet, já no primeiro comando:
JasperDesign jasperDesign = JasperManager.loadXmlDesign("relatorio.xml");
onde eu compilo o meu arquivo xml, a aplicação para e o incrível é que ela pula direto para a clausula finnaly sem passar pelo catch e por isso não mostra nenhuma exceção.
Se alguem imaginar o que pode ser ficarei muito agradecido pois preciso arrumar isto bem rápido.
Valeu, Spranta
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/02/2004 17:43:04
|
douglasfs
JavaEvangelist
![[Avatar]](/images/avatar/dc6a6489640ca02b0d42dabeb8e46bb7.png)
Membro desde: 31/12/2002 17:50:02
Mensagens: 305
Localização: São Paulo / Brasil
Offline
|
spranta wrote:Olá pessoal, estou usando o jasper reports para criar relatórios e tudo acontece normalmente quando eu faço a chamada dos métodos dentro de uma aplicação que é desktop, no entanto, o mesmo não acontece quando eu tento gerar o relatório a partir de um servlet, já no primeiro comando:
JasperDesign jasperDesign = JasperManager.loadXmlDesign("relatorio.xml");
onde eu compilo o meu arquivo xml, a aplicação para e o incrível é que ela pula direto para a clausula finnaly sem passar pelo catch e por isso não mostra nenhuma exceção.
Se alguem imaginar o que pode ser ficarei muito agradecido pois preciso arrumar isto bem rápido.
Valeu, Spranta
Amigao, vc nao precisa compilar o xml na sua aplicacao, o esquema eh vc compilar o relatorio e colocar em alguma pasta dentro do webapp e chamar uma funcao do jasper para gerar o relatorio em html ou pdf, fora que se vc compilar dentro da sua aplicacao fica muito lento.
Eu estou no trampo, mas quando eu chegar em minha casa eu posto aqui uma servlet e uma classe que eu fiz no meu projeto de conclusao de curso para gerar relatorio html/pdf de arquivos .jasper (xml do jasper compilado)
[]s
|
SCJP 1.4, SCWCD 1.4, SCBCD 5.0 beta |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/02/2004 21:18:44
|
douglasfs
JavaEvangelist
![[Avatar]](/images/avatar/dc6a6489640ca02b0d42dabeb8e46bb7.png)
Membro desde: 31/12/2002 17:50:02
Mensagens: 305
Localização: São Paulo / Brasil
Offline
|
Segue as classes conforme post anterior : (não esqueça dos jars do jasperreports e do driver jdbc)
Essas classes foram modificadas, tentei deixar o mais simples, qualquer coisa posta aqui
|
SCJP 1.4, SCWCD 1.4, SCBCD 5.0 beta |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/02/2004 21:26:50
|
douglasfs
JavaEvangelist
![[Avatar]](/images/avatar/dc6a6489640ca02b0d42dabeb8e46bb7.png)
Membro desde: 31/12/2002 17:50:02
Mensagens: 305
Localização: São Paulo / Brasil
Offline
|
Essa Servlet que dispara a classe do post acima
Também foi modificado pra ser o mais simples, qualquer coisa posta suas dúvidas
|
SCJP 1.4, SCWCD 1.4, SCBCD 5.0 beta |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/02/2004 21:28:02
|
douglasfs
JavaEvangelist
![[Avatar]](/images/avatar/dc6a6489640ca02b0d42dabeb8e46bb7.png)
Membro desde: 31/12/2002 17:50:02
Mensagens: 305
Localização: São Paulo / Brasil
Offline
|
Exceção ...
|
SCJP 1.4, SCWCD 1.4, SCBCD 5.0 beta |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/02/2004 13:26:38
|
spranta
JavaEvangelist
![[Avatar]](/images/avatar/e3ca0449fa2ea7701a7ac53fb719c51a.png)
Membro desde: 19/01/2004 17:32:48
Mensagens: 305
Localização: Belo Horizonte
Offline
|
Ai Douglas, muito obrigado pelas dicas, mas está acontecendo um problema estranho quando eu entro dentro do método processarRelatorioBasico() e mando carregar o relatorio pelo comando:
JasperReport jr = (JasperReport) JRLoader.loadObject(relatorio);
A seguinte exceção é lançada, vc sabe o que pode ser?
java.io.InvalidClassException: dori.jasper.engine.base.JRBaseReport; local class incompatible: stream classdesc serialVersionUID = 500, local class serialVersionUID = 501
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:454)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1511)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1425)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1511)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1425)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1616)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1264)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:322)
at dori.jasper.engine.util.JRLoader.loadObject(JRLoader.java:12
at dori.jasper.engine.util.JRLoader.loadObject(JRLoader.java:105)
Mais uma vez obrigado, Spranta
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/02/2004 13:30:07
|
smota
Moderador
![[Avatar]](/images/avatar/ca9c267dad0305d1a6308d2a0cf1c39c.jpg)
Membro desde: 21/02/2003 16:19:19
Mensagens: 1647
Offline
|
Você está usando uma versão do Jasper para compilar e outra para executar o relatório.
Tem que ser exatamente a mesma versão do jasper e libs .... o Jasper faz essa xaropisse para evitar problemas de compatibilidade das classes criadas.
|
"Perfection is reached not when there's nothing more to add but when there's no more to take out" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/02/2004 14:50:56
|
douglasfs
JavaEvangelist
![[Avatar]](/images/avatar/dc6a6489640ca02b0d42dabeb8e46bb7.png)
Membro desde: 31/12/2002 17:50:02
Mensagens: 305
Localização: São Paulo / Brasil
Offline
|
smota wrote:Você está usando uma versão do Jasper para compilar e outra para executar o relatório.
Tem que ser exatamente a mesma versão do jasper e libs .... o Jasper faz essa xaropisse para evitar problemas de compatibilidade das classes criadas.
Soh complementando a resposta do Samuel, isso pode estar acontecendo se vc esta usando o iReport. (se vc nao o usa, esquece o que eu estou escrevendo)
Motivo : o iReport tem um .jar do JasperReports, talvez vc esteje compilando essa classe pelo iReport e esta tentando executa-lo usando uma biblioteca com uma outra versao.
|
SCJP 1.4, SCWCD 1.4, SCBCD 5.0 beta |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/02/2004 15:24:02
|
spranta
JavaEvangelist
![[Avatar]](/images/avatar/e3ca0449fa2ea7701a7ac53fb719c51a.png)
Membro desde: 19/01/2004 17:32:48
Mensagens: 305
Localização: Belo Horizonte
Offline
|
Pois é pessoal, era isso mesmo, o relatório saiu certinho aqui, só teve um problema. É que quando eu gero um relatório em pdf ele fica bem pequeno, cerca de uns 15k e já em html o relatório é absurdamente grande, mais de 500 mega, vcs sabem como posso fazer para minimizar este problema quando for gerado um relatório html?
Mais uma vez obrigado amigos.
Spranta
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/02/2004 15:58:15
|
douglasfs
JavaEvangelist
![[Avatar]](/images/avatar/dc6a6489640ca02b0d42dabeb8e46bb7.png)
Membro desde: 31/12/2002 17:50:02
Mensagens: 305
Localização: São Paulo / Brasil
Offline
|
spranta wrote:Pois é pessoal, era isso mesmo, o relatório saiu certinho aqui, só teve um problema. É que quando eu gero um relatório em pdf ele fica bem pequeno, cerca de uns 15k e já em html o relatório é absurdamente grande, mais de 500 mega, vcs sabem como posso fazer para minimizar este problema quando for gerado um relatório html?
Mais uma vez obrigado amigos.
Spranta
500 megas ???????????????????????????
Sera que vc nao errou na digitacao ????????? Nao seria 500 k ?
Geralmente eu evitava utilizar relatorio html, soh uso .pdf, por ser um relatorio de melhor qualidade.
|
SCJP 1.4, SCWCD 1.4, SCBCD 5.0 beta |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/02/2004 17:16:55
|
spranta
JavaEvangelist
![[Avatar]](/images/avatar/e3ca0449fa2ea7701a7ac53fb719c51a.png)
Membro desde: 19/01/2004 17:32:48
Mensagens: 305
Localização: Belo Horizonte
Offline
|
Pois é cara, parece brincadeira mesmo mas não é não, o arquivo gerado ficou em 500 mega, e eu tenho certeza disso, depois eu gerei outro e ficou ainda maior. muito estranho.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/02/2004 20:51:58
|
douglasfs
JavaEvangelist
![[Avatar]](/images/avatar/dc6a6489640ca02b0d42dabeb8e46bb7.png)
Membro desde: 31/12/2002 17:50:02
Mensagens: 305
Localização: São Paulo / Brasil
Offline
|
spranta wrote:Pois é cara, parece brincadeira mesmo mas não é não, o arquivo gerado ficou em 500 mega, e eu tenho certeza disso, depois eu gerei outro e ficou ainda maior. muito estranho.
Uma pergunta que eu acho que não tem nada a ver ?
Sua máquina não está com vírus ?
|
SCJP 1.4, SCWCD 1.4, SCBCD 5.0 beta |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/02/2004 11:10:44
|
spranta
JavaEvangelist
![[Avatar]](/images/avatar/e3ca0449fa2ea7701a7ac53fb719c51a.png)
Membro desde: 19/01/2004 17:32:48
Mensagens: 305
Localização: Belo Horizonte
Offline
|
não, não tem virus nenhum não, mas eu criei um outro relatório usando um xml modelo do proprio jasper reports e aí então o html foi mais coerente no tamanho, deu somente 30k. Acho que o problema era alguma configuração do xml que eu tinha criado antes.
Agora é o seguinte, estou usando o iReport mas não estou entendendo certas coisas como a diferença entre quando eu referencio os parametros com $F, $P, $V e outros, qual o significado de cada um, alguém sabe me falar? Também gostaria de saber como colocar código dentro do iReport, pois vou precisar colocar algumas condições, como por exemplo quando eu recebo um certo código do select eu quero verificar qual é o código e então imprimir uma certa string. Vocês sabem se tem como eu resolver isto no iReport, ou quem sabe até mesmo referenciar uma função de uma classe java diretamente no iReport que receberia um parametro e me retornaria o valor apropriado, acho que aí já seria demais né, mas como não sei vale a pena perguntar. Valeu pessoal. Um abraço
Spranta
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/02/2004 11:59:36
|
smota
Moderador
![[Avatar]](/images/avatar/ca9c267dad0305d1a6308d2a0cf1c39c.jpg)
Membro desde: 21/02/2003 16:19:19
Mensagens: 1647
Offline
|
$P indica um parâmetro, será passado posteriormente pela aplicação usando a API do Jasper.
$V indica uma variável, é criada e gerenciada internamente pelo Jasper.
$F indica um campo (field), é extraído pelo Jasper do JRDataSource(alguma coisa assim) ... são os campos vindos de uma query (o mais normal) ou de um bean ou seja lah o que for que você estiver usando como fonte dos dados.
Você pode sim criar métodos para utilizar internamente, vai ter que aprender um pouco sobre como funciona a instanciação dos objetos no Jasper já que vai ser obrigado a usar a chamada em uma só linha (você pode criar uma variável para aquele seu tipo).
Tem como tomar decisões, vai depender do problema. Os campos, grupos, etc. tem uma propriedade de Print when que dá conta do recado na maior parte dos problemas.
Lembre-se: o iReport é apenas um front-end para o JasperReports, então essas dúvidas dizem respeito ao Jasper, não ao iReport.
(Só pra facilitar a busca pelas soluções)
|
"Perfection is reached not when there's nothing more to add but when there's no more to take out" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/02/2004 13:49:38
|
douglasfs
JavaEvangelist
![[Avatar]](/images/avatar/dc6a6489640ca02b0d42dabeb8e46bb7.png)
Membro desde: 31/12/2002 17:50:02
Mensagens: 305
Localização: São Paulo / Brasil
Offline
|
spranta wrote: ... quando eu recebo um certo código do select eu quero verificar qual é o código e então imprimir uma certa string. Vocês sabem se tem como eu resolver isto no iReport, ou quem sabe até mesmo referenciar uma função de uma classe java diretamente no iReport que receberia um parametro e me retornaria o valor apropriado, acho que aí já seria demais né, mas como não sei vale a pena perguntar. Valeu pessoal. Um abraço
Spranta
Caso vc esteje usando um banco Oracle, vc pode verificar qual é o código no proprio select, no caso usando a funcao decode (que basicamente eh um if ou switch).
Exemplo :
Passando para um pseudocodigo o select acima ficaria assim :
|
SCJP 1.4, SCWCD 1.4, SCBCD 5.0 beta |
|
|
 |
|
|
|
|