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 :

[Débutant][Requêtes] récupérer la valeur de la ligne précédente d'une même requète


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club Avatar de Oceliane
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 66
    Points : 60
    Points
    60
    Par défaut [Débutant][Requêtes] récupérer la valeur de la ligne précédente d'une même requète
    Bonjour à tous!

    Je souhaiterais pouvoir récupérer l'enregistrement de la ligne au-dessus dans une requète, comme ça se fait simplement sous excel, pour continuer mon calcul en toute quiétude.



    ici, on devrait avoir Début= CRD (periode - 1).

    j'ai essayé plusieure méthodes, mais elles n'ont pas l'air de marcher.

    l'idée serait un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (Select CRD 
    From [Tableau amortissement P1 Pal1] 
    where periode = [periode actuelle] - 1) as Début, ...
    désolé, la réponse doit être évidente, mais je ne l'ai pas trouvée dans les FAQ...

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    ce post devrait t'aiguiller
    http://www.developpez.net/forums/sho...ighlight=cumul

    Sinon fait une recherche avec "Cumul" dans le moteur de recherche (dans la barre bleu au-dessu), et sélectionne Access.

    Starec

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 174
    Points : 178
    Points
    178
    Par défaut
    sous la forme d'une requête mise à jour ça devrait marcher :
    faire apparaître 2 fois la table dans la fenêtre de requête,
    champ : TaTable.debut
    mise à jour : TaTable1.CRD
    critère : TaTable1.periode=TaTable.periode-1

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    pouf pouf
    crd est égale à VC(taux;npm;vpm;va;type)
    et période est un scalaire

    donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select période,période-1 as périodeprec, 
    vc(taux,période,échéance,capital,0) as crd, 
     (taux,période-1,échéance,capital,0) as crdavant
    devrait aller

    mais on peut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    SELECT a.période, a.crd, 
    nz((select max(période) as perprec  from matable where période <a.période),0) AS prec, 
    (select crd from matable where période=a.période-1) AS crdav
    FROM matable AS a;
    Elle est pas belle la vie ?

  5. #5
    Membre du Club Avatar de Oceliane
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 66
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par random
    mais on peut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    SELECT a.période, a.crd, 
    nz((select max(période) as perprec  from matable where période <a.période),0) AS prec, 
    (select crd from matable where période=a.période-1) AS crdav
    FROM matable AS a;
    j'ai essayé d'adapter cette méthode à mes besoins, mais j'ai un petit souci...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    SELECT [INDEX].[periode] AS periode, 
     
    nz((select max(période) from [index] where periode <a.période),0) AS prec, 
     
    (select crd from [marequete] where periode=a.periode-1) AS Début,
     
    [simulations].[mensualite1P1] AS Mensualite, 
     
    Début*[simulations].[tauxP1]/12 AS intérêts, 
     
    [mensualite1P1]-intérêts AS Amortissement, 
     
    Début-[Amortissement] AS CRD
     
    FROM [INDEX], simulations, [marequete] as a
     
    WHERE (((nz((select max(periode) as perprec  from [marequete] where periode <a.periode),0))=[index].[periode]-1) 
    AND ((1)<=[index].[periode]) 
    And (([simulations].[palier1])>=[index].[periode]) 
    And (([simulations].[simID])=1))
     
    ORDER BY [INDEX].[periode];
    la table index ne contient qu'une liste de chiffres de 0 à 1200, et simulations contient les données utiles.

    à chaque fois que je fais ça, j'ai un message

    "Référence circulaire causée par 'marequete'."

    et visiblement, ce problême viendrait du "FROM"... on ne peut pas faire appel à la requète en cours?

    je travaille actuellement sous la version 2000 d'access mais je passerait très prochainement sur la version 2007. ça peut être du à ça?

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    pour faire ce que tu fais il faudrait que marequête soit une table
    remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FROM [INDEX], simulations, [marequete] as a
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FROM [INDEX], simulations, simulations as a
    Elle est pas belle la vie ?

Discussions similaires

  1. Récupérer la valeur de la ligne précédente
    Par rom411 dans le forum BIRT
    Réponses: 4
    Dernier message: 19/09/2013, 11h01
  2. Réponses: 12
    Dernier message: 18/06/2008, 14h20
  3. Récupérer une valeur de la ligne précédente
    Par oOBaalberithOo dans le forum SQL
    Réponses: 2
    Dernier message: 05/06/2008, 09h27
  4. Réponses: 2
    Dernier message: 11/07/2007, 12h26
  5. [Débutant] comment récupérer la valeur d'une requête?
    Par Athorus dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 27/02/2007, 17h59

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