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 :

[UIB/Firebird] Capturer le SQL Error code


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Par défaut [UIB/Firebird] Capturer le SQL Error code
    Bonjour,


    Mise à part le E.Message que l'on met dans l'exception, comment SVP, récuperer le sql code erreur (en numerique) firebird avec UIB à l'ouverture d'une query ? Je ne souhaiterais recuperer que le code et pas le message. Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Try 
     Qry.Open;
     
     except
       on E: Exception do
       begin
         MessageBeep(MB_ICONEXCLAMATION);
         MessageDlg(E.Message,mtError,[mbOk],0);
       end;
     end;
    end;

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 638
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    le code erreur Firebird/Interbase je ne me souviens plus si c'est le même que le code UIB cela fait longtemps que je n'utilise UIB que sporadiquement.
    Je suggère un code du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Try 
     Qry.Open;
     
     except
       on E: Exception do
       begin
         MessageBeep(MB_ICONEXCLAMATION);
         Case EUIBException(E) of  // je ne suis pas sur du transtypage voir aussi EUIBError plus généraliste ?
              // voir dans UIBError.pas et UIBase.pas la liste des erreurs 
            else MessageDlg(E.Message,mtError,[mbOk],0);
         end;      
     
     
       end;
     end;

  3. #3
    Membre éprouvé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Par défaut
    Je vais fouiner dans les source merci SergioMaster

  4. #4
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 932
    Par défaut
    Une séquence qui permet ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    FBMQr.SQL.Text:='DELETE FROM '+NomTable;
            if not FBMTR.InTransaction then FBMTR.StartTransaction;
            try
              FBMQr.Execute;
              FBMTR.Commit;
              SignalInfo('Table vidée');
            except
              on E:EUIBerror do
                case E.ErrorCode of
                   146: Application.MessageBox(PChar('Violation d''une contrainte de FK'),
                    'Exécution impossible',MB_OK + MB_ICONSTOP);
                 else Application.MessageBox(PChar(E.Message),
                    'Exécution impossible',MB_OK + MB_ICONSTOP);
                end;
     
            end;

  5. #5
    Membre éprouvé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Par défaut
    Bonsoir et merci qi130

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

Discussions similaires

  1. SQL Error code = -502
    Par _willou dans le forum Firebird
    Réponses: 5
    Dernier message: 11/06/2014, 14h59
  2. Réponses: 3
    Dernier message: 07/12/2011, 13h48
  3. SQL error code = -104
    Par vg-matrix dans le forum Bases de données
    Réponses: 7
    Dernier message: 18/12/2008, 22h04
  4. [Firebird 1.5] Dynamic SQL error (-303)
    Par crade dans le forum SQL
    Réponses: 1
    Dernier message: 15/06/2007, 21h32
  5. [FireBird] Dynamic SQL Error
    Par aityahia dans le forum SQL
    Réponses: 1
    Dernier message: 28/05/2007, 10h12

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