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

VBA Access Discussion :

Calcul d'écart de valeur entre chaque ligne d'un champ d'une requête


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2014
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Calcul d'écart de valeur entre chaque ligne d'un champ d'une requête
    Bonjour,

    Après plusieurs recherches infructueuse, je me tourne vers vous. J'avoue que je ne sais pas exactement quels termes chercher.

    J'ai une requête qui me renvoie plusieurs milliers de résultats, sous cette forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    OPERATEUR       Nom_operateur                 PIECE              INJ
    5               DUSS Jean Claude                 0000029739              17/10/2014 22:19:06
    5               DUSS Jean Claude                  0000029740              17/10/2014 22:19:07
    5               DUSS Jean Claude                  0000029741              17/10/2014 22:19:08
    6               BAZOOKA Fatal                 0000029742              17/10/2014 22:19:10
    6               BAZOOKA Fatal                 0000029743              17/10/2014 22:19:14
    6               BAZOOKA Fatal                 0000029744              17/10/2014 22:19:19
    12               PIKA Chu                          0000029745              17/10/2014 22:19:23
    Le but, c'est que, SI l'opérateur est le même, l'écart entre chaque date et heure (INJ), soit calculé, afin de pouvoir isoler les temps supérieurs ou inférieurs à certaines valeurs spécifiées par l'utilisateur.

    En gros, sous Excel cela donnerait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    OPERATEUR    Nom_operateur            PIECE            INJ            TPS
    5            DUSS Jean Claude    00000029739    22:19:06    
    5            DUSS Jean Claude    00000029740    22:19:07    0:00:01
    5            DUSS Jean Claude    00000029741    22:19:08    0:00:01
    6            BAZOOKA Fatal            00000029742    22:19:10    
    6            BAZOOKA Fatal            00000029743    22:19:14    0:00:04
    6            BAZOOKA Fatal            00000029744    22:19:19    0:00:05
    12            PIKA Chu                00000029745    22:19:23
    Je pourrais faire passer les données par Excel et rajouter le champs TPS à ce moment là, mais 2 chose m'ennuie :

    • entre 70k et 150k lignes par jour, notre Excel n'en gère que 65535 évidemment
    • je trouve la méthode un peu "dégueulasse"



    Merci pour vos éclaircissement, même une piste de recherche serait d'un grand secours.

  2. #2
    Membre éclairé Avatar de pyloupylou
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2012
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2012
    Messages : 438
    Points : 666
    Points
    666
    Par défaut
    tu as plusieurs solutions mais le plsu simple est de travailler par jointure :
    en fait tu as besoin de trouver l'enregistrement immédiatement inférieur à celui que tu es train de traiter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT  *, (select max(temps)  from table1 b where a.nom=b.nom and b.temps < a.temps ) AS temps_prec FROM Table1 AS a
    en fait le sous select placé dans la clause select de la requete principale va être évaluée à chaque fois, attention au temps de réponses si tu as une table importante

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2014
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    80000 lignes en moyenne, je vais tester cette solution. Les données étant figée, le calcul ne sera fait qu'une fois et les résultats stockés en dur dans une autre table.

    Merci pour la piste.

    De mon côté, je pensais à un array et une boucle pour chaque ligne. Tout ceci étant assez lointain dans mes souvenirs, je ne sais pas si du code pur serait plus rapide qu'une requête.

  4. #4
    Membre éclairé Avatar de pyloupylou
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2012
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2012
    Messages : 438
    Points : 666
    Points
    666
    Par défaut
    80 000 lignes, ça va être traité comme une lettre à la poste, n'oublie pas tes indexs

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/03/2015, 09h40
  2. calculer l'écart/l'intervalle entre plusieurs valeurs
    Par tjoce05 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 16/11/2013, 09h50
  3. UPDATE valeur incrémentée entre chaque ligne
    Par Ciseur dans le forum MySQL
    Réponses: 2
    Dernier message: 26/03/2010, 10h32
  4. Insérer un saut de ligne dans un champ d'une requête
    Par devdev dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 24/03/2009, 11h19
  5. [Tableaux] Tableau : ajouter une key+valeur a chaque ligne
    Par Joe Le Mort dans le forum Langage
    Réponses: 2
    Dernier message: 10/04/2007, 13h08

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