Zeos
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?
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
Curtidas 0
Respostas
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.
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
06/06/2009
alguem tem uma solucao melhor?
GOSTEI 0
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 !!
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
06/06/2009
muito obrigado pelas dicas
GOSTEI 0
Andresan
06/06/2009
Achei a solução
No botao salvar
ActiveControl := Nil;
Abraços a todos
No botao salvar
ActiveControl := Nil;
Abraços a todos
GOSTEI 0