Bonjour,
Le contexte:
*J'ai 3 tables liées entres elles
-Une table projet avec un id et un nom
-Une table lot avec un id et un nom, lié à projet par son id
-Une table tache avec un id et plein d'autres champs, lié à lot par son id
*A partir d'une extraction je dois remplir chacune des tables et je possède plusieurs extractions de structures identiques, donc je répète les requetes pour chaque extraction.
Le code:
*Je commence par insérer les projets
*Ensuite j'insère les lots
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 DoCmd.RunSQL "INSERT INTO projet(nom) " & _ "SELECT DISTINCT Projet " & _ "FROM import_BD"
*Enfin j'insère les taches
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 DoCmd.RunSQL "INSERT INTO lot (nom, id_projet) " & _ "SELECT DISTINCT import_BD.[Lot], projet.[id] " & _ "FROM import_BD LEFT JOIN projet ON import_BD.Projet=projet.nom"
Le problème:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 DoCmd.RunSQL "INSERT INTO tache (id, description, ajout, jour_initial, reste_a_faire, id_lot) " & _ "SELECT Import_BD.ProjetLot, Import_BD.Tâche, Import_BD.Ajout, Import_BD.[Chiffrage initial], Import_BD.RAF, lot.id " & _ "FROM import_BD LEFT JOIN lot ON import_BD.Lot = lot.nom"
Certains des lots ont le meme nom, mais ne font pas parti du meme projet, mais lorsque je lance ma troisième requete il se trouve que je me base sur le nom du lot.
Alors il arrive que certaines taches ne soient pas attribuées au bon lot puisqu'il récupère l'id d'un lot précédent parfois.
Des solutions ?
Partager