{Access} La date et le jour de la semaine
Burgerdash
-
burgerdash Messages postés 45 Date d'inscription Statut Membre Dernière intervention -
burgerdash Messages postés 45 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai déjà fait appel à votre aide dans ce thread (https://forums.commentcamarche.net/forum/affich-16037923-access-tri-de-doublons Ayant un peu progressé, je suis confronté à de nouveaux ennuis, et je me suis dit qu'il valait mieux créer une nouveau thread car le problème n'est pas le même. Aurais-je du poster à la suite ?
J'ai dans ma base de données Access 2003 un champ "Date" où je saisis une date dans le format jj/mm/aaaa, et où elle apparaît ensuite sous le format "Nomdujour jj mois aaaa". Par nom du jour, j'entends lundi, mardi, mercredi... Impeccable, j'ai justement besoin de savoir combien de clients sont venus des lundis, combien des mardis, combien des mercredis... Malheureusement, le nom du jour s'affiche à l'écran sans être utilisable par la base de données ! En effet, je ne peux classer mes données dans une requête que par ordre bêtement chronologique, mais non les rassembler par jour de la semaine. Je ne sais pas si je suis vraiment clair. Dans le doute, rien ne vaut un bon exemple. Voici ce que je saisis dans ma table :
Clients | Date d'achat
Client 1 | 07/01/10
Client 2 | 08/01/10
Client 3 | 14/01/10
Client 4 | 16/01/10
Client 5 | 16/01/10
Voici ce qui s'affiche quand mon curseur sort du champ "Date d'achat" :
Clients | Date d'achat
Client 1 | samedi 7 janvier 2010
Client 2 | dimanche 8 janvier 2010
Client 3 | samedi 14 janvier 2010
Client 4 | lundi 16 janvier 2010
Client 5 | lundi 16 janvier 2010
Voici le type d'infos que je souhaiterais obtenir :
Lundi : 2 clients
Mardi : 0 client
Mercredi : 0 client
Jeudi : 0 client
Vendredi : 0 client
Samedi : 2 clients
Dimanche : 1 client
(dans un joli graphique bien sûr, mais ça après je sais faire)
Voici ce que j'arrive actuellement à obtenir :
Janvier : 5 clients
OU
07/01/10 : 1 client
08/01/10 : 1 client
14/01/10 : 1 client
16/01/10 : 2 clients
J'ai tenté une vieille tactique de sioux consistant à ajouter un champ "jour semaine" en regard de la date, où je recopie simplement le nom du jour de la semaine qui est affiché à côté. Mais :
1. c'est fastidieux à l'usage
2. j'ai l'impression d'utiliser un marteau pour ouvrir un oeuf Kinder (il existe certainement une fonction permettant d'éviter ces tracas... Hein ?)
3. mes données se retrouvent classées par ordre alphabétique du jour (Dimanche, jeudi, lundi...), et c'est moche.
... Est-ce que quelqu'un pourrait m'aider ? :x
j'ai déjà fait appel à votre aide dans ce thread (https://forums.commentcamarche.net/forum/affich-16037923-access-tri-de-doublons Ayant un peu progressé, je suis confronté à de nouveaux ennuis, et je me suis dit qu'il valait mieux créer une nouveau thread car le problème n'est pas le même. Aurais-je du poster à la suite ?
J'ai dans ma base de données Access 2003 un champ "Date" où je saisis une date dans le format jj/mm/aaaa, et où elle apparaît ensuite sous le format "Nomdujour jj mois aaaa". Par nom du jour, j'entends lundi, mardi, mercredi... Impeccable, j'ai justement besoin de savoir combien de clients sont venus des lundis, combien des mardis, combien des mercredis... Malheureusement, le nom du jour s'affiche à l'écran sans être utilisable par la base de données ! En effet, je ne peux classer mes données dans une requête que par ordre bêtement chronologique, mais non les rassembler par jour de la semaine. Je ne sais pas si je suis vraiment clair. Dans le doute, rien ne vaut un bon exemple. Voici ce que je saisis dans ma table :
Clients | Date d'achat
Client 1 | 07/01/10
Client 2 | 08/01/10
Client 3 | 14/01/10
Client 4 | 16/01/10
Client 5 | 16/01/10
Voici ce qui s'affiche quand mon curseur sort du champ "Date d'achat" :
Clients | Date d'achat
Client 1 | samedi 7 janvier 2010
Client 2 | dimanche 8 janvier 2010
Client 3 | samedi 14 janvier 2010
Client 4 | lundi 16 janvier 2010
Client 5 | lundi 16 janvier 2010
Voici le type d'infos que je souhaiterais obtenir :
Lundi : 2 clients
Mardi : 0 client
Mercredi : 0 client
Jeudi : 0 client
Vendredi : 0 client
Samedi : 2 clients
Dimanche : 1 client
(dans un joli graphique bien sûr, mais ça après je sais faire)
Voici ce que j'arrive actuellement à obtenir :
Janvier : 5 clients
OU
07/01/10 : 1 client
08/01/10 : 1 client
14/01/10 : 1 client
16/01/10 : 2 clients
J'ai tenté une vieille tactique de sioux consistant à ajouter un champ "jour semaine" en regard de la date, où je recopie simplement le nom du jour de la semaine qui est affiché à côté. Mais :
1. c'est fastidieux à l'usage
2. j'ai l'impression d'utiliser un marteau pour ouvrir un oeuf Kinder (il existe certainement une fonction permettant d'éviter ces tracas... Hein ?)
3. mes données se retrouvent classées par ordre alphabétique du jour (Dimanche, jeudi, lundi...), et c'est moche.
... Est-ce que quelqu'un pourrait m'aider ? :x
32 réponses
La requete suivante fonctionne le seul probleme c le order by
SELECT Count(lundi.nom) AS total, Format(date,'dddd') AS Expr1
FROM lundi
GROUP BY Format(date,'dddd')
il y a bien une fonction
order by field(champ,'lun'....)mais marche pas sous sql access
SELECT Count(lundi.nom) AS total, Format(date,'dddd') AS Expr1
FROM lundi
GROUP BY Format(date,'dddd')
il y a bien une fonction
order by field(champ,'lun'....)mais marche pas sous sql access
blux
Messages postés
27130
Date d'inscription
Statut
Modérateur
Dernière intervention
3 361
Il suffit de rajouter un champ avec le jour de la semaine dans l'order by...
... Je veux bien faire des tests chez moi pour voir quelle solution est efficace ou non, mais je ne comprends rien à votre échange... :oops:
Que dois-je faire concrètement ?
Que dois-je faire concrètement ?
Je ne sais pas comment vous le dire autrement, mais je ne COMPRENDS PAS ces mots ! Je suis désolé, mais ça n'a pas de sens pour moi ! Je suis un utilisateur débutant, une information telle que "Order by datepart()" m'est complètement obscure, et je ne sais pas ce que je dois en faire. Où cliquer, que taper ?
Si vous ne voulez pas m'expliquer ce qui équivaut pour moi à un beau charabiah, je crains que toute communication ne soit impossible.
(je suis désolé si je peux sembler un peu rude, surtout sachant que vous m'apportez une aide tombée du ciel, mais je ne sais plus comment m'y prendre...)
Si vous ne voulez pas m'expliquer ce qui équivaut pour moi à un beau charabiah, je crains que toute communication ne soit impossible.
(je suis désolé si je peux sembler un peu rude, surtout sachant que vous m'apportez une aide tombée du ciel, mais je ne sais plus comment m'y prendre...)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
SELECT c'est ce que je mets dans Champ, FROM dans Table, GROUP BY dans Opération, et ORDER BY dans Tri ?
Ya pas de champ "Client" dans la table "Facture". Ya bien un "N° de carte de fidélité-acheteur" mais je sais pas trop ce que tu veux en faire. Certaines factures n'ont pas de N° de carte, car il s'agit de clients ponctuels.
...
Les mecs, je viens de faire la découverte du siècle. Microsoft, ces salauds, eh ben ils avaient planqué un petit bouton dans Access, qui permet tout simplement de passer en mode de programmation SQL linéaire :) Et pis quand tu cliques dessus, eh ben tu peux taper toutes les conneries que tu veux ! Et pis ça marche ! Et pis c'est pas trop tôt putain parce que d'un coup là je peux utiliser ce que vous me dites depuis trois plombes !
DONC ;
Effectivement il pige pas de quel champ "Client" je parle, dans la table Facture. Ni DateAchat ou dateachat, ça existe pas.
Ya pas de champ "Client" dans la table "Facture". Ya bien un "N° de carte de fidélité-acheteur" mais je sais pas trop ce que tu veux en faire. Certaines factures n'ont pas de N° de carte, car il s'agit de clients ponctuels.
...
Les mecs, je viens de faire la découverte du siècle. Microsoft, ces salauds, eh ben ils avaient planqué un petit bouton dans Access, qui permet tout simplement de passer en mode de programmation SQL linéaire :) Et pis quand tu cliques dessus, eh ben tu peux taper toutes les conneries que tu veux ! Et pis ça marche ! Et pis c'est pas trop tôt putain parce que d'un coup là je peux utiliser ce que vous me dites depuis trois plombes !
DONC ;
Effectivement il pige pas de quel champ "Client" je parle, dans la table Facture. Ni DateAchat ou dateachat, ça existe pas.
Hum d'accord, désolé. J'avais oublié que j'avais donné des noms de champs au pif. Chuis un peu trop sur les nerfs moi...
Donc ça donne ça :
Quand j'essaye d'enregistrer, il me dit que "Erreur de syntaxe (opérateur absent) dans l'expression " Count(Facture.N° facture) ".", et met en surbrillance le "facture" de "N° facture".
Donc ça donne ça :
SELECT Count(Facture.N° facture) AS [Nombre de clients], Format(Facture.Date,"dddd") AS Jour FROM Facture GROUP BY Facture.Date ORDER BY DatePart("w",Date);
Quand j'essaye d'enregistrer, il me dit que "Erreur de syntaxe (opérateur absent) dans l'expression " Count(Facture.N° facture) ".", et met en surbrillance le "facture" de "N° facture".
re
je rajouterais juste une petite close ds le order by:
SELECT Count(Facture.N° facture) AS [Nombre de clients], Format(Facture.Date,"dddd") AS Jour
FROM Facture
GROUP BY Facture.Date
ORDER BY DatePart("w",Date,'2');
Pour que le tri commence le lundi et non dimanche
je rajouterais juste une petite close ds le order by:
SELECT Count(Facture.N° facture) AS [Nombre de clients], Format(Facture.Date,"dddd") AS Jour
FROM Facture
GROUP BY Facture.Date
ORDER BY DatePart("w",Date,'2');
Pour que le tri commence le lundi et non dimanche
Salut les boyz. Depuis dimanche j'ai u eu accès à ma BDD, mais les affaires reprennent :) Là sous 2002, la requête ressemble à ça :
https://www.imagup.com
Le code utilisé est le suivant :
https://www.imagup.com
Le code utilisé est le suivant :
SELECT Count(Facture.[N° facture]) AS [Nombre de clients], Format(Facture.Date,"dddd") AS Jour FROM Facture GROUP BY Facture.Date ORDER BY DatePart("w",Date,'2');
Merci blux.
Au moment d'ouvrir la requête le message suivnt apparaît :
"Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée 'DataPart("w",Date'2')' comme une partie de la fonction d'agrégat."
Le code est maintenant le suivant:
Au moment d'ouvrir la requête le message suivnt apparaît :
"Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée 'DataPart("w",Date'2')' comme une partie de la fonction d'agrégat."
Le code est maintenant le suivant:
SELECT Count(Facture.[N° facture]) AS [Nombre de clients], Format(Facture.Date,"dddd") AS Jour FROM Facture GROUP BY Format(Facture.Date,"dddd") ORDER BY DatePart("w",Date,'2');