cs_sebas34500
Messages postés9Date d'inscriptionmercredi 28 juillet 2004StatutMembreDernière intervention26 septembre 2005
-
12 sept. 2004 à 13:31
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 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 ?
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 novembre 20082 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.
cs_sebas34500
Messages postés9Date d'inscriptionmercredi 28 juillet 2004StatutMembreDernière intervention26 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.
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 novembre 20082 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 ...)