Ecart enregistrement précédent

Résolu/Fermé
Ollam Messages postés 77 Date d'inscription jeudi 18 avril 2013 Statut Membre Dernière intervention 15 août 2022 - 19 nov. 2021 à 18:01
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 - 15 déc. 2021 à 17:24
Bonjour,

Je voudrais dans une requête pouvoir récupérer l'écart avec l'enregistrement précédent:
Exemple:

Longueur: 150
Longueur: 100
Longueur: 80

Je voudrais pouvoir afficher dans un second champ l'écart:
Longueur: 150 | Ecart: (vide ou zéro)
Longueur: 100 | Ecart: -50
Longueur: 80 | Ecart: -20

Je suis sous Access 2007/2016

En vous remerciant par avance

Configuration: Windows / Chrome 96.0.4664.45
A voir également:

8 réponses

yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
19 nov. 2021 à 19:19
bonjour,
comment détermines-tu le précédent? as-tu un champ qui peut servir à les trier?
0
Ollam Messages postés 77 Date d'inscription jeudi 18 avril 2013 Statut Membre Dernière intervention 15 août 2022
19 nov. 2021 à 21:59
Bonsoir,

EN fait la table à trois champs:
ID_longueur (numéro Auto)
date_suivi
longueur

Concernant le tri, chaque nouvelle ligne sera affiché dans l'ordre ou elle se présente.
Le but étant de montrer une évolution, une tendance
Donc la dernière ligne enregistrée, sera aussi la dernière affichée

Donc pour répondre à ta question, il est possible de déterminer le champ précédent sur l'ID qui affiche un numéro qui s'incrément automatiquement
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
19 nov. 2021 à 23:00
Quelles sont tes connaissances en SQL?
Dans quel contexte fais-tu ce travail?
0
Ollam Messages postés 77 Date d'inscription jeudi 18 avril 2013 Statut Membre Dernière intervention 15 août 2022
19 nov. 2021 à 23:25
La réponse est plutôt simple concernant mes connaissance en SQL, entre -1 et 0 !!!!
J'ai développé plusieurs bds sur Access, mais toujours très simple comme une encyclopédie sur les gemmes, ou encore sur la bourse.
Mes développements ne sont que pour moi, c'est juste un travail perso qui le sert aussi à apprendre.
Voilà pour le conteste
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
20 nov. 2021 à 14:11
Partant d'une table nommée lgtb avec deux champs, ID, et lg, je suggère ceci:
créer une requête nommée lgqprevid:
SELECT t1.ID, t1.lg, max(t2.ID) AS previd
FROM lgtb AS t1 LEFT JOIN lgtb AS t2 ON t2.ID < t1.ID
GROUP BY t1.ID, t1.lg;

ensuite, la requête suivante donne, je pense, le résultat attendu:
SELECT q.lg as lg, q.lg - t.lg as ecart
FROM  lgqprevid as q left JOIN  lgtb as t ON t.ID = q.previd;


Il est possible de faire cela en une seule requête, mais c'est beaucoup moins clair:
SELECT q.lg AS lg, q.lg - t.lg AS ecart
FROM (SELECT t1.ID, t1.lg, max(t2.ID) AS previd
FROM lgtb AS t1 LEFT JOIN lgtb AS t2 ON t2.ID < t1.ID
GROUP BY t1.ID, t1.lg)  AS q LEFT JOIN lgtb AS t ON t.ID = q.previd;
0
Ollam Messages postés 77 Date d'inscription jeudi 18 avril 2013 Statut Membre Dernière intervention 15 août 2022
24 nov. 2021 à 16:32
Bonjour,
Merci beaucoup pour la réponse et désolé pour ma réponse tardive.

Bref, je viens d'essayer d'appliquer la seconde solution (tout en 1) car je n'ai pas compris comment gérer la première solution.
J'ai créé une requête avec la table lgtb, puis j'ai sélectionné "SQL direct" et ai fait un copier/coller de la seconde solution. J'ai enregistré sous "lgqprevid"

Quand je lance la requête, cela ouvre une fenêtre "Sélectionner la source de données"

Alors, j'ai l'impression que je n'ai pas fait ce qu'il faut, ou il faut !!!!

Merci d'avance
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
24 nov. 2021 à 16:58
il faut créer une requête, l'afficher en mode SQL, puis coller le texte.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ollam Messages postés 77 Date d'inscription jeudi 18 avril 2013 Statut Membre Dernière intervention 15 août 2022
24 nov. 2021 à 17:53
Merci beaucoup,
En effet, je ne passais pas par le bon endroit !!!!!
Par contre l'ai ajouté un champ "Date" dans la table et dans la requête (bien sur).
J'ai testé avec uniquement 3 lignes.
Cependant, la requête n'affiche pas les bonnes dates.
Pas date sur la première ligne (ID 1)
La ligne 2 (ID 2) affiche la date de la première ligne
et la ligne 3 (ID 3) affiche la date de la ligne 2



Bref, il applique à tous les champs le décalage finalement demandé par le script.
J'ai alors créé une seconde requête reprenant ID, lg et date de la table et "ecart" de lgqprevid.
Là je me retrouve avec les 3 lignes, mais x3 (voir ci-dessous



Merci bien
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
24 nov. 2021 à 17:59
les écarts sont-ils corrects?
0
Ollam Messages postés 77 Date d'inscription jeudi 18 avril 2013 Statut Membre Dernière intervention 15 août 2022 > yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024
Modifié le 24 nov. 2021 à 22:09
Bonsoir,
Oui, les écarts sont OK:
126.20 - 123.90 = -2.30
123.90 - 120.00 = -3.90
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476 > Ollam Messages postés 77 Date d'inscription jeudi 18 avril 2013 Statut Membre Dernière intervention 15 août 2022
24 nov. 2021 à 23:13
donc cela fonctionne comme tu as demandé au départ.

si tu as modifié la requête suggérée, il est utile de nous montrer le code source de la requête modifiée.

tu as écrit que tu faisais cela pour apprendre. qu'essaies-tu d'apprendre?
tu n'apprendras certainement pas à utiliser Access en recopiant des suggestions.
0
Ollam Messages postés 77 Date d'inscription jeudi 18 avril 2013 Statut Membre Dernière intervention 15 août 2022 > yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024
25 nov. 2021 à 11:43
Oui, j'apprends beaucoup.
Avant de chercher de l'aide j'essaie par moi-même en cherchant les codes à utiliser de-ci de-là.
Chaque "développement" que je fais est différent, mais il y a toujours des choses que je récupère d'applications précédentes et que j'essaie d'adapter et c'est pas toujours facile.

Encore merci pour ton aide !!!!
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476 > Ollam Messages postés 77 Date d'inscription jeudi 18 avril 2013 Statut Membre Dernière intervention 15 août 2022
15 déc. 2021 à 17:24
peux-tu marquer la discussion comme résolue?
0
blux Messages postés 26006 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 25 avril 2024 3 289
24 nov. 2021 à 18:04
Salut,

il faut faire attention car Access ne renvoie pas d'ordre dans une requête si rien n'est spécifié.

Deux requêtes identiques sur une même table peuvent amener des résultats avec un ordre totalement différent quand bien même on n'aurait ajouté qu'une seule ligne.

Donc là, il faut absolument un ordre quelconque, ce serait sûrement l'horodatage...
0
Ollam Messages postés 77 Date d'inscription jeudi 18 avril 2013 Statut Membre Dernière intervention 15 août 2022
24 nov. 2021 à 22:09
Oui, peut-être, je ne sais pas.
Mes connaissances sont trop limitées pour apporter la moindre affirmation.
Merci
0
Ollam Messages postés 77 Date d'inscription jeudi 18 avril 2013 Statut Membre Dernière intervention 15 août 2022
24 nov. 2021 à 23:11
J'ai réussi pour que les dates soient correctement attachées aux ID des lg.
Après avoir recopier le script dans la requête en mode SQL.
Je suis retourné dans la présentation classique des requêtes et j'ai ajouté la table lg puis le champ ID pour contrôle et c'est OK.

Merci beaucoup pour votre aide :))
0