Fórum ClientDatasets e controle de transação. É preciso? #226104

15/04/2004

0

Galera, bom dia.

Estou com uma dúvida, estou usando D7+fb1.5+Dbx para conectar-me aos meus gdb´s. E não lembro bem, mas disseram-me que ao usar um clientdataset ligado á uma Tsqlquery, eu não precisaria preocupar-me com controle de transações, como o exemplo abaixo:

Exemplo 1
var
Td:Ttransactiondesc;
begin
try
Td.transactionid:=1;
Td.isolationlevel:=xilREADCOMMITED;
Mydatamodule.Conexao.StartTransaction(Td);
Mydatamodule.CDscadastros.append;
Mydatamodule.CDscadastros.findfield(´codigo´).asinteger:=1;
Mydatamodule.CDscadastros.findfield(´nome´).asstring:=´teste´;
Mydatamodule.CDscadastros.post;
Mydatamodule.CDscadastros.applyupdates(-1);
Mydatamodule.Conexao.Commit(Td);
except
Mydatamodule.Conexao.RollBack(Td);
end;

Isto é não ter que usar starttransaction,commit e rollback, então o código acima ficaria assim:

Exemplo 2
begin
try
Mydatamodule.CDscadastros.append;
Mydatamodule.CDscadastros.findfield(´codigo´).asinteger:=1;
Mydatamodule.CDscadastros.findfield(´nome´).asstring:=´teste´;
Mydatamodule.CDscadastros.post;
Mydatamodule.CDscadastros.applyupdates(-1);
except
MOSTRARMSGDEERRO;
end;

Pois o Provider e o Clientdataset, encarregam-se de controlar a transação.

Isto é verdade? ou tenho sempre que usar o exemplo1 ?


Obrigado :?:


Aledeol

Aledeol

Responder

Posts

15/04/2004

Khundalini

Isto só é verdade se você trabalha com um único TClientDataSet. Agora, se você trabalha com ClientDataSets que estão relacionados, como em uma relação mestre-detalhe, e não estiver trabalhando com NestedDataSets, você tem que controlar todo o processo de transação manualmente, abrindo a transação explicitamente pelo componente de conexão que você está usando (TSQLConnection, TDatabase, etc.), aplicando um-a-um os deltas dos ClientDataSets relacionados, e depois fechar (Commit) ou cancelar (Rollback) por meio do componente de conexão utilizado.

Eu aprendi isso no meu excelente livro Delphi 5 Guia do Desenvolvedor, que alias dá de 1000 a 0 naquela m..da de ´bíblia´ do Cantù. Comentários à parte, procure na Internet uma unit chamada CDSUtil.pas. Ela possui rotinas específicas pra tratar esse tipo de transação entre ClientDataSets. Agora, pra entender a fundo como o trem funciona, além da explicação que eu dei, tem que ler o livro. :-)

[]s
Rubem Rocha
Manaus, AM


Responder

Gostei + 0

15/04/2004

Rômulo Barros

Muito interessante ... ... mais uma que aprendi :lol:


Responder

Gostei + 0

16/04/2004

Aledeol

Valeu Galera. :o


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar