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.

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');
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?

J'ai ensuite adapté la macro donnée par f_leb pour obtenir l'enregistrement précédent dans ma requête:

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
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
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.