Fórum Edição de registros #337160
02/02/2007
0
é o seguinte...
tenho uma tabela q faço a gravação de meus dados, faço a Edição normal só q eu não to conseguindo fazer a gravação somete do q eu alterei,
EX:
Edito.
Antonio Costa
quero alterar p/
Antonio Costa filho
ou seja quero add o ´filho´ ou nome Antonio costa
ele não ta alterando só ´filho´, ele simplismente pega Antonio Costa filho e add novamente na tabela como se foce um novo registro.
Como resolvo esse problema?
De já agradeço.
Jarabeucp
Curtir tópico
+ 0Posts
02/02/2007
Macario
Como está o código para alteração/salvar o registro.
[]´s 8)
Gostei + 0
02/02/2007
Jarabeucp
begin //Ativa a tabela
DM_Agep.TParen.Active := True;
//cola em modo se inserssão
Dm_Agep.TParen.Insert;
//grava o registros
Dm_Agep.TParen.Append;
Dm_Agep.TParen.FieldByName(´DESCRICAO´).AsString:= EDescricao.Text;
DM_Agep.TParen.Post;
//Pega o valor gerado no campo código e me mostra no Edit
ECodigo.Text:= Dm_Agep.TParenCODIGO.AsString;
//Ativa os botões
SbNovo.Enabled := True;
SbEditar.Enabled := True;
SbCancelar.Enabled := False;
SbExcluir.Enabled := True;
SbGravar.Enabled := False;
//Dezativa a Tabela e dezabilita os campos
Dm_Agep.TParen.Active := False;
ECodigo.Enabled := False;
EDescricao.Enabled := False;
end;
Garoto ai ta o Código de gravar os registro, não ta o d Edição pq tentei de varia maneira e não conseguir por isso apaguei, e vim recorrer au forum.
Gostei + 0
02/02/2007
Macario
No seu código a redundância de ação o que está lhe causando erro na operação de Alteração :
//cola em modo se inserssão Dm_Agep.TParen.Insert; //grava o registros Dm_Agep.TParen.Append;
Insert e Append têm por final o mesmo objetivo um novo registro na sua tabela.
Use sempre Append, pois assim seu novo registro será posicionado como ´último´. O local deste comando por exemplo seria no botão incluir.
Como o botão de Alterar deve conter:
Dm_Agep.TParen.Edit;
Qualquer duvida estamos por aqui.
[]´s
Gostei + 0
02/02/2007
Jarabeucp
Mais quanto a auteração como rezolvo?
olha só o exemplo q vc vai entender o q ta acontecendo.
registro ja gravado, Edito o registro.
ANTONIO COSTA
quero alterar p/
ANTONIO COSTA FILHO
ou seja quero add o ´FILHO´ ou nome ANTONIO COSTA
ele não ta alterando só ´FILHO´, ele simplismente pega ANTONIO COSTA FILHO e add novamente na tabela como se foce um novo registro.
Como resolvo esse problema?
De já agradeço.
Gostei + 0
02/02/2007
Rjun
Algo parecido com isso:
if Tabela.Locate(´Campo´, ValorChave, []) then begin Tabela.Edit; Tabela.FieldByName(´Campo´).Value := ´sdfjsakfasdf´; Tabela.Post; end;
Seria algo parecido com isso.
Gostei + 0
02/02/2007
Jarabeucp
if Tabela.Locate(´Campo´, ValorChave, []) then begin Tabela.Edit; Tabela.FieldByName(´Campo´).Value := ´sdfjsakfasdf´; Tabela.Post; end;
Amigo Rjun essa rotina ja foi feita eu uso no ECodigoKeyPress do meu capo fincando assim
if key = 13 then
begin
key := 0;
//Verifica se tem o Codigo
if Dm_Agep.TParen.Locate(´Codigo´,ECodigo.Text,[])then
begin
Dm_Agep.TParen.Edit;
EDescricao.Text := Dm_agep.TParen.FieldByName(´Descricao´).AsString;
ECodigo.Enabled := False
end
else
ShowMessage(´Resgitro não Cadastrado´)
end;
Essa rotina de alteração eu quero colocar em um Button, o que preciso e alterar o registro cadastrado e gravar somente a alteração e não fazer com que ele me add um novo gegistro, olhe meu exemplo acima q vc vai entender o que eu preciso fazer.
Gostei + 0
02/02/2007
Macario
Se voce retirou os comandos Insert e Append do botão gravar, sua rotina de alteração ira funcionar corretamente, ou seja, não ira mais incluir um registro em branco e nenhum novo registro.
[]´s
Gostei + 0
02/02/2007
Rjun
Gostei + 0
02/02/2007
Jarabeucp
o q pode ta acontecendo?
procedure TF_Parentesco.SBNovoClick(Sender: TObject);
begin //Linpa o form
ECodigo.Text := ´´;
EDescricao.Text := ´´;
//Ativa a tabela
DM_Agep.TParen.Active := True;
Dm_Agep.TParen.Append;
//Abilita os botões
SbNovo.Enabled := False;
SbEditar.Enabled := False;
SbCancelar.Enabled := True;
SbExcluir.Enabled := False;
SbGravar.Enabled := True;
ECodigo.Enabled := True;
EDescricao.Enabled := True;
EDescricao.SetFocus;
end;
procedure TF_Parentesco.SBGravarClick(Sender: TObject);
begin //grava o registros
Dm_Agep.TParen.FieldByName(´DESCRICAO´).AsString:= EDescricao.Text;
DM_Agep.TParen.Post;
//Pega o valor gerado no campo código e me mostra no Edit
ECodigo.Text:= Dm_Agep.TParenCODIGO.AsString;
//Ativa os botões
SbNovo.Enabled := True;
SbEditar.Enabled := True;
SbCancelar.Enabled := False;
SbExcluir.Enabled := True;
SbGravar.Enabled := False;
//Dezativa a Tabela e dezabilita os campos
Dm_Agep.TParen.Active := False;
ECodigo.Enabled := False;
EDescricao.Enabled := False;
end;
procedure TF_Parentesco.SBEditarClick(Sender: TObject);
begin//ativa campos do form
ECodigo.Enabled := True;
EDescricao.Enabled := True;
//Linpa os campos do form
ECodigo.Text := ´´;
EDescricao.Text := ´´;
//Ativa a tabela
Dm_agep.TParen.Active := true;
//Edita a tabela e ativa os botões
DM_Agep.TParen.Edit;
SbNovo.Enabled := False;
SbCancelar.Enabled := True;
SbExcluir.Enabled := False;
SbGravar.Enabled := True;
SbEditar.Enabled := False;
ECodigo.SetFocus;
end;
procedure TF_Parentesco.SBCancelarClick(Sender: TObject);
begin //Cancela a inserção de registros e ativa os botões
DM_Agep.TParen.Cancel;
//dezativa campos do form
ECodigo.Text := ´´;
EDescricao.Text := ´´;
ECodigo.Enabled := False;
EDescricao.Enabled := False;
//ativa os botões
SbNovo.Enabled := True;
SbExcluir.Enabled := True;
SbGravar.Enabled := False;
SbEditar.Enabled := True;
SbCancelar.Enabled := false;
//Dezativa a tabela
Dm_Agep.TParen.Active := False;
end;
procedure TF_Parentesco.SBExcluirClick(Sender: TObject);
begin //exclui resgistros e pede confirmação da exclusão
If MessageDlg(´Deletar Registro?´,MtConfirmation, [MbYes, MbNo],0) = mrYes then
DM_Agep.TParen.Delete;
end;
procedure TF_Parentesco.FormShow(Sender: TObject);
begin
ECodigo.Text := ´´;
EDescricao.Text := ´´;
ECodigo.Enabled := false;
EDescricao.Enabled := False;
end;
procedure TF_Parentesco.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
if Dm_Agep.TDepen.Active = False then
close
else
Dm_Agep.TParen.Active := False;
Close;
end;
procedure TF_Parentesco.SBSairClick(Sender: TObject);
begin
Close;
end;
procedure TF_Parentesco.ECodigoKeyPress(Sender: TObject; var Key: Char);
begin //Usando tecla Enter
if key = #13 then
begin
key := 0;
//Verifica se tem o Codigo
if Dm_Agep.TParen.Locate(´Codigo´,ECodigo.Text,[])then
begin
Dm_Agep.TParen.Edit;
EDescricao.Text := Dm_agep.TParen.FieldByName(´Descricao´).AsString;
ECodigo.Enabled := False
end
else
ShowMessage(´Resgitro não Cadastrado´)
end;
end;
end.
Gostei + 0
02/02/2007
Macario
Novamente há redundância de código, desta vez com [b:2286b91db0]DM_Agep.TParen.Edit[/b:2286b91db0] , pois você tem ele no evento [b:2286b91db0]procedure TF_Parentesco.SBEditarClick[/b:2286b91db0] e no [b:2286b91db0]procedure TF_Parentesco.ECodigoKeyPress[/b:2286b91db0].
Veja o melhor lugar que deve ser alterado para eliminar a redundância.
[]´s
Gostei + 0
02/02/2007
Jarabeucp
Amigo ja tirei a redundancia, direi o TF_Parentesco.SBEditarClick continuou a mesma coisa,ai resolvi tirar do TF_Parentesco.ECodigoKeyPress, ele não grava me da uma menssagen de erro disendo o seguint. NOT IN EDIT MOD.
COMO RESOLVO ISSO?
Gostei + 0
02/02/2007
Macario
Você deve apenas retirar de um local. :roll:
Gostei + 0
02/02/2007
Jarabeucp
Amigo, fois isso mesmo que eu fiz, comentei no evento onKeyPress, e deixei somente em buttun editi,
Soque quando vou gravar ele me da a menssagen de erro q te falei assima.
Gostei + 0
02/02/2007
Rjun
Gostei + 0
02/02/2007
Macario
Neste caso você terá que efetuar um debugger na sua aplicaçao para identificar o ponto onde ocorre esta inconsistencia, pois pelo codigo postado por voce, ja identificamos o ponto e [b:61ef4097d9]eu[/b:61ef4097d9] e o [b:61ef4097d9]Rjun[/b:61ef4097d9] ja sugerimos as correções.
No mais, qualquer duvida poste novamente. 8)
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)