{Access} La date et le jour de la semaine
burgerdash Messages postés 47 Statut Membre -
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
Configuration: Windows XP Firefox 3.5.7
32 réponses
- 1
- 2
Un champ Date dans Access 2003 affiche le jour de la semaine sous forme de texte (par exemple 'samedi 7 janvier 2010'), ce qui empêche de regrouper les ventes par jour de la semaine dans une requête.
Plusieurs réponses suggèrent d’utiliser une fonction de formatage, par exemple Format(Date,'dddd'), pour obtenir le nom du jour et de regrouper ensuite les résultats par ce champ.
Des propositions montrent aussi d’ordonner par DatePart('w',Date,2) pour démarrer la semaine le lundi et d’utiliser GROUP BY Format(Date,'dddd') afin de compter les clients par jour.
Pour leur mise en œuvre, certains utilisent aussi des champs dérivés ou des requêtes respectant l’ordre souhaité, et une discussion expose les limites d’Access 2003 face à ces regroupements.
-
Salut,
regarde la fonction datepart, elle te permet d'extraire ce que tu veux d'une date...
-
bonjour
1° tu as bien fais d'ouvrir un new post a chaque poste son probleme
alors pr ton probleme tu veux la somme de toute les personne venu un lundi pour un mois ?
ou
toutes les personnes venu un lundi en particulier? -
Bonjour Burgerdash,
Voici la syntaxe pour obtenir la valeur littérale de <Champ_date> :
Jour littéral : Format([<Champ_date>];"\ dddd")
- A saisir dans 'champ' de l'interface graphique .
- Ceci, combiné avec un regroupement, vous permettra d'obtenir le résultat recherché.
Cordialement-
[Sorry pour le message au-dessus, manipulation foireuse... :x]
Blux, comment je "regarde la fonction datepart" ?
moiced59, en fait je veux avoir la somme de toutes les personnes venues un lundi depuis l'ouverture de ma base de données, pareil pour le mardi, le mercredi...
Jean-Jacques, je vais essayer ça tout de suite :) Merci pour votre aide.
-
-
La fonction datepart est accessible dans l'aide...
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Blux, j'ai créé une requête contenant le champ "Date" avec l'opération Regroupement et le critère "DatePart(sem, date, vbMonday)", et un champ "Nombre de factures créées" avec l'opération Compte. D'une part je pense que je dois mettre quelque chose à la place de "date", mais je ne comprends pas quoi, et d'autre part Access m'oppose le message d'erreur suivant qui m'empêche d'enregistrer la requête : "L'expression entrée comporte une fonction dont le nombre d'arguments n'est pas correct."
Jean_Jacques, dois-je 1. créer une nouvelle requête en mode création
2. écrire cette formule dans la case en haut à gauche
3. remplacer <champ_date> par le nom du champ contenant les dates de création de factures
4. choisir l'opération "Regroupement" ?
Car si je fais ça, Access me rétorque que je fais une erreur de syntaxe...-
-
burgerdash,
En effet, il faut remplacer <Champ_date> par le nom du champ qui contient l'information 'date'.
Je pensais cette convention connue ... Désolé.
Nota : Il faut copier l'intégralité de la ligne ci-dessous ! Et ce, quel que soit le mode, création ou modification ..
Jour littéral : Format([<Champ_date>];"\ dddd")
A+
-
-
Le top ca serais que tu creer un nouveau champ avec le nom du jour ex: jour et ensuite faire :
select count(client)
from ...
group by jour -
baah meme avec des relations ca ne posera pas de pb je trouve ca simple a appliquer et cela servira tjs
-
Blux je suis désolé mais je comprends pas tes explications. Apparemment dans mon cas, dans "DatePart(intervalle, date [, premierjoursem] [, premièresemainean] )" je dois remplacer "intervalle" par "sem" pour solliciter un jour de la semaine, et "premierjoursem" par "vbMonday" car je veux que Lundi soit le premier jour de la semaine. La première semaine de l'année je m'en fous, et ce critère est facultatif. Ensuite, voici ce que me dit l'aide à propos de "date" :
"Argument date obligatoire. Variant (Date) à évaluer."
Ça vous paraît clair, vous ? Je soupçonne Microsoft d'avoir écrit sa documentation de manière à ce que seuls ceux qui savent déjà se servir du programme comprennent ^^
Concrètement, je dois remplacer "date" par "Nomdelatable_Nomduchamp" à traiter ?
Ced, c'est ce que j'ai tenté au début mais ça obligeait à recopier le nom du jour alors qu'il est affiché dans le champ voisin ! C'est bête, je suis sûr qu'Access peut faire ça tout seul ! -
-
Moi non plus, je me suis emmêlé les pinceaux depuis le début... :-)
C'est bien format qu'il faut utiliser, comme le disait Jean-Jacques, avec une nuance : comme nous sommes en SQL, il faut la version anglaise :
SELECT format(champ_date,"dddd") FROM ...
pour la date d'aujourd'hui, ça renvoie samedi.
Désolé de vous avoir enduits avec de l'erreur :-(
-
-
Ced, ben c'est sur les conseils de blux que j'essaye de l'utiliser... Le but est d'obtenir dans une requête des données classées par période de la semaine sans avoir à modifier les données de la table (car j'ai besoin de la date complète pour d'autres requêtes, et je veux éviter la redondance d'informations du genre
Date | Jour
samedi 7 janvier 2010 | Samedi
(qui est chiante pour le type qui doit saisir les informations au jour le jour, et qui prend de la place sur le serveur)) -
Ah d'accord XD Merci Ced d'avoir insisté, et merci blux d'avoir persévéré.
Bon, donc je ponds une colonne Date | Facture | Regroupement | SELECT format(Date,"dddd") FROM ... dans ma requête ?
Réaction d'Access : "Cette expression comporte une sous-requête erronée. Placez la sous-requête entre parenthèses."
Suis-je supposé remplacer les dddd ou ... par quelque chose ? -
re
je comprend plus rien avec le format du champ tu va obtenir le jour la ok mais ca il la deja apparement? -
ah ok je croyais que ca date etait o format samedi 9 janvier 2010
-
Par contre j'ai testé mais le sql d'access ne supporte pas le Format
-
re
G rien dis ca marche j avais une reference manquante c pr ca que ca n'allais pas dsl!!! -
https://www.imagup.com
à gauche, mes données de test dans la table Facture (il y a d'autres champs mais je les ai masqués pour aller à l'essentiel) ; à droite, ce que je voudrais obtenir dans une requête, pour ensuite peut-être, dans un monde parfait, en tirer un joli graphique.
Le champ entouré en orange est celui que je suis en train d'éditer. Voilà comment j'entre les données, voici comment elles s'affichent. Oki ?
Le fichier a été créé sous 2003, mais là je suis sur 2007 pour le week-end. -
SELECT Count(lundi.nom) AS total, Format(date,'dddd') AS Expr1
FROM lundi
GROUP BY Format(date,'dddd')
tien cette requete fonctionne
adapte la a tes champ
le probleme c le order by !!!!! c trié par ordre alphabetique!!! -
Ced, je ne sais pas utiliser SQL. J'écris quoi où, dans l'outil graphique de création de requête ?
Merci des efforts que vous faites pour m'aider, j'espère pouvoir prochainement vous renvoyer l'ascenseur. -
donc ton champ date etait deja bien au format samedi 9 janvier 2009
-
Oui, mais en l'état je ne sais pas comment utiliser dans une requête ce "samedi" qui s'affiche. C'est là tout le trou du cul du problème, si vous me permettez.
- 1
- 2