Bonjour,
Je me tourne à nouveau vers vous car j'ai un problème de requête.
Pour reprendre mon message précédent, j'ai deux tables
Station(idStation,NomStation) et
Relever(idStation, DateReleve, Chlore, Index)
Je souhaite calculer la différence entre les index de la première semaine de chaque mois.
J'ai fait une requête de synthèse qui calcule la valeur minimale de chaque mois à l'aide de l'assistant ACCESS.
Au passage, est-ce que cette valeur "Year(Relever.DateReleve)*12+DatePart('m',Relever.DateReleve)-1" est vraiment utile puisque le regroupement se fait déjà sur les deux autres paramètres?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT DISTINCTROW Relever.idStation, Format$(Relever.DateReleve,'mm/yyyy') AS DateMois, Min(Relever.Index) AS MinIndex FROM Relever GROUP BY Relever.idStation, Format$(Relever.DateReleve,'mm/yyyy'), Year(Relever.DateReleve)*12+DatePart('m',Relever.DateReleve)-1 ORDER BY Relever.idStation, Format$(Relever.DateReleve,'mm/yyyy');
J'ai ensuite adapté la macro donnée par f_leb pour obtenir l'enregistrement précédent dans ma requête:
Puis j'ai crée une requête qui doit me calculer la différence entre mes deux dates:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Public Function IndMensP(NumStation As Long, DateActuelle As Date) As Double Dim db As DAO.Database Dim rst As DAO.Recordset Dim strSQL As String Set db = CurrentDb strSQL = "SELECT TOP 1 MinIndexMois.[MinIndex] AS mini FROM MinIndexMois " & _ "WHERE (MinIndexMois.[MinIndex] Is Not Null And MinIndexMois.DateMois < #" & Format(DateActuelle, "mm/dd/yyyy") & _ "# AND MinIndexMois.idStation =" & NumStation & ")" & _ " ORDER BY MinIndexMois.DateMois DESC;" Set rst = db.OpenRecordset(strSQL) If Not rst.EOF Then IndMensP = rst!mini End Function
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT MinIndexMois.idStation, Format$([MinIndexMois].[DateMois],'dd/mm/yyyy') AS DateMois, MinIndexMois.MinIndex, IIf(IndMensP([idStation],([DateMois]))=0,Null,[MinIndex]-IndMensP([idStation],([DateMois]))) AS consoM FROM MinIndexMois ORDER BY MinIndexMois.idStation, MinIndexMois.DateMois;
Et là je bloque car la macro attend une valeur de la forme dd/mm/yyyy et ma requête lui renvoie des valeurs de type mm/yyyy.
Je ne sais pas comment modifier cela.
Est-ce que quelqu'un pourrait me donner une indication? Merci d'avance.
Partager