IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Calcul entre valeurs successives du même champ


Sujet :

Requêtes et SQL.

  1. #1
    Candidat au Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Points : 3
    Points
    3
    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

  2. #2
    Membre éclairé Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 598
    Points : 879
    Points
    879
    Par défaut
    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
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!
    si tout est OK, n'oubliez pas de cliquer sur

  3. #3
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 695
    Points : 57 248
    Points
    57 248
    Billets dans le blog
    41
    Par défaut
    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

  4. #4
    Candidat au Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup à vous deux. Je vais essayer cela aujourd'hui.

  5. #5
    Candidat au Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    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

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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]);

Discussions similaires

  1. [XL-2010] TCD champ calculé entre plusieurs valeurs d'un même champ
    Par Denis_67 dans le forum Excel
    Réponses: 6
    Dernier message: 27/05/2014, 10h35
  2. [AC-2007] Relation pls-à-pls entre valeurs d'un même champ d'une même table
    Par Capucapu dans le forum Access
    Réponses: 1
    Dernier message: 06/01/2012, 12h25
  3. [Toutes versions] Requête - calcul de délai entre deux valeurs d'un même champ
    Par remi59 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 05/02/2010, 11h53
  4. Réponses: 4
    Dernier message: 29/06/2009, 09h22
  5. Plusieurs valeurs pour un même champ
    Par will89 dans le forum Requêtes
    Réponses: 32
    Dernier message: 14/06/2006, 10h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo