Impossible d'ajouter des données dans une table access avec insert into

cs_toscan Messages postés 9 Date d'inscription dimanche 29 mai 2005 Statut Membre Dernière intervention 16 octobre 2008 - 13 oct. 2008 à 15:14
mousphate Messages postés 7 Date d'inscription jeudi 14 décembre 2000 Statut Membre Dernière intervention 23 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

5 réponses

lillith212 Messages postés 1229 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 16 juin 2009
13 oct. 2008 à 15:30
Salut,

"insert into Présences (code_presence, code_animateur, code_journée, présent, heures, commentaire, MAD) values (" & CPRE & code_anim & ", 1 , true, 9,"","")"

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 -- <
0
cs_thierry la fronde Messages postés 351 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 12 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)

thierry la fronde
0
parkouda Messages postés 14 Date d'inscription samedi 4 mars 2006 Statut Membre Dernière intervention 17 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.

La programmation est la base de tout
0
cs_toscan Messages postés 9 Date d'inscription dimanche 29 mai 2005 Statut Membre Dernière intervention 16 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
0

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

Posez votre question
mousphate Messages postés 7 Date d'inscription jeudi 14 décembre 2000 Statut Membre Dernière intervention 23 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
0
Rejoignez-nous