Jump to content
Fórum Script Brasil
  • 0

Editar Registro Na Tabela - (RESOLVIDO)


Arlon

Question

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 to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other sites

Guest
This topic is now closed to further replies.


  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652.1k
×
×
  • Create New...