Impossible d'ajouter des données dans une table access avec insert into
cs_toscan
Messages postés9Date d'inscriptiondimanche 29 mai 2005StatutMembreDernière intervention16 octobre 2008
-
13 oct. 2008 à 15:14
mousphate
Messages postés7Date d'inscriptionjeudi 14 décembre 2000StatutMembreDernière intervention23 février 2009
-
14 nov. 2008 à 18:49
Bonjour à tous,
Je n'arrive pas à ajouter un enregistrement dans une table en vba avec insert into
Voici le code :
SQL = "insert into Présences (code_presence, code_animateur, code_journée, présent, heures, commentaire, MAD) values (" & CPRE & code_anim & ", 1 , true, 9,"","")"
DoCmd.RunSQL SQL
Le code_presence est le champs clé (autoincrémenté )de la table en relation avec une autre. CPRE et code_anim sont des variables parfaitement reconnues, code_journée est un entier, présent est une case à cocher, heures un nombre, commentaire et MAD sont des champs textes qui seront saisie ensuite.
La variable CPRE compte le nombre d'enregistrement dans la table; en rajoutant 1 : j'ai le code_presence de l'enregistrement que je veux rajouter.
Je reçois l'horrible message concernant la violation de clé etc...
Question : j'ai l'impression que ma technique de compter les enregistrements de la table pour avoir la valeur de l'enregistrement à enregistrer n'est pas bonne! La valeur de l'enregistrement devrait se calculer toute seule à cause de l'incrémentation! Mais je ne sais pas la formuler en sql access(en php-mysql je mettrais 2 ' '!)
Merci à tous
Toscan
1. Evite les accent dans une table que ce soit par son nom ou par ses champs!
2. Tu as
code_presence = la concaténation de la chaine CPRE et code_anim --> c'est normal???
En plus si il est auto incrémenter il me semble qu'il n'est pas nécessaire de définir sa valeur (mais je suis pas sure)
3. Tu ne donnes pas de valeur à ton champ code_animateur
4. En utilisant ce que tu as fait..
"insert into Présences (code_presence, code_animateur, code_journée, présent, heures, commentaire, MAD --> c'est pas obligé donc pas besoin de le mettre non?) values (" & CPRE & "," & code_anim & ", 1 , true, 9 --> fin des données,"","")"
En ce qui concerne l'ensemble ce que tu présente ressemble à une usine à gaz mais je peux me tromper
bon courage
S.L.B.
<hr />-- Le règlement tu liras -- Des recherches tu feras -- Le style SMS tu banniras --
-- De la validation pertinente tu feras -- Du respect tu auras -- <
cs_thierry la fronde
Messages postés351Date d'inscriptionmercredi 21 juillet 2004StatutMembreDernière intervention12 août 2009 13 oct. 2008 à 17:08
bonsoir,
si je peux me permettre une remarques, les noms de champs et de tables avec des lettres accentuées n'est-ce pas à éviter ? (à moins que mes techniques commencent à prendre de l'âge)
parkouda
Messages postés14Date d'inscriptionsamedi 4 mars 2006StatutMembreDernière intervention17 novembre 2009 16 oct. 2008 à 10:12
Le champ auto increment n'est pas géré dans la programmation, c'est géré par access, donc ne doit pas figurer dans INSERT INTO. lorsqu'on le renseigne il ya un conflit. Aussi comme la dit un membre le nombre de champ dans insert into( ) doit correspondre au nombre de valeur dans values( ), ce qui n'est pas le cas.
cs_toscan
Messages postés9Date d'inscriptiondimanche 29 mai 2005StatutMembreDernière intervention16 octobre 2008 16 oct. 2008 à 11:16
Merci pour vos réponses pertinentes!
En fait, j'étais mauvais dans la compréhension du problème car pas touché access depuis un certain temps!
Il suffisait de coder :
Dim MaTable As Recordset
Set MaTable = CurrentDb.OpenRecordset("presences", DB_OPEN_TABLE)
MaTable.AddNew
MaTable("code_animateur") = code_anim
MaTable("code_journée") = 1
MaTable("présent") = True
MaTable("heures") = code_statut
MaTable("commentaire") = ""
MaTable("MAD") = ""
MaTable.Update
MaTable.Close
Toscan
Vous n’avez pas trouvé la réponse que vous recherchez ?
mousphate
Messages postés7Date d'inscriptionjeudi 14 décembre 2000StatutMembreDernière intervention23 février 2009 14 nov. 2008 à 18:49
Bonsoir, toscan
Pourrais tu expliquer un peut ton code (ce que ta compris) je suis débutant et je voudrais bien savoir la signification des libellés qui sont entre parenthése dans ton code est que ce sont des nom de champs et aussi le
Set MaTable=currentDb.recordset("présence",DB_OPEN_TABLE)
Merci