[BIRT] Problemas com datas em outubro  XML
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Autor Mensagem
bruno_cobra
JavaTeenager

Membro desde: 08/04/2007 23:59:14
Mensagens: 194
Localização: Lajeado, RS
Offline

Pessoal, estou com um sério problema no BIRT.

Se a minha consulta for , o resultado retornado pelo BIRT é 18/10/2009 23:00:00. E isso ocorre somente no período 19/10/2009 a 01/11/2009, depois fica tudo certo.
O engraçado é que, usando o iReport, a mesma consulta funciona normalmente.

Por que será que isso ocorre? Alguém sabe (ou tem qualquer ideia) de como resolver isso?
Obs.: estou utilizando BIRT 2.2.1 e Oracle 10g.
Obrigado desde já.

http://blog.brunozambiazi.com
-
[WWW]
entanglement
GUJ Hacker

Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline

É o famoso problema do horário de verão. Em que dia e horário mudou?

Pelas regras do governo (e do Java), após 17/10/2009 23:59:59 o próximo minuto é 18/10/2009 01:00:00. Mas dá a impressão que alguma coisa (o banco, que não sei se está com a mesma data de horário de verão que seu Java, ou o BIRT, ou sei lá o quê) acha que após 17/10/2009 23:00:00 o próximo minuto é 18/10/2009 00:00:00.

bruno_cobra
JavaTeenager

Membro desde: 08/04/2007 23:59:14
Mensagens: 194
Localização: Lajeado, RS
Offline

Em primeiro lugar, muito obrigado pela resposta.

O que está acontecendo é bem isso que tu citaste, no entanto, não entendi por que diabos no iReport funcionou perfeitamente.
Além disso, se eu utilizar a função to_char (para retornar uma string, no Oracle) com formato 'dd/mm/rrrr', aí o BIRT também retorna de forma correta o a data 19/10/2009.

O detalhe é que é inviável eu fazer isso em todos os relatórios que possuímos, que estão sendo desenvolvidos desde dezembro e já somam mais de 180... Conhece alguma solução para esse bug do BIRT?
Obrigado.

http://blog.brunozambiazi.com
-
[WWW]
wbdsjunior
GUJ Ranger
[Avatar]

Membro desde: 16/04/2008 13:48:08
Mensagens: 908
Localização: Indaiatuba/SP
Offline

você utiliza JRE da Sun? se sim, tente fazer o download do Timezone Updater Tool e executá-lo.

She loves me

http://lmgtfy.com
[Yahoo!] [MSN]
geraldo@pentalink.com.br
Smalltalk

Membro desde: 21/10/2009 12:49:13
Mensagens: 1
Offline

Prezado Bruno,

Já tive sérios problemas com aplicações java e datas. Acredito que o seu problemas pode estar associado a:

1) Horário de verão;
2) Driver jdbc desatualizado:
Verifique no site da oracle a versão mais atual do OJDBC. Procure no seu PC qualquer arquivo com nome classes12.zip e apague. Esse driver é antigo e foi feito para jdk 1.1, 1.2 e 1.3 se não me engano.

3) Existem bugs conhecidos com os driver da oracle. Eu mesmo tive um problema parecido com o seu para uma data específica que só foi resolvido pelo suporte "pago" via metalink. O pessoal marretou a data e acredito que exitam uma lista de datas que tenham esse problema.

Espero ter ajudado,

Geraldo.
bruno_cobra
JavaTeenager

Membro desde: 08/04/2007 23:59:14
Mensagens: 194
Localização: Lajeado, RS
Offline

wbdsjunior wrote:você utiliza JRE da Sun? se sim, tente fazer o download do Timezone Updater Tool e executá-lo.

Baixei, executei e o problema continua...

geraldo@pentalink.com.br wrote:1) Horário de verão;
2) Driver jdbc desatualizado:
Verifique no site da oracle a versão mais atual do OJDBC. Procure no seu PC qualquer arquivo com nome classes12.zip e apague. Esse driver é antigo e foi feito para jdk 1.1, 1.2 e 1.3 se não me engano.
3) Existem bugs conhecidos com os driver da oracle. Eu mesmo tive um problema parecido com o seu para uma data específica que só foi resolvido pelo suporte "pago" via metalink. O pessoal marretou a data e acredito que exitam uma lista de datas que tenham esse problema.


1) Tem alguma ideia de como posso resolver se o problema for este?
2) Estou utilizando a última versão do OJDBC, que é a 5...
3) Será que meu caso seria este?

Obrigado pela ajuda galera, mas infelizmente ainda não consegui nada e estou desesperado já...

http://blog.brunozambiazi.com
-
[WWW]
geraldo.marka@hotmail.com
What is classpath?

Membro desde: 21/10/2009 12:54:37
Mensagens: 7
Offline

Olá Bruno,

Às vezes acontece de você estar com vários arquivos ojdbc.jar na máquina e em runtime a JVM pegar uma versão diferente. Mas acredito não ser esse o seu caso.

De qualquer forma a definição de quando começa o horário de verão no Brazil ainda é uma decisão política. Então não há como tratar isso genericamente, pelo menos acho que não.

Acredito que a data no banco de dados esteja gravada com minutos. Mesmo que você esteja recuperando apenas o dia, mês e ano, tem informação de minuto lá.

Vou dar uma sugestão meio "toska". Aí fica seu critério de testar aí no seu ambiente. Se for ambiente de produção então precisa ser testado.

Como a data que você tá falando se refere realmente ao dia de virada do horário de verão, executa um update para mudar todos os registros para a data 19/10/2009 onde a data for 18/10/2009 e a hora for maior que 23:00 H. Não sei se sua aplicação permite que você faça isso, mas pelo menos resolve o problema.

Outra alternativa e você usar as classes java para tratar isso. Acredito que Calendar e Locale pode te ajudar.

T+

Geraldo.
bruno_cobra
JavaTeenager

Membro desde: 08/04/2007 23:59:14
Mensagens: 194
Localização: Lajeado, RS
Offline

Obrigado pela ajuda, mas meu caso não é este, pois tenho certeza de que todas as datas no banco são armazenadas com dia fechado, sem nada de horário.

Como falei no primeiro post, estranhei isso tudo pois, utilizando o iReport, a data 19/10 é mostrada perfeitamente, o erro só acontece com o BIRT.

http://blog.brunozambiazi.com
-
[WWW]
geraldo.marka@hotmail.com
What is classpath?

Membro desde: 21/10/2009 12:54:37
Mensagens: 7
Offline

Olá Bruno,

Para dar essa diferença, eu acredito que a data tem informações de hora, minuto e segundos. O fato de você estar recuperando apenas dia, mês e ano é apenas uma questão de formatação. Faça um SQL formatado que mostre as informações de hora e minuto que deve aparecer informações referentes a isso.

Qual banco você está usando? Oracle? E o BIRT é um programa java?

Geraldo.
bruno_cobra
JavaTeenager

Membro desde: 08/04/2007 23:59:14
Mensagens: 194
Localização: Lajeado, RS
Offline

Como já disse, eu tenho certeza de que minhas datas do banco estão com horário zerado pois já as conferi.
Além do mais, como eu disse no primeiro post, utilizo Oracle e a consulta que estou fazendo para testar é simplesmente um "select XXX from dual". "Dual", no Oracle, é a mesma coisa que usar "SELECT 'teste'" no MySQL.

Mas o problema, como eu também já disse, não ocorre ao fazer a seleção, ocorre somente ao mostrar o valor no BIRT, que é um gerador de relatórios do Eclipse.

http://blog.brunozambiazi.com
-
[WWW]
geraldo.marka@hotmail.com
What is classpath?

Membro desde: 21/10/2009 12:54:37
Mensagens: 7
Offline

Bom,

Então você pode dar uma olhada no engine no BIRT para ver se ele tem algum driver JDBC próprio. Se você testou numa aplicação em java e o resultado deu certo, parece que o problema está no BIRT mesmo.

Obs: Mas cuidado porque driver jdbc engana muito. Às vezes em runtime ele carrega uma versão diferente do driver principalmente em aplicações WEB onde o pessoal empacota um monte de jar sem ter controle sobre as versões.

Bom, como não conheço o BIRT não poderei ajudar muito então.

T+

Geraldo.
 
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Ir para:   
Powered by JForum 2.1.8 © JForum Team