{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
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?
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
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.
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.
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...
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+
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
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 !
"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 !
Je ne vois pas a quoi va te servir le datepart ?
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 :-(
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))
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 ?
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?
je comprend plus rien avec le format du champ tu va obtenir le jour la ok mais ca il la deja apparement?
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.
à 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!!!
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.
Merci des efforts que vous faites pour m'aider, j'espère pouvoir prochainement vous renvoyer l'ascenseur.