[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