Exclusão de registro
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
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
Curtidas 0
Respostas
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
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
procedure TForm9.ClientDataSet1ReconcileError(DataSet: TCustomClientDataSet; E: EReconcileError; UpdateKind: TUpdateKind; var Action: TReconcileAction); begin showmessage(e.Message); end;
GOSTEI 0
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