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

Requêtes et SQL. Discussion :

Alimentation d'une liste déroulante


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 179
    Points : 58
    Points
    58
    Par défaut Alimentation d'une liste déroulante
    Bonjour,

    je cherche à alimenter via une requête SQL une liste déroulante afin de pouvoir la lier sur la première colonne en clé externe.

    Ma table de départ est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SERV_ID                  SERV_DESCRIPTION                  SERV_SUPERIEUR
    1                            Direction générale                            0
    2                            Services généraux                           1
    3                            Secrétariat                                     2
    4                            Chargé de mission                            2
    5                            Contrôle de gestion                          2
    6                            Service achat                                  2
    7                            Direction des SI                               1
    8                            Secrétariat                                     7
    9                            HotLine                                          7
    Je voudrais que ma liste déroulante puisse se présenter "en arbre" sous la forme suivante en gardant les tirets sachant que le niveau de profondeur de mon arbre peut être plus important :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Direction générale
    - Services généraux
    ---- Secrétariat
    ---- Chargé de mission
    ---- Contrôle de gestion
    ---- Achat
    - Direction des SI
    ---- Secrétariat
    ---- Assistance informatique
    Je ne sais pas si je suis très clair. Ne pas hésiter à me poser plus de questions si besoin.

    En tous les cas, merci par avance pour votre aide pour résoudre mon problème qui ne me permet pas aujourd'hui de finaliser mon projet de base de données Access.

    Sat478

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 371
    Points : 23 845
    Points
    23 845
    Par défaut
    Peux-tu ajouter un attribu 'profondeur' à ta table des services ? Access peut le calculer en utilsisant du VBA mais c'est généralement assez lent.

    Bref admettons que tu ais cet attribut il suffit de faire une requête qui te donne :

    String([Profondeur],"-") & " " & [SERV_DESCRIPTION])

    Sinon tu peux aussi regarder le contrôle TreeView qui présente des données sous forme d'arbre.

    A+

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 179
    Points : 58
    Points
    58
    Par défaut
    Bonjour,

    merci pour ta réponse.

    J'ai déjà regardé le contrôle TreeView mais celui ci ne convient pas à mon problème.

    Concernant l'attribut profondeur, ceci est une piste très intéressante. Cependant, je ne vois pas du tout comment calculer la profondeur des champs de ma table. Connais tu une solution, ou existe t il un algorithme standard ?

    De plus, tu m'indiques qu'il est nécessaire de le calculer en VBA. Les temps de calculs sont ils si lent que cela ? Dépendant du nombre de lignes dans ma table ? De la profondeur de mes tables de services ?

    Merci pour tes éclaircissements.

    Sat478

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 371
    Points : 23 845
    Points
    23 845
    Par défaut
    La profondeur c'est le nombre de niveau par exemple le Secrétariat des Services généraux de Direction générale aurait une profondeur de 3.

    Oui il y a un algorithme standard :

    Pour l'enregistrement courant trouver le père.
    S'il n'y a pas de père, arréter de chercher
    Dans l'enregsutrement père s'il y a un père répéter trouver le père de l'enregistrement courant.

    C'est un alogorithme récusrsif.

    Pour le temps de calcul même en utilisant des indexs et des choses comme cela cela va paraître à l'affichage. Ta liste va être 'longue' a apparaître.

    Si ta structure est petite est assez stable entrer la valeur à la main et la solution la plus simple et la plus rapide.

    Sinon je conseille de calculer, avec l'algo, cette valeur à chaque changement dans ta table de service et de garder le résultat dans la table.

    A+

Discussions similaires

  1. Alimentation d'une liste déroulante
    Par zebulon14 dans le forum VBA Access
    Réponses: 1
    Dernier message: 11/11/2007, 15h45
  2. [AJAX] Comment rafraîchir une liste déroulante alimentée par ajax
    Par lodan dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 11/03/2007, 10h01
  3. [MySQL] alimenter une liste déroulante via une requête
    Par stefon dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/12/2006, 14h32
  4. Réponses: 15
    Dernier message: 21/11/2006, 11h13
  5. alimenter une liste déroulante
    Par wided_instm dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 15/09/2006, 20h29

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