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 :

Condition if then dans une requête Access


Sujet :

Requêtes et SQL.

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Condition if then dans une requête Access
    Bonjour,


    Je souhaiterais dans une requête faire afficher sur une moyenne calculée (nombre avec 1 chiffre après la virgule) la valeur comme suit:
    ex : soit 10 la valeur entière et x la valeur décimale de cette moyenne
    Si x<4 alors Int(10,x) ->la valeur affichée est 10,0
    Si 3<x<8 alors Int(10,x)+0,5 ->la valeur affichée est 10,5
    Sinon Int(10,x) +1 la valeur affichée est 11.
    Pouvez-vous m'aider à résoudre ce problème?...

    Fanie

  2. #2
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Salut,

    Tu as plusieurs solutions...
    Soit tu utilises le IIF(Condition,Vrai,Faux) dans la requête en SQL en faisant des IIF imbriqués : IIF(condition1, vrai, IIF(Condition2,vrai,faux).
    Si tu n'est pas à l'aise avec le SQL et que tu passes par le mode graphique :
    utilise VraiFaux qui fonctionne de la même manière.

    Autre solution :
    Crée une fonction du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function NomFontion(ByVal Valeur As Long) As String
     
        If Valeur < 4 Then
            ....
            Else
            If Valeur < 8 Then
                .....
                Else
                .....
            End If
        End If
    End Function
    Dans ta requête, tu mets à la place du nom du champ : NomFonction(Nom_du_Champ)

  3. #3
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour,

    TU peux utiliser une formule du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NbArrondi = Int(nbbrut) + Choose(Round((nbbrut - Int(nbbrut)) * 10 + 1, 0), 0, 0, 0, 0, 0.5, 0.5, 0.5, 0.5, 1, 1)
    Â traduire si tu utilises dans une requête.

    Bon courage,

    pgz
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  4. #4
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Je ne connaissais pas la fonction Choose. Merci pgz

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    pgz merci de ton aide mais ton code ma parût obscur. J'ai résolu mon pb en faisant un module (fonction) et en la faisant intervenir dans ma requête.
    Merci encore à vous
    A bientôt.

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 126
    Points : 105
    Points
    105
    Par défaut
    salut à tous,
    comment dans ce cas, utilisé le IIf then sur trois variable c'est à dire :
    si a = a et b = b et c = c alors
    max = max(d)
    fin si
    A noté que : a est une colonne classe qui varie (1A; 2A.....); b est une colonne Trimestre (T1; T2; T3), c une colonne matière (Français, Maths) et d la note obtenu par les élèves.
    Merci

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 126
    Points : 105
    Points
    105
    Par défaut
    Bonjour à tous,
    j'ai essayé de mettre une fonction pour le traitement de cette situation, mais j'en appelle cette fonction dans une requête elle me renvois des zéro.
    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function MonMax(ByVal valeur1 As Double, valeur2 As Double, valeur3 As Double, valeur4 As Double) As Double
        Dim resultat As Double
        resultat = valeur4
        'Si les contenues des valeurs sont égaux alors choisir le maximum de la valeur 4
            If valeur1 = valeur1 And valeur2 = valeur2 And valeur3 = valeur3 And resultat > resultat Then
                MonMax = resultat
            End If
    End Function
    Je vous envois aussi l'image du résultat que je voudrais obtenir et une base exemple.
    La requête à modifier est "rqt_max" ou créer une autre requête c'est pas grave.
    Merci pour votre aide.
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Compter les Dates différentes dans une requête Access
    Par maxireus dans le forum Modélisation
    Réponses: 2
    Dernier message: 11/05/2007, 00h02
  2. Utiliser des "SI" dans une requête access ?
    Par shaenwe dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 14/03/2007, 12h25
  3. Pbs de date nulle dans une requête ACCESS
    Par tedparker dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 24/07/2006, 22h39
  4. Réponses: 2
    Dernier message: 04/11/2005, 11h35
  5. Réponses: 7
    Dernier message: 18/05/2005, 15h09

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