Bonjour à toutes et a tous!
Voici mon premier post sur ce forum. Je m'en suis souvent servi pour mes petits soucis de VBA et je tenais à vous remercier pour l'aide apportée aux gens qui essayent de progresser en la matière.
La j'ai un vrai gros souci, j'ai rencontré quelqu'un qui m'a écrit une requête pour faire une historisation dans Excel. Le problème est qu'il n'a pas eu le temps de me dire comment l'adapter à excel et encore moins la mettre en place.
C'est pour cela que je viens vers vous. Vous trouverez dans mon fichier excel ci-joint trois états (mars avril mai) de la même feuille avec des changements listés sur un onglet "changement"
La SQL a été écrite sur la base de cet exemple.
En fin de tableau j'ai créé des clés utilisées dans la requête voici la requête et son explication
Voici une requête union (qui réunit 3 requêtes en une seule) pour faire apparaître les changements d’un mois M et d’un mois M-1
Cette requête retourne 1 seule ligne par changement effectif. Par exemple les quatre lignes du mois de mars disparues en avril et qui sont identiques, n’en feront en fait, qu’une seule. (cf PJ)
Les deux premières requêtes (ajout et suppression) compare les iRules Descriptions en s’appuyant sur les Brand Familly C et une relation de 1 à plusieurs sur iRule Description.
Elles sont identiques (à un poil près) à part que M devient M-1 et M-1 devient M
La troisème ne fait qu’une comparaison textuelles sur iRuleDescription en s’appuyant sur une relation de 1 à plusieurs sur CLEE
Pour que la modification soit prise en compte, il faut que la clef soit la même dans M et M-1 mais le iRule description soit différent.
Voila alors si cela parle à quelqu'un ça serait vraiment génial parce que je suis vraiment bloqué bloqué !
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 ----------------------------------------Texte de la requête SELECT M.CLEE, M.[iRule Description], "added" AS State, DateAdd("m",-1,[M].[DateH]) AS [Date of change] FROM MAI AS M LEFT JOIN AVRIL AS [M-1] ON M.[iRule Description] = [M-1].[iRule Description] GROUP BY M.CLEE, M.[Brand Family C], M.[iRule Description], [M-1].[iRule Description], "added", DateAdd("m",-1,[M].[DateH]) HAVING ((([M-1].[iRule Description]) Is Null)) UNION SELECT [M-1].CLEE, [M-1].[iRule Description], "deleted " AS State, DateAdd("m",1,[M-1].[DateH]) AS [Date of change] FROM MARS AS [M-1] LEFT JOIN AVRIL AS M ON [M-1].[iRule Description] = M.[iRule Description] GROUP BY [M-1].CLEE, [M-1].[iRule Description], "deleted ", DateAdd("m",1,[M-1].[DateH]), [M-1].[Brand Family C], M.[iRule Description] HAVING (((M.[iRule Description]) Is Null)) UNION SELECT [M-1].CLEE, [M-1].[iRule Description], "modified " AS State, [M-1].DateH AS [Date of change] FROM MARS AS [M-1] LEFT JOIN AVRIL AS M ON [M-1].CLEE = M.CLEE GROUP BY [M-1].CLEE, [M-1].[iRule Description], "Modified ", [M-1].DateH, M.[iRule Description], M.CLEE HAVING (((M.[iRule Description])<>[M-1].[iRule Description]));
Merci d'avance pour ceux qui se pencheront sur mon cas!! :0
Saimon
PS: quant à la mise en place, c'est un autre problème !!
Partager