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

Delphi Discussion :

problème de treeview et base de données


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Analyste
    Inscrit en
    Décembre 2002
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste

    Informations forums :
    Inscription : Décembre 2002
    Messages : 39
    Par défaut problème de treeview et base de données
    Bonsoir

    Alors voici mon probléme:
    j'ai une base de données qui se presente comme suit

    les tables:
    Domaines: (Materiaux de constructions,materiel electriques ect....)
    Familles: à chaque domaine on associe des familles (exemple pour les matériaux de construction on a : liant hydroliques,Granulats,ect...)
    Types: à chaques famille on associe des types ( exemple : liant hydrolique :ciment,chaux ect....)
    Fournitures: à chaque type on associe des fouriture et des produit.
    alors voici mon probléme:
    je voudrais faire un treeview comme celui si
    + Materiaux de construction
    | -- Liant hydrolique
    | |--Ciment
    | |--produit1
    | |--Produit2
    | -- Granulat
    |---Type1
    |---produit1
    |--produit2
    ect
    est ce possible?
    si oui je vous serais reconnaissant de pouvoir me donner une idée pour comencer

  2. #2
    Membre éprouvé

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Par défaut
    Il y a des procédés plus élégants techniquement mais celui là est le plus simple

    On lance la requete d'extraction en la classant par Domaine, Famille, Type, Fournitures.
    Ensuite, en lisant le résultat de cette requete, à chaque fois qu'un des critères change on créé le noeud correspondant dans le TreeView

  3. #3
    Membre averti
    Profil pro
    Analyste
    Inscrit en
    Décembre 2002
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste

    Informations forums :
    Inscription : Décembre 2002
    Messages : 39
    Par défaut
    Merci
    je fais déja ces requêtes pour classer les elelments mais mon problème et que j'arrive pas à creer les noeuds parent et enfant correspendant
    les neouds parents constiyué des domaines celui enfant constituer des famille et à chaque famille on associe des noeud enfant pour les types enfin les fournitures correspendant au types selectioné seront representer dans un Stringgrid
    mais le probléme c'est que j'arrive pas ajouter les noeuds dynamiquement par programation

  4. #4
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut

    Résumons la situation. Tu vas avoir 3 niveaux dans ton TreeView:
    1. Niveau Domaine: Noeud parent
    2. Niveau Famille: Noeud Parent/Enfant
    3. Niveau Type: Noeud enfant


    Tu as construit ta requete qui te ramene de façon ordonnée les éléments suivants:
    • DomaineID, DomaineLibelle
    • FamilleID, FamilleLibelle
    • et TypeID, TypeLibelle


    Tu charges ta requete et lis séquentiellement tes enregs jusqu'à EOF (Classique ).
    Pour créer un noeud parent (de 1° niveau: le Domaine) tu écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      NewDomaineNode := TreeView1.Items.Add(nil, DomaineLibelle);
    Pour créer un noeud enfant (de 2° niveau: Famille) tu écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      NewFamilleNode := TreeView1.Items.AddChild(NewDomaineNode, FamilleLibelle);
    De même pour le 3° niveau: Type, tu écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      NewTypeNode := TreeView1.Items.AddChild(NewFamilleNode, TypeLibelle);
    Tu auras bien sûr besoin de tester si tu ne changes pas de domaine ou de famille à chaque boucle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      if DomaineID <> PrecedentDomaine then
      begin
        // Création d'un noeud de niveau 1
      end;
      if FamilleID <> PrecedenteFamille then
      begin
        // Création d'un noeud de niveau 2
      end;
      // Création d'un noeud de niveau 3
      MaRequête.Next;
    Voilà le principe.
    @+ Claudius

  5. #5
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    Voilà un petit extrait d'un code que j'ai crée il y a fort longtemps:
    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
    procedure TFPrincip.ChargeTree;
    var
        i:integer;
        p,q:TTreeNode;
    begin
         TreeView1.Items.Clear;
         with DataModule2 do
           begin
             ADossier.First;
             if not DClients.Active then DClients.Active:=true;
             while not ADossier.Eof do
               begin
                 i:=ADossierCli.Value;
                 p:=TreeView1.Items.Add(nil,ADossierNDos.Value);
                 p.ImageIndex:=15;
                 p.SelectedIndex:=15;
                 if DClients.Locate('cod',i,[]) then
                  begin
                     q:=TreeView1.Items.AddChild(p,'');
                     q.Text:=DClientsNomC.Value;
                     q.ImageIndex:=39;
                     q.SelectedIndex:=39;
                     q:=TreeView1.Items.AddChild(p,'');
                     q.Text:=DClientsTel.Value;
                     q.ImageIndex:=17;
                     q.SelectedIndex:=17;
                     q:=TreeView1.Items.AddChild(p,'');
                     q.Text:=DClientsGSM.Value;
                     q.ImageIndex:=41;
                     q.SelectedIndex:=41;
                     q:=TreeView1.Items.AddChild(p,'');
                     q.Text:=DClientsAdresse.Value;
                     q.ImageIndex:=40;
                     q.SelectedIndex:=40;
                   end;
                 ADossier.Next
               end;
           end;
    end;
    Adossier et Dclients sont liée maître esclave

  6. #6
    Membre averti
    Profil pro
    Analyste
    Inscrit en
    Décembre 2002
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste

    Informations forums :
    Inscription : Décembre 2002
    Messages : 39
    Par défaut
    Merci beaucoup pour votre aide j'essai vos solution mnt et j'espere que ça marche merci encore

    Oui ça marche merci à tous

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

Discussions similaires

  1. [ODBC] [DB2] Problème de connexion à une base de données sur un as400 via PHP sous Linux
    Par boo64 dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 19/04/2006, 09h51
  2. [ACCESS] - Problème d'ouverture de base de données...
    Par fredhali2000 dans le forum Access
    Réponses: 21
    Dernier message: 21/02/2006, 10h10
  3. [MySQL] Un problème d'appel de base de donnée!
    Par dp33 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 05/02/2006, 21h54
  4. [phpMyAdmin] problème pour exporter ma base de données
    Par Chezbebsi dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 04/12/2005, 11h58
  5. Problème de sauvegarde de bases de données
    Par Gwipi dans le forum Administration
    Réponses: 2
    Dernier message: 09/09/2005, 08h30

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