julien_78
Messages postés4Date d'inscriptionmardi 18 octobre 2005StatutMembreDernière intervention18 avril 2006
-
14 avril 2006 à 13:56
julien_78
Messages postés4Date d'inscriptionmardi 18 octobre 2005StatutMembreDernière intervention18 avril 2006
-
18 avril 2006 à 13:34
Bonjour,
Je dois insérer des lignes de données d'une table1 vers une table2 sous Access et je souhaiterai intégrer uniquement les données non présentes dans ma table2 (pas de doublons).
Mes conditions se basent sur 5 champs dont les valeurs qui doivent être différentes tous les 5 en même temps pour autoriser l'insertion de la ligne : si ma table1 contient une ligne dont ces 5 champs sont égaux à ceux d'une ligne de la table2 alors, ne pas insérer cette ligne.
Y a-t-il quelqu'un qui peut m'aider à créer une requête SQL? Merci
cs_jperre
Messages postés268Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention19 janvier 20172 14 avril 2006 à 15:03
Il faut créer un index clé primaire de la table2 avec les 5 champs, ouvrir un recordset avec la table 1, ouvrir un recordset avec la table2 et utiliser la méthode Seek qui permet de rechercher si l'index est égal ou non aux 5 champs de la table1 à tester, si oui, on ajoute pas, si non, la propriété NoMatch est vraie et on joute un enregistrement. Tout celà c'est du traitement séquenciel enregistrement par enregistrement, en aucun cas, c'est du SQL.Voir l'aide d'Access sur la méthode seek pour tous renseignements.
d'abord, petite erreur de spécifications pour =601497 julien_78, ajouter dans Table2 des lignes de Table1 qui ne se trouvent pas déjà dans Table2, ce n'est pas une gestion de doublons, mais une différence ensembliste : Table2 = Table2 + (Table1 - Table2)
Ensuite, pour compléter mcs2006,
comences par ajouter une contrainte de clé composée sur les champs qui définissent l'unicité d'une ligne, exemple avec 2 champs :
"CREATE UNIQUE INDEX LigneUnique on Table2(Champ1, Champ2)"
Avec cela, jamais de doublons sur ta clé composée.
puis, si jamais il existait vraiment des doublons dans Table1, il conviendrait d'ajouter à la requête de =724427 mcs2006:
INSERT INTO Table2 (champ1, champ2)
SELECT DISTINCT champ1,champ2 FROM Table1
WHERE champ1 & champ2 NOT IN(SELECT champ1 & champ2 FROM table2)