Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/12/2010, 17h48   #1
Invité de passage
 
Inscription : janvier 2008
Messages : 5
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 5
Points : 0
Points : 0
Par défaut Calcul entre valeurs successives du même champ

Bonjour,

Pour un contrôle de consommation chaudière j'ai un champ [date du relevé compteur] et un champ [relevé du compteur]

Dans la requête je souhaite "simplement" calculer le nombre de jours écoulés entre deux relevés, afin de calculer la consommation journalière entre deux relevés. Je souhaite également calculer la différence entre les deux relevés du compteur. Le calcul se faisant sur le même champs, je ne trouve pas l'expression permettant ces deux calculs.
Avez vous une solution pour créer ces 2 colonnes calculées dans la requête ?
Merci de votre aide
ClairMatin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 23h39   #2
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
Bonjour,

Ta requête n'est pas aussi "simple" que tu le penses.

Il y a 2 manières de faire ton calcul :

1ere méthode :
Faire une pseudo-jointure sur ta table (en fait utiliser 2 fois le même table).
Le problème est que tu n'aura pas de clé de jointure (c'est à dire 2 champs où tu auras la même valeur...

2ème méthode:Coder en VBA la requête en accédant par DAO, et naviguer dans le recordset.
Avantage :
tu peux récupérer les valeurs que tu souhaites et effectuer tous les calculs possibles sur ces 2 enregistrements.
Inconvénient :
nécessite une connaissance de base de la méthodologie DAO.

Pour te familiariser avec la méthode DAO, regarde ce tuto

En tout état de cause, il te faudra bien identifier tes enregistrements pour récupérer les valeurs, que ce soit 'enrgistrement immédiatement à la suite/précédent, ou le n-ième enregistrement avant/après

mp3 free download
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 11h40   #3
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 407
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 407
Points : 4 434
Points : 4 434
bonjour,

c'est vrai que c'est pas aussi simple...

je viens de retrouver un problème similaire:
http://www.developpez.net/forums/d85...s/#post4915370
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2010, 10h19   #4
Invité de passage
 
Inscription : janvier 2008
Messages : 5
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 5
Points : 0
Points : 0
Merci beaucoup à vous deux. Je vais essayer cela aujourd'hui.
ClairMatin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2010, 11h57   #5
Invité de passage
 
Inscription : janvier 2008
Messages : 5
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 5
Points : 0
Points : 0
Je n'y suis pas parvenu avec la table à double, mais c'est mon problème, faut que je persiste...

Je suis parvenu à un résultat satisfaisant en passant par un formulaire incluant deux requêtes et des champs calculés.

ça suffit à mes besoins pour le moment

Merci encore
ClairMatin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 14h28   #6
Membre Expert
 
Inscription : avril 2006
Messages : 1 050
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 1 050
Points : 1 230
Points : 1 230
Bonjour,

Pour chaque relevé, le relevé précédent correspond au relevé ayant la date la plus récente parmi les relevés ayant une date antérieure. Soit la date la plus grande parmi les dates inférieures à celle du relevé.

Pour l'exemple j'appelle la table Releves
Code sql :
1
2
3
4
SELECT A.[date du releve], A.[Releve compteur], B.[date du releve] AS [Date dernier relevé] , DateDiff("d",Nz(B.[Date du releve],A.[Date du releve]),A.[Date du Releve]) AS [Nb jours], (A.[Releve compteur]-Nz(B.[Releve Compteur],A.[Releve Compteur]))/DateDiff("d",Nz(B.[Date du releve],A.[Date du Releve]-1),A.[Date du Releve]) AS [Moyenne quotidienne]
FROM Releves AS A LEFT JOIN Releves AS B ON B.[Date du releve]<A.[Date du Releve]
WHERE B.[Date du Releve] IS NULL
 OR B.[Date du Releve]=(SELECT MAX([Date du Releve]) FROM Releves WHERE [Date du Releve]<A.[Date du releve]);
ilank est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h51.


 
 
 
 
Partenaires

Hébergement Web