Fórum Problemas com mascaras em datas com MaskEdit? #334328

06/12/2006

0

Olah pessoal meu probelma eh o sequinte tenho alguns maskedit com mascaras feitas para data que usa o formato de quatro digitos para o ano
tipo 06/12/2006

Com tem muitos usuarios que tem o costume de digitar somente assim
06/12/06, fiz algo para converter para o padrao que fica gravado no banco de dados
if maskedit3.editmask = ´99/99/99´ then
MaskEdit3.EditMask:=´99/99/9999´;


Mais tem um pequeno grande problema sobre isso
se eu digitar uma data inferior ao ano da 1956 o maskedit joga para o ano 2055, 2054...

Pois ai vem o problema, estamos quase em 2007, mais em caso de data de nascimento tem alguns que sao dos anos antes de 1956, ai se um cara nasceu em 1938 por exemplo e for digitado no maskedit assim 13/05/38 em vez de aparecer 13/05/1938 vai aparecer 13/05/2038, agora quem nasceu no ano de 1956 ateh 1999 nao tem probelma algum converte a data correta cfe.o ano.

Entao vem a pergunta, tem como arrumar isso?

No agurado
Adriano


Adriano_servitec

Adriano_servitec

Responder

Posts

06/12/2006

Micheus

Mais tem um pequeno grande problema sobre isso se eu digitar uma data inferior ao ano da 1956 o maskedit joga para o ano 2055, 2054...
Esta interpretação é definida nas configurações regionais (Data - Calendário), então, sempre que digirar ano com dois dígitos em conformidade com esta configuração, este problema vai ocorrer.
Dei uma adaptada em uma fração de código que utilizava em um componente para data que tratava justamente este tipo de questão. Veja se vai lhe ajudar, passando a data a ser verificada ele retorna ela corrigida conforme condição testada nos if´s:
function DataCorrigida(Data :TDateTime) :TDateTime;
var
  Ano, Mes, Dia  :Word;
begin
  DecodeDate(Data, Ano, Mes, Dia);
  if Ano < 1950 then
    Inc(Ano, 100)
  else
    if Ano > 2050 then
      Dec(Ano, 100);
  Result := EncodeDate(Ano, Mes, Dia);
end;

[]s


Responder

Gostei + 0

06/12/2006

Micheus

Desculpe-me a falha, mas não dá para editar o post anterior, então retire o primeiro if ([i:8c0694b037]if Ano < 1950 then[/i:8c0694b037]) e ajuste a data no segundo para funcionar para seu caso.

Eu usava isto antes de 2000. :oops:


Responder

Gostei + 0

07/12/2006

Adriano_servitec

Obrigado [b:425564a3f9]Micheus[/b:425564a3f9], vou testar.

Valeu a ajuda amigo.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar