Insertion de données sans doublons

julien_78 Messages postés 4 Date d'inscription mardi 18 octobre 2005 Statut Membre Dernière intervention 18 avril 2006 - 14 avril 2006 à 13:56
julien_78 Messages postés 4 Date d'inscription mardi 18 octobre 2005 Statut Membre Dernière intervention 18 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

Cdt,
Julien

3 réponses

cs_jperre Messages postés 268 Date d'inscription lundi 9 janvier 2006 Statut Membre Dernière intervention 19 janvier 2017 2
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.
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
17 avril 2006 à 16:02
Salut 601497 julien_78, salut =663949 jperre, et salut 724427 mcs2006,

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)

PS : gaffe 724427 mcs2006, =601497 julien_78 veut copier de Table1 vers Table2.

à+


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</SUP>
0
julien_78 Messages postés 4 Date d'inscription mardi 18 octobre 2005 Statut Membre Dernière intervention 18 avril 2006
18 avril 2006 à 13:34
Merci beaucoup pour ces informations. Ca fonctionne comme je le souhaite.
A+,

julien_78
0
Rejoignez-nous