Zeos

Delphi

06/06/2009

Estou desenvolvendo um sistema com Firebird/Zeos, mas depois de dar um append e inserir os dados, na hora que clico em gravar e faço a validação dos campos ele me fala que o campo ta vazio, mas eu digitei e os dbedits estao ligados corretamente.

procedure TfGeneros.btNovoClick(Sender: TObject);
begin

DM1.Generos.Close;
DM1.Generos.ParamByName(´PCODIGO´).AsInteger := -1 ;
DM1.Generos.Open;
dm1.Generos.Append;
HabilitaForm(True);
dbeNome.SetFocus;
end;

begin
if (DM1.Generos.FieldByName(´NOME´).asstring =´´) Then
Begin
MsgValida(´Informe o nome do Gênero antes de salvar´,dbeNome,nil);
Exit;
End;
DM1.Generos.Post;
DM1.Generos.CommitUpdates;

end;

Alguem pode me ajudar?


Andresan

Andresan

Curtidas 0

Respostas

Kuroski

Kuroski

06/06/2009

Cara, tente fazer a conferencia usando o conteúdo dos DBEdit.

Troque
if (DM1.Generos.FieldByName(´NOME´).asstring =´´) Then

Por

if (DBEdit1.Text =´´) Then

Se não me engano isto ocorre pq os dados só estarão no campo NOME apos vc dar um POST. Antes disto os dados não foram gravados ainda. Por isso use a conferecia no DBEdit mesmo.


GOSTEI 0
Andresan

Andresan

06/06/2009

alguem tem uma solucao melhor?


GOSTEI 0
Danielrsanches

Danielrsanches

06/06/2009

eu já sofri com esse problema e encontrei 2 soluções ...

1: é a dica do nosso amigo kuroski; faça a checagem diretamente no dbedit = if (DBEdit1.Text =´´) Then

2: antes de salvar, passe o focus para outro objeto ....

o que percebi que ocorre é o seguinte:
quando vc está digitando em um dbedit, se vc não mudar o foco para outro antes de tentar salvar os dados, os dados digitados ´ainda´ não estão na tabela, ocorrendo assim a falha na checagem ...


faça alguns testes aí e depois post pra gente...

abraços !!


GOSTEI 0
Andresan

Andresan

06/06/2009

muito obrigado pelas dicas


GOSTEI 0
Andresan

Andresan

06/06/2009

Achei a solução
No botao salvar
ActiveControl := Nil;

Abraços a todos


GOSTEI 0
POSTAR