Ir para conteúdo
  • Cadastre-se

dev botao

Tratando Campos Date No Dbedit - Iniciante


  • Este tópico foi criado há 3777 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Olá, amigos

 

Estou usando firebird, dbx, e stored procedure no meu aplicativo.

Sempre trabalhei com datas utilizando um componente de terceiros, do Luciano Pimenta.

 

Agora na minha tela de cadastro tenho campos para inserir datas, mas que não são obrigatórios,

como por exemplo, data de aniversário, e o componente acima não serve.

 

Estou utilizando dbedi, onde edito o edit.mask, e trata na saída do componente setext quando não insiro datas, o que evita erros na gravação.

 

O problema ocorre quando seleciono um cliente já cadastrado, para alterções/exclusões, e o campo data mesmo vazio, no dbedit aperece com valor.

 

Qual o melhor procedimento? Eu sei que a simples, mas já vasculhei a internet, e as respostas me ajudaram com a gravação, mas não com este problema.

 

Obrigado pela atenção

Marcio

 

Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois ...

Olá Márcio!

 

Eu faço assim para campos tipo Date:

 

procedure TDM.cdsCLIENTESDATA_CADASTROSetText(Sender: TField;
  const Text: string);
begin
  if Text = '  /  /    ' then
    Sender.AsString := ''
  else
    Sender.AsString := Text;
end;
 
 
Coloque no seu Form Principal ou no Data Module o componente "ApplicationEvents" afim de centralizar as mensagens de erros, veja o exemplo com Data, Hora e Campo Obrigatório:
 
procedure TFrmPrincipal.ApplicationEvents1Exception(Sender: TObject;
  E: Exception);
var
  Mensagem: string;
  Pos1, Pos2: integer;
begin
  if Pos(UpperCase('is not a valid date'), UpperCase(E.Message)) <> 0 then
    ShowMessage('Data inválida, proceda a correção.')
  else if Pos(UpperCase('is not a valid time'), UpperCase(E.Message)) <> 0 then
    ShowMessage('Hora inválida, proceda a correção.')
  else if Pos(UpperCase('must have a value'), UpperCase(E.Message)) <> 0 then
  begin
    Pos1 := Pos('''', E.Message);
    Mensagem := E.Message;
    Delete(Mensagem, Pos1, 1);
    Pos2 := Pos('''', Mensagem);
    Mensagem := copy(E.Message, Pos1 + 1, Pos2 - Pos1);
    ShowMessage('É obrigatório o preenchimento do campo "' + Mensagem + '".');
  end
  else
    ShowMessage(E.Message);
end;
 
Espero ter ajudado.
 
Boa Sorte!
 
abs
 
Eduardo Belo
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3777 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...