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

IHM Discussion :

Contrôles formulaire venant de plusieurs tables


Sujet :

IHM

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 102
    Points : 40
    Points
    40
    Par défaut Contrôles formulaire venant de plusieurs tables
    Bonjour,

    Je dois rapidement constituer une base pour le système éducatif d’un pays africain sur ACCESS 2003. J’y suis profane, je fais ce qu’on me conseille mais sans plus.

    Je disposais déjà d’une base EXCEL avec liste des écoles, de leur code administratif, de leur département et de leur région en 5 colonnes donc (Ici une région s’appelle Wilaya, et un département une Moughataa, pour que vous ne soyez pas étonné de ces appellations).

    A chaque école je dois affecter un certain nombre de paramètres numériques type nombre de garçons, de filles, pourcentages, ... etc.

    Ca fait 2 mois que je sollicite les lumières du forum pour la confection de ma base, et l’un d’entre vous que je ne retrouve hélas plus, m’avait beaucoup aidé, à créer des listes déroulantes imbriquées à partir de tables séparées que vous allez trouver si je peux l’attacher sous les noms de TBLWILAYA, TBLMOUGHATAA, TBLCOMMUNE, et TBLECOLE, et les codes correspondants dans les macro.

    Les listes déroulantes imbriquée fonctionnent bien : un choix de wilaya (région) me mets les moughataa (départements) correspondantes dans la liste Moughataa, puis idem pour le liste commune, puis la liste écoles.

    Seulement il y a les codes administratifs qui correspondent eux aux écoles (4° colonne de la TBLECOLE), que je voudrais faire apparaître dans un contrôle contigu à celui où s’affiche l’école, et je voudrais qu’en cliquant sur école, le code administratif s’affiche à côté automatiquement (le code est très important pour moi, indispensable pour distinguer au niveau national des écoles qui portent le même nom, et lier plusieurs tables qui comprendront d’autres paramètres numériques par ce code seul identifiant réel).

    1°Mais voila je ne sais pas faire apparaître automatiquement le code dans le contrôle réservé. Donc si vous pouvez m’aider de ce côté….

    2° Mon formulaire de saisies comporte des contrôles qui font appel à plusieurs tables (pour les listes déroulantes notamment). L’affichage des régions-département-commune-école-code servent à l’utilisateur à identifier l’établissement, et ensuite il saisit dans les contrôles des champs numériques de la table, (avec combinaisons arithmétiques pour les champs calculés).

    Quelle est la solution pour tout saisir ?

    parce que recréer une table avec toutes les mêmes données des listes déroulantes venant des tables ci-dessus énumérées va faire hyper lourd et d’ailleurs ça ne marche pas (je me retrouve avec mes régions-département-commune-école-code remplancées par leur ID ce qui n’est pas le but).
    Comment faire pour avoir toutes les écoles identifiées avec leurs paramètres numériques complétés dans une table ?
    Ou alors une requête peut-être mais je ne vois pas comment restituer les renseignements complets de chaque école dans une table ou dans un état. Ci dessous le lien de ma table. Merci beaucoup de votre aide.

    http://cjoint.com/?eDxCZxNHwb

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Je pense que tu as un pb de conception, généralement on n'utilise pas les noms directement dans des tables mais plutôt des identifiants qui se réfère à une table qui elle donne la liste des noms.

    Je n'ai pas accès au document que tu as joint, pb de sécurité de mon réseau, donc mes remarques vont être générales. Voici comment j'aurais battit cette base.

    Table Ecole
    ClefEcole (numeroAuto)
    Nom
    ClefRegion
    ClefDepartement
    Autres renseignements utiles spécifiques à l'école

    Table Region
    ClefRegion
    Nom
    Autres renseignements utiles spécifiques à la région

    Table Departement
    ClefDepartement
    Nom
    Autres renseignements utiles spécifiques au département

    Table RegionDepartement
    ClefRegion
    ClefDepartement

    Évidement mettre des relations d'intégrités entre chacunes de ces tables.

    Pour ce qui est de la sélection, avec une liste déroulante voilà ce qu'on fait généralement, exemple avec la table département

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select Departement.ClefDepartement, Departement.Nom from Departement order by Departement.Nom;
    À l'affichage, on défini la largeur des colonnes comme suit : 0cm; ceci fait que Access masque la clef en affiche seulement le nom mais en réalité il enregistre la Clef.

    Maintenant Voici un autre truc toujour avec les listes.

    Admettons que tu as une liste "taListe" avec 3 colonnes (ex : celf, Libelle1, Libelle2) et que tu veuilles afficher Libelle2 aussi à l'écran une fois le choix réalisé. Il te suffit de mettre dans la propriété 'Source Controle' d'un controle texte et automatiquement Access va afficher le contenu de la colonne Libelle2 qui correspond au choix.

    La methode ci-dessus est la plus simple, si tu veux vraimenet avoir le code est le texte venant d'une autre table, il te faudra faire une requête.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 102
    Points : 40
    Points
    40
    Par défaut Clic sur un CTRL de liste déroulante faisant apparaître données dans un autre CTRL
    merci marot r de t'interesser à mon problème, j'apprécie pcq je suis bien coincé . J'ai bien essayé avec Column(4) mais je n'y arrive pas. Voici mes codes et la composition de mes tables, et si tu peux déjà me faire avancer là, ça me rendra service :

    Private Sub lstCOMMUNE_AfterUpdate()
    Dim lngIDCOM As Long
    Dim SQL As String

    '' Vérifie que l'on a cliqué sur une COMMUNE pour éviter le NULL
    If Not IsNumeric(Me!lstCOMMUNE) Then Exit Sub
    '' Affecte la valeur de IDCOMMUNE à la variable lngIDCOM
    lngIDCOM = Me!lstCOMMUNE
    '' Construit la chaîne SQL avec la catégorie concernée
    SQL = "SELECT IDECOLE, ECOLE, IDCOMMUNE FROM TBLECOLE WHERE IDCOMMUNE =" & lngIDCOM & " ORDER BY ECOLE"
    '' Affecte la chaîne SQL à la liste des ECOLE
    lstECOLE.RowSource = SQL
    '' Déverrouille la liste des ECOLE
    lstECOLE.Enabled = True
    '' Donne le focus la liste des ECOLE
    lstECOLE.SetFocus
    '' On ne peut pas dérouler une la liste
    End Sub

    Private Sub lstMOUGHATAA_AfterUpdate()
    Dim lngIDMOU As Long
    Dim SQL As String

    '' Vérifie que l'on a cliqué sur une MOUGHATAA pour éviter le NULL
    If Not IsNumeric(Me!lstMOUGHATAA) Then Exit Sub
    '' Affecte la valeur de IDMOUGHATAA à la variable lngIDMOU
    lngIDMOU = Me!lstMOUGHATAA
    '' Construit la chaîne SQL avec la catégorie concernée
    SQL = "SELECT IDCOMMUNE, COMMUNE, IDMOUGHATAA FROM TBLCOMMUNE WHERE IDMOUGHATAA =" & lngIDMOU & " ORDER BY COMMUNE"
    '' Affecte la chaîne SQL à la liste des COMMUNE
    lstCOMMUNE.RowSource = SQL
    '' Déverrouille la liste des COMMUNE
    lstCOMMUNE.Enabled = True
    '' Donne le focus la liste des COMMUNE
    lstCOMMUNE.SetFocus
    '' On ne peut pas dérouler une la liste

    End Sub



    Private Sub lstWILAYA_AfterUpdate()
    Dim lngIDWIL As Long
    Dim SQL As String

    '' Vérifie que l'on a cliqué sur une WILAYA pour éviter le NULL
    If Not IsNumeric(Me!lstWILAYA) Then Exit Sub
    '' Affecte la valeur de IDWILAYA à la variable lngIDWIL
    lngIDWIL = Me!lstWILAYA
    '' Construit la chaîne SQL avec la catégorie concernée
    SQL = "SELECT IDMOUGHATAA, MOUGHATAA, IDWILAYA FROM TBLMOUGHATAA WHERE IDWILAYA =" & lngIDWIL & " ORDER BY MOUGHATAA"
    '' Affecte la chaîne SQL à la liste des MOUGHATAA
    lstMOUGHATAA.RowSource = SQL
    '' Déverrouille la liste des MOUGHATAA
    lstMOUGHATAA.Enabled = True
    '' Donne le focus la liste des MOUGHATAA
    lstMOUGHATAA.SetFocus
    '' On ne peut pas dérouler une la liste


    End Sub

    Voici comment j’avais fait en suivant les conseils et les aides de JP AMABROSINO que je ne réussis plus à joindre. Si tu peux m’aider
    1. Ma TBLWILAYA (Wilaya = région ici), comporte 2 colonnes, une ID WILAYA et une autre WILAYA qui comporte les noms des Wilayas (régions).
    2. Ma TBLMOUGHATAA (Moughaaa=département ici), comporte 3 colonnes, une avec IDMOUGHATAA, la deuxième avec les noms des Moughataa (départements), la troisième avec les ref IDWILAYA.
    3. Ma TBLCOMMUNE même structure, comporte également 3 colonnes : une IDCOMMUNE, la 2° avec les noms de communes, la 3° avec les ref IDMOUGHATAA.
    4. Ma TBLECOLE enfin même structure, comporte la 1° colonne avec les IDECOLE, une seconde avec les noms d’écoles, une 3° avec les ref IDCOMMUNE, et ici une 4° que j'ai ajoutée avec mes codes administratifs d’écoles correspondants. Ce sont ceux-ci que je veux faire apparaître automatiquement dans un contrôle de LD contigu, en cliquant sur le nom de l’école dans le contrôle de liste déroulante du formulaire . Sois sympa au vu de tout ça de me dire comment tu ferais. Merci.

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Ça me parait bien.

    Il y a une attrape avec les colonnes, la numérotation commence à 0 donc la 4ème colonne est me.maListe.Column(3).

    Cela raisout-il ton problème ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 102
    Points : 40
    Points
    40
    Par défaut
    Ben je ne sais pas trop où ranger cette expression me.maListe.Column(3).
    Dans mon 4° contrôle école, 4° liste déroulante où apparaissent les noms des écoles, j'ai, dans les protiétés/contenu :
    SELECT IDECOLE, ECOLE, IDCOMMUNE FROM TBLECOLE WHERE IDCOMMUNE =209 ORDER BY ECOLE
    Qu'est ce j'écrit dans la propriété/contenu du contrôle code administratif correspondant à l'école ? la même chose ? et est-ce que je place

    me.maListe.Column(3). ?
    dans source contrôle ?
    Qu'est ce que je mets dans "maliste", le nom que j'ai donné au contrôle où doit appraître le code administratif ? ou le nom du champ de la TBLECOLE où sont rangés tous les codes administratifs ? autre ? Tu as affaire à quelqu'un de perdu,merci de m'envoyer une bouée de sauvetage .

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Il faut que tu crée un textbox indépendant et que tu mettes comme source.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =[NomTaListe].Column(3)
    . (note Access va traduire et modifier légèremnt la présentation de ce qui préc`de mais ce n'est pas grâve)

    Access va afficher le contenu de ta 4ième colonne en fonction du choix dans ta liste.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/05/2010, 10h26
  2. Réponses: 5
    Dernier message: 10/05/2008, 18h11
  3. Réponses: 2
    Dernier message: 10/05/2008, 17h53
  4. Réponses: 2
    Dernier message: 09/08/2006, 22h04
  5. sous-formulaire : champs provenant plusieurs tables
    Par patbeautifulday1 dans le forum IHM
    Réponses: 13
    Dernier message: 21/12/2005, 11h17

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