|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Messaoud RouabhaÉtudiant Inscription : janvier 2012 Messages : 18 ![]() |
salut a tous
j'ai une table tblcommandes qui contient 2 champs: 1- DateCommande de type date. 2- Montant de type numerique. Si par exemple la date la plus ancienne entreé dans le champ DateCommande ( Min([DateCommande])) est: 3/2/2008;comment faire ( dans une requete ou dans un etat ) pour avoir afficher (separement): - La somme des montants dont la date DateCommande est comprise entre 3/2/2008 et 3/2/2009. - La somme des montants dont la date DateCommande est comprise entre 3/2/2009 et 3/2/2010. - La somme des montants dont la date DateCommande est comprise entre 3/2/2010 et 3/2/2011. - La somme des montants dont la date DateCommande est comprise entre 3/2/2011 et la date en cours ( Date() ). |
|
|
00
|
|
|
#2 | ||
![]() ![]() ![]() Claude LELOUPChercheur de loisirs (ayant trouvé !) Inscription : novembre 2006 Messages : 5 242 ![]() |
Bonsoir,
voici la démarche : la date minimum : le 1er anniversaire : Code :
dateserial(Year(dmin("DateCommande","tblCommandes"))+1,Month(dmin("DateCommande","tblCommandes")),Day(dmin("DateCommande","tblCommandes"))) Code :
dateserial(Year(dmin("DateCommande","tblCommandes"))+2,Month(dmin("DateCommande","tblCommandes")),Day(dmin("DateCommande","tblCommandes"))) Dans une requête, cela devient (N.B. francisée et virgule => point-virgule) : Code :
Les Fonctions Date/Heure http://mhubiche.developpez.com/vba/f...ions/datetime/ |
||
|
|
10
|
|
|
#3 |
|
Invité de passage
![]() Messaoud RouabhaÉtudiant Inscription : janvier 2012 Messages : 18 ![]() |
Merci Claud.
Votre solution est valable si le nombre d'anniversaire est connu; alors que dans notre cas ce nombre (n) est variable et peut prendre n'importe quelle valeur (entier) selon Min(DateCommande) et la date du système Date(). Donc ce que on veut faire est de laisser Access détermine ce nombre entier d'anniversaires n et d'afficher la somme de chaque anniversaire à part. |
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Claude LELOUPChercheur de loisirs (ayant trouvé !) Inscription : novembre 2006 Messages : 5 242 ![]() |
Dans une fonction personnalisée alors, pas dans une requête.
Explique comment tu voudrais voir le résultat affiché. |
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Joao DA ROCHAInscription : octobre 2005 Messages : 29 ![]() |
Bonjour,
je partirais sur une requête, avec un champs calculé et la fonction datediff (voir l'aide) qui te renverra combien d'années se sont écoulées entre deux dates. Ensuite, cette requête, je l'injecte dans une 2nde requête croisée dynamique, où en ligne, je met ce champ calculé, et en valeurs, je met la somme des montants. En espérant que ce soit une piste ... TALERE |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Messaoud RouabhaÉtudiant Inscription : janvier 2012 Messages : 18 ![]() |
je veut que le resultat soit afficher comme suit ( si on prend l'exemple precedent ):
Periode La somme 2009 1000 2010 5000 2011 43000 2012 8700 On prend l'année la plus grande de chaque periode |
|
|
00
|
|
|
#7 | ||
![]() ![]() ![]() Claude LELOUPChercheur de loisirs (ayant trouvé !) Inscription : novembre 2006 Messages : 5 242 ![]() |
Je poursuis sur ma première idée : voici une sub pour construire la requête que je t’ai d’abord proposée.
Code :
- tu dois avoir une requête « tst » enregistrée (peu importe son sql) ; - dans la fenêtre d’exécution (<Ctrl + G>), tu saisis : <Enter> La requête « tst » est construite sur mesure : elle tient compte du nombre d’anniversaires. La requête tst affiche le résultat en ligne, pas tout à fait comme tu le prévoyais. Mais si la démarche te plait, on peut voir comment améliorer l'affichage. |
||
|
|
10
|
|
|
#8 |
|
Invité de passage
![]() Messaoud RouabhaÉtudiant Inscription : janvier 2012 Messages : 18 ![]() |
Merci Claude, ça marche bien; mais j'ai besoin de quelques améliorations:
1- Au lieu d'afficher dans la requête tst :Année1,Année2,Année3,...,Année(n) je veut avoir :Année2009, Année2010, Année2011 (si la première période est entre 2008 et 2009 on doit avoir Année2009 ... c.à.d on prend l'année la plus grande de chaque période). 2- Comment obliger la requête tst à afficher la somme des montants sous format standard avec décimales 0 c.à.d au lieu d'avoir par exemple 23000,00 on doit avoir 23 000. 3- Comment peut on avoir afficher les années ( Année2009, ... ) dans une colonne de la requête tst (nommé par exemple Année) et non pas dans une ligne comme c'est le cas, et aussi la somme des montants dans une autre colonne (nommé par exemple Total). Et merci encore une fois pour vos explications. |
|
|
00
|
|
|
#9 |
![]() ![]() ![]() Claude LELOUPChercheur de loisirs (ayant trouvé !) Inscription : novembre 2006 Messages : 5 242 ![]() |
Désolé, à part pour le 1- (en bricolant le titre de la colonne dans le code), j'ignore comment faire pour le 2 et le 3.
Il me semble que fabriquer un état (au départ de la requête) serait plus raisonnable. |
|
|
00
|
|
|
#10 | ||||
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 415 ![]() |
Bonsoir à tous,
Je viens d’avoir un début d’ébauche de brouillon d’idée Je vous la soumets donc L’idée consiste à ajouter un champ calculé [Année] : Code :
Pour le champ calculé [Année], j’ai ça pour le moment : Code sql :
… mais mon calcul avec INT(…/366)… est certainement approximatif
__________________
L'informatique fait son grand retour au lycée... |
||||
|
20
|
|
|
#11 |
|
Invité de passage
![]() Messaoud RouabhaÉtudiant Inscription : janvier 2012 Messages : 18 ![]() |
Merci Claude pour votre aide et votre, tu ma guider presque a la fin.
Merci Fabien s'est ce que je voudrai avoir exactement ... ça marche très bien. Bonne nuit à tous au revoir. |
|
|
00
|
|
|
#12 |
![]() ![]() Denis Développeur informatique Inscription : août 2004 Messages : 3 206 ![]() |
Bonjour,
Concernant l'amélioration sur le champ année, on peut essayer : Code :
Annee: VraiFaux(SérieDate(Année([DateCommande]);Mois(MinDom("DateCommande";"tblCommandes"));Jour(MinDom("DateCommande";"tblCommandes")))<=[DateCommande];Année([DateCommande])+1;Année([DateCommande])) Code :
Annee: -(SérieDate(Année([DateCommande]);Mois(MinDom("DateCommande";"tblCommandes"));Jour(MinDom("DateCommande";"tblCommandes")))<=[DateCommande])+Année([DateCommande])
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp. Bon développement ! Mes tutoriels et contributions sur ma page perso: Ma page personnelle |
|
10
|
|
|
#13 |
|
Invité de passage
![]() Messaoud RouabhaÉtudiant Inscription : janvier 2012 Messages : 18 ![]() |
Merci Denis je vais essayer et je te donne le résultats.
Mais j'ais besoin d'aide encore une fois: En ce qui concerne la solution du FABIEN, comment peut on éliminer ou exclure les dates qui n'ont pas encore une année complète c.à.d si la date système Date() est < 3/2/2012 ( dans l'exemple de Fabien ) nous devons éliminer les dates 07/02/2011 et 08/03/2011 ( c.à.d les commandes 11 et 12 ). |
|
|
00
|
|
|
#14 | ||
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 415 ![]() |
bonsoir,
j'ai essayé avec une fonction VBA à copier/coller dans un module. Code :
Code sql :
...WHERE [DateCommande]<DateMaxi(); à voir...
__________________
L'informatique fait son grand retour au lycée... |
||
|
00
|
|
|
#15 |
|
Invité de passage
![]() Messaoud RouabhaÉtudiant Inscription : janvier 2012 Messages : 18 ![]() |
Merci Claude ça fonctionne.
Merci Fabien pour vos solutions simples et efficaces, ça fonctionne très bien. J'ais besoin de vos aides sur le le problème du lien: http://www.developpez.net/forums/d11...ayer-commande/ Et merci d'avance. |
|
|
00
|
|
|
#16 |
|
Invité régulier
![]() Inscription : février 2012 Messages : 6 ![]() |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com