duvida transação em multi-camadas

Delphi

21/05/2006

boa noite!

Procurando pelo forum uma resposta para a minha duvida encontrei a seguinte resposta:

-----------------------------------------------------------------------------------var
TudoOK: Boolean;
Transacao: TTransactionDesc;
begin
try
{ **** Iniciando a transação **** }
Transacao.TransactionID:= 1;
Transacao.IsolationLevel:= xilReadCommitted;
SeuSQLConnection.StartTransaction(Transacao);

{ **** Aplicando os updates **** }
if ClientDataSet1.ApplyUpdates(0) = 0 then
begin
ClientDataSet2.Insert;
PreencheClientDataSet2;
ClientDataSet2.Post;
if ClientDataSet2.ApplyUpdates(0) = 0 then
TudoOK:= True;
// TudoOK só será true se não houver erro em nenhum Update
end;

{ **** Confirmando ou voltando a transação **** }
if TudoOK then
SeuSQLConnection.Commit(Transacao)
else
SeuSQLConnection.Rollback(Transacao);
except
// Ocorreu uma exceção qualquer no bloco ...
SeuSQLConnection.Rollback(Transacao);
end;
end;

-----------------------------------------------------------------------------------
Essa rotina funciona belezinha em aplicações client/servidor normal, so q no meu caso tem um agravante pelo fato do sqlConnection ficar na camada servidora, com isso eu nao tenho como fazer o commit/rollback.

Obs.: os clientdataset ficam na camada cliente, e é nesta camada q preciso fazer o controle da transação, quer dizer ... pelo menos acredito q seja!.

Obrigado pela atenção.. um abraço a todos


Wiltefran

Wiltefran

Curtidas 0
POSTAR