OVH Cloud OVH Cloud

calcul sur la derniere ligne

7 réponses
Avatar
Géo
Bonjour,

j'ai un petit probleme, surement pas grand chose mais ...

dans une base j'ai :

Date compteur
1.11.2004 10
2.11.2004 12
3.11.2004 18
4.11.2004 25
etc ....

comment trouver par SQL la difference :
Date compteur difference
1.11.2004 10 10
2.11.2004 12 2
3.11.2004 18 6
4.11.2004 25 7
etc ....

Le premier compteur n'est pas trop important je peux le gerer autrement
si cela pose probleme de ne pas avoir de date avant le 1.11.2004, par
contre le joint entre les mois doit etre fait :

31.12.2004 20 4
1.1.2005 25 5

Vous avez une idee ?

Amicalement

Géo

7 réponses

Avatar
Raymond [mvp]
Bonsoir.

à mon avis, le plus simple serait de passer par un fonction public que tu
appelles à chaque enregistrement en passant la date en paramètres; la
fonction faisaint la différence des jours et renvoyant le nombre de jours
écoulés.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Géo" a écrit dans le message de news:

Bonjour,

j'ai un petit probleme, surement pas grand chose mais ...

dans une base j'ai :

Date compteur
1.11.2004 10
2.11.2004 12
3.11.2004 18
4.11.2004 25
etc ....

comment trouver par SQL la difference :
Date compteur difference
1.11.2004 10 10
2.11.2004 12 2
3.11.2004 18 6
4.11.2004 25 7
etc ....

Le premier compteur n'est pas trop important je peux le gerer autrement si
cela pose probleme de ne pas avoir de date avant le 1.11.2004, par contre
le joint entre les mois doit etre fait :

31.12.2004 20 4
1.1.2005 25 5

Vous avez une idee ?

Amicalement

Géo



Avatar
3stone
Salut,

"Géo"
dans une base j'ai :

Date compteur
1.11.2004 10
2.11.2004 12
3.11.2004 18
4.11.2004 25
etc ....

comment trouver par SQL la difference :
Date compteur difference
1.11.2004 10 10
2.11.2004 12 2
3.11.2004 18 6
4.11.2004 25 7
etc ....



SELECT LaDate,
Compteur,
[Compteur]-Nz(DMax("Compteur","LaTable","[Compteur]<" & [Compteur]),0) AS Diff

FROM LaTable

ORDER BY LaDate;


que tu peux saisir directement comme code SQL.

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

Avatar
bjf
Salut 3stones
Juste une question. Que se passe-t-il si compteur a les
valeurs suivantes:
12
18
25
20
23
..
etc
donc pas forcément en ordre croissant?
a+
BJF

-----Message d'origine-----
Salut,

"Géo"
dans une base j'ai :

Date compteur
1.11.2004 10
2.11.2004 12
3.11.2004 18
4.11.2004 25
etc ....

comment trouver par SQL la difference :
Date compteur difference
1.11.2004 10 10
2.11.2004 12 2
3.11.2004 18 6
4.11.2004 25 7
etc ....



SELECT LaDate,
Compteur,
[Compteur]-Nz(DMax
("Compteur","LaTable","[Compteur]<" & [Compteur]),0) AS

Diff

FROM LaTable

ORDER BY LaDate;


que tu peux saisir directement comme code SQL.

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



.




Avatar
Géo
bjf a écrit:
Salut 3stones
Juste une question. Que se passe-t-il si compteur a les
valeurs suivantes:
12
18
25
20
23
..
etc
donc pas forcément en ordre croissant?
a+
BJF


-----Message d'origine-----
Salut,



Bon , ce n'est pas trop grave, par definition un compteur s'incremente
toujours ...

Par contre (c'est compteur manuel) il revient a 0 apres un tour
complet. Mais ça je le gere au moment de l'insertion des valeurs.

je vais tester le code de 3Stone ... ça se prononce comment ? :-)

merci !

Géo


Avatar
3stone
Salut,

"bjf"
Juste une question. Que se passe-t-il si compteur a les
valeurs suivantes:
12
18
25
20
23
..
etc
donc pas forcément en ordre croissant?
-------------------------------------------------


Et cela donnerait des résultats négatifs ?

Mais, dans le "DMax" tu peux également utiliser une clause "Where"
sur la date au lieu de la mettre sur le [compteur]...

Ce qui ferait:

SELECT LaDate,
Compteur,
[Compteur]-Nz(DMax("[Compteur]","LaTable","[LaDate]<" &
Format([LaDate],"#mm-dd-yyyy#")),0) AS Diff

FROM LaTable

ORDER BY LaTable.LaDate;

mais dans ce cas, ce sont les dates qui doivent être "unique"... (pas de doublons)
Si tel n'est pas le cas, il manque un "NumAuto" dans la table pour "trier" dessus!


Cependant, vu la progression des valeurs données par Géo
la solution proposée précédemment convient.


--
A+
Pierre (3stone) Access MVP
~~~~~~~~~~~~~~~~~~~~~~~
http://users.skynet.be/mpfa
http://users.skynet.be/accesshome
Avatar
bjf
Re 3stones
Cette deuxième version me plaît beaucoup plus que la
première car elle calcule l'écart de valeur par rapport à
la valeur précédente et non plus par rapport à la valeur
la plus grande de la table.
Dans tous les cas merci pour cette réponse car c'est un
problème que j'avais à résoudre!!!
BJF

-----Message d'origine-----
Salut,

"bjf"
Juste une question. Que se passe-t-il si compteur a les
valeurs suivantes:
12
18
25
20
23
...
etc
donc pas forcément en ordre croissant?
-------------------------------------------------


Et cela donnerait des résultats négatifs ?

Mais, dans le "DMax" tu peux également utiliser une
clause "Where"

sur la date au lieu de la mettre sur le [compteur]...

Ce qui ferait:

SELECT LaDate,
Compteur,
[Compteur]-Nz(DMax
("[Compteur]","LaTable","[LaDate]<" &

Format([LaDate],"#mm-dd-yyyy#")),0) AS Diff

FROM LaTable

ORDER BY LaTable.LaDate;

mais dans ce cas, ce sont les dates qui doivent
être "unique"... (pas de doublons)

Si tel n'est pas le cas, il manque un "NumAuto" dans la
table pour "trier" dessus!



Cependant, vu la progression des valeurs données par Géo
la solution proposée précédemment convient.


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




.



Avatar
Géo
que dire d'autre que ... merci beaucoup !!

Géo