Votre question

[Access] hiérarchie parmis les enregistrement d'une même table

Tags :
  • Impression
  • Logiciels
Dernière réponse : dans Logiciels
10 Février 2009 16:34:09

Bonjour,

Je voudrais créer une base de donnée qui répertorie ... les sophismes les plus connus, je vous explique c'est quoi juste pour vous donner l'envie de continuer a lire ce post ^^, il s'agit d'arguments fallacieux, c'est à dire des raisonnement qui donnent l'impression d'être logiques mais qui sont archifaut, un exemple pour la route :

"Un cheval bon marché est rare
or tout se qui est rare est cher
donc un cheval bon marché est chère"

ou encore "Les serpents venimeux sont utiles, car sans eux, on ne pourrait fabriquer le sérum immunisant contre leur venin."

la plus part des sophisme connus sont répertoriés et portent des nom latin. A toute fin utiles voici la page de wikipedia consacrée aux sophismes

Maintenant qu'on a fini la séquence culture, on peut passer aux choses sérieuses :


Je veux avoir deux champs, au moins dans ma table :

Nom_du_sophisme
Définition

jusque la y a pas de problème, sauf que certains sophisme sont des sous-types d'autres sophismes comme ont peux le voir sur wiki

exemple

-Généralisations (sa c'est le sophisme père)
  • Échantillon non représentatif (ceux qui suivent sont les types dans lesquels se décline le sophisme-père)
  • Généralisation hâtive
  • Manipulation statistique

    maintenant, je voudrais mettre les sous-type dans la même table que les sophisme-père car même si se sont des sous-type, il ne reste pas moins que se sont des sophismes à part entière qui ont droit aux même champs que les autres, donc le droit d'être sur la même table.

    J'ai essayer de faire une sorte de liste de choix dans la table "sophismes" qui renverrait vers cette même table, afin que je puisse y définir le sophisme père pour les sous-types mais une liste de choix ne peux pas renvoyer vers la table où elle se trouve (dommage)....

    j'espère m'être fait comprendre et que cette histoire d'argument fallacieux ne vous a pas donner le tournis alors s'il vous plait, je suis sure que mon problème a une solution toute simple que vous devez avoir !
  • Autres pages sur : access hierarchie parmis enregistrement table

    10 Février 2009 19:30:45

    Bonjour,
    Ta table "Sophisme" devra contenir, comme clé étrangère (censée pointer vers une autre table) l'identifiant de l'enregistrement père mais de la même table.
    Un exemple de structure de table pour comprendre :

    Champ........Type.................Remarques
    ID...........NuméroAuto...........La clé primaire de la table
    Texte........Mémo.................Le texte du sophisme
    IDCategorie..Numerique............La catégorie du sophisme (si l'ID de la table catégorie est un numéro auto, il faut mettre un numérique/entier long)
    ID_pere......Numerique............L'identifiant du père, NULL si y'en a pas.

    Dans un formulaire basé sur cette table, le champ ID_Pere peut tout à fait apparaitre sous forme de Liste déroulante. Si on ne veux gérer qu'un niveau (un pere, plusieurs fils mais si on est fils on ne peut devenir pere), il faut prendre soin de ne faire apparaitre que les sophismes sans père (ID_Pere = NULL) en modifiant en conséquence la requête source de la liste déroulante.

    Je ne sais pas si je me fais bien comprendre, là :pt1cable: 
    m
    0
    l
    11 Février 2009 03:48:06

    ben, j'ai créer des champs comme se que tu as fait mais, je ne suis qu'un modeste utilisateur Access et je ne maîtrise pas encore très bien cette histoire de clef primaire (mais promis je vais m'y mettre), cela dit comment faire pour stoker l'ID du père dans IDCategorie, la manipulation m'échappe.
    m
    0
    l
    Contenus similaires
    11 Février 2009 13:13:59

    Désolé pour freepost,

    Une question, à quoi te sert la table "Catégorie" ????
    m
    0
    l
    11 Février 2009 20:01:44

    up
    m
    0
    l
    11 Février 2009 20:36:58

    Catégorie ? Euh ... ben à rien, c'est juste moi qui ai supposé que tu en avais besoin ... :pt1cable: 
    La clé primaire sert à identifier un enregistrement de ta table. Pour une personne, ça peut être le n° de sécurité sociale par exemple et non pas le nom/prénom à cause des homonymes. Quand un champ comporte un tel type de renseignement (un N° de série pour un matériel par exemple) on peut l'utiliser comme clé primaire. Si y'en a pas, il faut le générer et souvent, c'est la bonne solution (comme ici, je pense).

    Pour stocker le n° dans la table, je suppose que tu as du créer un beau formulaire pour saisir/modifier les données.
    Il faut créer un contrôle (une liste déroulante par exemple) dont la propriété source sera le champ "ID_Père".
    Il me semble, de mémoire, que l'assistant fait ça très bien !
    Le contenu de la liste déroulante sera une requête du genre "Select ID, Texte From Sophisme Where ID_Père is Null"
    La colonne n°1 de la liste déroulante sera cachée (ça sert à rien de voir l'identifiant pour l'utilisateur) en mettant la 1ère taille de colonne à "0 cm".

    Il est important d'avoir bien compris comment on construit une base de données relationnelle, sinon on galère après et le résultat peut être tout pourri... :D 
    Un coup de Google pour se familiariser avec les tables, les relations etc... Ca n'est pas valable que pour Access, ça marche aussi avec n'importe quel SGBDR.

    Oualah, bon courage. :hello: 
    m
    0
    l
    11 Février 2009 20:56:28

    Merci, je peux très bien faire sa mais (parce qu'il y a toujours un mais ;) , je ne sais pas si c'est possible vue que j'ai essayer à d'innombrables reprises -sans succès-, ne serait-il pas possible que dans un formulaire continu je puisse afficher un sous-formulaire ?
    Je m'explique, je voudrais que l'affichage de mon formulaire soit similaire au concept du "+" dans les tables qui déploie la sous-table ou tout autre stratagème qui me permet de créer des enregistrement subalternes directement depuis la ligne réservée à l'enregistrement supérieur, possible ?
    m
    0
    l
    11 Février 2009 21:26:24

    Possible ?
    Sûrement que oui, on peut (presque) tout faire avec Access.

    J'ai pas Access sous la main pour tester, d'ailleurs je suis même pas sous Windows ;)  mais jète un oeil sur Tree view & List view control
    Je crois qu'il y a un exemple d'utilisation de "Tree view", ce que tu sembles désigner par le concept du "+".



    m
    0
    l
    11 Février 2009 23:37:38

    Attends, je ne connais pas le VB, tu pense qu'il sufirait de copier le code dans ma table et c'est tout ?
    m
    0
    l
    11 Février 2009 23:52:40

    fove a dit :
    Attends, je ne connais pas le VB, tu pense qu'il sufirait de copier le code dans ma table et c'est tout ?

    AAaaah ben non, c'est pas aussi simple.
    Et tant qu'à copier du code, ce sera sûrement pas dans une table.... :D 
    Mais si tu veux faire des choses un peu plus complexes sous Access, un peu de connaissances VBA seront vite nécessaires.
    Ça vaut peut être le coup de s'y mettre ?
    m
    0
    l
    12 Février 2009 00:06:37

    Ahhh, je ne sais pas, j'ai déjà le C sur le feux, que je ne maîtrise pas encore, en attendant que j'ai du temps libre pour VB (pour sa il faut que je termine la bdd sophismes...), n'est-t-il pas possible reproduire l'affichage avec le "+" à gauche qu'on a dans les tables, dans un formulaire ?
    m
    0
    l
    18 Février 2009 22:42:04

    S'il vous-plait, de l'aide, désormais se sont deux bases de données qui ont besoin de hiérarchisation au sein d'une même table ! La situation est critique !
    !!!!...
    m
    0
    l
    18 Février 2009 23:25:30

    fove a dit :
    S'il vous-plait, de l'aide, désormais se sont deux bases de données qui ont besoin de hiérarchisation au sein d'une même table ! La situation est critique !
    !!!!...

    Les bases de données pousserait-elles comme des champignons ?

    Bon,
    A ma connaissance, pour reproduire l'affichage du "+" à gauche comme dans les tables, il faut ... afficher la table, ou utiliser l'objet "Tree view control"
    (un exemple là : http://access.cfi.free.fr/Fichier/rangementxp.zip)
    Malheureusement dans cette 2ème solution, ça passe par du code (en VB).
    Pour la 1ère, une macro (beuark !) contenant "Ouvrir Table" suffit mais ça reste brut de fonderie, on est loin de ce qu'on peut faire dans un beau formulaire. Si c'est juste pour afficher les données et avoir une interaction simple (créer, modifier, supprimer) ça peut être jouable mais on sera limité aux fonctionnalités prévues de base par Access (pas de sous formulaire, de joli bouton pour lancer autre chose etc...)

    Petite question à propos de cette base de données : il s'agit de développer toute une application ou il s'agit juste de stocker les données ?
    m
    0
    l
    19 Février 2009 00:00:03

    Ben, je copte stoker des données et en stoker à l'avenir, au fur et à me sure de mes recherches.

    Cela dit, j'ai essayer un truc en mettant une deuxième clef primaire dans la table sophisme et en la liant à la première (...débile je sais...) quoique sa semble s'approcher de se que je cherche puisque sa affiche le '+' et sa enregistre les sous-enregistrements, sauf que la..., à la réouverture de la table, les sous-enregistrements continuent à être affichés quand on déploie le '+', certes... mais en plus il prennent une place à part entière parmi les autres enregistrements du même niveau que l'enregistrement-père or, non, il sont subalternes et doivent rester subalternes, d'autant qu'en assaillant de faire un état ben sa foire. - Je suis perdu dans les méandre du code de la matrice -
    m
    0
    l
    19 Février 2009 14:07:14

    Âpres réflexion, je penses que ma table doit être analogue aux arbres généalogiques, à savoir que les individus d'une même génération ne doivent pas figurer aux cotés de ceux d'une autre, bref quelquechose de comparable à l'organisation des répertoires sur un disque-dure mais la... je n'arrive pas à matérialiser la généalogie. snif
    m
    0
    l
    28 Février 2009 22:25:10

    et de up
    m
    0
    l
    2 Mars 2009 19:18:18

    fove a dit :
    Âpres réflexion, je penses que ma table doit être analogue aux arbres généalogiques, ...

    Oui mais ...non.
    En généalogie, il faut deux parents pour avoir de 0 à n enfants.
    Là, il me semble que ce n'est pas le cas, ce serait plutôt de la parthénogenèse :D 
    La conception de ta table avait l'air bon au départ, ce serait plutôt au niveau de la conception de l'interface pour l'utilisateur que ça pêche...


    m
    0
    l
    2 Mars 2009 22:51:24

    Va pour Parthénogenèse ^^,
    mais la, je crois que c'est carément un autre type de bdd qu'il va me faloir où bien, est-ce que accés, à coups de manipulations, peut matérialiser la parthénogenèse ?

    Je me réexplique, il faut qu'il y ai des enregistrement qui dépendent entièrement d'autres, qu'il ne vivent que par les enregistrements leur étant supérieurs.
    Par exemple, si je suprime un enregistrement tous ceux lui étant subaltérnes se supriment.

    It is possibl ?
    m
    0
    l
    2 Mars 2009 23:11:16

    Oui c'est possible !
    Il suffit de définir une relation en utilisant "l'intégrité référentielle".
    Et la on coche l'option "Effacer en cascade"
    m
    0
    l
    3 Mars 2009 08:55:43

    Euh, coché d'accord sa je sais le faire ^^ mais où cocher ?
    m
    0
    l
    3 Mars 2009 20:13:09

    Menu outils/relations...
    Regarde
    Commence par ajouter toutes les tables.
    Si, comme le le crois, tu n'en as qu'une, il faut l'ajouter deux fois (la 2ème aura "_1" qui va s'ajouter à son nom mais c'est bien la même)
    On créer une relation en faisant un drag'n drop du champ qui te sert de clé primaire sur la première table vers la clé étrangère dans la deuxième.
    Comme ça, Access sait que le contenu de la clé étrangère doit correspondre à un enregistrement de ta 1ère table...

    Je te laisse "digérer" tout ça.
    m
    0
    l
    Tom's guide dans le monde
    • Allemagne
    • Italie
    • Irlande
    • Royaume Uni
    • Etats Unis
    Suivre Tom's Guide
    Inscrivez-vous à la Newsletter
    • ajouter à twitter
    • ajouter à facebook
    • ajouter un flux RSS