Utilisation fonction DCount

Résolu
J_AGRI Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
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,
A voir également:

7 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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.
0
J_AGRI Messages postés 42 Date d'inscription   Statut Membre Dernière intervention  
 
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 ?
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
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.
0
J_AGRI Messages postés 42 Date d'inscription   Statut Membre Dernière intervention  
 
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,
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
le but du DCOUNT n'est-il pas d'obtenir, pour chaque enregistrement de RGRAPH, le nombre d'enregistrements de la même culture, dont la date est antérieure où égale à cet enregistrement?

peux-tu préciser, quand tu montres des résultats, s'il s'agit du résultat complet, ou seulement d'une partie du résultat?
0
J_AGRI Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
J'obtiens bien le résultat souhaité avec cet écrit :
DCount("*","RGRAPH","CULTURE_NUM=" & [CULTURE_NUM] & " and Semaine<=""" & [Semaine] & """") AS Expr2
.
J'ai également rajouté le champs CROP.

J'aimerais faire une autre requête permettant d'associer les champs CROP et NUMERO de la précédente requête, avec une table FORECAST composé comme suit :

Simplement je n'arrive pas à lancer la requête; un message d'erreur s'affiche,


Voici le code SQL
SELECT RGRAPHnum.CROP, RGRAPHnum.CULTURE_NUM, RGRAPHnum.NUMERO
FROM FORECAST INNER JOIN RGRAPHnum ON (FORECAST.SemNum = RGRAPHnum.NUMERO) AND (FORECAST.CROP_NUM = RGRAPHnum.CROP)
GROUP BY RGRAPHnum.CROP, RGRAPHnum.CULTURE_NUM, RGRAPHnum.NUMERO;

J'ai essayé également en RIGHT et LEFT JOIN,
La relation entre NUMERO et SeNum pose problème

Je ne comprends pas pourquoi cela ne fonctionne pas.
Pourriez-vous m'éclairez ?
Cordialement,
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > J_AGRI Messages postés 42 Date d'inscription   Statut Membre Dernière intervention  
 
Je suppose que c'est soit
(FORECAST.SemNum = RGRAPHnum.NUMERO)
, soit
(FORECAST.CROP_NUM = RGRAPHnum.CROP)
qui pose problème.
Tu peux facilement le déterminer en testant.
Je suspecte que c'est CROP qui crée le problème, ne serait-il pas défini comme un champ dont la valeur est à choisir dans une liste?
0
J_AGRI Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
En testant, j'observe que si je ne fais que la liaison (FORECAST.CROP_NUM = RGRAPHnum.CROP), la requête s'affiche,
Mais lorsque je ne fais que la liaison (FORECAST.SemNum = RGRAPHnum.NUMERO), il est écrit "incohérence de type dans une expression;
Concernant la table Forecast, oui, CROP est défini dans un champs dont la valeur est à choisir dans une liste.
Mais je ne pense pas que CROP pose problème ici car il m'est possible de faire la relation.
0
J_AGRI Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   > J_AGRI Messages postés 42 Date d'inscription   Statut Membre Dernière intervention  
 
Je pense que au lieu de passer par DCount("*","RGRAPH","CULTURE_NUM=" & [CULTURE_NUM] & " and Semaine<=""" & [Semaine] & """") AS N,
Il faut que je passe par une fonction dans un module pour créer la relation.
Mais je n'arrive pas à transformer ce code SQL en fonction.
J'ai essayé de cette façon mais ça ne fonctionne pas :
Public Function Num(N1 As String, N2 As String) As Integer
Num = DCount("*", "RGRAPH", "CULTURE_NUM='" & N1 & " and Semaine<='""" & N2 & """")
End Function

Savez-vous comment puis-je transformer cette fonction pour qu'elle fonctionne ?
0
J_AGRI Messages postés 42 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
c'était ma suggestion en #1, inverser "=" et "<=".
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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.
0
J_AGRI Messages postés 42 Date d'inscription   Statut Membre Dernière intervention  
 
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,
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
Très bien, peux-tu alors marquer cette discussion comme résolue?
0