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

Langage Delphi Discussion :

ADOQuery non connectable ?


Sujet :

Langage Delphi

  1. #1
    Membre averti Avatar de archonte
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 342
    Points : 394
    Points
    394
    Par défaut ADOQuery non connectable ?
    Salut !

    Sur ma Form3, j'ai posé un TADOConnection, un TADOQuery (ADOQryU), un TDataSource, et un TDBLookUpComboBox. Voila ce que j'ai encodé dans ma form3 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm3.ADOQryUBeforeOpen(DataSet: TDataSet);
    begin
      ADOQryU.Active := False;
      ADOQryU.SQL.Text := 'SELECT nom, idservice FROM services WHERE idutilisateur = :Pidutilisateur ORDER BY nom';
      ADOQryU.ParamCheck := true;
      ADOQryU.Parameters.ParamByName('Pidutilisateur').Value := IdxUser;
      ADOQryU.Active := true;
    end;
    Si en mode design je mets la proprieté active du composant ADOQryU à true : j'obtiens un message d'erreur :

    ---------------------------
    Notification des exceptions du débogueur
    ---------------------------
    Le projet essai.exe a déclenché la classe d'exception EStackOverflow avec le message 'Débordement de pile'.
    ---------------------------
    Arrêter Continuer Aide
    ---------------------------
    Si à l'inverse je fixe à false la propriété active : il ne se passe rien et le DBLookUpComboBox reste vierge malgré la procedure OnBeforeOpen ci dessous!

    Merci de m'aider à trouver le bug ! Ou dois-je placer ma requete ?


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

    est tu sur que le message d'erreur survient en mode conception ? car vu la manière dont tu as codé ton évènement BeforeOpen, c'est en exécution que cela devrait se produire.
    une petite explication sur ce que tu as codé: lorsque ADOQryU s'ouvre, il appelle l'évènement BeforeOpen; dans cet évènement, tu ferme ADOQryU et définit la requête SQL à exécuter, puis Active de nouveau ADOQryU. une fois de plus avant d'ouvrir effectivement le jeu de données, l'évènement BeforeOpen est appelé de nouveau. c'est ce que l'on appelle une boucle sans fin, d'où l'erreur de débordement de pile que tu as.
    schématiquement ça donne ceci:
    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
    ADOQryU.Active := True
      --> BeforeOpen
        -->ADOQryUD.Active := False
        -->...
        -->ADOQryU.Active := True
        --> BeforeOpen
          -->ADOQryUD.Active := False
          -->...
          -->ADOQryU.Active := True
          --> BeforeOpen
            -->ADOQryUD.Active := False
            -->...
            -->ADOQryU.Active := True
            --> BeforeOpen
              -->ADOQryUD.Active := False
              -->...
              -->ADOQryU.Active := True
    ainsi de suite jusqu'au débordement de pile...

    met le code ailleurs que dans l'évènement BeforeOpen, dans le Click d'un bouton par exemple.

  3. #3
    Membre averti Avatar de archonte
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 342
    Points : 394
    Points
    394
    Par défaut
    Effectivement !!! merci pour l'explication sur la logique de fonctionnement du OnBeforeOpen

    NB : je n'ai peut-être pas été clair par contre sur le moment de survenue de l'erreur : c'était en runtime. Mais j'avais l'impression qu'elle dépendait des valeur de l'inspecteur d'objets.


  4. #4
    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 archonte Voir le message

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

Discussions similaires

  1. [phpBB] Connecté/ non connecté
    Par ArnaudPika dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 21/11/2007, 09h13
  2. Vérif anti-virus d'un poste non connecté à Internet
    Par Bernard M dans le forum Sécurité
    Réponses: 3
    Dernier message: 05/03/2007, 20h25
  3. Connection Ib6 à une base depuis un portable non connecté
    Par mika dans le forum Connexion aux bases de données
    Réponses: 4
    Dernier message: 17/02/2006, 18h03

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