Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Calcul entre 2 enregistrements

4 réponses
Avatar
rg
Bonjour,

J'ai une table *tbl compteurs* avec lequelle je gere des Compteurs Horaires
d'engins
Les champs :
1 -codeEngin ( correspond au numéro de l'engin :Type numerique)
2 -DateReleve (la date du releve du compteur) type date)
3 -HC (Valeur du compteur horaire de l'engin)
numerique

Je veux calculer la difference entre 2 releves de chaque engin entre chaque
relevé

Ex:
CodeEngin DateReleve HC Hcalc (Champ
calcule)
1 31/12/03 100
1 31/01/04 120 20
1 28/02/04 160 40
2 31/12/03 200
2 31/01/04 350 150
2 28/02/04 600 250

La requete suivante ne marche pas pourquoi ? Je pense que cela vient du
champ *datereleve*

SELECT [tbl Compteurs].codeParcEngin, [tbl Compteurs].DateReleve, [tbl
Compteurs].HC, [HC]-nz(DMax("[HC]","[tbl Compteurs]","[codeEngin] =" &
[codeEngin] And "[DateReleve] <" & [DateReleve])) AS HCalc
FROM [tbl Compteurs]
ORDER BY [tbl Compteurs].codeEngin, [tbl Compteurs].DateReleve;

Si vous trouve mon erreur d'avance merci,

René

4 réponses

Avatar
Ilan
Bonjour,
puisque tes releves se font a chaque fin de mois fais la difference entre la
premiere
et la derniere valeur HC pour ces dates

essaie cette requete :
SELECT CodeEngin,Last(Date),Last(HC)-First(HC) FROM [Tbl compteurs] where
date>=#12/31/03# And Date<=#01/31/04# ;

ca devrait te donner la ligne
codeEngin Date HC
1 31/01/04 20
2 31/01/04 150


Bonjour,

J'ai une table *tbl compteurs* avec lequelle je gere des Compteurs Horaires
d'engins
Les champs :
1 -codeEngin ( correspond au numéro de l'engin :Type numerique)
2 -DateReleve (la date du releve du compteur) type date)
3 -HC (Valeur du compteur horaire de l'engin)
numerique

Je veux calculer la difference entre 2 releves de chaque engin entre chaque
relevé

Ex:
CodeEngin DateReleve HC Hcalc (Champ
calcule)
1 31/12/03 100
1 31/01/04 120 20
1 28/02/04 160 40
2 31/12/03 200
2 31/01/04 350 150
2 28/02/04 600 250

La requete suivante ne marche pas pourquoi ? Je pense que cela vient du
champ *datereleve*

SELECT [tbl Compteurs].codeParcEngin, [tbl Compteurs].DateReleve, [tbl
Compteurs].HC, [HC]-nz(DMax("[HC]","[tbl Compteurs]","[codeEngin] =" &
[codeEngin] And "[DateReleve] <" & [DateReleve])) AS HCalc
FROM [tbl Compteurs]
ORDER BY [tbl Compteurs].codeEngin, [tbl Compteurs].DateReleve;

Si vous trouve mon erreur d'avance merci,

René






Avatar
Bruno
Effectivement tu as un problème avec la date.
Tu avais aussi un petit souci avec la première ligne de chaque engin qui
doit rester à zéro. Tu peux résoudre ça en ajoutant [HC] dans le deuxième
argument de la fonction nz.

Essaie ça :

SELECT [tbl Compteurs].CodeParcEngin, [tbl Compteurs].DateReleve, [tbl
Compteurs].HC, [HC]-nz(DMax("[HC]","[tbl Compteurs]","[codeParcEngin] =" &
[codeParcEngin] & " and [DateReleve] <" & DateSQL([DateReleve])),[HC]) AS
HCalc
FROM [tbl Compteurs]
ORDER BY [tbl Compteurs].CodeParcEngin, [tbl Compteurs].DateReleve;

mais il faut que tu copie cette procédure dans un de tes modules
(ou que tu utilise directement : Format([DateReleve],
"""#""mm/dd/yyyy""#""") dans ton dlookup


Function DateSQL(varDate) As String
'---------------------------------------------------------------------------
-------
' Objet : Transforme une date en une chaine de caractères compatible avec le
format
' SQL "#mm/dd/yyyy#". A utiliser dans les constructions de
requêtes.
' Argument : varDate = date à convertir.
' Peut être une variable de type date (champ date par exemple) ou
une
' chaine représentant une date valide (mais dans ce cas au format
jj/mm/aa)
' Rem : La fonction renvoie la chaine vide "" si l'argument n'est pas
une date
' Ex : DateSQL("12/05/1994") renvoie "#05/12/1994#"
'---------------------------------------------------------------------------
--------
On Error GoTo Erreur
If IsDate(varDate) Then
DateSQL = Format(varDate, """#""mm/dd/yyyy""#""")
End If
Sortie:
Exit Function
Erreur:
'Call GestionError("DateSQL", varDate)
Debug.Print Err + "" + Error
Resume Sortie
End Function

@+ Bruno


"rg" a écrit dans le message de
news:%
Bonjour,

J'ai une table *tbl compteurs* avec lequelle je gere des Compteurs
Horaires

d'engins
Les champs :
1 -codeEngin ( correspond au numéro de l'engin :Type numerique)
2 -DateReleve (la date du releve du compteur) type date)
3 -HC (Valeur du compteur horaire de l'engin)
numerique

Je veux calculer la difference entre 2 releves de chaque engin entre
chaque

relevé

Ex:
CodeEngin DateReleve HC Hcalc (Champ
calcule)
1 31/12/03 100
1 31/01/04 120 20
1 28/02/04 160 40
2 31/12/03 200
2 31/01/04 350 150
2 28/02/04 600 250

La requete suivante ne marche pas pourquoi ? Je pense que cela vient du
champ *datereleve*

SELECT [tbl Compteurs].codeParcEngin, [tbl Compteurs].DateReleve, [tbl
Compteurs].HC, [HC]-nz(DMax("[HC]","[tbl Compteurs]","[codeEngin] =" &
[codeEngin] And "[DateReleve] <" & [DateReleve])) AS HCalc
FROM [tbl Compteurs]
ORDER BY [tbl Compteurs].codeEngin, [tbl Compteurs].DateReleve;

Si vous trouve mon erreur d'avance merci,

René





Avatar
3stone
Salut,

"rg"
[...]
Je veux calculer la difference entre 2 releves de chaque engin entre chaque
relevé

Ex:
CodeEngin DateReleve HC Hcalc (Champ
calcule)
1 31/12/03 100
1 31/01/04 120 20
1 28/02/04 160 40
2 31/12/03 200
2 31/01/04 350 150
2 28/02/04 600 250

La requete suivante ne marche pas pourquoi ? Je pense que cela vient du
champ *datereleve*



Comme ceci :

SELECT CodeEngin, DateReleve, HC,
Nz([HC])-DMax("HC","tblCompteurs","CodeEngin=" & [CodeEngin]
& " AND [DateReleve]<" & Format([DateReleve],"#mm-dd-yyyy#")) AS Hcalc
FROM tblCompteurs
ORDER BY CodeEngin, DateReleve;


--
A+
Pierre (3stone) Access MVP
~~~~~~~~~~~~~~~~~~~~~~~
http://users.skynet.be/mpfa
http://users.skynet.be/accesshome

Avatar
rg
Merci pour les réponses,

c'est OK pour ma requetes.

------------------------------
"3stone" a écrit dans le message de news:

Salut,

"rg"
[...]
Je veux calculer la difference entre 2 releves de chaque engin entre
chaque


relevé

Ex:
CodeEngin DateReleve HC Hcalc
(Champ


calcule)
1 31/12/03 100
1 31/01/04 120 20
1 28/02/04 160 40
2 31/12/03 200
2 31/01/04 350 150
2 28/02/04 600 250

La requete suivante ne marche pas pourquoi ? Je pense que cela vient du
champ *datereleve*



Comme ceci :

SELECT CodeEngin, DateReleve, HC,
Nz([HC])-DMax("HC","tblCompteurs","CodeEngin=" & [CodeEngin]
& " AND [DateReleve]<" & Format([DateReleve],"#mm-dd-yyyy#")) AS
Hcalc

FROM tblCompteurs
ORDER BY CodeEngin, DateReleve;


--
A+
Pierre (3stone) Access MVP
~~~~~~~~~~~~~~~~~~~~~~~
http://users.skynet.be/mpfa
http://users.skynet.be/accesshome