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

Access Discussion :

enregistrement dans la table par selection (Planning) [À faire]


Sujet :

Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 54
    Points : 45
    Points
    45
    Par défaut
    [Certains messages du début de ce thread ont été édités, supprimés et fusionnés par FRED.G pour plus de clarté]

    Me revoila avec une autre question existencielle !

    en fait c'est un genre de planning pour des cours pour plusieurs classes
    Donc dan smon formulaire on choisit un n° de semaine qui renvoie le premier jour de la semaine en question.
    Ensuite j'ai 10 boutons qui renvoient la classe concernée puis 40 boutons qui correspondent aux plage horaire de la semaine, 9 pour le lundi, etc...
    chacun de ces boutons renvoient la date (calculée par rapport au N° de semaine choisie) et le n° de plage.
    A partir de là il ne me reste plus qu'a choisir la matière enseigné et le moniteur concerné, cela serait simple si il n'y avait qu'un seul moniteur pour une matière.
    Mais la pour une matière il peut y avoir de 1 à 4 moniteurs pour la même classe sur la même plage et a la même date.
    Et en plus il peut y avoir 2 demi groupe donc matière 1 avec 4 moniteurs (max) et matière 2 avec 4 moniteurs (max).
    Le but c'est qu'a la saisie du planning il ne peut pas y avoir de doublons sur le moniteur, la plage et la date, et une matière a une durée definie pour la semaine, donc une fois que la durée est égale aux affectation de cette matière on ne peut plus la saisir.
    but ultime : verifier la cohérence des emplois du temps.

    donc je que j'ai fais c'est : huit zone de texte indépendantes chaque zone de texte étant saisie l'une après l'autre a coté de chacune il y a un bouton "ok" lié au code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Commande117_Click()
    On Error GoTo Err_Commande117_Click
    moniteur.Value = moniteur1.Value
     DoCmd.RunCommand acCmdSaveRecord
     DoCmd.GoToRecord , , acNewRec
     
    Exit_Commande117_Click:
        Exit Sub
     
    Err_Commande117_Click:
        MsgBox Err.Description
        Resume Exit_Commande84_Click
    End Sub
    la on voit que moniteur1 renvoie la valeur a moniteur qui est la zone de texte avec liée a la source de donnée.En cliquant sur ce bouton l'utilisateur sauve l'enregistrement et passe a un nouvel enregistrement afin de pouvoir saisir le deuxième la valeur de la seconde zone de texte.
    Le petit problème c'est : si l'utilisateur decide de changer la valeur qu'il a saisi et enregistré dans la table la première fois : il faudrait donc supprimer l'enregistrement concerné. Ca me semble un petit peu compliqué étant donné que le formulaire est lié la solution est peu être de faire un formulaire indépendant? qu'en pensez vous ? :

  2. #2
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Salut

    Alors pour commencer à cerner le problème efficacement je dois te poser 2 questions :

    Question 1 :
    on choisit un n° de semaine qui renvoie le premier jour de la semaine
    chacun de ces boutons renvoient la date (calculée par rapport au N° de semaine choisie) et le n° de plage
    Quand tu dis "renvoie" ça veut dire quoi ? Enregistrer dans une variable dans le code ? Ou atteindre un enregistrement spécifque du formulaire ? Ou quoi ?

    Question 2 :
    Quelle est la structure de tes tables (pas toutes hein..., juste celle(s) qui conerne(nt) le form et la saisie du planning...)
    (\ _ /)
    (='.'=)
    (")-(")

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 54
    Points : 45
    Points
    45
    Par défaut
    j'ai :
    table affectation avec les champs :
    - moniteur
    - plage
    - date
    - matière
    - classe.
    les champs moniteur,plage,date sont les clefs de la table.
    pour le champ date, il faut entrer dans un menu paramètre la date du premier lundi de l'année et ensuite selon le n° de la semaine séléctionné il retrouve la date par une addition (pour l'instant juste une ébauche, mais une petite idée plus élaborée serait la bienvenue).

    table cours, les champs sont :
    - matière
    - classe
    - N°semaine
    - N° plage
    sans clef primaire. Cette table sert juste a faire une requete pour calculer le nbre d'heure de cours dispensé dans la semaine (pas très important pour l'instant).

    Sinon pour ce qui est du vif du sujet mon formulaire est basé sur la table affectation le centre névralgique de mon planning.

    J'espère que mes explications sont suffisantes...
    Pour mon niveau : on peut dire débutant d'après le niveau des personnes parcourant ce forum surtout en ce qui concerne vba.

    D'ailleurs voici le code du 1er de mes 40 boutons qui affecte la plage et la date (il doit certainement y avoir moyen de le simplifier, mais bon... (novice))

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Private Sub plage1_Click()
    Détail.Visible = True
    DoCmd.GoToRecord , , acNewRec
    matiere1.Value = ""
    moniteur1.Value = ""
    moniteur2.Value = ""
    moniteur3.Value = ""
    moniteur4.Value = ""
    matiere1.BackStyle = 1
    moniteur1.BackStyle = 1
    moniteur2.BackStyle = 1
    moniteur3.BackStyle = 1
    moniteur4.BackStyle = 1
    moniteur1.Locked = False
    moniteur2.Locked = False
    moniteur3.Locked = False
    moniteur4.Locked = False
    datetf.Value = dateclc.value
    plagetf.Value = "1"
     
    End Sub

  4. #4
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Bon j'y suis... (j'ai édité ton dernier message pour qu'il soit plus clair )

    Alors, je ne voit pas de solution simple à ton problème donc si tu ne veux pas abandonner il va falloir être un peu motivé...
    Mais on peut faire ça ensemble pas à pas, tu vas apprendre des choses !

    Tu connais un peu le SQL ?

    Car la solution que je te propose sera basé sur un formulaire indépendant qui servira à la fois d'affichage du planning et de modification de celui-ci...
    Or toute la vérification de la cohérence du planning et sa mise à jour reposera sur des requêtes (sql) et des recordset (vba).

    Ce que je te propose, c'est un form indépendant, donc, avec dans la section détails des zones de texte vérouillées affichant les données relatives aux cours plannifiés.
    Il y aura 1 textbox pour chaque Plage.
    Et lorsqu'un cours est réservé pour une plage, cela donnera (affiché dans la textbox de cette plage) :

    12/01/05
    Classe A3
    Education civique
    M. Bernard

    ou avec plusieurs moniteurs :

    12/01/05
    Classe A3
    Education civique
    M. Bernard
    Mme Azerty
    M. Tournesol
    Mlle Flèche

    ou avec des demi groupes:

    12/01/05
    Classe A3
    G1 Eveil artistique
    G1 M. Bernard
    G1 Mme Azerty
    G2 Education civique
    G2 M. Tournesol
    G2 Mlle Flèche
    G2 M. Telmon

    etc.
    Voilà pour la section détail du formulaire et l'affichage du planning...

    Ensuite en entête de formulaire, tu aurais quelques contrôles destinés à la saisie pour réserver un cours avec un bouton "Mise à jour" qui rafraîchirait la section détails et enregistrerait les modifs dans les tables...

    Concernant les tables, ils en aura 3 principales + plusieurs autres annexes...

    Qu'en dis-tu ?

    ça te tente ?
    (\ _ /)
    (='.'=)
    (")-(")

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 54
    Points : 45
    Points
    45
    Par défaut
    Oui ça me tente bien, le problème c'est que je ne connais pas du tout SQL.
    Par contre j'ai commencé a faire quelque chose qui peut ëtre conviendrait :

    Donc, voila, j'ai mon formulaire affectation lié a la table affectation.

    Entete de formulaire.

    dans un premier temps on choisi la semaine.

    ensuite on choisi la classe par le biais d'un bouton:
    ex: pour la classe BACPRO1 Sur clic :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    classetf.Value = "BACPRO1"
    "classetf " étant une zone de zone de texte independante, située dans l'entete de formulaire.

    puis on séléctionne la plage par le biais d'un bouton.
    ex: pour la plage 2 sur clic :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    datetf.Value = "25/10/2004"
    plagetf.Value = "2"
    "datetf et plagetf" étant des zones de texte indépendantes situées aussi dans l'entête de formulaire.
    Pour la date j'ai mis une date aléatoire sachant que je n'ai pas encore trouvé la solution idéale.

    Détail

    j'ai mis ici les 5 zones de texte relative aux 5 champs de ma table affectation.

    ensuite une zone de liste modifiable indépendante pour choisir la matière1.

    puis 4 zones de liste indépendantes pour choisir le ou les moniteurs avec a coté de chacune un bouton "ok"
    - En cliquant sur la zone de liste modifiable pour choisir un moniteur voila ce qui se passe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DoCmd.GoToRecord , , acNewRec
    date.Value = datetf.Value
    plage.Value = plagetf.Value
    classe.Value = classetf.Value
    les valeurs des zone de texte independantes(datetf, plagetf, classetf) de l'entete de formulaire sont affectées aux zones de texte relatives aux champs de la table affectation.
    - En cliquant sur le bouton "ok" voila ce qui se passe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    moniteur.Value = moniteur1.Value
    matiere.Value = matiere1.Value
       DoCmd.RunCommand acCmdSaveRecord
    moniteur1.BackStyle = 0
    moniteur1.Locked = True
    Cet exemple est pour la zone liste modifiable indépendante "moniteur1" et pour la zone de liste modifiable independante "matiere1"
    On voit ici que la valeur de la zone de liste modifiable independante "moniteur1" est affectée a la zone de liste moniteur qui est liée a la table affectation, idem pour la matiere et ensuite les valeurs sont enregistrées dans la table.

    ensuite lorsque l'utilisateur veut saisir un nouveau moniteur par le biais de la zone de liste modifiable ceci genere un nouvel enregistrement.

    Idem pour matiere2

    Est -ce un bon début ou faut il tout revoir??? [/b]

  6. #6
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Est -ce un bon début ou faut il tout revoir???
    Je comprends bien ce que tu as fait et donc aussi ta question de départ... Au passage, merci pour avoir fait l'effort de rédiger correctement ton dernier message, c'est plus agréable et plus pratique pour moi

    Ton début est bon si tu es satisfait de "l'ergonomie" de ton appli...

    Certes, comme je te l'ai dit, j'aurai pour ma part essayé d'afficher toutes les plages avec leur contenu (c'est vrai qu'il y en a 40 ) de manière à ce que l'utilisateur puisse avoir une vision globale du planning de la semaine en même temps qu'il fait ses choix...
    Ce n'est pas le cas avec ta solution actuelle mais c'est toi le maître à bord donc on fera comme tu veux.

    Actuellement tu utilises un formulaire dépendant. Pour répondre à l'une de tes précédentes question : oui il est possible d'utiliser un formulaire totalement indépendant mais c'est kif kif car tu n'éviteras le principal défaut de ton appli : l'organisation de tes tables...

    choisir la matière enseigné et le moniteur concerné, cela serait simple si il n'y avait qu'un seul moniteur pour une matière.
    Tu peux régler ce problème en définissant tes tables comme indiqué ci-dessous.
    Toutefois cela t'oblige à abandonner ton ancien schéma et donc certains principes de présentation de ton formulaire actuel...

    Les 4 tables principales :

    tblPlagesPlanifiées
    IdPlagePlan (CléP num auto)
    IdClasse (Long)
    DateCours (Date)
    IdPlage (octet)

    tblPlages
    IdPlage (Octet, Clé Primaire)
    Durée (Long)
    Jour (Octet, Zone de liste modifiable, Liste valeurs : 1;Lundi;2;Mardi;3;Jeudi;4;Vendredi , colonne liée : 1 , largeur colonnes : 0 , nb colonnes : 2)

    tblGroupesPourPlagePlan
    IdGroupAffect (CléP num auto)
    IdPlagePlan (Long)
    Répartition (Octet, Zone de liste modifiable, Liste valeurs : 1;Classe;2;Demi groupe , colonne liée : 1 , largeur colonnes : 0 , nb colonnes : 2)
    Groupe (octet)
    IdMatière (long)

    tblMoniteursPourGroupes
    IdMonAffect (CléP num auto)
    IdMoniteur (Long)
    IdGroupAffect (long)

    Note : 1 cours (tblPlagesPlanifiées) possède toujours 1 groupe (=classe complète) ou 2 groupes (=demi groupes) et chaque groupe ainsi affecté à un cours (tblGroupesPourPlagePlan) possède 1 ou plusieurs moniteurs (tblMoniteursPourGroupes)

    Les autres tables :

    tblMoniteurs
    IdMoniteur (CléP num auto)
    Titre (texte, Zone de liste modifiable, Liste valeurs : M.;Mme;Mlle , colonne liée : 1 , nb colonnes : 1)
    Nom (text)

    tblMatières
    IdMatière (CléP num auto)
    Matière (texte)
    Catégorie (Octet, Zone de liste modifiable, Liste valeurs : 1;Classe;2;Classe et demi groupes;3;Demi groupes , colonne liée : 1 , largeur colonnes : 0 , nb colonnes : 2)

    tblClasses
    IdClasse (CléP num auto)
    Classe (text)

    tblMoniteursPourMatières
    IdRessource (CléP num auto)
    IdMoniteur (long)
    IdMatière (long)


    Relations entre tables :
    Toutes les clés primaires sont liées à une autre table qui contient un champ du même type et du même nom.
    Aucune table n'a pas de relation.
    Toutes les relations sont de type 1 à plusieurs.
    On active l'intégrité référentielle avec option Maj + suppression en cascade...

    Avec ça je pense que tes données sont bien organisées prêtes à être triturées via sql ou vba... 8)


    Donc now à toi de dire si on continue sur tes bases ou si on reprend avec le nouveau schéma.

    Note : Nous galèrerons autant sinon plus avec ton schéma qu'avec le mien... Mais bon, le plus dur est surement fait (le plus dur mais pas le plus long)
    (\ _ /)
    (='.'=)
    (")-(")

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 54
    Points : 45
    Points
    45
    Par défaut
    ton organisation est intertessante.
    Mais pour ce qui est de la table tblAffectationsMoniteurs il serait très interessant de pouvoir éviter tout doublon a la saisie.
    Donc en ajoutant eventuellement les champs date et plages.
    Sachant qu'un moniteur peut enseigner un ou des cours a une ou plusieurs classe.
    Qu'en penses tu ?

    Et tu me parle sinon de l'affichage des plages avec leur contenu afin que l'utilisateur puisse voir en temps réel l'avancement du planning, ce serait tout simplement génial (et là déjà je crois que vais apprendre des choses).

  8. #8
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Citation Envoyé par fab44
    pour ce qui est de la table tblAffectationsMoniteurs il serait très interessant de pouvoir éviter tout doublon a la saisie.
    Donc en ajoutant eventuellement les champs date et plages.
    Je pense qu'ajouter les champs date et plages dans cette table créerait une redondance...
    Néanmoins comme tu le dis, il faut éviter tout doublon à la saisie.
    Par conséquent la solution est d'imposer à tes utilisateurs d'effectuer les saisies directement dans le formulaire prévu à cet affet et sur lequel tu as un contrôle total (vérification des doublons, etc.).

    Citation Envoyé par fab44
    Et tu me parle sinon de l'affichage des plages avec leur contenu afin que l'utilisateur puisse voir en temps réel l'avancement du planning, ce serait tout simplement génial (et là déjà je crois que vais apprendre des choses).
    Ben on va s'gêner, tiens ! (enfin on va au moins essayer et si vraiment c'est trop compliqué pout toi, on pourra toujours abandonner... )
    En tout cas cela supposera l'utilisation d'un formulaire indépendant, donc tu apprendras un peu de SQL et les recordset en DAO 8)

    Citation Envoyé par fab44
    Sachant qu'un moniteur peut enseigner un ou des cours a une ou plusieurs classe.
    Cela me fait penser qu'il manque surement quelques tables, notamment :

    tblMoniteursPourGroupes : (=>> table ajoutée à la liste de mon précédent message)
    IdAffectation
    IdMoniteur
    IdMatière
    Cette table indique pour chaque moniteur, les matières qu'il peut enseigner...
    On peut aussi prévoir un champ TotalHeures indiquant pour chaque matière enseignée, le nombre d'heure à planifier (mais avant d'aller si loin il faut que tu me donnes ton avis...).

    Tu es prêts ?

    Pour commencer, il faudrait qu'on ait la même base au fur et à mesure, ça évitera quelques incompréhensions...

    Donc, tu peux déjà de te créer 40 TextBox dans la section détail de ton form (prends un form tout neuf!)
    Pour l'instant laisse leur le nom par défaut...

    Dans l'en tête du form, voici ce que j'ai fait :

    1 ComboBox zldSemaine
    1 TextBox txtAnnée
    1 ComboBox zldPlage
    1 TextBox txtDate (vérouillée)
    1 ComboBox zldClasse

    1 Label (étiquette) étqG1 Légende : Groupe 1
    1 ComboBox zldMatièreG1
    1 ComboBox zldMon1G1
    1 ComboBox zldMon2G1
    1 ComboBox zldMon3G1
    1 ComboBox zldMon4G1

    1 ToggleButton (Bouton bascule) btbG2 Légende : Groupe 2
    1 ComboBox zldMatièreG2
    1 ComboBox zldMon1G2
    1 ComboBox zldMon2G2
    1 ComboBox zldMon3G2
    1 ComboBox zldMon4G2

    1 Bouton btcMAJ



    Maintenant il faudrait faire la liste de toutes les contraintes à respecter, notamment :
    connaît-on à l'avance pour chaque classe et/ou chaque monitueur, les nombres annuel et hebdomadaire d'heures de cours (ou de plage si c'est cette unité qui compte) en général et par matière ?
    Autrement dit le formulaire doit-il faciliter et contrôler lors de la saisie, le respect de ces critères ?
    (\ _ /)
    (='.'=)
    (")-(")

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 54
    Points : 45
    Points
    45
    Par défaut
    Merci pour tes explications très claires et très organisées.
    Donc le sujet étant parfaitement cerné :

    Voici les contraintes :

    1 - 9 plages par jour (dont 5 de 55 minutes et 4 de 1 heure.)

    2 - Le vendredi 4 plages de 55 minutes (rien l'après-midi)

    3 - Un certain nombre de moniteurs qui peuvent enseigner 1 ou plusieurs matières, a 1 ou plusieurs classes.

    4 - Un moniteur peut dispenser son/ses cours a 1 ou plusieurs classes dans la même journée mais sur des plages différentes.

    5 - Un cours peut être dispensé par 1 ou plusieurs moniteurs (max = 4).

    6 - Un cours correspont a une durée hebdomadaire en fonction de la classe et du cours.

    7 - Le planning est différent et donc saisi pour chaque semaine.

    8 - Certaines classe n'ont pas de cours pendant certaine semaine (alternance (ceci n'influra de toute facon pas sur la base))

    9 - Les moniteurs ont un temps de travail hebdomaire : pendant l'affectation il serait bien de pouvoir visualiser le nbre d'heure déja dispensé pendant la semaine a l'aide d'une petite requete.

    Sinon la table plage pourrait etre conservée avec :
    N° plage
    Durée plage

    ce qui simplifierai la requete de cumul du temps par moniteur ainsi que pour les cours. :

    Sinon pour :
    Autrement dit le formulaire doit-il faciliter et contrôler lors de la saisie, le respect de ces critères
    ces critères doivent en effet etre controlés lors de la saisie (pour detecter toute incohérence hypothétique). Et la saisie doit être automisée et facilitée le plus possible pour eviter au maximum les erreurs de saisie (et donc la lourdeur de la tache ).

    Donc de ce pas je met au travail. Et a première vue la tache s'annonce longue et semée d'embuches

    Et encore une fois pour ton aide.

  10. #10
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Citation Envoyé par fab44
    9 - Les moniteurs ont un temps de travail hebdomaire : pendant l'affectation il serait bien de pouvoir visualiser le nbre d'heure déja dispensé pendant la semaine a l'aide d'une petite requete.
    Oui, et on le fera surement aussi pour les classes (de la même façon qu'on peut le faire pour les matières...)

    Citation Envoyé par fab44
    Sinon la table plage pourrait etre conservée avec :
    N° plage
    Durée plage

    ce qui simplifierai la requete de cumul du temps par moniteur ainsi que pour les cours. :
    Tout à fait ! Donc :
    la création de la table tblPlages entraîne des modifications à faire (j'ai édité mon ancien message où je décrit mes tables) :
    tblCours : changer le nom de la table en tblPlagesPlanifiées
    IdCours (CléP num auto) : changer le nom du champ : IdPlagePlan
    Plage (octet) : changer le nom du champ : IdPlage
    etc.
    =>> voir autre message car j'ai modifié plusieurs tables...

    Citation Envoyé par fab44
    3 - Un certain nombre de moniteurs qui peuvent enseigner 1 ou plusieurs matières, a 1 ou plusieurs classes.
    Là je te préviens, ta phrase n'est pas assez précise... Donc réfléchis bien.

    "Un certain nombre de moniteurs qui peuvent enseigner 1 ou plusieurs matières" =>> ceci est défini dans la table tblMoniteursPourMatières et va nous permettre lorsqu'on choisit un moniteur, de filtrer la liste des matières ou inversement lorsqu'on choisit une matière, de filtrer la liste des moniteurs, tu me suis ?

    "Un certain nombre de moniteurs qui peuvent enseigner a 1 ou plusieurs classes" =>> Là tu dois réfléchir et me dire s'il faut créer un table tblMoiteursPourClasse ou non.
    Comment le savoir ? Et bien tout simplement il faut répondre à la question suivante : y a-t-il une contrainte de départ à respecter lors de l'élaboration du planning ou bien les associations moniteur/classe sont libres ?
    Autrement dit, allons-nous chercherà filtrer, comme c'est le cas pour les matières avec les moniteurs, les listes de moniteurs par rapport aux listes de classes (et réciproquement) ? (ceci dans le but de faciliter la saisie et limitant les choix possibles) ?

    Si tu as bien suivi, tu va comprendre qu'il en ai de même par rapport à la relation Classe / Matière...

    Donc :
    On peut tout à fait se limiter à la contrainte suivante : "respecter lors de l'élaboration du planning, les associations prédéfinies dans la tblMoniteursPourMatières entre Moniteurs et Matières"
    On peut si besoin rajouter celle qui concerne la relation Moniteurs et Classes
    On peut si besoin rajouter celle qui concerne la relation Matières et Classes

    Réfléchi bien la réponse t'appartient...

    Un fois que tu auras défini lesquelles de ses trois contraintes il faudra respecter (on pourrait aussi faire sans...), tu auras à te poser la question des points de vue :

    : Moniteurs pour matières... ou Matières pour Moniteur...

    Et oui !
    Car dans ton formulaire, on pourra certes filtrer des listes les une par rapport aux autres, cependant il faudra ben choisir un point de vue, un point de départ :

    Cas 1 : Tu choisi un moniteur parmi tous les moniteurs de l'établissement cela permet de filtrer la liste des matières possibles grâce aux informations de la table tblMoniteursPourMatières

    Cas 2 : Tu choisi une matière parmi tous les matières enseignées dans l'établissement cela permet de filtrer la liste des moniteurs compétents grâce aux informations de la table tblMoniteursPourMatières

    On peut gérer le cas 1 et le cas 2 mais pas en même temps, donc il faut choisir...
    Il faut de poser la question : comment détermine-t-on le planning ? En choisissant d'abord une classe ? une matière ? un moniteur ?

    Là je pense que tu m'as compris
    Si tu n'as pas de réponse ou que tu hésites, il est toujours possible de prévoir une option dans le formuilaire afin l'utilisateur choisisse lui-même le point de vue/départ à adopter... Mais cela compliquera notre code et je pense que si on fait ensemble un truc simple, tu pourras ensuite le compliquer tout seul...

    Voilà, voilà...
    (\ _ /)
    (='.'=)
    (")-(")

Discussions similaires

  1. Réponses: 0
    Dernier message: 30/06/2009, 10h10
  2. [MySQL] insérer des enregistrements dans une table par lot
    Par dreamover dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 23/06/2009, 08h59
  3. Réponses: 3
    Dernier message: 11/07/2007, 07h44
  4. Réponses: 7
    Dernier message: 08/03/2007, 16h42
  5. Selection enregistrement dans une table
    Par Renardo dans le forum Access
    Réponses: 3
    Dernier message: 22/07/2006, 12h22

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