Exclusão de registro

Delphi

14/02/2011

Boa noite... Não estou conseguindo excluir registro em uma tabela.. Aparentemente ele mostra como deletado, mas se vou consultar na base o registro está lá... É como se fosse deletado em memória.. Estou fazendo assim:    if  application.messagebox('Confirma a exclusão ? ','alerta',
         mb_yesno + mb_iconquestion + mb_defbutton2) = mryes then
         begin
           CDSFROTA.delete;
           CDSFROTA.ApplyUpdates(-1);
           dmConexao.Comit;          end;     Abaixo é mostrado o método comit   procedure TdmConexao.comit;
var Transacao : TTransactionDesc;
begin    try
      Transacao.TransactionID  := 1;
      Transacao.IsolationLevel := xilREPEATABLEREAD;       SqlConexao.StartTransaction(Transacao);
      SqlConexao.Connected := True;
      SqlConexao.Commit(Transacao);    except
      on Exc:Exception do
       begin
          ShowMessage('Erro no registro do banco: '+ Exc.Message);
          SqlConexao.Rollback(Transacao);
       end;
   end; end;   Estou usando o Delphi 2010 + Firebird 2.1 + DBX  
Rogerio Santos

Rogerio Santos

Curtidas 0

Respostas

Marco Salles

Marco Salles

14/02/2011

Boa noite... Não estou conseguindo excluir registro em uma tabela.. Aparentemente ele mostra como deletado, mas se vou consultar na base o registro está lá... É como se fosse deletado em memória.. Estou fazendo assim:    if  application.messagebox('Confirma a exclusão ? ','alerta',
         mb_yesno + mb_iconquestion + mb_defbutton2) = mryes then
         begin
           CDSFROTA.delete;
           CDSFROTA.ApplyUpdates(-1);
           dmConexao.Comit;          end;     Abaixo é mostrado o método comit   procedure TdmConexao.comit;
var Transacao : TTransactionDesc;
begin    try
      Transacao.TransactionID  := 1;
      Transacao.IsolationLevel := xilREPEATABLEREAD;       SqlConexao.StartTransaction(Transacao);
      SqlConexao.Connected := True;
      SqlConexao.Commit(Transacao);    except
      on Exc:Exception do
       begin
          ShowMessage('Erro no registro do banco: '+ Exc.Message);
          SqlConexao.Rollback(Transacao);
       end;
   end; end;   Estou usando o Delphi 2010 + Firebird 2.1 + DBX  
Rogerio .. duas coisas   a primeira que seu codigo esta errado. O ApplayUpdates ja é um Commit .. Logo   dmConexao.Comit;  não tera nada para commitar . Enfim ,  do jeito que vc esta esta fazendo é indiferente fazer   dmConexao.Comit ou não   Porém , isto não é o motivo que esta fazendo o registro não ser Deletado. Geralmente é alguma exceção que esta sendo disparada . Vc não percebe isto pq o CleintDataSet não propaga exceçoes .. é como se ocorre-sse uma exceção silenciosa   Para saber porque nçao se esta commitando o Delete , colocoque no onReconcileError do DataSet uma mensagem  
procedure TForm9.ClientDataSet1ReconcileError(DataSet: TCustomClientDataSet;
  E: EReconcileError; UpdateKind: TUpdateKind; var Action: TReconcileAction);
begin
showmessage(e.Message);
end;
  este evento deve estar sendo disparado , so para ver o porque do erro
GOSTEI 0
José

José

14/02/2011

Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
GOSTEI 0
POSTAR