set

2

Erro insolucionável utilizando subreports no iReport + Firebird

By Felipe Saab

De uns tempos para cá eu tive que relembrar como usar o iReport para poder terminar um trabalho.
Até aí tudo bem, – pensei eu – só desenhar o relatório no iReport, usar duas linhas de código para chamar ele e boa…

Nos relatórios mais simples (clientes, estoque, fornecedores…) foi só alegria! Mas chegou uma hora em que eu precisei fazer um relatório agrupado: Pedidos X Produtos. Começei a pesquisar como fazer um relatório com duas querys e/ou coisas relacionas até que eu descobri sobre o Subreport.

O componente Subreport do iReport permite incluir um relatório já existente (outro arquivo .jasper) dentro do relatório que eu estou editando.

Maravilha! Era só fazer um relatório para mostrar somente os produtos daquele pedido e depois chamá-lo dentro do relatório principal que continha os detalhes do pedido. Para isso eu ainda tive que apanhar mais um pouco e aprender como passar parâmetros de um relatório para outro, mas nesse ponto eu já tinha pesquisado bastante e isso não foi um grande empecilho.

Cheguei então ao resultado final: o relatório principal continha os dados do pedido e um subrelatório que mostrava todos os produtos que faziam parte do respectivo pedido, mas na hora de visualizar o relatório, adivinhe…. PAU!!! Não visualizava de jeito nenhum, e o único erro apresentado era:

Unable to get next record

FDP!!!!!!!!!!! Não tinha conserto!! Nada fazia o relatório funcionar… Depois de muito chingar, alterar os relatórios, procurar erros, seguir tutoriais na internet, entre várias outras abordagens mal sucedidas, cheguei em um post de algum fórum sobre java, onde tinha uma pessoa com o mesmo problema que o meu. Li todas as respostas (umas 20 e poucas) e na ÚLTIMA tinha um anjo que escreveu o seguinte:
Na conexão com o banco de dados tenta colocar isso aqui no final: ?defaultResultSetHoldable=True .

Ex: jdbc:firebirdsql://localhost/d:/BANCO.FDB?defaultResultSetHoldable=True
Esse é um erro interno da biblioteca jay-bird…

E adivinhem… FUNCIONOU!!!
Eu perdi no mínimo umas 6 horas em cima dakela maldita tela tentando tudo que vinha na cabeça e por fim tudo que eu precisava era setar uma variável interna do jay-bird !??!?!?!??!?!?!
FDP denovo!!!!!!!!!!!

Não sabia se eu estava feliz por ter funcionado, ou se eu estava puto por ser só isso e eu ter perdido tanto tempo…

Mas o fato é que eu não quero mais ninguém sofrendo como eu sofri, então se você está modelando um relatório com subreport no qual os dados virão de um banco de dados Firebird com conexão provida através da biblioteca jay-bird e está obtendo esse erro: “Unable to get next record“, é só colocar aquele parâmetro no final da string de conexão.
Quando sobrar um tempo eu vou escrever um tutorial completo de como fazer um relatório utilizando subreports e como chamar ele de dentro da sua aplicação java.
Só espero que esse post ajude mais alguém com esse problema… =]
[]s e até a próxima.

One Response so far

maravilha! Era justamente o que eu estava procurando obrigado!

Leave a comment