tratamento de erro para data
17/04/2013
0
tenhum campo é que datetime estou trabalhando com DBEdit.
para chegar se o campo esta vazio da certo mas se a data é valida, ele passa pelo tratamento que fiz e depois aparece
'32/20/1900' is not a valid date. Esse é um exemplo.
Quando clico no botão cancelar aparece outra '32/20/1900' is not valid date and time.
Como faço um tratamento de erro descente para que esse erros não parecam?.
obrigado
"Deus Abençoe"
Wilton Júnior
Posts
17/04/2013
Wilton Júnior
try
StrToDate(DBEdit3.Text);
except on EConvertError do
begin
ShowMessage ('Data Inválida!');
DBEdit3.setfocus;
exit;
end;
end;
Esse tratamento de erro achei nesse site: http://delphidicas.blogspot.com.br/2007/03/validar-datas.html.
Agora o outro erro <'32/20/1900' is not valid date and time> alguem tem alguma dica.
Esse Erro aparece quando clico no botão cancelar.
17/04/2013
Joel Rodrigues
17/04/2013
Wilton Júnior
--->Esse Erro aparece quando clico no botão cancelar.
17/04/2013
Joel Rodrigues
17/04/2013
Wilton Júnior
17/04/2013
Joel Rodrigues
Você pode também fazer essa verificação no OnExit do componente, para não permitir que sejam inseridas datas inválidas.
Só por garantia, por que você não usa um DatePicker?
17/04/2013
Wilton Júnior
17/04/2013
Wilton Júnior
Shift: TShiftState);
begin
if ((key = vk_return) or (key = vk_tab)) then
begin
if DBEdit3.text = '' then
begin
MESSAGEBOX(Application.Handle, 'Campo não pode ser nulo ou vazio', 'ATENÇÃO', MB_ICONWARNING + MB_OK);
DBEdit3.setfocus;
exit;
end;
try
StrToDate(DBEdit3.text);
except on EConvertError do
begin
MESSAGEBOX(Application.Handle, 'Formato da Data Está Incorreto!', 'ATENÇÃO', MB_ICONWARNING + MB_OK);
DBEdit3.setfocus;
exit;
end;
end;
label5.caption := label5.caption + ' ' + IntToStr(IdaAtu(StrToDate(DBEdit3.text))) + ' anos.';
Combobox2.enabled := true;
Combobox2.setfocus;
end;
end;
no evento onkeydown do dbedit3.
17/04/2013
Joel Rodrigues
Ponha um breakpoint no botão Cancelar e veja se consegue identificar onde ocorre o erro de conversão.
17/04/2013
Wilton Júnior
Agora no cancelar só tem isso:
WOpc := 0;
AMI011;-> faz um select onde a chave primary é nulo
HMI011;-> coloca os botões no padrão.
17/04/2013
Kelson Palharini
if DBEdit3.text = '' then
verifique qual o valor da propriedade text quando o campo está vazio e compare este valor ao invés de utilizar '' ou EmptyStr do delphi.
Qualquer coisa pode perguntar.
18/04/2013
Wilton Júnior
if DBEdit3.text = ' / / ' then
e da mesma coisa, o campo é do tipo datetime e a mascara esta na propriedade editmask do campo chamado nasfun.
obrigado
26/06/2017
Carlos Eduardo
function isDataNascimento(Value: String): Boolean; const Format = '^([0-9]\\/[0-9]\\/[0-9])$'; // expressão regular begin if (TRegEx.IsMatch(Value, Format)) then // valida o formato if (StrToDate(Value) < NOW()) then // Converte e verifica se é menor que data atudal isDataNascimento := TRUE // retorna true else raise EDataNascimento.Create('Data de Nascimento maior que data atual') // senao cria uma exception else raise EDataNascimento.Create('Data de Nascimento invalida');// senao cria uma exception end;
26/06/2017
Carlos Eduardo
procedure TForm1.btnSalvarClick(Sender: TObject); begin if isDataNascimento(EdtDataNascimento.text) then begin // Data esta Valida end else begin // Data está invalida end; End;
Clique aqui para fazer login e interagir na Comunidade :)