Bonjour à toutes et tous,
Je vais essayer d’être clair et concis… Dans une base de données Access 2003, j’ai deux tables :
- T_Stagiaires (ID_Stagiaire, Nom, Prénom + diverses infos) : chaque entrée représente une personne
- T_Journées (ID_Journée + date + diverses infos) : chaque entrée représente une journée de cours
J’ai une troisième table pour gérer les présences de chaque stagiaire pour chacune des journées :
- T_Présences (REF_Stagiaire, REF_Journée, EstPrésent (Oui/Non))
J’ai créé une requête Ajout qui crée tous les enregistrements dans T_Présences (exemple : 6 stagiaires et 30 journées : 6 x 30 = 180 entrées dans T_Présences)
Ca marche très bien si ma table T_Présences est vide. Par contre, si les enregistrements existent déjà dans T_Présences et que je ré-exécute ma requête Ajout, les 180 enregistrements sont une nouvelle fois ajoutés.
Ma question est : comment faire pour que ma requête Ajout crée les enregistrements uniquement s’ils n’existent pas déjà (c'est-à-dire uniquement si la paire REF_Stagiaire – REF_Journée n’est pas encore présente dans T_Présences) ?
Le but du jeu, c’est de pouvoir ré-exécuter la requête quand on ajoute de nouveaux stagiaires ou de nouvelles dates pour ajouter facilement les enregistrements manquants dans T_Présences
Ma requête ressemble à ça :
J’ai une solution qui ne me convient qu’à moitié : j’ai défini une clé primaire composite dans T_Présences, composée de la paire REF_Stagiaire – REF_Journée. Quand je ré-exécute la requête, un message d’erreur me prévient que certains enregistrements ne peuvent pas être créés car « violation de clé » (normal, puisqu’on ne peut pas avoir 2 clés primaires identiques dans une même table) et je peux cliquer sur « Oui » pour ignorer et exécuter la requête quand même. Je n’aime pas trop car je ne serai pas l’utilisateur final et celui-ci ne comprendra certainement pas le message d’erreur…
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 INSERT INTO T_Présences ( REF_Stagiaire, REF_Stagiaire ) SELECT T_Stagiaires.ID_Stagiaire, T_Journées.[ID_Journée] FROM T_Stagiaires, T_Journées;
Merci à toute personne qui pourra m’éclairer
Partager