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 :

[TSQLQuery] Comment mettre un TimeOut ?


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de WebPac
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 947
    Par défaut [TSQLQuery] Comment mettre un TimeOut ?
    Bonjour tout le monde,
    lorsqu'on ouvre une requête avec un TSQLQuery et que la base de donnée met un quart d'heure pour ouvrir la requête, l'application reste figée pendant ce quart d'heure.

    La solution est de faire l'ouverture de cette requête dans un Thread, ainsi on peut continuer à travailler. Mais on ne peut pas kicker l'ouverture de la requête tant qu'elle n'est pas terminée (j'ai essayé tout ce que j'ai pu trouver et rien n'a marché). A cause de ça, la suppression du composant à la fermeture de l'application attend la fin de l'ouverture de la requête. Ce qui est embêtant si on doit attendre 15 minutes le temps que la requête s'ouvre.

    Une solution serrait de mettre un TimeOut avant d'ouvrir la requête, ainsi si par exemple au bout d'une minute la requête ne s'est pas encore ouverte, on arrête l'ouverture de la requête.
    J'ai cherché dans les propriétés du TSQLQuery ainsi que dans le TSQLConnection mais je n'ai pas trouvé d'allusion à un TimeOut.

    Je viens ici demander si quelqu'un a une solution pour implémenter un TimeOut.
    Merci.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 343
    Par défaut
    un TimeOut peut être une sorte de chrono dans un Thread différent de ta requête.le thread Timeout est lancé avant ta requete et à la fin d'un temps précis test un boolean. Ce boolean aura changé d'état (vrai par exemple) après le succés de ta requête.
    Bon code

  3. #3
    Membre éclairé Avatar de WebPac
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 947
    Par défaut
    Merci pour ton aide, mais je connais déjà tout cela. Mais quand on a une requête qui met 15 minutes à s'ouvrir, même en mettant un minuteur pour arrêter le traitement, on peut continuer le travail dans le thread principal mais la requête qui tente de s'ouvrir est inaccessible dans le thread principal, on ne peut pas l'arrêter. C'est ce problème dont je parle.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 343
    Par défaut
    YES, j'avais pas compris . En effet c'est l'ouverture de requête qui est bloquant..Il me semble que c'est du côté du SGBD qu'il faut chercher. En effet c'est là où le blocage se "passe", à l'ordonnencement des requêtes. Comme on dit, contact ton administrateur de bases.
    C'est seulement une idée
    Bon Code

  5. #5
    Membre éclairé Avatar de WebPac
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 947
    Par défaut
    Citation Envoyé par tatareau
    YES, j'avais pas compris . En effet c'est l'ouverture de requête qui est bloquant..Il me semble que c'est du côté du SGBD qu'il faut chercher. En effet c'est là où le blocage se "passe", à l'ordonnencement des requêtes. Comme on dit, contact ton administrateur de bases.
    C'est seulement une idée
    Bon Code
    Ouais mais non, car la base de donnée est celle du client, elle peut être en SQL Serveur, Oracle, Firebird, Access, Informix, autre via ODBC et j'en oublie.
    De plus faire une application qui travaille sur des connexions à des bdd et qui n'arrive pas à se fermer, on ne peut pas demander à l'utilisateur de contacter son administrateur de base de donnée pour nous déconnecter, ça fait pas très pro.
    C'est vraiment un point bloquant, surtout quand on commence à tapper sur des gros volumes.

  6. #6
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Est il posible de voir la requete?
    Car je trouve que 15mn c'est un peu trop pour une requete.

    Sinon n'est il pas possible de découper le gestion de la requete en plusieurs étapes (faire une partie de la requete puis une autre partie etc ...) et entre chaque étape vérifier qu'il n'y a pas une demande d'arret du traitement.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/06/2009, 17h58
  2. Réponses: 2
    Dernier message: 05/05/2006, 13h29
  3. Réponses: 2
    Dernier message: 19/08/2003, 15h45
  4. Comment mettre en place une structure 3 tiers.
    Par WOLO Laurent dans le forum Débats sur le développement - Le Best Of
    Réponses: 13
    Dernier message: 27/07/2003, 22h01
  5. Comment mettre plusieurs objets ds un composant ?
    Par Fleury dans le forum Composants VCL
    Réponses: 7
    Dernier message: 24/05/2003, 17h34

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