Problema ano 2010

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Darc
Usuário Nível 2
Usuário Nível 2
Mensagens: 73
Registrado em: 09 Jul 2004 12:41
Localização: Juiz de Fora

Problema ano 2010

Mensagem por Darc »

Boa tarde pessoal.

Estou com um problema no meu sistema de crediario, quando gero as parcelas com vencimento em 2010 o sistema esta reconhecendo como 1910.

Resolvi de imediato usando o SET EPOCH TO 1920, mas a cada 10 anos terei que alterar isso?

Voces sabem alguma outra forma que posso fazer isso?

Obrigada.
Darc
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Problema ano 2010

Mensagem por alaminojunior »

Você pode solucionar usando

Código: Selecionar todos

Set Century On
e as datas no formato dd/mm/yyyy
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Re: Problema ano 2010

Mensagem por Toledo »

Olá Darc, você pode fazer o seguinte:

SET EPOCH TO (YEAR(DATE())-89)

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Problema ano 2010

Mensagem por Pablo César »

Não creio que essa seja a solução, apesar de que eu pensei em algo parecido. Testei com o seguinte código e não deu certo:

Código: Selecionar todos

SET DATE TO BRITISH
SET CENTURY ON

SET EPOCH TO (YEAR(DATE())-89) // setou para 1930
? DATE()  // com a data do computador mudada para 01/12/2019
? CTOD("01/12/02") // o resultado foi: 01/12/2002
? CTOD("01/12/62") // o resultado foi: 01/12/1962 (o que estaria errado por causa da data do computador)
Acho que o colega deveria adota SEMPRE a data com quatro dígitos para o ANO, como ja disse o colega Alamino. Que daí nunca terá problemas, para isso o SET CENTURY deve estar ON. Do contrário cada data teria que ser tratada pelo dois ultimo dígitos, isto é se o valor for menor que o ano atual do computador, considere o set epoch do século anterior, caso contrário considere o do atual.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Problema ano 2010

Mensagem por alaminojunior »

Pablo César escreveu:Acho que o colega deveria adota SEMPRE a data com quatro dígitos para o ANO, como ja disse o colega Alamino. Que daí nunca terá problemas, para isso o SET CENTURY deve estar ON.
Pois é. Daí talvez tenha problemas só na virada do ano 9999. :%
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Problema ano 2010

Mensagem por Pablo César »

Talvez para resolver datas impossíveis ao usuário digitar erradamente, usar o SET CENTURY + tratamento de datas.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Problema ano 2010

Mensagem por Maligno »

Acho que seria mais prático primeiro perguntar à colega COMO ela gera essas parcelas (seria bom já postar o código que usa). Aí ficaria mais fácil dar uma resposta mais precisa. Pode ser que nenhuma das dicas dadas sirva para o caso dela.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Re: Problema ano 2010

Mensagem por Toledo »

Pablo César escreveu:Não creio que essa seja a solução, apesar de que eu pensei em algo parecido. Testei com o seguinte código e não deu certo:
Pablo, não achei erro algum no teste que você fez... pra mim está tudo certo!

Veja bem, o comando SET EPOCH TO 1930 vai determinar que as datas com ano (com 2 dígitos) até 29 será considerado como ano 2000, e maior ou igual a 30 será como 1900.

Bom, seguindo este principio... a data 01/12/02, será considerada como ano 2000 pois ano 02 é menor que 30 ( até 29), e a data 01/12/62 será realmente ano 1900, pois 62 é maior que 30.

Faça um teste com este exemplo:

Código: Selecionar todos

CLEAR
SET DATE TO BRITISH
SET CENTURY ON
v_ano=(YEAR(DATE())-89)
SET EPOCH TO v_ano

@ row(),10 say "Data de Hoje: "+dtoc(DATE())+" - SET EPOCH em: "+str(v_ano,4,0)

col=5
for i=0 to 70
 @ row()+1, col SAY CTOD("01/12/"+strzero(i,2))
 if row()=20
  col+=20
  @ 00,col say ""
 endif
next
@ 23,00 say ""
retu
Observe que sempre que você alterar a data do sistema, as datas consideradas como ano 2000 vai alterando também.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Problema ano 2010

Mensagem por Pablo César »

Está certo no ponto de vista do controle do SET EPOCH, mas se quiser programar uma data futura, o SET EPOCH não seria o mais indicado, assim como no exemplo que postei.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Re: Problema ano 2010

Mensagem por Toledo »

Ah bom... entendi agora, realmente da maneira como fiz se ele quiser incluir no sistema dele uma parcela com vencimento para o ano 2062, realmente não vai dar certo. Mas achei que ele não teria um lançamento como uma data tão futura assim.... acho que o Clipper não chega até lá não! Mas se os vencimentos forem dentro dos próximos 20 anos, vai funcionar sem problema algum.
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Problema ano 2010

Mensagem por alaminojunior »

Toledo escreveu:acho que o Clipper não chega até lá não!
Imagine nós !!!
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
marckpvai
Usuário Nível 1
Usuário Nível 1
Mensagens: 1
Registrado em: 02 Fev 2010 14:37
Localização: Paranavai-Pr

Re: Problema ano 2010

Mensagem por marckpvai »

Boa tarde, tenho um programa feito em clipper e me deparei com este erro, como q faço para tentar corrigir, sendo q não fui eu quem fiz o programa.
Teria como eu modifica-lo? Colocar o Código fonte acima?
Como?
Me deem uma Luz por favor...

Obrigado
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Problema ano 2010

Mensagem por alaminojunior »

Seja bem vindo ao fórum.
marckpvai escreveu:...tenho um programa feito em clipper e me deparei com este erro, como q faço para tentar corrigir, sendo q não fui eu quem fiz o programa.
Teria como eu modifica-lo? Colocar o Código fonte acima?
Como?
Para fazer isso, você precisará do codigo fonte do programa. Você os tem ? São arquivos com extensão ".prg"
Caso positivo, as tarefas serão:
acrescentar um

Código: Selecionar todos

Set Century On
um

Código: Selecionar todos

Set Date Format to "dd/mm/yyyy"
e rever as rotinas que usam dados tipo data.

Boa sorte.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Responder