Requête SQL ajout sans doublon [Résolu]

cs_sabrina7 26 Messages postés vendredi 17 février 2006Date d'inscription 25 mars 2007 Dernière intervention - 13 sept. 2006 à 15:41 - Dernière réponse : KC62 229 Messages postés mardi 3 juin 2003Date d'inscription 20 juin 2007 Dernière intervention
- 20 juin 2007 à 16:27
Bonjour,


J'ai créer une requête SQL qui tourne sur une base Access. Cette requête me récupère des données d'une table pour les insérer dans une autre table.


INSERT INTO Save ( Idvéhicule )
SELECT Idvehi.Idvéhicule
FROM Idvehi;


La table avec les données sources est composé d'un seul champ IDvéhi qui est la clé primaire.


Lors de l'execution de la requête il met un message comme quoi il y a violation de la clé primaire. Mon objectif est qu'il ecrase les données sans faire de doublon. Comment pourrai-je modifier mon code SQL pour faire ceci.


Merci de vore aide.
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
cs_sabrina7 26 Messages postés vendredi 17 février 2006Date d'inscription 25 mars 2007 Dernière intervention - 13 sept. 2006 à 19:14
3
Merci
Bon c'est bon j'ai trouvé, j'ai fait 2 requêtes et ca marche.




SELECT Save.Idvéhicule, Idvehi.Idvéhicule
FROM Idvehi RIGHT JOIN Save ON Idvehi.Idvéhicule=Save.Idvéhicule
WHERE (((Idvehi.Idvéhicule) Is Null));




INSERT INTO Save ( Idvéhicule )
SELECT Idvehi.Idvéhicule
FROM Idvehi;

Merci de votre aide.

Merci cs_sabrina7 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de cs_sabrina7
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 13 sept. 2006 à 15:48
0
Merci
Je vais peut-etre dire une grosse connerie Mais ne serait-ce pas une requete UPDATE qu'il te faudrait plutot à la place d'une requette INSERT.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Commenter la réponse de cs_casy
cs_sabrina7 26 Messages postés vendredi 17 février 2006Date d'inscription 25 mars 2007 Dernière intervention - 13 sept. 2006 à 16:36
0
Merci
Merci de ta réponse Casy, en faite ce que je veux c'est que dans la table Idvéhicule, a chaque fois je rentre une données, cette donnée soit récupérer dans la table Save. Sauf que c'est pas une mise à jour UDAPTE car si la donnée a été suprimé dans la table IDvéhicule elle doit rester dans la table Save. Le problème c'est que comme j'ai fait ci-dessus, les valeurs sont réecrite à chaque fois et il y a des doublons car j'arrive pas à gérer la clé primaire dans la table Save.
Commenter la réponse de cs_sabrina7
KC62 229 Messages postés mardi 3 juin 2003Date d'inscription 20 juin 2007 Dernière intervention - 13 sept. 2006 à 17:44
0
Merci
Bonjour,

A priori, il faudrait que tu détecte le doublon par un select.
que tu le supprime si le teste est positif et que tu applique ta nouvelles lignes.

j'ai bien compris ?

On a pas toutes les solutions de tous les probleme mais chaque probleme à ses solutions ...
Commenter la réponse de KC62
S_lapin 3 Messages postés mercredi 14 juin 2006Date d'inscription 12 août 2011 Dernière intervention - 20 juin 2007 à 12:23
0
Merci
salut j'ai un soucis avec une de mes requête d'insertion

DoCmd.RunSQL ("insert into devis (CodeDevis,nbVeh,nbjour,datepropose,com_devis,CodeTypeVeh,CodeActivite,CodeOrigine,IdEtat) values (" & codeD & "," & nbVeh.Value & "," & txtnbjour.Value & "," & datepropose.Value & "," & comD & "," & codeT & "," & codeA & "," & corg & "," & idi & ")")

En fait il me lance un message d'erreur du genre "Microsoft Access a attribué la valeur Null à 0 champ(s) à la suite d'une erreur de conversion de type, 1 enregistrement(s) n'ont pas été ajoutés à la table à la suite de violations de clé, 0 enregistrement(s) à la suite de violation de verrou et 0 enregistrement(s) à la suite de violations des règles de validation"

je ne comprend pas pourquoi il affiche ce message surtout qu'il ne le met pas tout le temps
En faite dans le cas présent ma table devis est vide, elle hérite d'une autre table prestation, avec sous access la même clé primaire
donc dans mon code vba je fait d'abord l'ajout dans la table devis puis dans la table prestation, et même en inversant l'ordre des insert le message aparait quand meme

Autre chose, aussi ma table devis comporte d'autre champs que je n'ajoute pas dans ma requête insert, est ce que cela est génant? car j'ai mis le nom des colonnes que je veut ajouter donc normalement ça devrait pas être génant pour l'execution de la requete?



Merci de voter aide



PS: j'sai pas si mon problème correspond a 100% au sujet de ce forum mais il s'en rapproche pas mal lol
Commenter la réponse de S_lapin
KC62 229 Messages postés mardi 3 juin 2003Date d'inscription 20 juin 2007 Dernière intervention - 20 juin 2007 à 16:27
0
Merci
Salut,

Je vais pas être sûr de moi mais je vais quand même proposé ca :
Assure toi que les valeurs que tu transmet soit du bon type, par exemple je vois nbveh (que je suppose en integer dans ta base, tu lui donne un string (nbveh.value) vois d'abord pour le convertir.

Tu trouveras toutes les méthodes de conversion dans l'explorateur d'objet (CTRL+ E) de mémoire.

dans le débogage assure toi que tout tes champs soit bien remplis, car cela peut être source d'erreur aussi...

Voila essaye ca ! et peut être aprés je pourrais t'aider plus.

KC62

C'est plus de mon âge ces conneries !
Commenter la réponse de KC62

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.