Problème requête AJOUT

Résolu
cs_Famas54 Messages postés 59 Date d'inscription mardi 12 septembre 2006 Statut Membre Dernière intervention 21 août 2009 - 28 juil. 2008 à 10:21
cs_Famas54 Messages postés 59 Date d'inscription mardi 12 septembre 2006 Statut Membre Dernière intervention 21 août 2009 - 29 juil. 2008 à 14:19
Bonjour, je suis confronté à un problème inexplicable concernant une requête d'ajout qui semble pouvoir être lançée mais qui ne semble faire aucun ajout pour un problème de "Key violation" que ne parvient pas à comprendre. si quelqu'un pourrait m'éclairer sur les causes éventuelles

Voici mon code actuel:

INSERT INTO Tbl_parametrage_Noind (Noind, Fund_code, Fund_name, SubFundsName, Type, Actif, Date_création, Comment, Envt, Country, Nav)

SELECT
"Noind_GPII.NoInd as Tbl_parametrage_Noind.Noind",
"Noind_GPII.Fund_code as Tbl_parametrage_Noind.Fund_code",
"Fond.Fund_name as Tbl_parametrage_Noind.Fund_Name",
"Noind_GPII.Sub_Fund_name as Tbl_parametrage_Noind.SubFundsName",
"Noind_GPII.Type_NoInd as Tbl_parametrage_Noind.Type",
"Noind_GPII.Situation.noind as Tbl_parametrage_Noind.Actif",
"Noind_GPII.Date_creation as Tbl_parametrage_Noind.Date_création",

"Noind_GPII.Commentaire as Tbl_parametrage_Noind.Comment",
"Fond.Environnement as Tbl_parametrage_Noind.Envt",
"Fond.Ent_calcul_fond as Tbl_parametrage_Noind.Country",
"Fond.Nav as Tbl_parametrage_Noind.Nav",

 FROM Noind_GPII, Fond

WHERE Noind_GPII.Fund_code = Fond.Fund_code;

Et voilà ce qu'il m'affiche au niveau du message d'erreur:

"Menu can't append all the records in the append query.

... and it didn't add 3 record(s) to the table due to key violations.."

6 réponses

crn_c21 Messages postés 302 Date d'inscription samedi 24 janvier 2004 Statut Membre Dernière intervention 4 février 2011
28 juil. 2008 à 15:53
L'erreur vient des guillemets je pense :

INSERT INTO Tbl_parametrage_Noind (Noind, Fund_code, Fund_name,
SubFundsName, Type, Actif, Date_création, Comment, Envt, Country, Nav)

SELECT
Noind_GPII.NoInd ,
Noind_GPII.Fund_code ,
Fond.Fund_name ,
Noind_GPII.Sub_Fund_name ,
Noind_GPII.Type_NoInd,
Noind_GPII.Situation.noind ,
Noind_GPII.Date_creation ,
Noind_GPII.Commentaire ,
Fond.Environnement ,
Fond.Ent_calcul_fond ,
Fond.Nav

 FROM Noind_GPII, Fond

WHERE Noind_GPII.Fund_code = Fond.Fund_code;

ca suffirait je pense!!
3
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
28 juil. 2008 à 13:28
Salut,
Salut,
A supposer que le champ Tbl_parametrage
est la clé primaire,il se pouttait que la partie SELECT te renvoie plus d' une ligne pour une même valeur de ce champ.
Excutes cette partie séparement pour voir le resultat de celle-ci..

<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
0
cs_Famas54 Messages postés 59 Date d'inscription mardi 12 septembre 2006 Statut Membre Dernière intervention 21 août 2009 2
28 juil. 2008 à 14:15
En fait j'ai tout d'abord pensé à un problème d'intégrité référentielle et après contrôle la clé primaire Noind de la table Tbl_parametrage_Noind (qui est une table externe linkée) était déclarée en Nombre et non en texte, ce que j'ai modifié.

Suite à cette modif le message d'erreur à légèrement changé pour afficher:
 
"... and it didn't add 2 record(s) to the table due to key violations.." au lieu de 3 mais en regardant le résultat de l'ajout, je me suis rendu compte que la requête avait bien ajouté une ligne en plus mais en gros voila le genre de chose qu'elle fait:
Pour le champs Noind de Tbl_parametrage_Noind la valeur était: "Noind_GPII.NoInd as Tbl_parametrage_Noind.Noind" et ainsi de suite.

En somme il considère mes lignes SQL qui devraient faire l'affectation de la valeur d'un champs d'une table en fonction de celle d'un champs d'une autre table comme du texte qui recopie directement dans la table cible.
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
28 juil. 2008 à 15:03
Est-ce que la ligne qu' il a ajouré correspond bien
à ce que tu voulais ?
Si c' est oui, il ne pourras pas en rajoutais (les deux autres) si la partie Select renvois 3 fois la même ligne.
D' ou l' erreur key violations.
Si c' était une question de type de données la description de l' erreur serait autre.
Corriges moi si j' ai mal interprêté ton diagnostic.

<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
crn_c21 Messages postés 302 Date d'inscription samedi 24 janvier 2004 Statut Membre Dernière intervention 4 février 2011
28 juil. 2008 à 15:53
L'erreur vient des guillemets je pense :

INSERT INTO Tbl_parametrage_Noind (Noind, Fund_code, Fund_name,
SubFundsName, Type, Actif, Date_création, Comment, Envt, Country, Nav)

SELECT
Noind_GPII.NoInd ,
Noind_GPII.Fund_code ,
Fond.Fund_name ,
Noind_GPII.Sub_Fund_name ,
Noind_GPII.Type_NoInd,
Noind_GPII.Situation.noind ,
Noind_GPII.Date_creation ,
Noind_GPII.Commentaire ,
Fond.Environnement ,
Fond.Ent_calcul_fond ,
Fond.Nav

 FROM Noind_GPII, Fond

WHERE Noind_GPII.Fund_code = Fond.Fund_code;

ca suffirait je pense!!
0
cs_Famas54 Messages postés 59 Date d'inscription mardi 12 septembre 2006 Statut Membre Dernière intervention 21 août 2009 2
29 juil. 2008 à 14:19
Cette simplification fonctionne parfaitement, j'ai voulu me compliquer l'affaire pour rien!
0
Rejoignez-nous