Problemas com inserção de dados

Delphi

01/08/2010

Olá pessoal... 

Estou com um problema curioso aqui..... 
Num form tenho dbedits .. ligados à uma Table... 
e um DbGrid também ligado à mesma Table... 

O estranho é o seguinte... se eu carrego o Form pela primeira vez... e a primeira operação que eu faça seja Inserir algum cadastro tudo OK , ele "abre" os dbedits para inclusão de um novo cadastro. 
Agora... se eu invento de "navegar" pelos registros da tabela clicando nas linhas do DBGrid e em seguida eu for Inserir ulgum novo cadastro... ele ativa os dbedits... mas os edits já veem preenchidos com dados de um registro já existente na tabela... 
No botão de inserir meu código é :
PainelEdits.Enabled:= True;Tabela.Append;EditCodigo.SetFocus;
Detalhe: essa tabela tem mais ou menos uns 4000 itens... e percebi que os dados que já vem preenchidos no edit quando dou o botão inserir... são justamente referente ao último registro desta tabela!Já tentei incrementar com um Tabela.Last, antes do Tabela.Append... mas não resolveu....


E agora o que eu faço ? Que problemas mais estranho esse !!!!! 

Abraços
Tiago Milam

Tiago Milam

Curtidas 0

Respostas

Eduardo

Eduardo

01/08/2010

Amigo, não sei qual banco usa, mas para o botão gravar é mais ou menos assim:   if dm.sdsClientes.state in[dsEdit,dsInsert] then
   begin
   try
   if chrModo = 'I' then
   begin
   dm.sdsControle.Edit;
   dm.sdsControleCODIGO_CLIENTE.AsInteger:=
   dm.sdsControleCODIGO_CLIENTE.AsInteger +1;
   dm.sdsControle.Post;
   dm.sdsControle.ApplyUpdates(-1);
   intcodigoCliente:=dm.sdsControleCODIGO_CLIENTE.AsInteger;
   dm.sdsClientesCODIGO_CLIENTE.AsInteger:=intCodigoCliente;
   dm.sdsClientesTIPO_CLIENTE.AsString:=fldTipoCliente.Text;
   end;    dm.sdsClientes.Post;
   dm.sdsClientes.ApplyUpdates(-1);
   dm.sdsClientesCNPJ.EditMask:='';
   dm.sdsClientesINSCRICAO_ESTADUAL.EditMask:='';
   dm.sdsQryClientes.Open;(Aqui abre a consulta da tabela)
   dm.sdsQryClientes.Refresh;(Aqui libera da memória)    chrModo:=' ';
   MsgStatus('Dados gravados com sucesso...');
   except    Mensagem('Não foi possível efetuar a gravação dos dados!');
    end;
    end
    else
    Mensagem('Não há alterações a serem gravadas!');
    BloquearCampos(true);
    MoveFoco; /////////////////////////////////////////////////////////////////////// Seu dbGrid devem estar setados à uma consulta não à uma tabela: Não esqueça de fechar sua consulta (query ). E quanto aos botões de navegação continua sendo o mesmo: dm.sdsClientes.last;  dm.sdsclientes.first; etc......
GOSTEI 0
Tiago Milam

Tiago Milam

01/08/2010

Olá... eu estou utilizando firebird... tentei fazer por seu código mas ele não aceita Tabela.ApplyUpdates(-1);
Só aceita Tabela.ApplyUpdates;


GOSTEI 0
POSTAR