Tratamento de erro
Como trato erro de relacionamento no Delphi 6 (ADO), usando Access 2000?
D4rk Schn31d3r
Curtidas 0
Respostas
Lucas Silva
19/05/2004
try // aqui vc coloca o código except ShowMessage(´Ocorreu um erro!´); end;
GOSTEI 0
D4rk Schn31d3r
19/05/2004
Ok, mas em q evento de q objeto?
OBS: O tratamento de erro q estou me referindo é para relacionamentos, isto é, quero gerar mensagens qd eu tento deletar 1 registro q é pai de um outro, ou qd tento duplicar o valor de 1 campo com o mesmo valor, etc.
OBS: O tratamento de erro q estou me referindo é para relacionamentos, isto é, quero gerar mensagens qd eu tento deletar 1 registro q é pai de um outro, ou qd tento duplicar o valor de 1 campo com o mesmo valor, etc.
GOSTEI 0
Tnaires
19/05/2004
De uma olhada nos eventos OnPostError e OnDeleteError, dos DataSets. Uma das informaçoes q eles passam e justamente a excecao liberada na tentativa de violaçao de regra de integridade.
GOSTEI 0
D4rk Schn31d3r
19/05/2004
Então vou ter q fazer isso pra cada dataset?!? Ai vai dar muito trabalho (ainda mais q meu sist. tem uma penca destes), ..., usando Delphi com SQL Server, é só utilizar o objeto Application Events, q ele trata tudo qt é tipo de erro de relacionamento, mas ele não funciona com o Access 2000! Tem q ter uma outra forma de tratar esses tipos de erros usando algum outro objeto do Delphi.
GOSTEI 0
Paulo_amorim
19/05/2004
Olá
Talvez exista um [i:b2ad55fdad]type[/i:b2ad55fdad] só para Exceções ocorridas de integridade. Tente verificar isso...
Por exemplo, ao vc fazer a conta 4/0 o Delphi gera uma exceção EDivByZero...
Existe também o EMathError, e assim por diante...
tente ver qual o tipo utilizado pelo Banco de Dados e se ele não cria uma Exceção diferente pra integridade.
De qualquer maneira, o erro de integridade deve ser diferente dos demais?
Talvez exista um [i:b2ad55fdad]type[/i:b2ad55fdad] só para Exceções ocorridas de integridade. Tente verificar isso...
Por exemplo, ao vc fazer a conta 4/0 o Delphi gera uma exceção EDivByZero...
Existe também o EMathError, e assim por diante...
tente ver qual o tipo utilizado pelo Banco de Dados e se ele não cria uma Exceção diferente pra integridade.
De qualquer maneira, o erro de integridade deve ser diferente dos demais?
try // Insert, Update, Delete; except on E: Exception do ShowMessage(E.Message); end;
GOSTEI 0
Tnaires
19/05/2004
Não, Schneider, vc não precisa escrever o mesmo método para todos os DataSets. Vc só precisa escrevê-lo uma vez, com a mesma assinatura dos eventos OnPostError/OnDeleteError (q por sinal, são iguais) e associar no Object Inspector. Ou seja, basta pressionar umas poucas teclas, mais uns poucos cliques no mouse.
E as mensagens das exceptions (um dos parâmetros dos eventos) podem ser geradas pelo próprio Access, bastando vc digitá-las na seção ´Texto de validação´ de cada campo.
O ApplicationEvents não trata apenas dos erros d banco d dados, mas tb, d TODOS os possíveis erros da aplicação. Vc teria um pouco d trabalho pra selecionar as Exceptions q vc quisesse.
Enfim, a opção é sua...
E as mensagens das exceptions (um dos parâmetros dos eventos) podem ser geradas pelo próprio Access, bastando vc digitá-las na seção ´Texto de validação´ de cada campo.
O ApplicationEvents não trata apenas dos erros d banco d dados, mas tb, d TODOS os possíveis erros da aplicação. Vc teria um pouco d trabalho pra selecionar as Exceptions q vc quisesse.
Enfim, a opção é sua...
GOSTEI 0