Problème avec le critère date dans une requête analyse croisé

Résolu/Fermé
Eric - 12 janv. 2021 à 18:44
 Eric - 18 janv. 2021 à 10:14
Bonjour à tous.
J’ai un problème avec ce code SQL qui me permet de voir la somme des entrées, des sorties et la somme vendue entre deux dates.
Le problème : si je saisi dans les critères la date du 11/1 au 12/1 il m’affiche uniquement celle du 11/1 (et les données de la date du 11 seulement) Mais si je saisi entre le 1/1 et le 31/12 là il m’affiche bien les date du 11/1 et du 12/1 et les données de deux dates
Mon souhait : qu’il m’affiche toutes les données concernées entre les deux dates du critère que je saisie.

Veuillez m’aider svp.

Mon code
PARAMETERS D1 DateTime, D2 DateTime;
TRANSFORM Sum(Mouvements.Qtecommande) AS SommeDeQtecommande
SELECT Mouvements.DateMov, produits.Designation, Sum(Mouvements.MONTANTTTC) AS SommeDeMONTANTTTC
FROM produits INNER JOIN Mouvements ON produits.IdProduit = Mouvements.IdProduit
WHERE (((Mouvements.DateMov) Between [D1] And [D2]))
GROUP BY Mouvements.DateMov, produits.Designation
PIVOT Mouvements.TypeMov;

3 réponses

Bonjour,
Excuse-moi si j'ai un peu oublié l'écriture des requêtes croisées en SQL et la fonction between.
Cela étant dit, as-tu essayé de voir ce qui se passait quand tu entres comme dates de sélection 11/01 et 13/01. Si elle te sort les enregistrements datés des 11 et 12, il suffira de rentrer dans ton critère de sélection ... Where ..... between [D1] and ([D2]+1)

Et puis, juste en passant: EVITE à tout prix de laisser des espaces dans les noms de tes variables et de tes objets; de tout en fait. Access n'aime pas ça du tout, et tu risques d'avoir des problèmes par la suite. En plus quand il n'y pas d'espace dans les noms, l'avantage est que tu n'as pas besoin de mettre des crochets. Par exemple, dans mes bases, je mets DesNomsAvecDesMajusculesAuMilieu, c'est aussi lisible pour nous, et la machine le prend comme un ensemble continu de caractères. Tu peux aussi utiliser le tiret bas "__"
Bonne soirée.
0
Merci beaucoup pour votre aide et vos conseils.
Si j'ajoute D2+1 ma requête fonctionne bien.
Mais j'ai quelques questions :
1. Alors si je veux les données juste pour une date ? Donc si je saisie D1= le 11/1 et D2=11/1 (là j'obtiens les dates du 11 et celle du 12)
2.Y a-t-il une autre solution que de faire D2+1?
3. Pourquoi ma requête ne fonctionne pas alors pour d'autres requêtes je n'ai pas besoin d'ajouter D2+1? Y-a-t-il une erreur dans ma façon de formuler ma requête ?
Merci d'avance.
0
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471 > Eric
13 janv. 2021 à 17:03
as-tu essayé
D2+1/2
?
0
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471 > yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024
13 janv. 2021 à 17:07
tu n'as précisé si ton champ DateMov contenait des dates ou bien des dates et heures.

moi je ferais
WHERE Mouvements.DateMov >= [D1] And Mouvements.DateMov < [D2]+1
0
Eric > yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024
18 janv. 2021 à 10:14
Merci beaucoup pour cette solution. Merci a tous
0
bonjour
analyse croisée, il faut 3 criteres
un champ ligne
un champ colonne
un champ somme
0
Bonjour,
@Eric : Désolé mais je n'ai pas de réponse à ta question. Pour autant, peu importe du moment que ça passe dans ce cas là. Pour les autres cas, il sera toujours temps de s'adapter. Quoiqu'il en soit, il n'y a rien de plus bête qu'un ordinateur, il suffit d'être plus malin que lui.
Bonne journée.
0