Problemas com inserção de dados
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
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
Curtidas 0
Respostas
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......
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
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;
Só aceita Tabela.ApplyUpdates;
GOSTEI 0