IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

Récupérer une erreur SQL avec TIBDataSet


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 84
    Points : 67
    Points
    67
    Par défaut Récupérer une erreur SQL avec TIBDataSet
    Bonjour,

    J'utilise un TIBDataSet et quand je supprime volontairement un enregistrement (avec la requête DeleteSQL) qui viole les contraintes de la clé étrangère, comment puis-je faire pour récupérer l'exception EIBInterbaseError ?

    Quand j'utilise l'évènement OnDeleteError pour afficher le message d'erreur de mon choix, cela n'empêche pas l'apparition du message d'erreur EIBInterbaseError

    Quelqu'un a une idée ?

    Cyril

  2. #2
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 84
    Points : 67
    Points
    67
    Par défaut
    RE_

    Je n'ai pas résolu mon problème mais je l'ai contourné en créant un trigger qui me renvoie un message d'erreur à peu près comme je veux. Je dis à peu près car il y a des infos supplémentaires qui viennent se greffer à mon message. Ce n'est pas top comme solution et si quelqu'un a mieux, je suis preneur...

    Je met même le code du trigger si ça intéresse quelqu'un car ça n'a pas été facile à pondre et que la doc sur les triggers Firebird est plutôt rare...

    Le trigger :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SET TERM ^ ;
    CREATE OR ALTER TRIGGER VERIF_DELETE_CATEGORIA FOR CATEGORIAS
    ACTIVE BEFORE DELETE POSITION 0
    AS
    DECLARE VARIABLE NB_ESPECE INTEGER;
    BEGIN
      SELECT COUNT(ESP_ID) FROM ESPECIES WHERE CAT_ID = OLD.CAT_ID INTO NB_ESPECE;
      IF (NB_ESPECE <> 0) THEN
       EXCEPTION DEL_CAT_ERROR_FK;
    END;
    SET TERM ^ ;
    Et l'exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE EXCEPTION DEL_CAT_ERROR_FK 'É PROIBIDO DE DELETAR UMA CATEGORIA QUE TEM UMA(S) ESPÉCIE(S)!!!';

  3. #3
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut,

    Citation Envoyé par cgone
    Quand j'utilise l'évènement OnDeleteError pour afficher le message d'erreur de mon choix, cela n'empêche pas l'apparition du message d'erreur EIBInterbaseError
    Quelle est la valeur de retour de la variable Action de la procedure OnDeleteError ?
    Si tu la laisse à daFail c'est normal que le message IB apparaissent. Mets cette valeur à daAbort ou daRetry selon la cas.

    @+ Claudius.

  4. #4
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 84
    Points : 67
    Points
    67
    Par défaut
    Salut,

    C'est tout ce qu'il me fallait...
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème d'erreur SQL avec une DB2 sur un AS400
    Par Baboulinet_ dans le forum Langage
    Réponses: 1
    Dernier message: 11/10/2011, 12h14
  2. Réponses: 2
    Dernier message: 11/08/2011, 11h38
  3. Récupérer une erreur SQL serveur en c#
    Par bipbip2006 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 27/10/2010, 11h58
  4. Récupérer le status d'une requete SQL avec ADODB
    Par undercrash dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 14/08/2008, 15h13
  5. Requete SELECT qui cause une erreur SQL
    Par ahage4x4 dans le forum ASP
    Réponses: 23
    Dernier message: 10/06/2005, 15h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo