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 :

afficher des message d'erreur de la base de donné sans provoquer l'arret de l'execution


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Inscrit en
    Février 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 105
    Par défaut afficher des message d'erreur de la base de donné sans provoquer l'arret de l'execution
    salut, j'ai un peutit probleme pour afficher les messages d'erreur,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    if ((RzRadioButton3->Checked))
    {
    ADOCommand2->CommandText="drop user scott cascade";
    try
    {
    ADOCommand2->Execute();
    }
    catch(Exception &exception)
    {  ShowMessage(exception.Message);
    //return;
    }
    ShowMessage("l'utilisateur a etait supprimé.");
    }
    enfait mon programme sert a supprimer un utilisateur choisi par utilisateur, mon programme marche bien au debut mais quand je veux supprimer un utilisateur deja supprimé ou il n'existe pas il m'affiche un message d'erreur et arrete l'execution (message dans la piece jointe).
    je veux faire une astuce pour qu'il m'affiche mon message d'erreur indiqué la dessus dans mon programme sans arreter l'execution.merci d'avance
    Images attachées Images attachées  

  2. #2
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut
    Je ne comprend pas trop ta question...
    A priori tu intercepte correctement ton exception dans ton bloc try-catch.

    A noter que lorsque tu exécute ton programme depuis l'environnement C++ Builder, par défaut les exceptions sont déclenchées par le debugger même si elle sont interceptées par ton programmes...

    Pour vérifier le fonctionnement de ton programme, exécute directement ton fichier *.exe depuis l'explorateur windows.

    [Edit:]J'avais effectivement rien compris à la question, et ma réponse est a priori à coté de la plaque.

    .

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Par défaut
    Salut,

    Je ne crois pas que tu peux afficher un message avec MessageBox en jouant sur la modalité.

    Par contre, tu peux faire une fiche spécifique et l'afficher avec Show() au lieu de ShowModal().

    Tu peux aussi créer un thread qui affiche la fenêtre séparément, mais je pense que c'est un peu l'artillerie lourde...

  4. #4
    Membre confirmé
    Inscrit en
    Février 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 105
    Par défaut
    slt , je sais que le builder c++ il traite les exceptions tout seul mais je veux quand t'il y a une erreur ( pas une exception mais plutot un message qui le renvoie oracle comme par exemple " ce utilisateur n'existe pas " ou " invalid username/password logon denied " ) , je veux reccuper ces messages et c'est moi qui les affiche surtout sans arret de l'execution. merci d'avance et j'epere que vous m'avez compris.

    cas pratique dans l'exemple precedant (code dessus) :
    j'ai cliquer sur ce boutton pour qu'il me supprime un utilisateur et sa marcher tres bien mais quand je cliquer pour la deuxieme fois il m'a affiché une erreur d'exception comme quoi ce utilisateur n'existe pas et a provoqué un arret de l'execution .
    solution souhaité : quand je clique sur le boutton pour la deuxieme fois j'affiche le message correspond sans provocation d'arret d'execution.

    merci d'avance.

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Un exemple de fenêtre dont la visibilité est temporisée.
    L'utilisateur doit pouvoir malgré tout fermer la fenètre avant échéance (même si le temp qui reste est infime).

    Donc :

    Une nouvelle fiche (ici TFormN) : FormStyle = fsStayOnTop;
    - un label (Label1) : WordWrap = true
    - un bouton (Button1) ou SpeedButton1
    - un timer (Timer1).
    Deux propriétés pour la classe de cette form, telles que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    private :
    int Count; // << timing de son affichage
        AnsiString __fastcall GetError();
        void __fastcall SetError(AnsiString Value);
     
    public :
        // Le texte de l'erreur
    __property AnsiString Error = {read=GetError, SetError};
    Le getter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    AnsiString __fastcall TFormN::GetError()
    {
    return Label1->Caption;
    }
    Le setter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    void __fastcall TFormN::SetError(AnsiString Value)
    {
    if(Value != "")
        {
        Label1->Caption = Value;
        Count=0;
        if(Visible == false)
            {
            Timer1->Enabled = true;
            Show();
            }
        }
    }
    Dans la OnClick du bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Timer1->Enabled = false;
    Hide();
    Dans la OnTimer du timer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Count++;
    if(Count > 4)
        {
        // appel à la méthode Click du bouton
        Button1Click(Button1); // ou (this) ...
        }
    Donc un usage assez simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FormN->Error = "Blabla";
    Note que c'est développé avec BCB3 Pro ... où je ne dispose pas de fenêtres temporisées préconstruites.
    Peut-être que ça existe dans des versions ultérieures de BCB... sinon à quoi serviraient-elles (par rapport à ce que l'on vient de faire ici) !

    A plus !

Discussions similaires

  1. [AC-2003] erreur doublon dans base de données sans trouver les données
    Par warrios dans le forum Access
    Réponses: 3
    Dernier message: 04/11/2014, 18h19
  2. C++ avec SWIG - afficher des messages d'erreurs
    Par spartan811 dans le forum C++
    Réponses: 1
    Dernier message: 20/06/2012, 15h39
  3. Message d'erreur sur ma base de données
    Par Zizou7 dans le forum Bases de données
    Réponses: 2
    Dernier message: 15/06/2010, 15h42
  4. [Toutes versions] afficher des messages d'erreurs si conditions sont fausses
    Par guigui71 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/05/2010, 16h03
  5. [requête] message d'erreur : moteur de base de données
    Par romika dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 18/01/2007, 22h39

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