lizarajim
Messages postés16Date d'inscriptionmardi 28 mai 2002StatutMembreDernière intervention24 octobre 2006
-
29 mai 2002 à 16:54
lizarajim
Messages postés16Date d'inscriptionmardi 28 mai 2002StatutMembreDernière intervention24 octobre 2006
-
4 juin 2002 à 13:55
salut,
my problem:
j'ai une table "recettes" qui se présente comme ceci:
maintenant, je veux créé un champ "cumul" qui fait, pour chaque ligne, la somme des montants des 12 mois précédents (c'est un cumul mobile sur 12 mois en fait).
je pensais faire qqchose du style:
somdom("[recettes]![montant]","[recettes]","prendre les 12 mois précédents")
et je ne sais pas écrire "prendre les 12 mois précédents"
je ne sais pas me servir de cette fonction et la syntaxe n'est sûrement pas bonne.
1/ La fonction Format$() permet de formater la date au format américain qui est celui reconnu dans les requêtes SQL écrites (par opposition à celles montées avec l'éditeur de requêtes).
2/ J'ai remplacer le champ [date] par [dateR] car il y a un risque d'embiguïté avec la fonction date() qui retourne la date du jour.
3/ La fonction est au final assez compliquée et couteuse en perf. Je conseille plutôt d'ulitiser un état Access qui gère très facilement le calcul de cumul grâce à une simple propriété des contrôles.
lizarajim
Messages postés16Date d'inscriptionmardi 28 mai 2002StatutMembreDernière intervention24 octobre 2006 4 juin 2002 à 10:14
Merci mais çà ne marche pas.
Ce que tu me proposes est un cumul simple ligne à ligne.
Voici la formule que j'ai rentré:
cumul: SomDom("[recettes_real]![ticket unité]";"[recettes_real]";"([identifiant]>#" & Format$(DiffDate("m";-12;[identifiant]);"mm-jj-aaaa") & "#) and ([identifiant]<=#" & Format$([identifiant];"mm-jj-aaaa") & "#)")
Si tu regardes bien jusqu'au 01/12/97 c effectivement ce que je veux mais après ce n'est plus bon.
En effet, pour le cumul du 01/01/98, je dois avoir la somme du 01/02/97 jusqu'au 01/01/98 càd un cumul mobile sur 12 mois (soit 2 016 289.32 au lieu de 2 169 460.34 !!!!)
Pour le cumul du 01/02/98 c la somme du 01/03/97 jusqu'au 01/02/98 et ainsi de suite...
Enfin bon c pas grave, je v me résoudre à passer par du VBA car il me semble qu'une requête SQL soit impossible pour ce que je demande.