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

C++Builder Discussion :

DBGrid et gestion d'erreurs


Sujet :

C++Builder

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2003
    Messages : 12
    Par défaut DBGrid et gestion d'erreurs
    Bonjour,

    Je dois utiliser un DBGrid pour afficher les résultats d'une table puis pour pouvoir en insérer des nouvelles.

    J'aimerai pouvoir tester les valeurs entrées dans une nouvelle ligne avant que le programme tente d'insérer cette nouvelle ligne dans la base de données. Mais je n'ai pas trouvé comment faire.....

    Je pourrais ainsi éviter des erreurs, par exemple un champ vide alors qu'il est notNull dans la base de données.

    Merci

  2. #2
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 86
    Par défaut
    Salut,
    Vois avec les évènements du composant TTable
    • BeforePost
      AfterPost
      ---

    Et avec l'aide. Tu verras que c'est pas très compliqué.
    Bon courage

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2003
    Messages : 12
    Par défaut
    Merci mais en fait j'ai travaillé sur l'événement ColEnter et si il veut aller à la colonne suivante sans avoir rempli la précédente ça ne marche pas il reste là.

    Mon problème est que si il remplit une des 3 colonnes et qu'il appuie sur la flèche en haut le programme tente d'insérer.

    J'arrive à récupérer l'événement d'appui sur la flèche d'en haut mais je ne sais pas comment dire au programme d'annuler la tentative d'insertion ....

  4. #4
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 86
    Par défaut
    Moi j'utiliserais l'évènement BeforePost de la table et dedans je mettrais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        If(ConditionsPasRemplies)
            Abort();
    Le Abort() annule l'envoi du Post.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2003
    Messages : 12
    Par défaut
    Merci beaucoup le Abort ca marche super bien ....

    J'abuse un peu mais j'ai encore une question

    La première colonne de mon DBGrid c'est une date. Y'aurait-il une fonction pour tester si la valeur entrée correspond à une date ou non ??

    Merci

  6. #6
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 86
    Par défaut
    Citation Envoyé par rohlio
    Y'aurait-il une fonction pour tester si la valeur entrée correspond à une date ou non ??
    Voila une fonction que j'utilise pour faire ç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
     
    void __fastcall TFrameImportationClients::DateValide()
    {
    bool Erreur=false;
     
        try
        {
            if(TableImportationClients->Fields->Fields[16]->AsDateTime>2400)
                Erreur=false;
        }
        catch(Exception &exception)
        {
            // Date pas valide
            // Traitement
        }
    }
    Le champ n°16 est une chaîne de caractère qui doit représenter une date. Le fait de le traiter explicitement comme une date avec AsDateTime déclenche une exception si une date valide n'est pas contenue dans le champ (le test >2400 ne sert à rien en fait).
    Si le prog passe dans le catch => la date n'est pas valide.

    J'ai pas trouvé le moyen de faire autrement... A part en analysant une chaîne de caractère et de tenir compte de l'emplacement et du nombre de séparateurs ('/' ou '-'... définis dans les paramètres régionnaux).

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Août 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2003
    Messages : 12
    Par défaut
    Merci beaucoup

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

Discussions similaires

  1. gestion d'erreur et de transactions....
    Par Dge dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 08/02/2006, 22h20
  2. [Struts-Validator] Gestion d'erreurs
    Par sylvain_neus dans le forum Struts 1
    Réponses: 14
    Dernier message: 09/04/2004, 15h15
  3. [XSLT]Est ce qu'il y'a la gestion des erreur en xslt ?
    Par miloud dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 04/02/2004, 17h19
  4. [LG]tests pour la gestion d'erreur
    Par le 27 dans le forum Langage
    Réponses: 3
    Dernier message: 22/12/2003, 20h44
  5. [LG]gestion des erreurs
    Par frontin dans le forum Langage
    Réponses: 3
    Dernier message: 29/11/2003, 22h41

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