moyenne mobile
Le
Marc
bonsoir à tous
je cherche depuis longtemps a faire une moyenne mobile sur une table
tres simple
un champ date
un champ numerique
le but du jeu et de faire une moyenne de la date en court a j-2 ex
01/01/11 10 -
02/01/11 20 -
03/01/11 30 20
04/01/11 40 30
05/01/11 50 40
j'ai essayer de faire un moydom("[monchamp]";"matable";[madate] between
format((ajdate("d";-2;[date]);"dd/MM/YYYY") and
format([madate];;"dd/MM/YYYY")
mais la syntaxe n'est pas bonne merci bcp de votre aide & bonne soirée
M
je cherche depuis longtemps a faire une moyenne mobile sur une table
tres simple
un champ date
un champ numerique
le but du jeu et de faire une moyenne de la date en court a j-2 ex
01/01/11 10 -
02/01/11 20 -
03/01/11 30 20
04/01/11 40 30
05/01/11 50 40
j'ai essayer de faire un moydom("[monchamp]";"matable";[madate] between
format((ajdate("d";-2;[date]);"dd/MM/YYYY") and
format([madate];;"dd/MM/YYYY")
mais la syntaxe n'est pas bonne merci bcp de votre aide & bonne soirée
M

Poser une question


Bonjour Marc,
Je n'utilise pas les fonctions de domaines (trop lentes), mais peut-être
qu'il faut utiliser le format « #mm/dd/yyyy# » (avec les #) comme dans les
requêtes.
De plus, la condition "where" devrait certainement être construite autrement
: écrivez-là dans une requête et faîtes un copier/coller du code SQL
Cdt
Quelque chose comme
mydom("[MonChamp]";"[MaTable]";"[MaDate] between Date() -2 and Date()")
db
MERCI JE VAIS ESSAYER
bONJOUR Albéric
mon pb c'est que je ne voit pas comment faire avec une requete sans la
fonction moydom
Merci
Bonjour Marc, il faut éviter de répondre en privé dans un newsgroup.
En SQL Access, je ne vois pas trop comment lister une moyenne mobile. En
extraire une, oui, comme l'a montré db en utilisant la date du jour.
Personnellement j'utilise le VBA pour calculer une Température Moyenne
Équivalente (10% de J-2, 30% de J-1 et 60% de J0)
Mais ce n'est quand même pas une petite affaire.
J'y réflèchis, avec une réponse dans les heures qui viennent...
Cdt
Bonjour Marc,
Alors en prenant une table « Tbl_Pour_Moyenne_mobile » comme suit :
M_Date M_Valeur M_Mobile
1/10/2011 10
2/10/2011 20
3/10/2011 25
4/10/2011 30
5/10/2011 32
6/10/2011 27
7/10/2011 25
8/10/2011 20
Voici le code VBA permettant de mettre la moyenne mobile dans le champ
"M_Mobile"
«
Option Compare Database
Option Explicit
Sub Calcule_MM() 'Moyenne Mobile
'il faut référencer le dernier ActiveX data Object dans le VBA
Dim CN As ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim Rst_MM As New ADODB.Recordset
Dim sSql As String
Dim dDerMM As Date
Dim sD1 As String, sD2 As String
Set CN = CurrentProject.Connection
'on ouvre une requête pour tous les enregistrements dont la moyenne
mobile n'a pas été calculée
sSql = "SELECT Tbl_Pour_Moyenne_mobile.M_Date,
Tbl_Pour_Moyenne_mobile.M_Valeur, Tbl_Pour_Moyenne_mobile.M_Mobile" _
& " FROM Tbl_Pour_Moyenne_mobile" _
& " WHERE (((Tbl_Pour_Moyenne_mobile.M_Mobile) Is Null))" _
& " ORDER BY Tbl_Pour_Moyenne_mobile.M_Date;"
Rst.Open sSql, CN, adOpenDynamic, adLockPessimistic 'mode permettant
la modification
If Not Rst.EOF Then
Rst.MoveFirst
Do
'la dernière date sans moyenne
dDerMM = Rst("M_Date")
'formatée SQL ACCESS
sD2 = "#" & Format(dDerMM, "mm/dd/yyyy") & "#"
'formatage SQL ACCESS de la date min pour la moyenne mobile (
ici -2)
sD1 = "#" & Format(dDerMM - 2, "mm/dd/yyyy") & "#"
'construction de la requête
sSql = "SELECT Avg(Tbl_Pour_Moyenne_mobile.M_Valeur) AS MM" _
& " FROM Tbl_Pour_Moyenne_mobile" _
& " WHERE Tbl_Pour_Moyenne_mobile.M_Date Between " & sD1 &
" And " & sD2 _
& ";"
Rst_MM.Open sSql, CN, adOpenStatic
Rst("M_Mobile") = Rst_MM("MM")
Rst.Update
Rst_MM.Close
Rst.MoveNext
Loop Until Rst.EOF
Rst.Close
End If
MsgBox "fini"
End Sub
»
Résultat :
M_Date M_Valeur M_Mobile
1/10/2011 10 10
2/10/2011 20 15
3/10/2011 25 18,33333
4/10/2011 30 25
5/10/2011 32 29
6/10/2011 27 29,66667
7/10/2011 25 28
8/10/2011 20 24