none
Access - requête pour compléter le champ d'une table RRS feed

  • Question

  • bonjour,

    voila plusieurs jours que je cherche une solution à mon problème, j'ai une table : Tableau, avec les champs suivant : Num_bien, date_dot, base, cumul, dotation, taux.

    les champs  Num, date_dot, base, dotation, taux sont bien renseignés, par contre pour le cumul, je n'arrive pas à le complèter.

    en fait le cumul correspond à la somme des dotations exercice par exercice, par ex voici ce que je devrais avoir dans le cumul pour ce bien :

    num_bien  date_dot      base    dotation  cumul   taux
         1       31/12/2003   433.69   108.42  108.42  0.25
         2       31/12/2004   433.69   108.42  216.84  0.25
         3       31/12/2005   433.69   108.42  325.26  0.25
         4       31/12/2006   433.69   108.43  433.69  0.25

    est-il possible par une requête pour renseigner le champ cumul svp ?

    c'est sous Access.

    Merci.

    lundi 6 juillet 2009 10:12

Toutes les réponses

  • Bonjour,

    Tu peux utiliser ce code VBA (ou t'en inspirer).

    Ce code fera le cumul des les enregistrements précédents.

    Exemple :

    function fCumulPrecedent(id as variant) as currency
    
    fCumul = nz(Dsum("Dotation","Tableau","Num_Bien<=" & id),0)
    
    end function


    Ainsi il fera la somme de toutes les valeurs antérieures ou égale à ton numero de bien.
    Id est un variant car la dernière ligne renvoyé peut être celle du nouvel enregistrement, dans ce cas il renvoi null.

    Dans la requete tu crée une colone comme ceci :

    Cumul : fcumul([Num_bien])

    Cordialement,


    Visitez mes sites : http://2gm.free.fr http://loufab.developpez.com
    lundi 22 février 2010 08:17
  • Bonjour,
    Personnellement, plus qu'une fonction VBA, je continuerais de travailler en base de données et requètes (cela permet, en cas de migration de passer certaines requètes en vue)

    Voici les étapes:
    1) Créer une requète TableauPlusCumul, dont le sql se présenterai comme suit:
             SELECT a.num_bien, a.date_dot, a.base, a.dotation, sum(b.dotation) AS cumul, a.taux
             FROM Tableau AS a
                      INNER JOIN Tableau AS b
                                ON b.date_dot <= a.date_dot
             GROUP BY a.num_bien, a.date_dot, a.base, a.dotation, a.taux;
    2) A partir de cette vue, le tableau présente toutes les informations nécessaires.

    Suivant l'utilisation finale, cette requète peut être modifiée pour se limiter à un seul numéro de bien, si le rapport voulu présente les informations pour un seul numéro de bien.


    En règle générale, hormis pour les entrepôts de données, il ne faut pas stocker d'informations calculées; en effet, elles imposent de mettre en place des systèmes de mise à jour de ces valeurs lorsqu'un des paramètres de la formule du calcul est modifié.
    XOrangoutan
    • Proposé comme réponse XOrangoutan mardi 9 mars 2010 09:48
    mardi 9 mars 2010 09:48
  • Bonjour,

    Merci XOrangoutan  pour ta réponse, ça marche super, par contre comme j'ai plusieurs biens, je voudrai que le calcul du cumul reparte a 0 pour chaque num_bien comme dans l'exemple ci-desosus :

    num_bien  date_dot      base    dotation  cumul     taux
         1       31/12/2003   433.69   108.42  108.42     0.25
         1       31/12/2004   433.69   108.42  216.84     0.25
         1       31/12/2005   433.69   108.42  325.26     0.25
         1       31/12/2006   433.69   108.43  433.69     0.25
         2       31/12/2000   2000.00  500.00  500.00    0.25
         2       31/12/2001   2000.00  500.00 1000.00   0.25
         2       31/12/2002   2000.00  500.00 1500.00   0.25
         2       31/12/2002   2000.00  500.00 2000.00   0.25

    Que faut-il rajouter dans la requête stp ?

    Merci.

    mercredi 10 mars 2010 09:50