Probleme pour ajouter un enregistrement

Ziklamor Messages postés 44 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 30 novembre 2007 - 6 juin 2007 à 15:26
Ziklamor Messages postés 44 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 30 novembre 2007 - 7 juin 2007 à 10:05
Bonjour à tous,

J'ai une base de donnée avec une table Produit (1 champ Pdt_num, et l'autre Pdt_des), ainsi qu'une application VB avec laquelle j'aimerais rajouter des enregistrements. Je vous communique ici mon code actuel :

(la connexion est faite avant avec la bdd)

Dim rst3 As New ADODB.Recordset

Private Sub ajouter_Click()


rst3.Open ("SELECT * FROM produit"), cnx
rst3.Edit
rst3.AddNew
rst3.Fields("Pdt_des") = Textbox.Text
rst3.Update
rst3.Close


End Sub

Voilà, je sais pas trop comment faire, l'erreur que celà provoque est l'erreur 3251, et je ne suis apparement pas autorisé à ajouter d'enregistrement.
J'espere que vous pourrez m'éclairer.

Merci d'avance !

Zik' :)

10 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
6 juin 2007 à 16:12
ouvres ton recordset en mode Dynaset ...

ou execute simplement :

SQL = "INSERT INTO `PRODUIT` (`Pdt_des`) VALUES ('" & Textbox.Text & "') "

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
anto37_44 Messages postés 48 Date d'inscription mardi 3 avril 2007 Statut Membre Dernière intervention 11 juin 2007 1
6 juin 2007 à 16:37
c'est une base données access ou SQL?
Si c'est access je peux peut-être t'aider.
anto37_44
0
Ziklamor Messages postés 44 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 30 novembre 2007
6 juin 2007 à 16:39
Access oui, et il parait d'apres certains sites que ce serait bien le dynaset qui soit la clé, mais je ne comprends pas, ca ne marche pas...
Jvous renvoi mon nouveau code :

Dim rst3 As New ADODB.Recordset
Dim db As Database
Public sql As String

Private Sub ajouter_Click()




sql = "select * from Produits"
Set rst3 = db.OpenRecordset(sql, dbOpenDynaset)


rst3.AddNew
rst3.Fields("Pdt_des") = Textbox.Text
rst3.Update
rst3.Close


 


End Sub
0
anto37_44 Messages postés 48 Date d'inscription mardi 3 avril 2007 Statut Membre Dernière intervention 11 juin 2007 1
6 juin 2007 à 16:46
Moi j'utilise çà pour moi et çà marche plutot bien essai dit moi si çà marche  

  Private Sub Enregistrer_Click()
  Dim Dbs As Database, Tbl As Recordset
  Set Dbs = Workspaces(0).OpenDatabase("C:\*.mdb")
  Set Tbl = Dbs.OpenRecordset("NomTable", dbOpenTable)
  Tbl.AddNew
  Tbl("Champ1") = Text2.text
  Tbl("Champ2") = Text3.text
  Tbl.Update
  Tbl.Close
  Dbs.Close
  End Sub

anto37_44
0

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

Posez votre question
Ziklamor Messages postés 44 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 30 novembre 2007
6 juin 2007 à 17:05
J'ai essayé ta ligne de code anto, mais j'ai un autre message d'erreur, qui me dit que le format de donnée n'est pas reconnu (erreur 3343). Pourtant mon fichier access a bien le bon nom, la bonne extension etc...

Jvois pas trop là...

Zik'
0
Ziklamor Messages postés 44 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 30 novembre 2007
6 juin 2007 à 17:05
J'ai essayé ta ligne de code anto, mais j'ai un autre message d'erreur, qui me dit que le format de donnée n'est pas reconnu (erreur 3343). Pourtant mon fichier access a bien le bon nom, la bonne extension etc...

Jvois pas trop là...

Zik'
0
anto37_44 Messages postés 48 Date d'inscription mardi 3 avril 2007 Statut Membre Dernière intervention 11 juin 2007 1
6 juin 2007 à 17:10
Bin moi non plus j'vois pas.
C'est bizarre, avec moi çà marche.

Essai peut être de recréer ta base de données ( une idée comme çà!)
sinon je vois pas (du moins par le moment, mais comme je ne suis que debutant, c'est pas sûr que je trouve le problème)

bon courage
anto37_44
0
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
6 juin 2007 à 22:48
Le code de 1023922 anto37_44 est du DAO alors que toi, tu avais un code en ADO. Il est possible que tu aies des erreurs avec son code parce que tu n'as pas les bonnes références de déclarées ?

Sinon, pour ton code, moi je le ferais comme ça, je l'écris à l'arrache, j'ai psa de quoi le tester sur ce PC :

Dim db As ADODB.Connection
Dim rst3 As ADODB.Recordset
Public sql As String


Private Sub ajouter_Click()


sql = "select * from Produits"
Set db = currentproject.Connection
Set rst3 = New Recordset
rst3.Open sql, db, adOpenKeyset, adLockOptimistic


rst3.AddNew
rst3.Fields("Pdt_des").Value = TextBox.Text
rst3.Update
rst3.Close
Set db = Nothing


End Sub

Molenn
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
7 juin 2007 à 08:50
Salut,

je pese que tu devrais regarder du coté des parametres de ma méthode open de ton recordset, exemple:

rst3.Open ("SELECT * FROM produit"), cnx, adOpenDynamic, adLockOptimistic
0
Ziklamor Messages postés 44 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 30 novembre 2007
7 juin 2007 à 10:05
Merci beaucoup pour vos réponses, ca marche

J'ai un nouveau petit problème : le premier enregistrement que je fais se déroule bien, il se place sur la ligne 0 dans la table Produits, mais quand je veux ajouter un autre enregistrement, il veut aussi se placer sur la ligne 0 donc erreur de doublons etc...

Il me faudrait savoir comment le faire passer à la ligne quand je lance un nouvel enregistrement...

Merci d'avance :)

Zik'
0