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

Sandro Souza escovadordebits em gmail.com
Ter Set 8 17:49:48 -03 2009


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
>



Mais detalhes sobre a lista de discussão lista