Fórum Data num TMaskEdit #384522

25/08/2010

0

Olá pessoal,
tenho um formulário onde o usuário pode informar a data de nascimento de uma pessoa. Ocorre que nem sempre ele tem o ano de nascimento da pessoa. Para alguns ele tem o ano e para outros não.

Como posso resolver isso?


Carlos Phelippe

Carlos Phelippe

Responder

Posts

25/08/2010

Eriley Barbosa

Ta mas você vai fazer o que com o ano  ou com o dia ou com o mês, uma consulta ao banco de dados? Esta utilizando Firebird, qual engine de acesso?
Responder

Gostei + 0

25/08/2010

Carlos Phelippe

Use Delphi7 + Firebird + IBX.

Na consulta a base de dados ... retorno a pessoas que fazem aniversário num determinado dia ou num mês ... ou num intervalo de datas (dia e mes inicial) até um (dia e mês final).

Hoje de acordo com o ano informado coloco a idade da pessoa ao lado do nome.


Responder

Gostei + 0

25/08/2010

Eriley Barbosa

Explique melhor seu problema então.
Responder

Gostei + 0

25/08/2010

Wilson Junior

Se não tem o ano preenchido para calcular a idade, coloque como default o ano corrente, neste caso 2010, assim você terá a data de aniversário e não a idade.

Espero ter colaborado.
Responder

Gostei + 0

25/08/2010

Carlos Phelippe

Tenho um campo chamado DataNascimeto do tipo DATE na base de dados.

Na interface com o usuário tenho um TMaskEdit -> __/__/____ onde o usuário entra com a data, por exemplo, 29/08/1971. Ocorre que nem sempre o usuário tem a data completa (ano de nascimento). Algumas vezes ele tem apenas o dia e o mês.

Como poderia contornar isso?
Responder

Gostei + 0

25/08/2010

Carlos Phelippe

"Se não tem o ano preenchido para calcular a idade, coloque como default o ano corrente, neste caso 2010, assim você terá a data de aniversário e não a idade."

Mas passado um ou mais ano 2010 poderia ser o ano de nascimento entende?
Responder

Gostei + 0

25/08/2010

Wilson Junior

Lhe entendi, mas se você tem somente o dia e mês, coloque como 2010 (ano corrente), assim quando o usuário tiver a informação completa, altere o cadastro. Pois como você irá gravar este registro no BD se o campo data exige ter data completa (dia+mes+ano)?
Responder

Gostei + 0

25/08/2010

Eriley Barbosa

E ele não saber o ano está lhe trazendo algum problema? tipo assim, no maskedit se não preencher o ano eu faço tal coisa , se preencher somente o dia eu faço tal coisa, se preencher a data completa eu faço tal coisa, fazer o maskedit aceitar somente o dia ou o mês ou o ano ou uma data completa?   Gostaria que detalha-se passo-a-passo seu problema, pois, ainda não entendi.
Responder

Gostei + 0

25/08/2010

Carlos Phelippe

Pensei de forma grosseira deixar o ano quando não formando como sendo 1899 ou algo do gênero... dai quando eu for fazer o cálculo da idade se o ano informado for esse eu o desconsidero....

Mas fica com cara de gambiara....
Responder

Gostei + 0

25/08/2010

Wilson Junior

Uma sugestão é você gravar os campos separados. Ex.: 1 campo para Dia, outro para Mês e outro para o Ano, assim caso não informe o Ano, não terá problema.

Espero ter colaborado.
Responder

Gostei + 0

25/08/2010

Eriley Barbosa

Mas é o que da para fazer, pois a idéia do Wilson, você teria de validar se o mês tem 30 ou 31 dias, se for fevereiro se tem 28 ou 29 dias, se os meses não são maiores do que 12, etc.
Responder

Gostei + 0

25/08/2010

Carlos Phelippe

Acredito que elegendo um ano padrão(quando o mesmo não for informado) terei que fazer menos validações.

Deixaria dois anos como sendo os padrões. Um bisexto e outro não.

Vou fazer assim mesno a contra vontade...
Responder

Gostei + 0

25/08/2010

Wilson Junior

Bom, cada desenvolvedor utiliza seus métodos, eu prefiro efetuar validações do que fazer gambiarras.


e que quantidade de validações hein...
Try
  DataNasc := Encodate( Ano, Mes, Dia );
except
  ShowMessage('Data de nascimento inválida')
end;


Espero ter colaborado.
Responder

Gostei + 0

25/08/2010

Carlos Phelippe

Não tinha pensado nisso:

Try
  DataNasc := Encodate( Ano, Mes, Dia );
except
  ShowMessage('Data de nascimento inválida')
end;


Valeu!
Responder

Gostei + 0

25/08/2010

Wilson Junior

Ok...
Estamos aqui para ajudar.
Responder

Gostei + 0

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

Aceitar