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 :

TreeView + Requête


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 75
    Points : 59
    Points
    59
    Par défaut TreeView + Requête
    Bonjour
    J'ai récupérer (sur ce forum) une procédure qui affiche les éléments d'une bdd dans un treeView
    Avec certaines de mes requêtes, elle fonctionne, mais là j'ai une requête qui fait des jointures sur plusieurs tables et rien ne s'affiche dans le TreeView.(??)
    J'ai testé la requêet seule, elle me renvoie bien des valeurs.
    Donc je sais pas trop ....
    je mets la procédure entière:

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    procedure GereTreeView2SurBdd;
    var temp_nom : string;
        newNode, ParentNode : TTreeNode;
     
    begin
     
    MainForm.ADOConnection1.Open;
     
    MainForm.Query4.SQL.Clear;
     
    MainForm.Query4.SQL.Add('SELECT BLineMAG.BlineMag, rel_pin_essai.fichier');
    MainForm.Query4.SQL.Add(' FROM ((BLineMAG INNER JOIN Produit ON BLineMAG.BlineMag = Produit.BLineMAG)');
    MainForm.Query4.SQL.Add(' INNER JOIN Essai ON Produit.NomProduit = Essai.NomProduit) INNER JOIN rel_pin_essai ON Essai.NumeroEssai = rel_pin_essai.NumeroEssai');
     
     
    MainForm.Query4.Open;
     
     
    with MainForm.TreeView1 do
       begin
       Items.Clear;
          if MainForm.Query4.Eof then
            begin
            Items.Add(nil, 'VIDE');
            end
    else
      begin
      temp_nom := '';
        while not MainForm.Query4.Eof do
          begin
            if (MainForm.Query4.FieldByName('BLineMAG.BlineMag').AsString )<> temp_nom then
              begin
              temp_nom := MainForm.Query4.FieldByName('BLineMAG.BlineMag').AsString;
              newNode := Items.Add(Nil, temp_nom); 
              ParentNode := newNode; 
              newNode := Items.AddChild(ParentNode,MainForm.Query4.FieldByName('rel_pin_essai.fichier').AsString); 
              end
            else
              begin
              newNode := Items.AddChild(ParentNode,MainForm.Query4.FieldByName('rel_pin_essai.fichier').AsString);
              end;  
    MainForm.Query4.Next;
        end;
    FullExpand;
     
    end;
    end;
    end;

  2. #2
    Membre averti
    Profil pro
    xxxxxxxxxxx
    Inscrit en
    Juin 2004
    Messages
    308
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : xxxxxxxxxxx

    Informations forums :
    Inscription : Juin 2004
    Messages : 308
    Points : 407
    Points
    407
    Par défaut
    Bonjour,

    Quand tu dis que rien ne s'affiche dans la treeview, c'est rien du tout, ou c'est "VIDE" ?

    Tu peux tenter après le OPEN un last puis un first et afficher le nb d'enregs ?

    Si tu mets un point d'arrêt sur la création de noeud, le programme s'y arrête-t-il ?

    à +

  3. #3
    Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 75
    Points : 59
    Points
    59
    Par défaut
    salut cmen76 et merci^^ de répondre

    Quand tu dis que rien ne s'affiche dans la treeview, c'est rien du tout, ou c'est "VIDE" ?
    c'est "VIDE"

    Tu peux tenter après le OPEN un last puis un first
    alors j'ai tenté... j'ai l'erreur "impossible d'effectuer cette opération sur un ensemble de données fermé"
    mais peut-être c'est moi. en fait je comprends pas trop ce que tu veux que j'essaie
    je mets ça dans mon code après le open??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MainForm.Query4.Last;
    MainForm.Query4.First;
    (euh, rigole pas si je suis complètement à coté je suis pas programmeuse, je suis déslée mais je suis vraiment débutante là !!)

    et afficher le nb d'enregs ?
    même erreur si j'essaie un recordcount (MainForm.Query4.RecordCount

    Si tu mets un point d'arrêt sur la création de noeud, le programme s'y arrête-t-il ?
    le premier oui (pour vide)
    et dans le else non il y va pas

    par contre quand j'ai dit que cette requête me renvoyait des valeurs, en fait c'est dans ACCESS (j'ai créer cette requete ds acces en fait par faineantise... et après j'ai copier le sql)
    donc je sais pas si ça change après dans delphi

  4. #4
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 897
    Points : 1 561
    Points
    1 561
    Par défaut
    Bonjour Marie253,

    En fait si tu veux savoir si ta requête te renvoit bien un ensemble de résultats avant de vérifier si la partie gérant ton TreeView est correcte.

    Tu puix procéder de la manière suivante:

    1) tu places un TDataSource sur ta fiche, puis dans l'inspecteur d'objets tu remplis sa propriété DataSet avec la valeur MainForm.Query4

    2) tu places un TDBGrid sur ta fiche puis tu instruis dans l'inspecteur d'objets la propriété DataSource avec le nom de ton TDataSource préalablement déposé (point n°1)

    3) Tu ne conserves que cette partie de ta procédure GereTreeView2SurBdd;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    MainForm.ADOConnection1.Open; 
     
    MainForm.Query4.SQL.Clear; 
     
    MainForm.Query4.SQL.Add('SELECT BLineMAG.BlineMag, rel_pin_essai.fichier'); 
    MainForm.Query4.SQL.Add(' FROM ((BLineMAG INNER JOIN Produit ON BLineMAG.BlineMag = Produit.BLineMAG)'); 
    MainForm.Query4.SQL.Add(' INNER JOIN Essai ON Produit.NomProduit = Essai.NomProduit) INNER JOIN rel_pin_essai ON Essai.NumeroEssai = rel_pin_essai.NumeroEssai'); 
     
    MainForm.Query4.Open;
    4) Tu déposes un composant TButton sur ta fiche puis tu codes son événement onClick avec

    Tu exécutes ton application, et si en cliquant sur le TButton la grille de données se remplit alors ta requête est correcte et il faut que tu vérifies la façon dont tu codes le remplissage de ton TreeView.

    Tiens moi au courant.

    Bon test
    Cordialement
    Pensez à utiliser les tags dans le titre.
    Avant de poser une question reportez-vous à la FAQ Delphi
    Respectez les règles du forum.

  5. #5
    Membre averti
    Profil pro
    xxxxxxxxxxx
    Inscrit en
    Juin 2004
    Messages
    308
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : xxxxxxxxxxx

    Informations forums :
    Inscription : Juin 2004
    Messages : 308
    Points : 407
    Points
    407
    Par défaut
    c'est "VIDE"
    donc ça veut dire que le programme évalue à TRUE la condition
    Donc, soit la requête est vide (zéro enregistrement), soit le curseur d'enregistrement est positionné en fin de fichier (par un Query4.last, par exemple)

    alors j'ai tenté... j'ai l'erreur "impossible d'effectuer cette opération sur un ensemble de données fermé"
    mais peut-être c'est moi. en fait je comprends pas trop ce que tu veux que j'essaie
    je mets ça dans mon code après le open??

    Code:
    MainForm.Query4.Last;
    MainForm.Query4.First;
    Ton code me paraît bon, ... était-il bien après le Query4.Open ?
    Si oui, ça voudrait dire que Query4 ne s'est pas ouverte malgré la commande Open ?!! (tu as un bloc try ... except ?, parce qu'en principe ce genre d'anomalie déclenche une exception)

    La méthode conseillée par Pascal Jankowski te permettra d'en avoir le coeur net...
    à+

  6. #6
    Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 75
    Points : 59
    Points
    59
    Par défaut
    Salut Pascal
    --> j'ai fait tout ça, la requête était bien correcte

    ensuite j'ai tout refait et maintenant ça marche mais je ne sais pas pkoi avant non ..

    si juste un truc, j'ai du mettre :

    BlineMag au lieu de BLineMAG.BlineMag
    et fichier au lieu de rel_pin_essai.fichier

    car j'avais une erreur sinon (que je n'avais pas précédemment)

    en tous cas ^^merci^^ bcp à vous deux de vous etre penchés sur mon pb

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

Discussions similaires

  1. Remplir un treeview à partir d'une requête recursive
    Par Saintelaitlait dans le forum VB.NET
    Réponses: 11
    Dernier message: 07/04/2019, 11h14
  2. requête hiérarchique pour treeview
    Par SpaceFrog dans le forum Requêtes
    Réponses: 3
    Dernier message: 12/07/2011, 23h11
  3. SQL et requête pour remplissage d'un treeview en vb.net
    Par catchouse dans le forum Développement
    Réponses: 6
    Dernier message: 14/05/2009, 08h59
  4. TreeView alimenté par requête
    Par Hobbi1 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 09/11/2006, 16h24
  5. [BDD] Enregistrer le résultat d'une requête
    Par Mowgly dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/06/2002, 15h26

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