Edição de registros
Garela to com um probleminha....
é 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.
é 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
Curtidas 0
Respostas
Macario
02/02/2007
Olá.
Como está o código para alteração/salvar o registro.
[]´s 8)
Como está o código para alteração/salvar o registro.
[]´s 8)
GOSTEI 0
Jarabeucp
02/02/2007
procedure TF_Parentesco.SBGravarClick(Sender: TObject);
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.
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
Macario
02/02/2007
Olá.
No seu código a redundância de ação o que está lhe causando erro na operação de Alteração :
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
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
Jarabeucp
02/02/2007
amigo entendi, vi q realmente tinha uma redundancia, Apend e Insert, ok.
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.
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
Rjun
02/02/2007
Você precisa localizar o registro pelo código e utilizar o método EDIT para fazer a [b:92f2a808c1]ALTERAÇÃO[/b:92f2a808c1] e [b:92f2a808c1]RESOLVER[/b:92f2a808c1] seu problema.
Algo parecido com isso:
Seria algo parecido com isso.
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
Jarabeucp
02/02/2007
Você precisa localizar o registro pelo código e utilizar o método EDIT para fazer a [b:d9376891e4]ALTERAÇÃO[/b:d9376891e4] e [b:d9376891e4]RESOLVER[/b:d9376891e4] seu problema.
Algo parecido com isso:
Seria algo parecido com isso.
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
Macario
02/02/2007
Olá.
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
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
Rjun
02/02/2007
Coloque o trecho que postei no evento OnClick do Button.
GOSTEI 0
Jarabeucp
02/02/2007
Amigo ai ta todo o código do meu form, vc vai ferificar q realmente eu retirei os camando q vc falou, mais olha só, eu edito e quando vou gravar, ele ta fazendo o seguinte, ele exclui o q eu editei e a alteração q foi feita ele grava somo se foce um novo registro.
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.
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
Macario
02/02/2007
Olá, jarabeucp.
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
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
Jarabeucp
02/02/2007
Olá, jarabeucp.
Novamente há redundância de código, desta vez com [b:8098215818]DM_Agep.TParen.Edit[/b:8098215818] , pois você tem ele no evento [b:8098215818]procedure TF_Parentesco.SBEditarClick[/b:8098215818] e no [b:8098215818]procedure TF_Parentesco.ECodigoKeyPress[/b:8098215818].
Veja o melhor lugar que deve ser alterado para eliminar a redundância.
[]´s
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
Macario
02/02/2007
Olá.
Você deve apenas retirar de um local. :roll:
Você deve apenas retirar de um local. :roll:
GOSTEI 0
Jarabeucp
02/02/2007
Olá.
Você deve apenas retirar de um local. :roll:
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
Rjun
02/02/2007
Essa sua maneira de codificar é bem curiosa. Antes de gravar você deve verificar se o registro já existe. Você está usando o locate, então se o Locate retornar TRUE você coloca a tabela em modo de edição, caso contrário coloque a tabela em modo de inserção ou de um append. Depois você atribui os valores pros fields da tabela e no final de um post.
GOSTEI 0
Macario
02/02/2007
Olá.
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)
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
Jarabeucp
02/02/2007
Amigo infelismente não conseguir, agora ele me ma uma menssagen de erro. ´Not in edit mode´.
desculpe e agradeço pelas dicas mais não funcionou, oha só o codigo ja com a alteração q vc pediu q tava redundante.
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
EDescricao.Text := Dm_agep.TParen.FieldByName(´Descricao´).AsString;
ECodigo.Enabled := False
end
else
ShowMessage(´Resgitro não Cadastrado´)
end;
end;
end.
desculpe e agradeço pelas dicas mais não funcionou, oha só o codigo ja com a alteração q vc pediu q tava redundante.
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
EDescricao.Text := Dm_agep.TParen.FieldByName(´Descricao´).AsString;
ECodigo.Enabled := False
end
else
ShowMessage(´Resgitro não Cadastrado´)
end;
end;
end.
GOSTEI 0
Jarabeucp
02/02/2007
Estou aperiado com isso, e não consigo.
agradeço a ajuda
agradeço a ajuda
GOSTEI 0
Rjun
02/02/2007
Volte a primeira página do seu tópico e veja a mensagem que postei. É a última da página.
GOSTEI 0
Emerson Nascimento
02/02/2007
o seu método de edição está no lugar errado.
você o colocou no procedimento do botão NOVO, porém, ao digitar o código no campo ECodigo, você faz a busca na tabela, o que desposiciona o ponteiro e põe a tabela em modo de visualização (browse). veja se esta alteração ajuda em algo (note que o comando de edição está depois da localização do registro:
você o colocou no procedimento do botão NOVO, porém, ao digitar o código no campo ECodigo, você faz a busca na tabela, o que desposiciona o ponteiro e põe a tabela em modo de visualização (browse). veja se esta alteração ajuda em algo (note que o comando de edição está depois da localização do registro:
procedure TF_Parentesco.ManipulaBotoes(ModoEdicao: boolean); begin SbNovo.Enabled := not ModoEdicao; SbEditar.Enabled := not ModoEdicao; SbCancelar.Enabled := ModoEdicao; SbExcluir.Enabled := not ModoEdicao; SbGravar.Enabled := ModoEdicao; end; procedure TF_Parentesco.SBNovoClick(Sender: TObject); begin //Linpa o form ECodigo.Text := ´´; EDescricao.Text := ´´; //Ativa a tabela DM_Agep.TParen.Open; Dm_Agep.TParen.Append; ManipulaBotoes(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; ManipulaBotoes(False); //Dezativa a Tabela e dezabilita os campos Dm_Agep.TParen.Close; 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.Open; 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; ManipulaBotoes(False); //Dezativa a tabela Dm_Agep.TParen.Close; 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; ManipulaBotoes(False); 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 then Dm_Agep.TParen.Close; Action := caFree;//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 EDescricao.Text := Dm_agep.TParen.FieldByName(´Descricao´).AsString; ECodigo.Enabled := False; //Edita a tabela e ativa os botões DM_Agep.TParen.Edit; ManipulaBotoes(True); end else ShowMessage(´Registro não Cadastrado´); end; end;
GOSTEI 0
Martins
02/02/2007
Jarabe se seu problema é com Inserção/Alteração de informações, vamos tentar ajudar, mas vamos evitar tantos condigos confusos e redundantes como está no seu projeto OK.
Primeiro, já q vc tá usando Edits, então coloca no OnKeyPress do primeiro Edit.
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
{vc dá um append para inserir um novo registro}
end;
...
inseri as informações necessárias ou as altera.
No botão gravar ou no último Edit vc verifica se a tabela está em modo de inserção ou edição e grava.
Não vejo pq tanta confusão, vc abri a tabela, põe em modo de edição ou inserção em um único lugar e depois no final de tudo ou em um botão vc grava as alterações ou inserções e dependendo dos componentes utilizados por vc podemos ver se não seria melhor fazer isso no banco e o q mais precisamos para q vc não tenha perda de dados e de performance.
boa sorte.
Primeiro, já q vc tá usando Edits, então coloca no OnKeyPress do primeiro Edit.
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
{vc dá um append para inserir um novo registro}
end;
...
inseri as informações necessárias ou as altera.
No botão gravar ou no último Edit vc verifica se a tabela está em modo de inserção ou edição e grava.
Não vejo pq tanta confusão, vc abri a tabela, põe em modo de edição ou inserção em um único lugar e depois no final de tudo ou em um botão vc grava as alterações ou inserções e dependendo dos componentes utilizados por vc podemos ver se não seria melhor fazer isso no banco e o q mais precisamos para q vc não tenha perda de dados e de performance.
boa sorte.
GOSTEI 0
Jarabeucp
02/02/2007
Galera muito obrigado pelo empenho de todos em solucionar meu problema, depois das dicas q vcs me passaram meu codigo ficou bem bem melhor, ficou parecido com o q o emerson.en surgeriu, pq antes eu imprimir e observei q realmente tinha agumas redundancias (Meu amigo Martins quando viu ficou p da vida, pois ele sempre pegou no meu pé para q isso nunca acontecesse), valeu muito só que o meu problema era outro, d pois q obeservei q meu código estava parecido com o do emerson.en, suspeitei o o problema foce em outro lugar e realmente era, eu coloquei minha rotina q dispara a procedure q gera um código no evento BeforeInsert do meu Componente Table, totalmente errado, ai resolvi colocar no NewRecord, e funcionou legal.
Obrigado mesmo, muito muito pela ajuda.
Mais só uma pergunta o evento NewRecord, e melhor evento para disparar minha Procedure?
Obrigado mesmo, muito muito pela ajuda.
Mais só uma pergunta o evento NewRecord, e melhor evento para disparar minha Procedure?
GOSTEI 0
Martins
02/02/2007
Galera muito obrigado pelo empenho de todos em solucionar meu problema, depois das dicas q vcs me passaram meu codigo ficou bem bem melhor, ficou parecido com o q o emerson.en surgeriu, pq antes eu imprimir e observei q realmente tinha agumas redundancias (Meu amigo Martins quando viu ficou p da vida, pois ele sempre pegou no meu pé para q isso nunca acontecesse), valeu muito só que o meu problema era outro, d pois q obeservei q meu código estava parecido com o do emerson.en, suspeitei o o problema foce em outro lugar e realmente era, eu coloquei minha rotina q dispara a procedure q gera um código no evento BeforeInsert do meu Componente Table, totalmente errado, ai resolvi colocar no NewRecord, e funcionou legal.
Obrigado mesmo, muito muito pela ajuda.
Mais só uma pergunta o evento NewRecord, e melhor evento para disparar minha Procedure?
Sim, vc está usando uma SP para incremento não é?
GOSTEI 0