Fórum ClientDatasets e controle de transação. É preciso? #226104
15/04/2004
0
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
Curtir tópico
+ 0Posts
15/04/2004
Khundalini
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
Gostei + 0
15/04/2004
Rômulo Barros
Gostei + 0
16/04/2004
Aledeol
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)