Pb Requête INSERT dans SQL Server

cs_sebas34500 Messages postés 9 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 26 septembre 2005 - 12 sept. 2004 à 13:31
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 - 14 sept. 2004 à 14:03
Je travaille actuellement sur une base de gestion commerciale SAGE SQL. Les tables sont donc déjà créées. Pour pouvoir importer les données d'un précédent logiciel dans Sage, je crée donc des tables dans la mm base de données dans lesquelles j'importe les données voulues. Reste ensuite à transférer de cette table créée par moi les données dans la table SAGE.

Par l'analyseur de requêtes, je lance ensuite la procédure suivante:

INSERT INTO F_ARTCLIENT (AR_Ref, AR_Des, AR_Code)
SELECT * FROM Table3

La procédure est stoppée et j'ai le message suivant :

"Conflit entre l'instruction INSERT et la contrainte COLUMN FOREIGN KEY 'FKA_F_ARTCLIENT_AR_Ref'. Le conflit est survenu dans la base de données 'TOTO', table 'F_ARTICLE', Column 'AR_Ref'. L'instruction a été arrêté."

Je sais que les tables F_ARTCLIENT et F_ARTICLE sont liées par le champ AR_REF.

Comment puis-je faire pour pouvoir passer outre et insérer les données dans cette table ?

MERCI.

SEBAS

4 réponses

cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
12 sept. 2004 à 15:04
La table Article possède comme clé primaire AR_REF et la table F_ARTCLIENT posséde un champs AR_REF normale qui est en relation avec celui de Article

Donc si le code article que tu vas importer de la table "Table3" n'esxite pas dans la table Article alors le message d'erreur apparait.

Pour y remiédier, tu peux faire un teste : lorsque le code article existe dans la table Article , on peut inserer la ligne sinon ajouter l'article avec le bon code et ensuite insrérer la ligne.

:-p [mailto:cyberscorp2004@msn.com MSN] :big) [mailto:frop01@yahoo.fr YAHOO] >:)
0
cs_sebas34500 Messages postés 9 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 26 septembre 2005
12 sept. 2004 à 15:53
Ok, le problème résidait bien dans le fait que ma Table3 comportait des AR_Ref n'existant pas dans la Table F_Article...

Merci pour cette réponse...

SEBAS
0
cs_sebas34500 Messages postés 9 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 26 septembre 2005
14 sept. 2004 à 13:32
Le problème se situe bien ici mais je ne sais pas comment faire un test dans ma requête pour voir si le code article de ma table3 existe bien dans la table Article.

Quelqu'un peut-il me sauver ????

SEBAS
0
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
14 sept. 2004 à 14:03
Si l'importation que tu fais est à partir de VB alors il te suffit de créer une boucle du genre :

articlers.index="PrimaryKey"

Do until SourceRs.Eof

articlers.seek "=","
if not articlers.nomatch then
  destinationrs.addnew
...
...
  destinationrs.update
endif

SourceRs.movenext

loop



Et si tu utilises directement SQL SERVER, tant mieux parceque tu peux parfaitement utiliser Les Triggers (déclencheur ==> BEFORE INSERT ...)

@+

:-p [mailto:cyberscorp2004@msn.com MSN] :big) [mailto:frop01@yahoo.fr YAHOO] >:)

Membre du club CodeS-SourceS
0
Rejoignez-nous