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 de Création des jurys


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Août 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2013
    Messages : 120
    Points : 61
    Points
    61
    Par défaut Requête de Création des jurys
    Salut à tout le monde ;
    Avec une table T_eleves dont les champs sont :
    Id_departement(numérique )
    Departement(texte )
    Id_eleve(numérique )
    Eleve(texte )
    Filieres (texte )
    Id_examen (numérique )
    Jury(numérique )
    J'ai presque 100 000 enregistrements et je dois créer des jurys pour les envoyer aux correcteurs de la façon suivante :
    Premièrement j'ai fait un filtre:1er sur les filières 2 ème sur les départements et 3 ème sur le numéro d'examen.
    Deuxièmement je cherche à diviser le nombre des enregistrements (compte de: id_eleve ) de cette filière sur 60 pour obtenir comme résultat dans le champ Jury :
    1er 60 id_eleve jury 1
    2ème 60 id_eleve jury 2
    3ème 60 id_eleve jury 3
    4ème .............................
    Et le reste soit dans le dernier jury.
    Alors je demande aux maîtres de ce forum avec tout le respect si il'ya une requête qui peut me sauver de ce travail pénible que je fais pour m'en sortir dans Excel pour chaque filière.
    Un grand merci.

  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.

    Hum c'est toujours un peut pénible ce genre de chose en Access.
    La solution est de numéroter tes étudiants de 1 à N par filière puis ensuite de calculer son numéro de "groupe".
    Pour numéroter avec une requête j'utilise DCount(), ce qui donne un truc du genre DCount("Id"; "TblEleve"; "[IdFiliere]=" & [tblEleve].[IdFiliere] & " and [Id] <=" & [tblEleve].[IdFiliere]) donc tu comptes tous les élèves qui ont un id inférieur ou égale à celui de l'élève courant dans sa fillière.
    Après que tu as obtenu ce NuméroSequentielParFiliere tu le divises par 60 pour obtenir un numéro de groupe (NuméroSequentielParFiliere \ 60, \ est la division entière et je pense qu'elle va te donner ce que tu veux).

    Mais bon avec DCount et 100 000 enregistrements ça va te prendre des heures en Access donc personnellement je ferai :
    1. Créer une requête d'ajout à une table temporaire.
      tblTempo

      NumSequence (Autonum), pas indispensable.
      IdFilliere
      IdEleve
      NumSequenceFiliere
    2. Exécuter cette requête.
    3. Faire du code VBA qui va détecter les changements de filière et numéroter dans NumSequenceFiliere les élèves de 1 à N.
      Le code VBA est alimenté par une requête qui tri les données par IdFiliere, idEleve basé sur la table tempo.
    4. Faire une requête de sélection basé sur NumSequenceFiliere de tblTempo qui te donne les groupes.


    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
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Août 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2013
    Messages : 120
    Points : 61
    Points
    61
    Par défaut
    Salut à tout le monde;
    un grand merci Mr marot_r pour votre soutien .
    je trouve un peu de difficultés à comprendre les Etapes par exemple:
    ensuite de calculer son numéro de "groupe".
    j'espère arriver à créer le / NuméroSequentielParFiliere mais pour le reste je suis vraiment désolé
    voila ma base de données.
    Fichiers attachés Fichiers attachés

  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.

    Pour calculer le numéro de groupe tu fais simplement une requête de sélection qui prend le NuméroSequentielParFiliere et qui le divise par 60.

    Un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select [tblTempo].*, [tblTempo].[NumeroSequentielParFiliere] \ 60 as NumGroupeFiliere from [tblTempo]
    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
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Août 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2013
    Messages : 120
    Points : 61
    Points
    61
    Par défaut
    Bonjour;
    j'ai calculé le numéro de groupe mais le résultats retourné est 0
    Cordialement
    Fichiers attachés Fichiers attachés

  6. #6
    Membre du Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Août 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2013
    Messages : 120
    Points : 61
    Points
    61
    Par défaut
    Bonjour;
    encore une fois Un Grand Merci à Mr marot_r
    je ne suis pas arrivé à exécuter :
    Pour numéroter avec une requête j'utilise DCount(), ce qui donne un truc du genre DCount("Id"; "TblEleve"; "[IdFiliere]=" & [tblEleve].[IdFiliere] & " and [Id] <=" & [tblEleve].[IdFiliere]) donc tu comptes tous les élèves qui ont un id inférieur ou égale à celui de l'élève courant dans sa fillière.
    peut être j'ai commis une erreur mais pour continuer j'ai fait la numérotation manuellement.
    et oui effectivement grâce à vous je suis arrivé à créer un numéro de group et j'ai obtenu :
    le numéro 0 avec 59 enregistrement
    le reste sont des 60
    et le dernier numéro de groupe avec le reste des élèves.
    Alors avant de passer à l'étape suivante j'espère arriver à réaliser la numérotation avec la requête ci-dessus.
    Merci.
    Fichiers attachés Fichiers attachés

  7. #7
    Membre du Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Août 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2013
    Messages : 120
    Points : 61
    Points
    61
    Par défaut
    bonjour,
    en fin j'ai pu numéroter avec une requête mon problème était le IdFilière
    et comme dit avant j'ai obtenu :
    le numéro 0 avec 59 enregistrement
    le reste sont des 60
    et le dernier numéro de groupe avec le reste des élèves.
    je cherche à ajouter à la numérotation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DCount("Id"; "TblEleve"; "[IdFiliere]=" & [tblEleve].[IdFiliere] & " and [Id] <=" & [tblEleve].[IdFiliere])
    le Id_departement c-à d: numéroter selon le Id_departement et le IdFiliere
    Merci
    Fichiers attachés Fichiers attachés

  8. #8
    Membre du Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Août 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2013
    Messages : 120
    Points : 61
    Points
    61
    Par défaut
    Bonjour,
    j'ai essayé avec ce syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NuméroSequentielParDepartementFiliere: CpteDom("Id";"T_Eleves";"[Id_departement]=" & [T_Eleves].[Id_departement] & " and [Id] <=" & [T_Eleves].[Id_departement] And [IdFiliere]=" & [T_Eleves].[IdFiliere] & " and [Id]<=" & [T_Eleves].[IdFiliere]")
    Mais en vain.
    Cordialement

  9. #9
    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.

    Essaye :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NuméroSequentielParDepartementFiliere: CpteDom("Id";"T_Eleves";"[Id_departement]=" & [T_Eleves].[Id_departement] & " and [IdFiliere]=" & [T_Eleves].[IdFiliere] & " and [Id]<=" & [T_Eleves].[Id]")
    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.

  10. #10
    Membre du Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Août 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2013
    Messages : 120
    Points : 61
    Points
    61
    Par défaut
    Bonjour,
    l'expression me renvoie l'erreur suivante :

    Nom : erreur.jpg
Affichages : 74
Taille : 18,8 Ko
    Merci.

  11. #11
    Membre du Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Août 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2013
    Messages : 120
    Points : 61
    Points
    61
    Par défaut
    Bonjour,
    j'ai essayé avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NuméroSequentielParDepartementFiliere: CpteDom("Id";"T_Eleves";"[Id_departement]=" & [T_Eleves].[Id_departement] & " and [IdFiliere]=" & [T_Eleves].[IdFiliere] & " and [Id]<=" & [T_Eleves].[Id])
    et je pense que cela fonctionne mais je demande à Mr marot_r de me corriger la succession des étapes que je dois suivre pour y arriver:
    1. Numéroter tes étudiants de 1 à N par Département et par filière avec :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      NuméroSequentielParDepartementFiliere: CpteDom("Id";"T_Eleves";"[Id_departement]=" & [T_Eleves].[Id_departement] & " and [IdFiliere]=" & [T_Eleves].[IdFiliere] & " and [Id]<=" & [T_Eleves].[Id])
    2. Après avoir obtenu ce NuméroSequentielParFiliere je le divise par 60 mais je ne sais pas comment déclarer la divisions selon le département et la filière dans cette expression :
      (NuméroSequentielParDepartementFiliere \ 60).
    3. Faire du code VBA qui va détecter les changements de filière et numéroter dans NuméroSequentielParDepartementFiliere les élèves de 1 à N.
      Le code VBA est alimenté par une requête qui tri les données par IdFiliere, idEleve basé sur la table tempo.

    Merci

  12. #12
    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.

    Après avoir obtenu ce NuméroSequentielParFiliere je le divise par 60 mais je ne sais pas comment déclarer la divisions selon le département et la filière dans cette expression :
    (NuméroSequentielParDepartementFiliere \ 60).
    Tu n'as pas à te préoccuper de la filière et du département, ils sont dans tes données qui te servent à calculer NuméroSequentielParFiliere. Tu as juste à faire la division ce qui va te donner le numéro de groupe dans ce département et cette filière.

    Pour le calcul par VBA c'est une alternative (probablement plus rapide) à la solution avec le DCount() pas une étape supplémentaire. Donc soit tu fais l'un soit tu fais l'autre mais pas les 2.
    Perso j'irai avec la solution VBA qui est assez simple à écrire selon moi et sans doute significativement plus rapide pour 100 000 enregistrements.

    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.

  13. #13
    Membre du Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Août 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2013
    Messages : 120
    Points : 61
    Points
    61
    Par défaut
    Bonjour,
    je tiens à remercier toute l'équipe de ce forum et précisément à Mr marot_r qui m’a aider plus qu’une fois à résoudre pas mal de problèmes.
    En ce qui concerne :
    Tu n'as pas à te préoccuper de la filière et du département, ils sont dans tes données qui te servent à calculer NuméroSequentielParFiliere. Tu as juste à faire la division ce qui va te donner le numéro de groupe dans ce département et cette filière.
    Je dois préciser que je ne dois pas avoir dans un jury d'une filière les élèves de 2 départements . Autrement dit la division /60 d’une filière doit se terminer à chaque département.
    Oui je vais poster ce sujet dans le sous forum Vba Access espérant avoir une solution.
    cordialement.

Discussions similaires

  1. Création des requêtes SQL
    Par Mallek155 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/02/2021, 18h58
  2. création des requêtes dynamique
    Par madmohamed dans le forum Delphi
    Réponses: 11
    Dernier message: 03/09/2015, 07h15
  3. Réponses: 1
    Dernier message: 03/04/2009, 10h09
  4. Création des bons index pour une requête
    Par genova dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/12/2008, 14h47
  5. Odre de création des fenêtres et requêtes
    Par t.n.b.g dans le forum WinDev
    Réponses: 4
    Dernier message: 26/05/2008, 11h55

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