Bonjour à tous,
Après quelques recherches, je n'ai toujours pas trouvé réponse à mon problème. Tout d'abord, je ne pense pas qu'il s'agisse d'une requête récursive, quoi que son fonctionnement m'y fait penser ...
J'ai une requête qui me donne des enregistrements de la sorte:
REQ:
Je voudrais ainsi savoir ce qu'il me reste comme quantité à la fin de chaque semaine, selon la formule suivante : Reste = Entrée - Conso + SemainePrécédente.Reste
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 ID_Usine Semaine Entrée Conso Usine1 "2011/09" 4000 900 Usine1 "2011/10" 0 1200 Usine1 "2011/11" 0 1150 Usine1 "2011/12" 0 1200 Usine1 "2011/13" 3500 1455
Je voudrais donc faire une jointure (externe) de la requête sur elle même, en rajoutant un champ SemainePrécédente, avec comme critère
Et ensuite faire Reste=T1.Entrée-T1.Conso+T2.Reste
Code : Sélectionner tout - Visualiser dans une fenêtre à part ON(T1.ID_Usine = T2.ID_Usine AND T1.SemainePrécédente = T2.Semaine)
Mais Access n'aime pas ... "référence circulaire" bla bla bla, même avec un IIf pour mettre à zéro le reste précédent s'il est nul (pour la première semaine).
Je sais qu'il est aussi possible de trouver ce reste en faisant une somme cumulée du style:
Ce qui revient à sommer toutes les entrées et consos des semaines antérieures.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Reste = SOMDOM("[Entrée]", "[REQ]", "[ID_Usine]=' " & ID_Usine & " ' AND [Semaine]<' " & Semaine & " ' ") - SOMDOM("[Conso]", "[REQ]", "[ID_Usine]=' " & ID_Usine & " ' AND [Semaine]<' " & Semaine & " ' ")
Cependant cette dernière solution est beauuuuucoup trop longue à s'executer, car je dispose de milliers d'enregistrements dans ma dernière requête, qui est déjà composée de 4 à 5 sous requêtes traitant des tables contenant plusieurs dizaines de milliers d'enregistrements ...
Merci d'avance pour votre aide
Partager