Ir para conteúdo
Fórum Script Brasil
  • 0

Editar Registro Na Tabela - (RESOLVIDO)


Arlon

Pergunta

Amigos,

Estou utilizando o seguinte código para editar um registro:

Botão Editar:

 
procedure TFrmClientes.BtnEditarClick(Sender: TObject); 
begin 
   opcao := 2; // na inserção de registro a variável opcao recebe 1 
   DM.TBClientes.Edit;
   FrmCliente.ShowModal; // formulário de edição/inserção 
end;
Evento OnShow do formulário de edição/inserção:
   if opcao = 1 then begin  // inserção 
      MaskEdit1.setfocus; 
   end; 
   if opcao = 2 then begin  // edição 
      MaskEdit1.Text := DM.TBClientesCliente.Value; ***
    DBEdit1.SetFocus;  
end;

o problema está na linha com os asteríscos, pois se eu coloco-a como cometário (//) não acontece o problema.

O problema é o seguinte: não sei porque quando o MaskEdit1 recebe o campo Cliente da tabela Clientes, é criado um registro no final da tabela e se eu cancelo a inserção esse registro e clico novamente em editar, aí sim eu consigo editar o registro. O botão cancelar só possui uma linha de código (DM.TBClientes.Cancel;), eu já tentei fazer o seguinte:

1 - cancelar a tabela antes de editar

2 - cancelar a tabela no OnShow do formulário com o DBGrid

3 - cancelar a tabela antes do MaskEdit receber o valor do campo Cliente da tabela e colocá-la em edição novamente após a linha que está em negrito.

só que nenhuma das opções acima deu certo. O que devo fazer??

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Estranho, por que parece-se me que você não está especificando o campo da tabela que deseja igualar com o MaskEdit

o uso comum seria:

MaskEdit1.Text := DM.TBClientesCliente.fieldbyname('Codigo').Value;
Outra: preste atenção nos encapsulamentos de if, then, else
  if opcao = 1 then begin  // inserção 
  begin
     MaskEdit1.setfocus; 
  end; 
  if opcao = 2 then begin  // edição 
  begin
    MaskEdit1.Text := DM.TBClientesCliente.fieldbyname('Codigo').Value;
    DBEdit1.SetFocus;  
  end;

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, mais uma vez era um erro muito bobo que eu tava cometendo!! mad.gif

Se liga só:

Quando eu chamo o formulário de edição/inserção eu ainda não ponho a tabela em modo de inserção, só faço isso depois que eu digito o nome do sujeito que eu quero cadastrar no meu campo nome, que é a chave primária. Somente após as verificações nos eventos OnChange e OnExit para ver se aquele cliente ainda não foi cadastrado, aí sim eu dou um append. Só que o raio do append tava no evento OnChange e o que eu fazia quando ia editar um registro?? Isso mesmo, preenchia o MaskEdit (MaskEdit1.Text := DM.TBClientesCliente.Value;), ou seja, ele caia na rotina do OnChange, vazia a verificação e ao invés de editar eu dava um código pra criar um novo registro. Ai meu Deus, não sei se eu rio ou se eu choro...

O pior é que eu levei quase um mês pra perceber isso!!

Bobinho esse erro né?? ohmy.gif

Só escrevi esse texto todo porque eu precisava fazer um desabafo!! HUhauhUHUAHUHAuhuhhuuuuuuuu tongue.gif

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...