Re: [firebase-br] Críticas ao DBExpress

Paulo Geloramo paulogeloramo em terra.com.br
Seg Jun 13 20:20:24 -03 2005


>Paulo, vi sua resposta abaixo e tenho a seguinte dúvida :
>Uso SqlDataSet + DataSetProvide + ClienteDataSet
>via de regra com o command test = select * from tabela where chave(s) = id
>bom eu preciso agora fazer algumas operacoes dentro de uma transacao, se 
>algo nao der certo, todas as operacoes devem dar roolback
>mas dbx nao tem componente transaction como a paleta IBX que bastava ligar 
>todos os processos nele e dar rollback na transacao voltava tudo atrás.

A função ApplyUpdate() retorna a quantidade de erros, se
a quantidade de erros for maior que zero ocorreu rollback
na transacao implicita.

voce pode testar:
if cds1.ApplyUpdate(0) > 0 then
  ShowMessage('erro');

>Como voce faz essa transação explicita com SqlDataSet + DataSetProvide + 
>ClienteDataSet ?

Use a transacão explicita conforme exemplo passado pelo Thiago,
mas gostaria de acrescentar, na maioria das vezes uma transacao
implicita resolve:
Use transacao implicita quando:
- Envolve apenas um ClientDataSet
- Varios ClientDataSet mestre-detalhe aninhado

Um exemplo de uso de transacao explicita seria quando usar
dois ou mais ClientDataSet não mestre-detalhe aninhado com
necessidade de atomicidade, tudo ou nada, lançamento nos
dois cds ou nenhum.

[]s
Paulo Geloramo






Mais detalhes sobre a lista de discussão lista