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 :

Requête pour étudiants dans des places de chambres


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 73
    Points : 34
    Points
    34
    Par défaut Requête pour étudiants dans des places de chambres
    Bonjour,
    je réalise une gestion de places pour étudiants de l'université dans les chambres.
    voici ma base de données :
    Nom : bdd.PNG
Affichages : 995
Taille : 25,8 Ko
    Pour les étudiants, j'ai réalisé un formulaire pour les lister à partir de T_etudiants.
    pour afficher les cités / chambres / places, j'ai réalisé un formulaire (T_cites) avec deux sous formulaire sur les tables T_chambres et T_places.
    Comment faire ? pour gérer la table T_occupations pour pouvoir enregistrer un étudiant sur une place, avec une liste déroulante des places libres uniquement ?
    pouvez-vous me donner des pistes de solutions que je pourrais mettre en œuvre ?
    Je vous remercie pour vos lumières :-)
    Bien à vous
    Nicolas

  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
    Bonjour.

    Pour trouver les places libres, il faut présenter les places et éliminer celles qui sont déjà attibuées.

    Si tu n'as pas à tenir compte des dates, c'est assez facile.

    1. Tu crrées une requête basée sur T_PLaces
    2. puis tu mets en jointures la table T_Occuations sur le champ Num_Place.
    3. ensuite tu sélectionnes la jointure (le trait entre les tables) et tu demandes à voir ses prorpriétés.
    4. Tu choisis alors .Tous les enregistrements de T_Places et seulemement ceux de T_Occupations qui correspondent..
      (Normalement ça devrait être le choix 2).
    5. Ensuite tu sélectionnes tous les champs de T_Places que tu veux et tu les glisses dans les colonnes.
    6. Après tu sélectionnes (au moins) le champ Num_Place de T_Occupation et tu le glisses dans les colonnes.
    7. Enfin dans la cette colonne, sur la ligne critère, tu mets Is Null (Access va traduire).


    Et voilà tu viens de créer une requête de non correspondance qui va t'afficher la liste des places qui ne sont pas encore occupées.

    Si tu as besoin de tenir compte des dates, là c'est plus compliqué donc précise si tu en as besoin.

    Aussi à propos de tes noms internes, il est prudent, même si Access est TRÈS (lire TROP) tolérent de se limiter
    • Aux majuscules. Minuscules non accentuées et non "décorées. (pas de c cedille).
    • Aux chiffres
    • Au souligné (_)


    à l'exlcusion de tout autres caractères.

    Cela évite certains bugs vicieux et sournois et facilite la vie quand on veut échanger des données avec d'autre systèmes comme Excel.

    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
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 73
    Points : 34
    Points
    34
    Par défaut re requete
    Bonjour,
    merci pour votre réponse :-)
    Effectivement, je dois tenir compte des dates et aussi une donnée importante à savoir lors de l'attribution d'une place dans une chambre double ou triple est de connaitre le sexe de l'étudiant, en effet si une place a été attribuée à un garçon dans une chambre double, la deuxième place doit être pour un garçon?
    j'ai suivi vos conseils, pour le point 7 (tu mets Is Null (Access va traduire), je ne comprends pas trop, si je mets is Null dans critère de num_place, la requête n'affiche rien ! .
    sans réaliser le point 7 , voici ce que j'ai réalisé :

    R_places_libres : avec requete non correspondance point 2 entre T_places et T_occupations

    Nom : r_places_libres.PNG
Affichages : 621
Taille : 16,7 Ko

    R_etudiants_libres : avec requete non correspondance point 2 T_etudiants et T_occupations

    Nom : r_etudiants_libres.PNG
Affichages : 591
Taille : 8,0 Ko

    Pour finir, un formulaire FM_affection_place avec les 2 listes déroulantes alimentées par R_places_libres et R_etudiants_libres

    Nom : FM_affectation_place.PNG
Affichages : 624
Taille : 10,4 Ko

    La liste pour affecter une place est longue, est -il possible de la filtrer par cité ?
    il semble que je peux affecter un etudiant dans deux places !!!
    Table T_occupations :

    Nom : T_occupations.PNG
Affichages : 588
Taille : 8,3 Ko

    Pas simple mais je poursuis mes investigations.
    Grand merci pour votre aide si précieuse :-)
    Bien à vous
    Nicolas

  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
    Bonjour.

    j'ai suivi vos conseils, pour le point 7 (tu mets Is Null (Access va traduire), je ne comprends pas trop, si je mets is Null dans critère de num_place, la requête n'affiche rien ! .
    Je t'ai sans doute induit en erreur car j'ai supposé que tu normaliserai les nom de champ.
    En conservant ton modèle, il faut emettre Is Null dans la colonne #Place de la table T_Occupation.

    La liste pour affecter une place est longue, est -il possible de la filtrer par cité ?
    Oui, il te suffit d'ajouter un critère dans la colonne Cite de ta requête R_places_libres.

    il semble que je peux affecter un etudiant dans deux places !!!
    Absolument, R_places_libres, ne trouve que les places libres et ne tiens pas compte du fait que l'étudiant ait déjà une place ou pas.

    Comme tu l'as pensé par toi-même, il te faut déterminer la liste des étudiants à assigner.

    Je suppose que pour le moment tu vas mettre tes critères "en dur", c-à-d que tu vas taper tes critères directement dans la requête. Je pense notamment au critère sur la citée pour réduire ta liste.
    En phase de développement c'est parfais mais en production on veut généralement plus de souplesse.
    Habituellement on fait un formulaire de paramétrage (frmParam) qui permet de saisir la valeur et que Access s'en serve.
    Dans le critère on met alors [Forms]![frmParam]![ChampParam] et il faut que frmParam soit ouvert.
    frmParam est le formulaire qui contient l'information.
    ChamParam est le champs qui contient la valeur voulue.

    Et tu as tout une liste de formulaire recherche ici https://access.developpez.com/cours/...#formrecherche qui pourrait t'inspirer.

    C'est un sujet qui revient souvent sur le forum.

    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
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 73
    Points : 34
    Points
    34
    Par défaut liste des occupations par genre
    Bonjour,
    j'ai suivi vos conseils mais je tourne en rond .....
    j'aimerai afficher les chambres avec les places occupées par genre. Dans une chambre double, je dois voir le genre qui occupe la première place pour l'attribuer à un etudiant du même genre.
    Voici mon formulaire :
    Nom : form.PNG
Affichages : 658
Taille : 29,2 Ko
    Comment faire pour afficher le genre et pour affecter la place à un étudiant en regard de la place ?
    merci pour votre aide
    Nicolas

  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
    Bonjour.

    Il vaut mieux éviter d'ouvrir 2 fois la même discussion.

    Est-ce que celle-ci doit être gardée ou seulement https://www.developpez.net/forums/d1.../#post10865550 ?

    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.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 73
    Points : 34
    Points
    34
    Par défaut dixcussion
    Bonjour,
    tout à fait, je pense que celle-ci est la bonne, en espérant avoir de l'aide sur le sujet
    Merci +++
    Nicolas

  8. #8
    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
    Bonjour.

    Comment faire pour afficher le genre
    Ça c'est la partie facile, il te suffit de faire une requête qui prend la table chambre -> table Place -> table occupation -> table étudiant qui va te donner le sexe.
    Il faudra intégrer les dates d'occupations prévues dans la sélection.
    Ensuite basée sur cette requête tu fait une requête de regroupement qui te donne la chambre et le genre pour la période choisie.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pour affecter la place à un étudiant en regard de la place ?
    Là ca te prend un sous-formulaire qui affiche les places de la chambre (je pense que tu l'as déjà)
    Puis dans ce sous-formulaire un sous-formulaire qui affiche les affectations.
    Là tu pourras assigner un étudiant à une période.

    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.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 73
    Points : 34
    Points
    34
    Par défaut requete pour affecter une place libre
    Bonjour,
    excusez-moi de revenir vers vous mais je ne parviens pas à réaliser les requêtes / formlaires selon vos conseils.
    J'ai réalisé une requête selon :
    Ça c'est la partie facile, il te suffit de faire une requête qui prend la table chambre -> table Place -> table occupation -> table étudiant qui va te donner le sexe.
    Il faudra intégrer les dates d'occupations prévues dans la sélection.
    Ensuite basée sur cette requête tu fait une requête de regroupement qui te donne la chambre et le genre pour la période choisie.
    voici mon résultat
    Nom : requete1.PNG
Affichages : 505
Taille : 18,8 Ko
    Pour le regroupement, cela ne change rien,
    à partir d'ici, je suis perdu ....
    Si vous le permettez, voici un lien vers ma bdd afin de voir mes requêtes
    https://alumniumonsac-my.sharepoint....V2W6g?e=PiqrOg
    Merci pour votre aide +++
    Nicodespiennes

  10. #10
    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
    Bonjour.

    Peux-tu poster le SQL de la requête ?

    Pour ce faire

    1. Tu vas dans ta requête en mode création.
    2. Tu changes l'affichage pour SQL (l'icône avec l'équerre en haut à gauche).
    3. Tu sélectionnes le texte affiché (le SQL) et tu le copies.
    4. Puis tu le colles dans le message.


    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.

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 73
    Points : 34
    Points
    34
    Par défaut re bonjour
    Voici le code SQL de la requête :

    SELECT T_chambres.num_chambre, T_chambres.[#cité], T_chambres.numéro, T_chambres.type, T_chambres.places, T_chambres.surface, T_chambres.sanitaires, T_places.num_place, T_places.[#chambre], T_places.Type_lit, T_occupations.num_occupation, T_occupations.[#etudiant], T_occupations.[#place], T_occupations.Date_contrat, T_occupations.Date_début, T_occupations.Date_fin, T_etudiants.Genre
    FROM (T_chambres INNER JOIN T_places ON T_chambres.[num_chambre] = T_places.[#chambre]) INNER JOIN (T_etudiants INNER JOIN T_occupations ON T_etudiants.[Num_etudiant] = T_occupations.[#etudiant]) ON T_places.[num_place] = T_occupations.[#place];
    En fait, nous aimerions lister toutes les places des chambres, avec la possibilité de filtrer sur la cité. nous devons voir le genre de l'étudiant (dans le cas de chambre double ou triple et la place réservée) pour pourvoir sélectionner la place libre pour l'affecter à un étudiant de même sexe.

    Peut-etre que mon MCD n'est pas correct ?

    Merci ++++ pour votre assistance

    Nico

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/10/2017, 13h39
  2. Réponses: 8
    Dernier message: 25/08/2010, 08h06
  3. Réponses: 2
    Dernier message: 27/06/2007, 10h42
  4. Faire une requête pour Access selon des Checkbox
    Par Invit-é dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 26/06/2007, 16h57
  5. requête pour chercher dans formulaire
    Par Transfusion dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 28/02/2007, 16h31

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