[ACCESS]-Problème INSERT

Résolu/Fermé
microsoluces Messages postés 35 Date d'inscription samedi 23 septembre 2006 Statut Membre Dernière intervention 7 juillet 2014 - 17 oct. 2006 à 11:40
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 3 avril 2008 à 17:30
Bon ba ma moulinette fonctionne bien et grâce à blux qui m'a pondu tout mon code SQL... J'ai juste un chti message qui me chagrine à l'éxécution d'une requete AJOUT :

INSERT INTO EBP ( CODE, LIBELLE, HT )
SELECT CODE, LIBELLE, HT
FROM BRS
WHERE BRS.HT>0;


Et voila le message :
Microsoft Access a attribué la valeur Null à 0 champ(s) à la suite d'une erreur de conversion de type, 1996 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..... RIEN QUE CA ! ! !


Quand j'execute quand même ma requete cela fonctionne, mais ce message fait pas propre, alors j avais pensé à mettre un truc du genre :


INSERT INTO EBP ( CODE, LIBELLE, HT )
SELECT CODE, LIBELLE, HT
FROM BRS
WHERE BRS.HT>0 AND BRS.CODE<>EBP.CODE;


Mais une Box s ouvre pour que je puisse entrer une valeur à EBP.CODE ?????

Merci d avance pour votre aide.

18 réponses

blux Messages postés 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 avril 2024 3 287
17 oct. 2006 à 16:12
On peut essayer un truc bourrin, les requêtes imbriquées :
INSERT INTO EBP ( CODE, LIBELLE, HT )
SELECT CODE, LIBELLE, HT
FROM BRS
WHERE BRS.HT>0 AND BRS.CODE NOT IN (SELECT CODE FROM EBP);

1
c'est Numprestation
1
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
3 avril 2008 à 17:30
bonjour,

ouvres un nouveau sujet, celui-ci est résolu ...

;o)

polux
1
blux Messages postés 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 avril 2024 3 287
17 oct. 2006 à 15:24
Microsoft Access a attribué la valeur Null à 0 champ(s) à la suite d'une erreur de conversion de type, 1996 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..... RIEN QUE CA ! !
Normal, tu essayes d'ajouter 1996 enregistrements qui existent déjà dans la table EBP (clé primaire déjà connue)...

Mais une Box s ouvre pour que je puisse entrer une valeur à EBP.CODE ?????
Normal aussi, EBP.CODE n'existe pas dans la table BRS...

Essaye voir comme ça (sans garantie !) :
INSERT INTO EBP ( CODE, LIBELLE, HT )
SELECT CODE, LIBELLE, HT
FROM BRS, EBP
WHERE BRS.HT>0 AND BRS.CODE<>EBP.CODE;

0

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

Posez votre question
microsoluces Messages postés 35 Date d'inscription samedi 23 septembre 2006 Statut Membre Dernière intervention 7 juillet 2014 4
17 oct. 2006 à 15:37
Un message d'alerte s'affiche :
Le champ spécifié 'CODE' peut designer plusieurs tables listées dans la clause FROM de votre instruction SQL.

Access ne semble pas tenir compte du nom de table dans "BRS.CODE<>EBP.CODE"
0
blux Messages postés 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 avril 2024 3 287
17 oct. 2006 à 15:49
Si, mais c'est dans la clause SELECT qu'il ne le voit pas : mets BRS.CODE, BRS.LIBELLE, BRS.HT...
0
microsoluces Messages postés 35 Date d'inscription samedi 23 septembre 2006 Statut Membre Dernière intervention 7 juillet 2014 4
17 oct. 2006 à 16:03
La requete s'execute et il ne rajoute aucun produit dans ma table fournisseur : pourtant je venais juste de vider EBP : elle aurait du se remplir de la totalité des enregistrements de BRS, mais rien !

Voila la requete complete :
INSERT INTO EBP ( CODE, LIBELLE, HT )
SELECT BRS.CODE, BRS.LIBELLE, BRS.HT
FROM BRS, EBP
WHERE BRS.HT>0 AND BRS.CODE<>EBP.CODE;


Mais bon, j ai plus de message de d'erreur de conversion ni de violation !
hihihi


PS : J ai essayé ça, mais ca marche encore moins :
INSERT INTO EBP ( BRS.CODE, BRS.LIBELLE, BRS.HT )
SELECT BRS.CODE, BRS.LIBELLE, BRS.HT
FROM BRS, EBP
WHERE BRS.HT>0 AND BRS.CODE<>EBP.CODE;
0
microsoluces Messages postés 35 Date d'inscription samedi 23 septembre 2006 Statut Membre Dernière intervention 7 juillet 2014 4
17 oct. 2006 à 17:22
Ba écoutes, là chapeau bas... Impec, ca marche !

Merci.

Etienne
0
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
0
blux Messages postés 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 avril 2024 3 287
20 juin 2007 à 13:02
Si ta clé primaire n'existe pas dans la table devis, ACCESS doit rajouter la ligne...
Sinon, c'est que ta table n'est pas vide ou peut-être que la clé primaire de la ligne que tu souhaites rajouter n'est pas dans le bon format (date, chaine, nombre...) ?
0
j'ai bien vérifier et ma table est bien vide donc il ni a pas de risque de doublon
ma clé primaire est de type NuméroAuto
Mais est-ce que c'est génant la partie héritage, vu que les deux tables prestation et devis ont le même nom de clé primaire avec une relation 1 a1, j'ai remarqué que dans les propriété de la relation je ne peut pas mettre a jour en cascade les champs correspondant dans l'integrité référentielle
0
blux Messages postés 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 avril 2024 3 287
20 juin 2007 à 14:14
Quel est le nom de la colonne en clé primaire ?
0
blux Messages postés 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 avril 2024 3 287
20 juin 2007 à 14:53
Si tu as une relation 1-1 entre les deux tables et que les clés sont toutes deux des numéroauto, ça ne pourra jamais marcher, puisqu'ACCESS gère la numérotation automatique...

Une de tes deux clés doit être en entier long...
0
ok donc en faite il faut que le numéro automatique de ma table fille soit un entier long
ce qui veut dire que je doit d'abord faire l'ajout dans ma table mère prestation puis dans ma table fille devis?
et pour le lien dans les relations est ce que ça a de l'importance?j'ai une flèche qui va de prestation a devis
0
blux Messages postés 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 avril 2024 3 287
20 juin 2007 à 15:32
je doit d'abord faire l'ajout dans ma table mère prestation puis dans ma table fille devis?
Oui, c'est ce qu'on appelle des contraintes d'intégrité référentielles...

j'ai une flèche qui va de prestation a devis
C'est toi qui a fait le modèle de données, donc tu es qualifié pour dire si c'est bien le bon sens :-)

0
ouai c'est bon ça marche nikel merci de ton aide
pour le sens c'est bon aussi c'était une confirmation pour moi même en faite :-)
par contre j'sai jamais pour l'intégrité réferentielle au niveau du type de jointure
si c'est inclure tt les enregistrements de la table A et seulement ceux de la table B pour lesquels les champs sont égaux
ou l'inverse sachant que dans mon MCD la table A est la table mère et la table B est l'une des tables hérité

Merci encore pour aide c'était bien un problème du numéroAuto
0
blux Messages postés 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 avril 2024 3 287
20 juin 2007 à 22:14
La jointure ne s'applique qu'aux requêtes (LEFT, RIGHT, INNER), pas à la définition des tables, on parle alors de CONSTRAINT...
0
Bonjour,
J'essaie actuellement sous Access d'insérer plusieurs enregistrements dans ma base de données avec la requête suivante :
insert into Fournisseur (Ref_Fournisseur,Nom_Fournisseur,Adresse1,CodePostal,Ville,Pays,Telephone) values (1,'DENIS', 'Rue Nationale',37000,'TOURS','FRANCE','02-47-50-50-50'), (6,'TATA', 'Rue Machin',37200,'TOURS','FRANCE','02-47-40-60-30');

En exécutant cette requête sous Access, il me met comme erreur : "Point-virgule absent à la fin de l'instruction SQL".

J'aimerais donc si possible savoir comment faire pour insérer plusieurs enregistrements sous Access.
Merci d'avance
0