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 :

Total Cumulé des mois par années [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2009
    Messages : 59
    Points : 44
    Points
    44
    Par défaut Total Cumulé des mois par années
    Bonjour, après beaucoup de recherches sur internet, je décide de demander un peu d'aide car je n'y arrive pas du tout (désolé si par hasard un sujet similaire existe déjà).
    Pour illustrer mon exemple j'ai crée une bdd très simple sur access 2007 qui récapitule le nombre de vente par mois et années.

    3 tables dont 2 listes.

    - T_Ventes qui contient : NombreDeVentes, V_Mois et V_Annees
    - T_Mois qui est une liste de tous les mois (01.Janvier, 02.Février etc ...).
    - T_Années qui contient les années 2008 et 2009

    Je souhaiterai calculer le cumul du nombre de ventes par mois et années.
    Admettons que dans ma table j'ai ceci (exemple réduit volontairement) :
    - Janvier 2008 : 20 ventes
    - Mai 2008 : 40 ventes

    - Février 2009 : 10 ventes
    - Septembre 2009 : 30 ventes

    Je voudrais obtenir :

    - Janvier 2008 : 20
    - Mais 2008 : 60
    - Février 2009 : 10
    - Septembre 2009 : 40

    J'ai écrit cette requête en sql mais j'obtiens une erreur et je ne comprends pas pkoi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    RunTot: DSum("V_NombreDeVentes","T_Ventes","V_Mois<=" & [V_Mois] & " And  V_Annees<=" & [V_Annees] & "")
    Merci d'avance pour l'aide

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Bonjour
    2 questions :
    -Quel est le message renvoyé exactement ?
    -Dans la table T_Ventes, le champ V_Mois contient Janvier ou 1 ?

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2009
    Messages : 59
    Points : 44
    Points
    44
    Par défaut
    Le champ V_Mois est une liste de la table T_Mois, donc elle contient :
    01.Janvier
    02.Février
    03.Mars
    etc ...
    J'ai précédé chaque mois par des chiffres pour les classer, peut-être qu'il existe un autre moyen mais c'est le seul que j'ai trouvé.

    Quand je lance la requête je vois tout s'exécuter sauf le calcul, dans chaque cellule il y a "#Error".
    En cliquant sur la première cellule (Janvier 2008) j'obtiens :"Syntax error (missing operator) in query expression 'V_Mois<=01.Janvier And V_Annees<=2008'.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    En cliquant sur la première cellule (Janvier 2008) j'obtiens :"Syntax error (missing operator) in query expression 'V_Mois<=01.Janvier And V_Annees<=2008'.
    Ce qui peut paraitre normal, puis que V_Mpis est de type texte
    Essaye en travaillant uniquement sur les 2 premiers caractères :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DSum("V_NombreDeVentes","T_Ventes","left(V_Mois,2)<=" & left([V_Mois],2) & " And  V_Annees<=" & [V_Annees] & "")
    PS : Faudra peut-etre convertir en numérique

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut
    Bonjour,
    Quelques remarques, si je peux me permettre, à première vue sur la conception :
    - Exclure des tables des champs calculés, pour l’instant access ne fait pas, sauf à les alimenter par code, les requêtes savent faire.
    - Il semblerait que les tables n’ont pas de champs ID avec, le plus pratique, des Numéros auto.
    C’est pratique pour identifier les enregistrements et les rechercher, cela sera quasi nécessaire quand il faudra cumuler par mois et annee par requête sinon il faudra soit ajouter un champ incrémenter où passer par des fonctions VBA.

    Pour la table t_mois par exemple si le champ ID est bien renseigné dès le départ il restera (1….12), il sera numérique on peut facilement par requête ou par code l’associer à (Janvier….décembre).
    01 ou 02 même en les sélectionnant avec left ils restent du texte comme le précise justement fgiambelluco.

  6. #6
    Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2009
    Messages : 59
    Points : 44
    Points
    44
    Par défaut
    Merci pour vos réponses, je vais essayer tout ça et vous tiens au courant.

    Bonne journée.

  7. #7
    Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2009
    Messages : 59
    Points : 44
    Points
    44
    Par défaut
    J'ai réussi a obtenir le cumul par année et par mois mais il me reste néanmoins un problème a résoudre. Dans ma table T_Vente j'ai mis les années 2009 et 2010 pour aire un test, pour 2009 j'obtiens bien un cumulé, mais pour 2010 ça ne va pas.

    Voici le détail de ma table T_Ventes (Pour info j'ai combiné V_Mois et V_Annees en V_Date pour simplifier la requête) :

    NbreVentes - V_Date
    10 - 1/3/2009
    10 - 7/3/2009
    10 - 8/3/2009
    10 - 10/3/2009
    10 - 10/4/2009
    10 - 1/1/2010
    10 - 2/6/2010
    10 - 3/6/2010


    Avec la requête j'obtiens ceci :

    AYear - Amonth - RunTot - FDate
    2009 - 1 - 10 - January
    2009 - 7 - 20 - July
    2009 - 8 - 30 - August
    2009 - 10 - 50 - October
    2010 - 1 - 20 - January
    2010 - 2 - 30 - February
    2010 - 3 - 40 - March

    On remarque que pour le premier mois de 2010, le total cumulé est de 20, alors qu'il aurait du être de 10. En changeant les données, je me suis rendu compte que ça dépendait du mois de janvier 2009 : si pour ce mois j'avais mis 50, pour janvier 2010 j'aurais obtenu 60.

    Voici le code que j'ai utilisé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT DatePart("yyyy",[V_Date]) AS AYear, DatePart("m",[V_Date]) AS Amonth, DSum("NbreVentes","Tventes2","DatePart('m', [V_Date])<=" & [AMonth] & " And  DatePart('yyyy', [V_Date])<=" & [AYear] & "") AS RunTot, Format([V_Date],"mmmm") AS FDate
    FROM Tventes2
    GROUP BY DatePart("yyyy",[V_Date]), DatePart("m",[V_Date]), Format([V_Date],"mmmm")
    ORDER BY DatePart("yyyy",[V_Date]), DatePart("m",[V_Date]), Format([V_Date],"mmmm");

    Merci d'avance (desole pour la mise en forme des données des tables).

  8. #8
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Bonjour
    Je pense que le problème vient de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DSum("NbreVentes","Tventes2","DatePart('m', [V_Date])<=" & [AMonth] & " And  DatePart('yyyy', [V_Date])<=" & [AYear] & "")
    En effet pour 2010, on prend 2009, 2008, 2007, ...
    Je mettrais plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DSum("NbreVentes","Tventes2","DatePart('m', [V_Date])<=" & [AMonth] & " And  DatePart('yyyy', [V_Date])=" & [AYear] & "")

  9. #9
    Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2009
    Messages : 59
    Points : 44
    Points
    44
    Par défaut
    Tout fonctionne parfaitement, merci beaucoup pour l'aide

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

Discussions similaires

  1. Cumul des montants par sélection de mois
    Par shegu dans le forum QlikView
    Réponses: 3
    Dernier message: 16/02/2012, 11h22
  2. cumul des quantité par mois
    Par karim15 dans le forum WinDev
    Réponses: 9
    Dernier message: 18/01/2010, 10h55
  3. Cumul de versement par année
    Par shaun_the_sheep dans le forum Langage SQL
    Réponses: 10
    Dernier message: 20/04/2009, 16h38
  4. Cumuler des Filtres par Selection en VBA ?
    Par Fredo67 dans le forum Access
    Réponses: 4
    Dernier message: 05/07/2006, 14h00
  5. Répartir un montant total sur des mois
    Par ALLB dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 05/10/2005, 10h19

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