[firebase-br] Tratar mensagem de Constraint no Delphi 7

Rogerio Monteiro monteirorama em gmail.com
Ter Set 8 20:41:51 -03 2009


Sandro, obrigado. Ajudou bastante!!!

Abraços!

Rogerio

"Sandro Souza" <escovadordebits em gmail.com> 
escreveu na mensagem 
news:64d5939a0909081349k326847f0rec9e538acb123cc6 em mail.gmail.com...
Bom dia/tarde Rogerio.

Grande Rogerio, existem várias formas, mas a mais simples, é executar o
salvamento do registro dentro de um bloco de try/except e verificar se
consta o nome dessa regra na mensagem de erro retornada pelo banco de dados,
por exemplo:

try
  // Salvando o registro.
  MinhaQuery.Post; // Se for um ClientDataSet, ou descendente, ainda executo
um ApplyUpdates.
  // Tudo salvo com sucesso.
  ...
except
  on E: Exception do
    // Tentou violar a regra "UNQ_CLIENTE_1"?
    if Pos('unq_cliente_1', LowerCase(E.Message)) > 0 then
      // Tentou violar a regra, informa o que houve e toma as devidas
providências.
      ...
    else
      // A exceção não teve nada a ver com essa regra. Propagando a
exceção...
      raise;
end; // try-except

Esse é apenas um exemplo muito do básico, mas espero que sirva para dar
idéias realmente proveitosas.

Espero ter ajudado mais que atrapalhado. :D

2009/9/8 Rogerio Monteiro 
<monteirorama em gmail.com>

> Olá colegas.
>
> Estou com o seguinte problema:
>
> Tenho uma Constraint unique UNQ_CLIENTE_1 que trata o campo CODCLI.
>
> CODCLI pode estar em branco.
> Quando CODCLI está em branco seu ReadOnly do Field do Dataset deixo como
> False (permitindo a edição). Se não for em branco, ReadOnly vai para True
> (não permitindo que se altere um código já cadastrado).
>
> PROBLEMA: Quando tenho um CODCLI em branco e digito um código que já 
> existe
> na tabela, a Constraint UNQ_CLIENTE_1 levanta a exceção.
>
> DÚVIDA: como capturar no delphi essa exceção do Firebird?
>
> Abraços.
>
> Rogerio Monteiro.
>
>
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use: 
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa







Mais detalhes sobre a lista de discussão lista