rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

[ACCESS]-Problème INSERT

Posté par microsoluces, le mardi 17 octobre 2006 à 11:40:39
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.
Répondre à microsoluces  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le mardi 17 octobre 2006 à 15:24:17
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;

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
microsoluces, le mardi 17 octobre 2006 à 15:37:36
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"
Répondre à microsoluces

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le mardi 17 octobre 2006 à 15:49:26
Si, mais c'est dans la clause SELECT qu'il ne le voit pas : mets BRS.CODE, BRS.LIBELLE, BRS.HT...
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
microsoluces, le mardi 17 octobre 2006 à 16:03:39
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;
Répondre à microsoluces

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le mardi 17 octobre 2006 à 16:12:54
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);

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
microsoluces, le mardi 17 octobre 2006 à 17:22:07
Ba écoutes, là chapeau bas... Impec, ca marche !

Merci.

Etienne
Répondre à microsoluces

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Slapin, le mercredi 20 juin 2007 à 12:26:09
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,Co­deActivite,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
Répondre à Slapin

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le mercredi 20 juin 2007 à 13:02:42
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...) ?
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Slapin, le mercredi 20 juin 2007 à 14:10:54
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
Répondre à Slapin

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le mercredi 20 juin 2007 à 14:14:04
Quel est le nom de la colonne en clé primaire ?
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Slapin, le mercredi 20 juin 2007 à 14:18:31
c'est Numprestation
Répondre à Slapin

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le mercredi 20 juin 2007 à 14:53:00
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...
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Slapin, le mercredi 20 juin 2007 à 15:02:01
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
Répondre à Slapin

14


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le mercredi 20 juin 2007 à 15:32:53
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 :-)

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

15


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Slapin, le mercredi 20 juin 2007 à 16:57:38
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
Répondre à Slapin

16


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le mercredi 20 juin 2007 à 22:14:42
La jointure ne s'applique qu'aux requêtes (LEFT, RIGHT, INNER), pas à la définition des tables, on parle alors de CONSTRAINT...
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

17


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
COLOMBAT, le jeudi 3 avril 2008 à 17:09:40
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,P­ays,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
Répondre à COLOMBAT

18


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 Polux31, le jeudi 3 avril 2008 à 17:30:31
bonjour,

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

;o)

polux
Répondre à Polux31
Logiciels pertinents trouvés dans les téléchargements
Télécharger OpenOffice.org 2.4.1OpenOffice.org - OpenOffice est une suite bureautique complète entièrement gratuite, compatible avec la suite Microsoft Office. Elle...Catégorie: Suite bureautique
Licence: Open Source
Télécharger PowerISO 4.2PowerISO - PowerISO est un outil de gestion d'images de CD et DVD, capable d'ouvrir, d'extraire, de créer, d'éditer, de compresser et...Catégorie: Gravure
Licence: Demo
Télécharger AVS Disc Creator 2.1.5.100AVS Disc Creator - Avec AVS DiscCreator vous pouvez rapidement graver vos données sur CD/DVD et Blu-ray disc. <h2>Fonctionnalités</h2> ...Catégorie: Gravure
Licence: Freeware/gratuit
Télécharger SSH Secure Shell 3.0 build 203SSH Secure Shell - SSH secure shell for workstations est un client SSH flexible permettant de se connecter de façon sécurisée à des...Catégorie: Telnet/SSH
Licence: Open Source
Plus de logiciels gratuits sur « [ACCESS] Problème INSERT »