Utilisation fonction DCount [Résolu]

Signaler
Messages postés
42
Date d'inscription
jeudi 24 juin 2021
Statut
Membre
Dernière intervention
9 juillet 2021
-
Messages postés
16443
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 juillet 2021
-
Bonjour,

Je dispose d'une requête (RGRPAH_NUM) basée sur une autre requête (RGRAPH).
La requête RGRAPH_NUM est composé comme suit : Semaine (affichant les semaines) et CULTURE_NUM (affichant le numéroauto d'une table CULTURE)
J'aimerai insérer une troisième colonne N, affichant un numéroAuto qui redémarre à 1 dès que le CULTURE_NUM change.

Voici le code SQL que j'ai réalisé,
SELECT RGRAPH.Semaine, RGRAPH.CULTURE_NUM, DCount("*","RGRAPH","RGRAPH.Semaine=""" & [RGRAPH.Semaine] & """ and RGRAPH.CULTURE_NUM<=" & [RGRAPH.CULTURE_NUM]) AS N
FROM RGRAPH;

et voici le résultat obtenu


Voici le résultat voulu :


Comme vous le constatez, ma fonction DCOUNT est à revoir...

Quelqu'un aurait-il l'amabilité de pouvoir m'aider ?
Je vous souhaite une bonne journée,
Cordialement,

7 réponses

Messages postés
16443
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 juillet 2021
880
bonjour,
il me semble que, dans le critère du DCOUNT, tu dois employer une inégalité à la place de l'égalité, et vice-versa.
Messages postés
42
Date d'inscription
jeudi 24 juin 2021
Statut
Membre
Dernière intervention
9 juillet 2021

Bonjour,
Je vous remercie,
Je n'y avait pas pensé;
Cependant les résultats ne s'affichent toujours pas de la façon souhaitée...
Le numéro 1 change en un autre chiffre maintenu quand le numéro de culture est le même.
J'ignore quel est le problème
Voici un exemple de résultats :


Auriez-vous une autre solution ou conseils ?
Messages postés
16443
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 juillet 2021
880
je n'ai aucun conseil, n'ayant pas vu la requête modifiée.

il sera peut-être également utile de montrer la source et le résultat de la requête RGRAPH.
également, de préciser si tu montres les résultats complets, ou seulement une partie du résultat.
Messages postés
42
Date d'inscription
jeudi 24 juin 2021
Statut
Membre
Dernière intervention
9 juillet 2021

Bonjour,
Je vous remercie;
Voici la requête en mode SQL :
SELECT RGRAPH.Semaine, RGRAPH.CULTURE_NUM, DCount("*","RGRAPH","RGRAPH.Semaine<>""" & [RGRAPH.Semaine] & """ and RGRAPH.CULTURE_NUM<>" & [RGRAPH.CULTURE_NUM]) AS N
FROM RGRAPH
j'ai essayé toute les combinaisons avec (>/<>/<= et >=)

La requête RGRAPH est basée sur deux tables CULTURE et PRODUCTION;
La table CULTURE est composée des champs CROP (espèce cultivée), VARIETY (la variété)
Une culture se définie par CULTURE_NUM, le numéroAuto de la table. La table PRODUCTION renvoie à la production d'une culture. Il y a ainsi plusieurs lignes de productions par numéro de culture.
La table PRODUCTION contient des dates de ventes [DATES] et le nombre de kg vendus KGS_SOLD
Voici le mode SQL de la requête RGRAPH :
SELECT CULTURE.CROP, CULTURE.VARIETY, CULTURE.CULTURE_NUM, AnSem([DATES]) AS Semaine, Sum(PRODUCTION.KGS_SOLD) AS SommeDeKGS_SOLD
FROM CULTURE INNER JOIN PRODUCTION ON CULTURE.CULTURE_NUM = PRODUCTION.CULTURE_NUM
GROUP BY CULTURE.CROP, CULTURE.VARIETY, CULTURE.CULTURE_NUM, AnSem([DATES])
HAVING (((CULTURE.CROP)=[Formulaires]![GRAPH]![LISTE]) AND ((CULTURE.VARIETY)=[Formulaires]![GRAPH]![ListeVariety]))
ORDER BY CULTURE.CULTURE_NUM, AnSem([DATES]);

AnSemaine est une fonction permettant de convertir les dates en numéro de semaines,
le formulaire GRAPH contient deux listes de choix (CROP et VARIETY) permettant de mettre en place la requête RGRAPH,




Dites moi si vous voulez que je précise d'autres points,

En vous remerciant,
Messages postés
42
Date d'inscription
jeudi 24 juin 2021
Statut
Membre
Dernière intervention
9 juillet 2021
>
Messages postés
16443
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 juillet 2021

Les deux captures d'écrans précédentes, affichant des graphiques issus du formulaire GRAPHIQ, ils sont réalisés avec la table WeeksProdFore,
Pour le moment la requête WeeksProdFore ne tient compte que d'une seule culture, de ce fait il n'y pas de problème, à proprement parler puisqu'elle n'affiche qu'une seule série de valeurs de prédictions.
Je ne sais pas si je dois créer un code faisant disparaître les valeurs de prédictions ou autre pour les cultures passées.
Messages postés
16443
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 juillet 2021
880 >
Messages postés
42
Date d'inscription
jeudi 24 juin 2021
Statut
Membre
Dernière intervention
9 juillet 2021

tu écris, pour RGRAPHforecast: "la relation entre la table forecast et RGRAPHnum ne fonctionne que en INNER JOIN".
qu'est-ce que cela signifie?
qu'as-tu essayé d'autre?
qu'as-tu obtenu?
Messages postés
42
Date d'inscription
jeudi 24 juin 2021
Statut
Membre
Dernière intervention
9 juillet 2021
>
Messages postés
16443
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 juillet 2021

Dans le document envoyé #35, lorsque je suis vos recommandations #27 de remplacer dans la requête RGRPAHforecast INNER JOIN par LEFT ou RIGHT JOIN afin de mettre tous les enregistrement de la table FORECAST en relation avec la requête RGRAPHnum, un message apparait "expression JOIN non supportée"
Messages postés
16443
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 juillet 2021
880 >
Messages postés
42
Date d'inscription
jeudi 24 juin 2021
Statut
Membre
Dernière intervention
9 juillet 2021

Pour éviter ce genre d'erreur, il est préférable de n'utiliser que deux sources (table ou requête) dans une requête ayant un OUTER (LEFT ou RIGHT) JOIN.
Je prépare une suggestion pour réaliser cela.
Messages postés
42
Date d'inscription
jeudi 24 juin 2021
Statut
Membre
Dernière intervention
9 juillet 2021
>
Messages postés
16443
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 juillet 2021

Je vous remercie chaleureusement
Messages postés
42
Date d'inscription
jeudi 24 juin 2021
Statut
Membre
Dernière intervention
9 juillet 2021

J'ai l'impression que cela fonctionne si je procède de cette façon (inverser culture et semaine) :

DCount("*","RGRAPH","CULTURE_NUM=" & [CULTURE_NUM] & " and Semaine<=""" & [Semaine] & """") AS Expr2
Messages postés
16443
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 juillet 2021
880
c'était ma suggestion en #1, inverser "=" et "<=".
Messages postés
16443
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 juillet 2021
880
Tu as en fait trois types d'information que tu veux rassembler:
- des informations "permanentes", qui ne varient pas dans le temps
- des informations variables liées à la production, liées à des dates
- des informations variables liées aux prévisions, liées à des dates

Tes requêtes mélangent cela dans tous les sens, sont inutilement compliquées et embrouillées.

La requête RGRAPHnum me semble aller dans la bonne direction, elle fournit des informations de production, avec le minimum d'informations permanentes nécessaires.

Je suggère de construire une requête similaire, qui fournira des informations de prévision, avec les informations permanentes nécessaires. Appelons la FORECAST_perminfo.

La requête de base pour les graphes sera FROM FORECAST_perminfo LEFT JOIN RGRAPHnum.
Messages postés
16443
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 juillet 2021
880
En ce qui concerne les noms de semaine qui manquent dans les données de prévision, je suggère, d'abord, d'utiliser une date (celle du lundi) pour représenter les semaines. Cela sera beaucoup plus rapide et également plus simple pour associer une semaine aux prévisions. Ce qui n'empeche pas, si souhaité, d'utiliser la représentation "2021 s5" dans les graphes (en utilisant AnSem() dans une dernière requête).
Donc, de remplacer, dans la requête RGRAPH
AnSem([DATES])

par
int(dates) - weekday(dates,2) +1


Ensuite, créer une requête similaire à WeekMin, qui fournit le premier lundi de chaque culture.

Pour obtenir finalement la date associée à chaque semaine de prévision, il suffit de calculer
premierlundi + 7*(numerosemaine-1)
.

Cela permettra aussi d'éliminer wnum() et le dcount(), qui ralentissent le travail.
Messages postés
42
Date d'inscription
jeudi 24 juin 2021
Statut
Membre
Dernière intervention
9 juillet 2021

Bonjour,

Je vous remercie de tout coeur pour votre aide,
J'essaie de mettre cela en place,
Je vous tiendrais au courant et si vous le permettez, vous demanderais de nouveau conseils,

Cordialement,
Messages postés
16443
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 juillet 2021
880
Très bien, peux-tu alors marquer cette discussion comme résolue?