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

Modélisation Discussion :

Gestion de catégories, sous-catégories, sous-sous, etc dans une même table


Sujet :

Modélisation

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 138
    Points : 67
    Points
    67
    Par défaut Gestion de catégories, sous-catégories, sous-sous, etc dans une même table
    Bonjour,

    Je penne complètement pour mettre en place ma base de données de comptabilité personnelle (ne trouvant pas mon idéal dans les logiciels existants). Certains logiciels permettent de créer des catégories, des sous-catégories, sous-sous catégories, etc, chacune étant déplaçable dans une autre catégorie ou sous-catégorie, et chacune étant sélectionnables quel que soit son niveau.

    Par exemple, concernant les dépenses :

    - Catégorie Véhicules
    --Sous-cat Carburant
    ---Sous-sous-cat Gazole
    ---Sous-sous-cat Super
    --Sous-cat Assurance voiture
    ---Sous-sous-cat au tiers
    ---Sous-sous-cat Tous risques
    -Catégorie Assurances
    --Sous-cat Maison
    --SOus-cat Santé

    Les logiciels permettent lorsqu'on saisie une dépense de choisir aussi bien la sous-cat Carburant que la sous-sous-cat Gazole. Par conséquent, je suppose que quelque soit le niveau, tout est dans la même table.

    Les logiciels permettent pour certains de déplacer par exemple la sous-sous-cat Tous risques pour quelle devienne une sous-cat de la catégorie Assurances. Je suppose donc comme ci-avant que tout est dans la même table et pour chaque enregistrement
    - une colonne Clé,
    - une colonne Libellé
    - une colonne Clé parente qui a lien avec la colonne Clé de la même table mais sans pouvoir choisir la catégorie en cours de modification (une sous-cat ne peut pas avoir comme parent elle-même).

    Mais les logiciels arrivent à afficher dans la liste de choix un décalage (tabulation) vers la droite selon le niveau de la catégorie (une sous-sous cat sera affichée plus à droite que sa sous-cat parente qui sera elle même plus à droite que sa catégorie parente.

    Comment dans Access (avec VBA ou non), faire la même chose ?

    Je précise que la liste du logiciel n'est pas forcément une liste déroulante mais peut être un formulaire "liste des catégories" qui s'ouvre et il faut sélectionner l'enregistrement qu'on souhaite rapatrier dans le formulaire "Dépenses".

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 138
    Points : 67
    Points
    67
    Par défaut
    En écrivant mon précédent message, une ampoule est apparue au dessus de ma tête

    Dans la table, avoir :
    - une colonne Clé,
    - une colonne Libellé
    - une colonne Clé parente
    - une colonne Niveau

    Une catégorie sans parent aurait le niveau "1"
    Si je crée une catégorie avec une catégorie parente, il met comme niveau le niveau du parent + 1 (idem quand on déplace la sous-cat d'une catégorie à une autre).

    On obtient :
    - Catégorie Véhicules (niv 0)
    --Sous-cat Carburant (niv 1)
    ---Sous-sous-cat Gazole (niv 2)
    ---Sous-sous-cat Super (niv 2)
    --Sous-cat Assurance voiture (niv 1)
    ---Sous-sous-cat au tiers (niv 2)
    ---Sous-sous-cat Tous risques (niv 2)
    -Catégorie Assurances (niv 0)
    --Sous-cat Maison (niv 1)
    --SOus-cat Santé (niv 1)

    Donc si par exemple on déplace la Sous-sous-cat Tous risques (niv 2) dans la Catégorie Assurances (niv 0) alors cette première devient Sous-sous-cat Tous risques (niv 1)

    Cela ne dit pas comment faire les tabulations. Voici mon idée : le chiffre dans la colonne niveau peut devenir un multiplicateur du nombre d'espaces avant le libellé.
    Imaginons qu'on mette 4 espaces de plus à chaque niveau.
    Le libellé affiché d'une cat de niv 0 serait 0 X " " + Libellé soit "Assurance"
    Le libellé affiché d'une cat de niv 1 serait 1 X " " + Libellé soit " Voiture"
    Le libellé affiché d'une cat de niv 2 serait 2 X " " + Libellé soit " Peugeot 5008"

    C'est bien d'avoir des idées. Mais maintenant, comment les programmer dans Access ?

    Peut-être que l'ajout ou la suppression des n 4 espaces ne doivent pas se faire à l'affichage dans la liste déroulante mais plutôt directement dans la colonne "Libellé" de la table.
    Par exemple, lorsqu'on déplace une cat de niv 2 qui a déjà 8 espaces devant son libellé, on supprime tous les espaces avant la première lettre du libellé et on ajoute le nombre de 4 espaces relatif à son nouveau niveau. Quant pensez vous ?

  3. #3
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 605
    Points : 56 718
    Points
    56 718
    Billets dans le blog
    40
    Par défaut
    Bonjour,

    Citation Envoyé par Jerome_Hej Voir le message
    Je suppose donc comme ci-avant que tout est dans la même table et pour chaque enregistrement
    - une colonne Clé,
    - une colonne Libellé
    - une colonne Clé parente qui a lien avec la colonne Clé de la même table mais sans pouvoir choisir la catégorie en cours de modification (une sous-cat ne peut pas avoir comme parent elle-même).
    C'est l'idée, voir ici avec une histoire de groupes et sous-groupes.


    Citation Envoyé par Jerome_Hej Voir le message
    Voici mon idée : le chiffre dans la colonne niveau peut devenir un multiplicateur du nombre d'espaces avant le libellé.
    L'idée me semble bien, et si tu n'as que quelques niveaux, tu peux calculer le niveau avec quelques requêtes :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT idCategorie FROM Categorie WHERE idCategorie is Null
    Donne les catégories de niveau 0

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Categorie.idCategorie
    FROM Categorie AS Categorie_1 INNER JOIN Categorie ON Categorie_1.idCategorie = Categorie.idCategorieParent
    WHERE Categorie_1.idCategorieParent Is Null;
    Donne les catégories qui ont un parent, mais pas de grand-parent, soit de niveau 1

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT Categorie.idCategorie
    FROM Categorie AS Categorie_2 INNER JOIN 
        (Categorie AS Categorie_1 INNER JOIN Categorie ON Categorie_1.idCategorie = Categorie.idCategorieParent)
            ON Categorie_2.idCategorie = Categorie_1.idCategorieParent
    WHERE Categorie_2.idCategorieParent) Is Null;
    Donne les catégories qui ont un parent et un grand-parent mais pas d'arrière grand-parent, soit de niveau 2

    Etc. mais ça devient vite lourd

    Sinon c'est du VBA, on doit même pouvoir faire ça de façon récursive...

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 138
    Points : 67
    Points
    67
    Par défaut
    Merci f-leb

    En effet, çà deviendra lourd donc autant avec une colonne "Niveau".

    Je vais essayer de faire çà dès que je peux dans la semaine. Je viendrais en parler ici.

Discussions similaires

  1. [Dojo] Afficher les sous elements d'un dossier dans une tree
    Par devkaty dans le forum Bibliothèques & Frameworks
    Réponses: 8
    Dernier message: 18/09/2009, 00h03
  2. Réponses: 0
    Dernier message: 13/08/2009, 17h45
  3. Réponses: 1
    Dernier message: 26/03/2009, 16h56
  4. Requète UPDATE avec sous-requète dans la même table.
    Par Selenite dans le forum Langage SQL
    Réponses: 6
    Dernier message: 16/03/2009, 15h04
  5. Sous-requête excutée plusieurs fois dans une requête
    Par sheridan31 dans le forum Oracle
    Réponses: 8
    Dernier message: 03/07/2006, 16h18

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