Delphi: Transação DBExpress (Vários exemplos)

0

Posted on : 19-07-2009 | By : Paulo H Oliveira | In : Delphi
var
Transacao: TTransactionDesc;
begin
SQLDataSet1.CommandText:= ‘select ID, NOME from CLIENTES where ID = :id;
SQLDataSet1.ParamByName(‘id’).AsInteger:= 1;
ClientDataSet1.Open; // Note que apenas o TClientDataSet deve ser aberto
with ClientDataSet1 do
begin
Append;
FieldByName(‘ID’).AsInteger:= 2005;
FieldByName(‘NOME’).AsString:= ‘ClubeDelphi’;
Post;
Transacao.TransactionID:= 1;
Transacao.IsolationLevel:=  xilReadCommitted;
SQLConnection1.StartTransaction(Transacao);
if  ApplyUpdates(0) = 0 then
SQLConnection1.Commit(Transacao)
else SQLConnection1.Rollback(Transacao);
end;
==============================================
var
TudoOK: Boolean;
Transacao: TTransactionDesc;
begin
TudoOK:= False;
Transacao.TransactionID:= 1;
Transacao.IsolationLevel:=  xilReadCommitted;
SQLConnection1.StartTransaction(Transacao);
// Aplicando os updates
if ClientDataSet1.ApplyUpdates(0) = 0 then
if ClientDataSet2.ApplyUpdates(0) = 0 then
if ClientDataSet3.ApplyUpdates(0) = 0 then
if ClientDataSet4.ApplyUpdates(0) = 0 then
TudoOK:= True;
// Note que TudoOK só será true se não houver nenhum erro em nenhum dos Updates
if TudoOK then
begin
SQLConnection1.Commit(Transacao);
ShowMessage(‘Atualizações OK.’);
end
else
begin
SQLConnection1.Rollback(Transacao);
ShowMessage(‘Ocorreram erros. Alterações descartadas.’);
end;
end;
==============================================
var
Transacao: TTransactionDesc;
begin
with SQLDataSet1 do
begin
CommandText:= ‘insert into CLIENTES (ID, NOME) values (:id, :nome)’;
ParamByName(‘id).AsInteger:= 2005;
ParamByName(‘nome’).AsString:= ‘ClubeDelphi’;
Transacao.TransctionID:= 1;
Transacao.IsolationLevel:=  xilReadCommitted;
SQLConnection1.StartTransaction(Transacao);
try
ExecSQL;
SQLConnection1.Commit (Transacao);
except
on E: Exception do
begin
SQLConnection1.Rollback(Transacao);
ShowMessage(‘Ocorreram erros.’ + #13 + E.Message);
end;
end;
end;
end;

var

Transacao: TTransactionDesc;

begin

SQLDataSet1.CommandText:= ‘select ID, NOME from CLIENTES where ID = :id;

SQLDataSet1.ParamByName(‘id’).AsInteger:= 1;

ClientDataSet1.Open; // Note que apenas o TClientDataSet deve ser aberto

with ClientDataSet1 do

begin

Append;

FieldByName(‘ID’).AsInteger:= 2005;

FieldByName(‘NOME’).AsString:= ‘ClubeDelphi’;

Post;

Transacao.TransactionID:= 1;

Transacao.IsolationLevel:=  xilReadCommitted;

SQLConnection1.StartTransaction(Transacao);

if  ApplyUpdates(0) = 0 then

SQLConnection1.Commit(Transacao)

else SQLConnection1.Rollback(Transacao);

end;

==============================================

var

TudoOK: Boolean;

Transacao: TTransactionDesc;

begin

TudoOK:= False;

Transacao.TransactionID:= 1;

Transacao.IsolationLevel:=  xilReadCommitted;

SQLConnection1.StartTransaction(Transacao);

// Aplicando os updates

if ClientDataSet1.ApplyUpdates(0) = 0 then

if ClientDataSet2.ApplyUpdates(0) = 0 then

if ClientDataSet3.ApplyUpdates(0) = 0 then

if ClientDataSet4.ApplyUpdates(0) = 0 then

TudoOK:= True;

// Note que TudoOK só será true se não houver nenhum erro em nenhum dos Updates

if TudoOK then

begin

SQLConnection1.Commit(Transacao);

ShowMessage(‘Atualizações OK.’);

end

else

begin

SQLConnection1.Rollback(Transacao);

ShowMessage(‘Ocorreram erros. Alterações descartadas.’);

end;

end;

==============================================

var

Transacao: TTransactionDesc;

begin

with SQLDataSet1 do

begin

CommandText:= ‘insert into CLIENTES (ID, NOME) values (:id, :nome)’;

ParamByName(‘id).AsInteger:= 2005;

ParamByName(‘nome’).AsString:= ‘ClubeDelphi’;

Transacao.TransctionID:= 1;

Transacao.IsolationLevel:=  xilReadCommitted;

SQLConnection1.StartTransaction(Transacao);

try

ExecSQL;

SQLConnection1.Commit (Transacao);

except

on E: Exception do

begin

SQLConnection1.Rollback(Transacao);

ShowMessage(‘Ocorreram erros.’ + #13 + E.Message);

end;

end;

end;

end;

Compartilhe :

  • Stumble upon
  • twitter

Escreva um comentário