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