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 :

comment appliquer une contrainte FB sous Delphi ?


Sujet :

Bases de données Delphi

  1. #1
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut comment appliquer une contrainte FB sous Delphi ?
    Salut !

    alors voilà, j'ai définis quelques contraintes au niveau de ma bd firebird mais je veux les exploiter dans mon application Delphi. Par où commencer ? comment faire ?

    un petit exemple pour la compréhension : un champ ne devant contenir que des valeurs positifs alors la contrainte serait du type
    champ >=0
    sous IBExpert ça marche très bien, il ne laisse passer que les valeurs positifs comme indiqué mais comment puis-je exploiter cette contrainte dans mon application Delphi sans faire de test mais seulement en exploitant la contrainte déjà définie dans la bd ?

    merci par avance.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    Sans faire de test je pense que tu seras contraint d'en faire quand même...

    Si tu ne souhaites pas gérer l'exception remontée lors de la mise à jour en cas de valeur incorrecte, il faudra s'appuyer sur les métadatas de la BD afin d'alimenter les variables que tu compareras lors du OnExit de chaque zone ou lors de la validation de la fiche.
    Au delà de la comparaison des valeurs, il faut aussi prendre en compte le type de comparaison à opérer : =,<,<=,=>,>,<>, éventuellement une fourchette de valeurs pour gérer le between.

    Tout çà me parait bien complexe à implémenter dans un soft qui ne serait pas orienté gestion technique de BD.

    Enfin, en fonction des compos d'accès à la base, tu auras +/- de facilités pour obtenir les métadatas. Je sais que les UIB font ça assez bien, mais pour d'autres
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  3. #3
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    merci qi130

    je reprends l'explication car je crois pas avoir tout compris
    le SGBD FB sait très bien faire le contrôle des données suivant les contraintes définies mais à quoi bon ils servent si l'on ne peut les exploiter par un langage de programmation !

    je fais allusion à une DLL ou interface et ça me parait très évident mais je ne sais comment y arriver !!!

    pour les UIB j'aimerais avoir un exemple si possible.

    merci par avance.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Firebird lèvera automatiquement un exception si la condition n'est pas respectée . Donc un bloc try ... except ... end suffit (en théorie) à gérer le problème . Le plus difficile est en fait de récupérer l'exception et son bon intitulé .

    pour les UIB j'aimerais avoir un exemple si possible.
    je dois avoir ça dans mes archives mais il me faut le retrouver
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Firebird lèvera automatiquement un exception si la condition n'est pas respectée . Donc un bloc try ... except ... end suffit (en théorie) à gérer le problème . Le plus difficile est en fait de récupérer l'exception et son bon intitulé .


    je dois avoir ça dans mes archives mais il me faut le retrouver
    Salut SergioMaster
    en effet c'est ce qui me tracasse car le try except renvoi un message FB non compréhensible par l'utilisateur final, un "TB_Courreier_FK_1 referenced ...." ne veut rien dire pour lui ! n'y a-t-il pas plus simple comme un code d'erreur qui sera traduit par un appel à une message genre "Veuillez rentrée une valeur positive" ?
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  6. #6
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    Par exemple, voici le code pour une tentative de connexion:
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    try
           DBD1.Connected:=True;
           GetReferentielListe;
         except
            on E: EUIBError do
                 case E.ErrorCode of
                    55 : begin
                              Application.MessageBox(PChar( 'Serveur Firebird injoignable. '+
                                                  IntToStr(E.ErrorCode)), 'Erreur',
                                                  MB_OK + MB_ICONSTOP);
                              exit;
                         end;
                   152 : begin
                              Application.MessageBox(PChar( 'Compte de connexion invalide. '+
                                                  IntToStr(E.ErrorCode)), 'Erreur',
                                                  MB_OK + MB_ICONSTOP);
                              exit;
                         end;
                   401 : begin
                              Application.MessageBox(PChar( 'Le serveur ne répond pas. '+
                                                  IntToStr(E.ErrorCode)), 'Erreur',
                                                  MB_OK + MB_ICONSTOP);
                              exit;
                         end;
                   else
                       Application.MessageBox(PChar( 'Erreur non filtrée. '+ E.Message),
                                    PChar( 'Erreur:'+IntToStr(E.ErrorCode)),
                                                  MB_OK + MB_ICONSTOP);
                       exit;
                 end; // case
     
         end;
    Pour la gestion des erreurs fonctionnelles, et surtout la récupération des codes liés à tes préoccupations, il faut analyser le fichier des messages d'erreur de FB, et faire des essais.
    Mais le plus compliqué reste à faire: extraire du message le champ de la DB qui pose problème et indiquer le champ correspondant dans l'IHM (et lui donner le focus éventuellement). Sinon, et sauf si le nom des colonnes sont très explicites (i.e Numéro de client => NUM_CLI), l'utilisateur sera perdu.
    Il y a donc un mapping à faire, et à maintenir. Sans mapping, la contrainte est de nommer les composants comme la colonne

    Une autre solution consisterait à faire des fiches full-dynamiques: le libellé, le type, la position, la longueur et le nom de la colonne hébergeant la donnée se trouvent dans une table dédiée. Tu lis cette table pour créer les composants et tu peux les exploiter à ta guise. Mais faut quand même filtrer le message d'erreur pour obtenir la colonne en erreur. Ayant cette colonne, tu récupères le nom du composant.

    Il y a de nombreux mois (pour ne pas dire années), j'avais vu un article concernant cette technique.... peut-être dans le bdn ou sur le site de FB

    Voilà quelques pistes.
    ++
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  7. #7
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par Just-Soft Voir le message
    Salut SergioMaster
    en effet c'est ce qui me tracasse car le try except renvoi un message FB non compréhensible par l'utilisateur final, un "TB_Courreier_FK_1 referenced ...." ne veut rien dire pour lui ! n'y a-t-il pas plus simple comme un code d'erreur qui sera traduit par un appel à une message genre "Veuillez rentrée une valeur positive" ?
    Serge , suffira à la place de sergiomaster
    désolé , je ne retrouve pas mon code pour l'instant mais c'est faisable et ce en récupérant l'intitulé
    quant à l'intitulé il suffit de créer l'exception dans la BDD
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CREATE EXCEPTION ERREUR_VALEUR_SUP0
    'Veuillez rentrer une valeur positive';
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  8. #8
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Serge , suffira à la place de sergiomaster
    désolé , je ne retrouve pas mon code pour l'instant mais c'est faisable et ce en récupérant l'intitulé
    quant à l'intitulé il suffit de créer l'exception dans la BDD
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CREATE EXCEPTION ERREUR_VALEUR_SUP0
    'Veuillez rentrer une valeur positive';
    ok Serge
    en effet, je viens de créer un trigger avec une exception comme recommandé par bon nombres que je remercie vivement mais je suis perdu quand à l'appel du trigger sous Delphi car je veux récupérer le message retourné par l'exception personnalisée !!!
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  9. #9
    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

    On n'appelle pas un trigger depuis l'application, il est déclenché par le SGBD.

    Si un de tes triggers lève une exception (dans le sens Exception Firebird), cette exception sera propagée par l'application sous la forme d'une exception EIBError si tu utilises les composants IBX. C'est celle-ci qu'il faut gérer.

    @+ Claudius.

  10. #10
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    avec votre aide j'ai pu intercepter l'erreur et faire remonter l'exception. le code est assez simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    except
        on e : EIBError do
          begin
            dmData.IBTrans_Courrier.RollbackRetaining;
            Actions_Bouton_gb_courrier(True);
            ShowMessage('Code Erruer :' + IntToStr(EIBError(E).IBErrorCode) + #10#13 +
                        'Message : ' + e.Message);
        end;
    sauf qu'avec le code erreur et le message il m'ajoute des lignes propres au SGBD qui parlent du trigger en question
    At trigger 'TB_ARRIVEE_BIU0' line:11, col:48
    ma question est : puis-je caché ce message et ne laisser que le mien ?
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  11. #11
    Membre confirmé Avatar de JustMe
    Inscrit en
    Juillet 2002
    Messages
    479
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 479
    Points : 593
    Points
    593
    Par défaut
    Je pense saisir ce que vous voulez faire au juste :
    Vous voulez que pour toute violation contraintes existante au niveau de ta base de données vous l'intercepter et afficher un message compréhensible par l'utilisateur. Si c'est ça que vous voulez il y un article mais en espagnol qui explique exactement comment faire ICI
    <On fait la science avec des faits, comme on fait une maison avec des pierres : mais une accumulation de faits n'est pas plus une science qu'un tas de pierres n'est une maison> **Poincaré**

  12. #12
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Citation Envoyé par JustMe Voir le message
    Je pense saisir ce que vous voulez faire au juste :
    Vous voulez que pour toute violation contraintes existante au niveau de ta base de données vous l'intercepter et afficher un message compréhensible par l'utilisateur. Si c'est ça que vous voulez il y un article mais en espagnol qui explique exactement comment faire ICI
    Salut JustMe
    oui ça m'a l'air ce que je cherche mais en espagnole ça me fait fuir car déjà avec l'anglais je fuis alors qu'en dire avec l'espagnole !!!

    si par hasard quelqu'un a le même problème est va traduire l'article alors je serais reconnaissant s'il le mettait en ligne

    merci JustMe en attendant .....
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  13. #13
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut


    as-tu essayé avec l'outil de traduction de google ? le résultat est assez compréhensible je trouve

  14. #14
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Citation Envoyé par evarisnea Voir le message


    as-tu essayé avec l'outil de traduction de google ? le résultat est assez compréhensible je trouve
    Salut evarisnea, merci du conseil
    oui j'ai essayé mais je crains que c'est pas assez compréhensible pour moi alors si tu pouvais me filer la traduction google après correction de ta part.

    merci par avance le cas échéant merci quand même.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  15. #15
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    Citation Envoyé par Just-Soft
    Salut evarisnea, merci du conseil
    oui j'ai essayé mais je crains que c'est pas assez compréhensible pour moi alors si tu pouvais me filer la traduction google après correction de ta part.

    merci par avance le cas échéant merci quand même.
    pas facile de corriger la traduction google, la mise en forme est désastreuse lorsque je copie colle vers mon editeur de texte.
    néanmoins, si cela t'intéresse vraiment, je veux bien faire un effort mais va falloir attendre un peu

  16. #16
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Citation Envoyé par evarisnea Voir le message
    pas facile de corriger la traduction google, la mise en forme est désastreuse lorsque je copie colle vers mon editeur de texte.
    néanmoins, si cela t'intéresse vraiment, je veux bien faire un effort mais va falloir attendre un peu
    y'a pas mal de boulot à faire donc j'attendrais le temps qu'il faut. merci par avance.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  17. #17
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    je , qui lit aussi bien l'anglais que l'espagnol , trouve que la solution proposée par l'auteur n'est quand même pas idéale (je n'aime pas cette idée de fichier INI mais ca doit pouvoir se contourner). Cependant elle a un mérite être applicable au grand nombre sans avoir a créer d'exceptions supplémentaires , et portable sur toute BDD .
    Ma solution (que je ne retrouve hélas pas) était plutôt de récupérer le fameux texte . Je continue a chercher dans mes nombreux sources et essais . Si mes souvenirs sont exacts ce doit être pour cela que j'avais mis le message entre caractères spéciaux afin d'extraire la phrase ! Je recupérais donc le message entier Firebird , extrayais ensuite la partie "customisée" et affichais le message
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  18. #18
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Cependant elle a un mérite être applicable au grand nombre sans avoir a créer d'exceptions supplémentaires , et portable sur toute BDD .
    très juste, si l'on pouvait la réaliser sous forme d'une DLL pourvu qu'on puisse extraire le message seul.

    Citation Envoyé par SergioMaster Voir le message
    Ma solution (que je ne retrouve hélas pas) était plutôt de récupérer le fameux texte . Je continue a chercher dans mes nombreux sources et essais . Si mes souvenirs sont exacts ce doit être pour cela que j'avais mis le message entre caractères spéciaux afin d'extraire la phrase ! Je recupérais donc le message entier Firebird , extrayais ensuite la partie "customisée" et affichais le message
    de mon coté, je continue à chercher peut-être que je vais tomber sur un code quelque part.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  19. #19
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    je , qui lit aussi bien l'anglais que l'espagnol , trouve que la solution proposée par l'auteur n'est quand même pas idéale
    Pour avoir lu en travers l'article proposé, je trouve qu'on est loin du compte , puisque, et sauf à nommer explicitement les colonnes de la db (cf. mon 1er post ci-dessus), le service rendu reste de piètre utilité:
    El registro ya existe y no puede repetirse
    pour signaler 1 contrainte de PK ,littéralement "l'enregistrement existe déjà...". Sauf si on a toujours (et seulement) 1 fiche par table, l'aide est toute relative, je trouve . Autant traduire le fichier des messages FB

    Si toutefois, cette approche est mise en oeuvre, l'effort portera sur le nommage explicite des différentes contraintes lors de la définition des tables. Un sacré boulot . et d'ailleurs qui fait ça ? (pas moi en tout cas) et peut-on le faire pour toutes les contraintes sous FB ?
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  20. #20
    Membre confirmé Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Points : 574
    Points
    574
    Par défaut
    Si tu utilise les composants UIB, voici une solution pour récupérer l'exception levée dans firebird.

    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
    18
    19
    var StrSQLExeption : TStringList;
     
      try
      //votre code//
      except
        on E: EUIBError do
        begin
         if (E as EUIBError).GDSCode =  isc_except then
         begin
           StrSQLExeption := TStringList.Create;
          try
           StrSQLExeption.Text := (E as EUIBError).Message;
           MessageDlg(StrSQLExeption.Strings[2],mtError,[mbYes],0)
          finally
           StrSQLExeption.Free;
          end;
         end;
        end;
      end;
    Si vous êtes libre, choisissez le Logiciel Libre.

Discussions similaires

  1. [2.x] Comment appliquer une contrainte à un form embarqué
    Par jfsenechal dans le forum Symfony
    Réponses: 7
    Dernier message: 16/12/2011, 14h41
  2. Comment appeler une dll VB6 sous delphi
    Par zanoubya dans le forum Débuter
    Réponses: 6
    Dernier message: 05/10/2009, 18h04
  3. Réponses: 1
    Dernier message: 07/04/2008, 21h29
  4. Comment importer une table SQL sous Delphi ?
    Par Yeldra dans le forum Débuter
    Réponses: 3
    Dernier message: 28/10/2007, 10h37
  5. Comment créer une dll Win32 sous Delphi ?
    Par Mickey.jet dans le forum Langage
    Réponses: 8
    Dernier message: 16/06/2005, 15h38

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