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 :

bug "trop de connection" lors de l'utilisation de mon programme


Sujet :

C++Builder

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut bug "trop de connection" lors de l'utilisation de mon programme
    Re bonsoir.

    Voila j'arrive tout doucement a la fin de mon programme donc j'ai voulu le tester.

    Il s'agit en gros de passer des commandes.

    j'utilise le programme ( entrer des articles , modifier des client , etc... )

    puis a un certain moment mon programme a bugger et il m'a affiché ce message :

    project1 TDBXERROR : trop de connections
    Je sais pas c'est du a quoi mais c'est emebetant car apres le programme ferme.

    pour info : j'uitlise 20 form dans lesquel il y a a chaque fois un SQLQuery mais ils sont normalement fermé quand je ferme une FORM ( OnFormDesactivate => SQLQuery1->Close()

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 143
    Points
    11 143
    Par défaut
    bonjour,

    peut-être pourrais-tu utiliser un DataModule (Fichier - Nouveau - Module de données) pour les composants gérants tes bases de données (TDatasource, TQuery, TDatabase) ?

    Les composants de ce Datamodule seraient utilisés par tes différentes formes par la suite.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut
    oui c'est ce que j'utilise un TSQLQuery dans chaque FORM

  4. #4
    Membre averti Avatar de BOUBOU81
    Profil pro
    system integrator
    Inscrit en
    Juin 2004
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : Allemagne

    Informations professionnelles :
    Activité : system integrator

    Informations forums :
    Inscription : Juin 2004
    Messages : 358
    Points : 315
    Points
    315
    Par défaut
    Ce qu'a voulu t'expliquer Auteur c'est que tu met un SQLQuery dans un datamodule puis depuis toutes tes form tu fais appel à ce SQLQuery. soit un seul endroit pour toute l'application.

    Bonne continuation

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut
    en fait j'ai 20 Form avec chaq'une un SQLQuery1.

    J'ai ma form1 qui fait office de menu. et depuis un Tmenu j'ouvre une Form.

    une seule Form peux etre ouvert a la fois.

    Donc j'ai la Form1 et une autre Form ouvert en general.

    a chaque fois que je Desacitive une form j'ai mis le code:

    SQLQuery1->Close(); comme ca je me suis dit que le programe aller fermé la connection mais ca ne change rien.

    Dans Easy php j'ai ceci:


  6. #6
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 143
    Points
    11 143
    Par défaut
    Citation Envoyé par BOUBOU81
    Ce qu'a voulu t'expliquer Auteur c'est que tu met un SQLQuery dans un datamodule puis depuis toutes tes form tu fais appel à ce SQLQuery. soit un seul endroit pour toute l'application.
    C'est exactement ce que je voulais dire Là tu peux le faire car tes fenêtres sont visiblement "modale" donc une fenêtre à la fois utilisera le TQuery. La gestion de tes requêtes ne sera que meilleure.


    Sinon fais-tu un Query->SQL->Clear() avant ajouter ta requête au composant TQuery ?

    Tu devrais plutôt faire un Query->Close() après le traitement des résultats de ta requête.

    Par ailleurs, ne confonds pas Query->Open() et Query->ExecSQL() (j'ai un doute sur la syntaxe), les deux fonctions ne s'appliquent pas sur le même genre de mots-clés SQL.

  7. #7
    Membre averti Avatar de BOUBOU81
    Profil pro
    system integrator
    Inscrit en
    Juin 2004
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : Allemagne

    Informations professionnelles :
    Activité : system integrator

    Informations forums :
    Inscription : Juin 2004
    Messages : 358
    Points : 315
    Points
    315
    Par défaut
    Attention à quoi est lié ton SQLQuery, car ce n'est pas le query qui ferme la connexion mais l'élément qui te fais la liaison (TADOConnection ou bien TDataBase...) et lui ne ce ferme pas quand tu fais un close te ton Query.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut
    mon SQLQuery est lié a TSQLConnection.

  9. #9
    Membre averti Avatar de BOUBOU81
    Profil pro
    system integrator
    Inscrit en
    Juin 2004
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : Allemagne

    Informations professionnelles :
    Activité : system integrator

    Informations forums :
    Inscription : Juin 2004
    Messages : 358
    Points : 315
    Points
    315
    Par défaut
    et tu as un SQLConnection par form ou bien un pour le programme?

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut
    j'ai un seul TSQLConnection.

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut
    J'ai regler le probleme en mettant dans l'evenement AfterClose du SQLQuery :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQLConnection->Connected=false;
    je sais pas si c'est une bonne solution mais en tous cas ca marche

  12. #12
    Membre averti Avatar de BOUBOU81
    Profil pro
    system integrator
    Inscrit en
    Juin 2004
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : Allemagne

    Informations professionnelles :
    Activité : system integrator

    Informations forums :
    Inscription : Juin 2004
    Messages : 358
    Points : 315
    Points
    315
    Par défaut
    Mais quand même que je serai toi je mettrai un SQLQuery dans un Datamodule, et je supprimerai tous ceux qui sont dans les form.
    Tu t'y retrouvera mieux pour la maintenace de ton logiciel et si un jour tu veux passer à une autre techologies (ADOQuery par exemple) tu sera beaucoup moins ennuyé.

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut
    hum oui mais ca a l'air beaucoup de chipotage surtout que je connais pas du tout ce genre de chose.

  14. #14
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 143
    Points
    11 143
    Par défaut
    Citation Envoyé par bullrot Voir le message
    hum oui mais ca a l'air beaucoup de chipotage surtout que je connais pas du tout ce genre de chose.
    c'est une interface pour placer les composants pour ta base de données, la syntaxe d'appel est des plus classsique :
    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TonDataModule->TQuery->...

    et dans tes formes :
    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #inlcude "TonDataModule.h"

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut
    ah oué oki en fait c'est une simple Form.

    Je pourais le placer tout betement mon Query sur ma form1 ( qui est toujours active ) non ?

  16. #16
    Membre averti Avatar de BOUBOU81
    Profil pro
    system integrator
    Inscrit en
    Juin 2004
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : Allemagne

    Informations professionnelles :
    Activité : system integrator

    Informations forums :
    Inscription : Juin 2004
    Messages : 358
    Points : 315
    Points
    315
    Par défaut
    Parfaitement, mais a chaque fois que tu include ta form principal, tu n'include pas seulement ce qu'il te faut pour la base de donnée, mais tous les objets sur ta fiche.
    Alors que dans le cas d'un module donnée c'est juste le query et la connexion et le DataModule est moins lourd qu'une form.
    Après c'est toi qui vois, c'est juste un opinion.
    Moi de mon coté je trouve ça plus propre.

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut
    oui c'est sur.

    Peut etre je m'oquperais de ca quand le programme sera ds la phase "optimisation"

    Merci en tous cas pour tes conseils je les met de coté pour l'instant

Discussions similaires

  1. Crash lors de l'ouverture de mon programme
    Par jimmplan dans le forum MFC
    Réponses: 16
    Dernier message: 16/10/2008, 22h35
  2. Réponses: 4
    Dernier message: 15/01/2008, 11h52
  3. Réponses: 5
    Dernier message: 22/11/2007, 23h11
  4. probleme lors de l'execution de mon programme
    Par s-ehtp dans le forum Débuter
    Réponses: 24
    Dernier message: 04/11/2007, 23h15
  5. problème lors de l'utilisation de mon application
    Par dododi dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/10/2006, 19h35

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