Olha, então vc pode mudar o código para o seguinte:

  if Cds1.ApplyUpdate(0) <> 0 then
    Abort;
  else if Cds2.ApplyUpdates(0) <> 0 then
    Abort;
  else if...

Daí ele não vai executar os código seguintes.

O erro que acontece depois (o de chave não especificada) é pq no seu 
SQLDataSet você não especificou qual o campo que é chave primária.
Você precisa adicionar os TFields no SQLDataSet e acertar a propriedade 
ProviderFlags, especificando pelo menos qual dos campos é a PK (pfInKey). 
Assim ele gera o SQL para Refresh correto.


Espero ter ajudado

Francisco Thiago de Almeida
Enter&Plug Informática
Divisão: Desenvolvimento e Banco de dados
MSN: [EMAIL PROTECTED]
Skype: enterplug_thiago


----- Original Message ----- 
From: "Alisson" <[EMAIL PROTECTED]>
To: <delphi-br@yahoogrupos.com.br>
Sent: Friday, June 03, 2005 4:01 PM
Subject: Re: [delphi-br] try..except não funciona com DBExpress(?)


> Francisco e demais colegas,
>
> Na verdade eu estou aplicando update de vários ClientDataSet's, então 
> estou
> fazendo como a própria ajuda recomenda: starto a transação, dentro de um
> bloco protegido e aplico os updates de todos e salvo (commit), caso ocorra
> algum erro em um dos CDS's é preciso reverter (rollback).
>
> O erro que eu estou forçando em um dos CDS's é um erro de check constraint
> no BD (Firebird, esqueci de mencionar antes), onde incluo um registro com
> valor de um dos campos menor que o permitido, então acredito que o
> OnReconcileError não vai tratar, não sei... se não me engano são tratados
> erros de concorrência de registro, não é mesmo?
>
> Mas de qq forma, o problema é que está sendo lançada uma exceção do tipo
> EDatabaseError mas não está indo para o except...
>
> A propósito, rodado pelo Delphi é exibida uma exceção com a mensagem que
> violou uma check constraint e, em seguida, quando aperto F9 novamente, é
> exibida outra exceção EDatabaseError dizendo que não consegui encontrar o
> registro, pois não foi informada a chave primária... não sei o que pode 
> ser.
> Mas o que acontece é que, mesmo após as exceções os comandos seguintes são
> executados, quando o flúxo deveria ser mudado para o except.
>
> Não sei se consegui ser claro, mas se for o caso eu vou fazer um test case
> ou até montar um exemplo simples para vcs verem o problema.
>
> Obrigado a todos!
>
> Alisson
>
> ----- Original Message ----- 
> From: "Francisco Thiago" <[EMAIL PROTECTED]>
> To: <delphi-br@yahoogrupos.com.br>
> Sent: Friday, June 03, 2005 12:35 PM
> Subject: Re: [delphi-br] try..except não funciona com DBExpress(?)
>
>
>> Seguinte:
>>
>> Nunca use ApplyUpdate(-1) pq assim ele vai deixar passar todos os erros.
>> Faça um ApplyUpdate(0) que a cada erro ele vai chamar o OnReconcileError.
>>
>> Se você quiser simplesmente jogar uma execeção para o usuario faça:
>>
>> on e: Exception do
>>  raise Exception.Create(e.message)
>> .. no evento OnReconcileError do CDS.
>>
>> Ou se preferir, utilize o diálogo de OnReconcileError do Delphi. Ele tem
>> um
>> metodo que basta chamar ele e o diálogo trata o erro com interface pro
>> usuário. Procure na internet que você vai conseguir maiores detalhes
>>
>>
>> Espero ter ajudado
>>
>>
>> Francisco Thiago de Almeida
>> Enter&Plug Informática
>> Divisão: Desenvolvimento e Banco de dados
>> MSN: [EMAIL PROTECTED]
>> Skype: enterplug_thiago
>>
>>
>>
>>
>>
>>
>> ____________________________________________________
>> Yahoo! Mail, cada vez melhor: agora com 1GB de espaço grátis!
>> http://mail.yahoo.com.br
>>
>>
>> -- 
>> <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
>>
>> Para ver as mensagens antigas, acesse:
>> http://br.groups.yahoo.com/group/delphi-br/messages
>>
>> Para falar com o moderador, envie um e-mail para:
>> [EMAIL PROTECTED] ou [EMAIL PROTECTED]
>>
>> Links do Yahoo! Grupos
>>
>>
>>
>>
>>
>>
>>
>
>
>
>
>
> ____________________________________________________
> Yahoo! Mail, cada vez melhor: agora com 1GB de espaço grátis! 
> http://mail.yahoo.com.br
>
>
> -- 
> <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
>
> Para ver as mensagens antigas, acesse:
> http://br.groups.yahoo.com/group/delphi-br/messages
>
> Para falar com o moderador, envie um e-mail para:
> [EMAIL PROTECTED] ou [EMAIL PROTECTED]
>
> Links do Yahoo! Grupos
>
>
>
>
>
>
>
>
> 



        
        
                
____________________________________________________
Yahoo! Mail, cada vez melhor: agora com 1GB de espaço grátis! 
http://mail.yahoo.com.br


-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a