Bonjour
Je travaille sous ACCESS 2016 et dois effectuer une mise à jour d'une table de collaborateurs et d'autres tables liées, à l'aide d'un fichier EXCEL.
Ainsi, je stocke dans une table HISTORIQUE_CATEGORIE_SOCIO_PROFESSIONNELLE toutes les modifications de CSP d'un collaborateur, en stockant un Index Collaborateur, un Index CSP et une date.
Je viens de créer une requête pour récupérer la dernière CSP de chaque collaborateur :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT TBL_COLLABORATEUR.MATRICULE, TBL_HCSP.IDX_COLLABORATEUR, TBL_HCSP.IDX_CATEGORIE_SOCIO_PROFESSIONNELLE, TBL_HCSP.DATE_DEBUT, TBL_CATEGORIE_SOCIO_PROFESSIONNELLE.ABREVIATION FROM TBL_COLLABORATEUR INNER JOIN (TBL_CATEGORIE_SOCIO_PROFESSIONNELLE INNER JOIN TBL_HISTORIQUE_CATEGORIE_SOCIO_PROFESSIONNELLE AS TBL_HCSP ON TBL_CATEGORIE_SOCIO_PROFESSIONNELLE.IDX_CATEGORIE_SOCIO_PROFESSIONNELLE = TBL_HCSP.IDX_CATEGORIE_SOCIO_PROFESSIONNELLE) ON TBL_COLLABORATEUR.IDX_COLLABORATEUR = TBL_HCSP.IDX_COLLABORATEUR WHERE (((TBL_HCSP.DATE_DEBUT) In (SELECT TOP 1 TBL_HISTORIQUE_CATEGORIE_SOCIO_PROFESSIONNELLE.DATE_DEBUT FROM TBL_HISTORIQUE_CATEGORIE_SOCIO_PROFESSIONNELLE WHERE [TBL_HISTORIQUE_CATEGORIE_SOCIO_PROFESSIONNELLE].[IDX_COLLABORATEUR]=TBL_HCSP.[IDX_COLLABORATEUR] ORDER BY TBL_HISTORIQUE_CATEGORIE_SOCIO_PROFESSIONNELLE.DATE_DEBUT DESC ; )));
Cela fonctionne parfaitement. Je souhaiterai donc ensuite effectuer une éventuelle création d'enregistrement en listant, pour chaque Collaborateur, les CSP qui n'apparaissent donc pas dans cette première requête (ce qui correspond à une création d'une nouvelle ligne d'histoire de CSP si dans le fichier EXCEL, la CSP est différente de la dernière actualisation enregistrée).
Le souci est que je ne vois pas comment créer une telle requête puisqu'il faudrait lier la requête ci-dessus avec la table stockant les données importées d'EXCEL, à la fois avec l'index Collaborateur et l'index CSP.
A première vue, la seule solution serait de créer en VBA une boucle sur chaque collaborateur pour créer une requête de non correspondance avec la requête ci-dessus et, dans le cas où il trouve un enregistrement, créer une ligne d'historisation...
Mais... Si quelqu'un a une autre idée, je suis preneur !!!
Merci par avance...








Répondre avec citation
Partager