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 :

Consolider et calculer des données en fonction de critères de formulaire


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Eleveur de chèvres dans le Vercors
    Inscrit en
    Mai 2017
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Eleveur de chèvres dans le Vercors

    Informations forums :
    Inscription : Mai 2017
    Messages : 56
    Points : 36
    Points
    36
    Par défaut Consolider et calculer des données en fonction de critères de formulaire
    Bonjour !

    J'ai un formulaire dans lequel on choisit l'enseigne, le client, la ville et le réseau. Lorsqu'on a choisit, onclique sur le bouton "Calcul écart" et ça ouvre une requête qui calcul un pourcentage par enseigne, client, ville et réseau.

    Mon souci c'est que je voudrais que: si je mets uniquement le réseau, la requête calcul UN pourcentage pour CE réseau qui consoliderait les données de toutes mes enseignes, clients et villes gérées par CE réseau, etc pour l'enseigne et le client.

    Pour le moment, voici ma requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Comparaison.ENSEIGNE, Comparaison.CLIENT, Comparaison.VILLE, Comparaison.Réseau, [Formulaires]![Recherche]![Enseigne] AS E1, [Formulaires]![Recherche]![Client] AS E2, [Formulaires]![Recherche]![Ville] AS E3, [Formulaires]![Recherche]![Réseau] AS E4, Sum([écart_OK])/(Sum([écart_OK])+Sum([écart_NC])+Sum([écart_CNP])+Sum([vides])) AS OK
    FROM R_écarts INNER JOIN Comparaison ON R_écarts.LIEN = Comparaison.LIEN
    GROUP BY Comparaison.ENSEIGNE, Comparaison.CLIENT, Comparaison.VILLE, Comparaison.Réseau, [Formulaires]![Recherche]![Enseigne], [Formulaires]![Recherche]![Client], [Formulaires]![Recherche]![Ville], [Formulaires]![Recherche]![Réseau], R_écarts.écart_OK
    HAVING .... (je ne le mets pas car le détail des critères est très long)
    Ainsi j'aimerais retraviller la formule:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sum([écart_OK])/(Sum([écart_OK])+Sum([écart_NC])+Sum([écart_CNP])+Sum([vides]))
    pour qu'elle s'adapte au nombre d'enseignes... qui variera forcément en fonction des critères sélectionnés ou non dans le formulaire. En gros j'aimerais écrire: Sum écart_OK en fonction d'enseigne et/ou client et/ou ville et/ou réseau / (Sum écart_OK+NC...)*nombre d'enseignes et/ou clients et/ou villes puisque c'est un pourcentage.

    Merci d'avance!

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 114
    Points : 148
    Points
    148
    Par défaut
    Salut!

    J'ai deux solutions pour toi, je te laisse choisir:

    -Soit tu modifie ta requête en ajoutant des IIf à l'intérieur, du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IIF(Not IsNull([Formulaire]![Recherche]![Enseigne]), "SUM([écart_enseigne])", "")
    et tu met la même chose pour chaque cas. Ta requête vas être plus difficile à lire donc tu peux faire ça en plusieurs fois si tu passes par du VBA, sinon pas le choix tout sur un ligne!

    -La deuxième solution c'est avec du VBA, à l’événement Click sur le bouton tu construit ta requête morceau par morceau.
    Genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim requete As String
    requete = "SELECT ..., "
    If (Not IsNull([Formulaire]![Recherche]![Enseigne])) Then
       requete = requete & "SUM([écart_enseigne])"
    End If
    'Idem pour les deux autres champs
    requete = requete & "Fin requête"

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Eleveur de chèvres dans le Vercors
    Inscrit en
    Mai 2017
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Eleveur de chèvres dans le Vercors

    Informations forums :
    Inscription : Mai 2017
    Messages : 56
    Points : 36
    Points
    36
    Par défaut
    Bonjour syrald,

    Merci pour ton aide !

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/06/2014, 22h37
  2. Splitter des données en fonction de leur signe
    Par Shurka dans le forum Langage SQL
    Réponses: 4
    Dernier message: 04/12/2007, 15h41
  3. [MySQL] Récupérer des données en fonction du posteur
    Par darkphenx dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 06/11/2006, 16h27
  4. [Conception] Afficher des données en fonction du mois.
    Par fabrice88 dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 05/06/2006, 10h31

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