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

Modélisation Discussion :

Champ "observation" calculé [AC-2007]


Sujet :

Modélisation

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Champ "observation" calculé
    Bonjour
    Est ce quelqu'un peut m'aider d'utiliser Macro ou une procédure sur Accès
    je suis entrain de développer une application sur accès de gestion des notes des élèves, mais je n'arrive à saisir le champ "Observation" automatiquement selon la palge de la moyenne; par exemple
    -si la moyenne >= 17 l'observation = Très bien.
    -si la moyenne >= 15 et < 17 l'observation = Bien.
    -si la moyenne <= 1 l'observation = Passable.

    Nom Moyenne Mention
    x1 18 Très bien
    x2 10 Passable
    x3 12 Moyen
    x4 15 Bien
    x5 17 Très bien
    x6 11 Passable

  2. #2
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonsoir Novice01,

    Une solution consisterait à créer une table qui contiendrait 20 enregistrements (une fois pour toute) :
    - note (clé primaire) (valeur de 1 à 20)
    - observation

    Cela te permettrait :
    • de modifier facilement les observations liées aux notes sans t'embringuer dans des modifications de VraiFaux (IIf) ou de BETWEEN (requête) ;
    • de travailler selon une requête qui lie la note à cette table pour trouver l'observation correspondante.
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  3. #3
    Candidat au Club
    Inscrit en
    Décembre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour Richard
    on ne peut pas mettre le champs "note" commeclé primaire car on peut trouver 2 élèves ayant même note
    merci

  4. #4
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour,

    Non, tu n'as pas compris : il s'agit de la table des notes possibles (de 1 à 20) avec la mention que tu lui associes (très bien, bien, etc...).

    Table NOTE :
    - note (clé primaire) (valeur de 1 à 20)
    - mention

    Table TATABLE :
    - nom
    - moyenne
    qui contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Nom Moyenne
    x1   18 
    x2   10 
    x3   12 
    x4   15 
    x5   17 
    x6   11
    Tu crées une requête qui lie TATABLE à la table NOTE, via le champ "moyenne", et tu obtiens la mention associée.


    Cela te permettra :
    • de modifier facilement les observations liées aux notes sans t'embringuer dans des modifications de VraiFaux (IIf) ou de BETWEEN (requête) ;
    • de travailler selon une requête qui lie la note à cette table pour trouver l'observation correspondante.
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  5. #5
    Candidat au Club
    Inscrit en
    Décembre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Salut
    je voudrais que le champs "Observation " change de valeur selon un interval du champ "moyenne" (un champs calculable)
    par exemple, si la moyenne >=17 le champ "Observation" prend la valeur "très bien"
    si la moyenne <17 et >= 15 le champ "Observation" prend la valeur "bien"
    si la moyenne <=14 le champ "Observation" prend la valeur "Passable".

  6. #6
    Membre éclairé Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 598
    Points : 879
    Points
    879
    Par défaut
    Bonjour Novice01,

    La proposition de Richard35 est pertinente dans le sens ou si tu souhaites paramétrer de manière simple les mentions associées au notes (bien, très bien, etc.), tu n'aura pas besoin de faire des modifications complexes.

    Si tu souhaites persister dans une structure mono-table, tu n'auras pas d'autre choix que de coder ta requête avec une combinaison de IIF et de Between

    dans le cas présent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select (iif(moyenne > 17,"Très bien.",iif(moyenne Between 15 and 17,"Bien.","Passable."))) from notes
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!
    si tout est OK, n'oubliez pas de cliquer sur

  7. #7
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour Novice01 et Dumas.blr,

    Il m'a échappé qu'il s'agissait de moyenne, donc des notes avec décimales. Dans ce cas, effectivement, l'utilisation de la table que je t'ai proposée est impossible.

    La proposition de Dumas.blr est donc la seule, dans le principe :
    • dans une requête avec assistant : VraiFaux (ou IIf) imbriqué (attention aux parenthèses) ;
    • via VBA : l'utilisation de l'instruction SELECT CASE... (plus facilement maintenable).
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  8. #8
    Candidat au Club
    Inscrit en
    Décembre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour

    comment je vais manipuler " case" selon la veleur d'un champ pour metre à jour un autre champ et tout ça sur sql
    merci pour votre aide

  9. #9
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour Novice01,

    Je ne connais pas VBA.

    Si toi non plus, Dumas.blr t'as déjà donné la solution.

    En création de requête, mode SQL :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select (iif(moyenne > 17,"Très bien.",iif(moyenne Between 15 and 17,"Bien.","Passable.")))
    from notes

    En création de requête, mode graphique :
    VraiFaux(moyenne > 17 ; "Très bien." ; VraiFaux(moyenne entre 15 and 17 ; "Bien." ; "Passable."))

    A adapter suivant tes tranches.

    La syntaxe du VraiFaux étant :
    VraiFaux("condition" ; "valeur" si vrai ; "valeur" si faux), "valeur" pouvant contenir, elle-même, un VraiFaux. Il faut donc faire attention à l'imbrication des parenthèses.

    Je pense que tu as tout pour faire...
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  10. #10
    Membre actif Avatar de spaiku
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 209
    Points : 293
    Points
    293
    Par défaut
    Bonjour,

    effectivement, la solution proposée par Richard au début me semble aussi la plus élégante. Les décimales sont-elles réellement un problème, dans la mesure où elles peuvent toujours être arrondies ?

    Sinon, en passant par du code, j'écrirais d'une fonction qui renvoie l'observation en fonction de la note :

    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
    Function getObserv(p_note As Single) As String
     
    If p_note > 18 Then
        getObserv = "Très Bien"
        Exit Function
    End If
     
    If p_note > 14 Then
        getObserv = "Bien"
        Exit Function
    End If
     
    'etc...
     
    End Function
    L'intérêt est que cette fonction est plutôt lisible, donc facilement maintenable, et qu'elle peut être utilisée directement dans le SQL, genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT getObserv(moyenne) FROM Notes

+ Répondre à la discussion
Cette discussion est résolue.

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