Probleme pour ajouter un enregistrement

Signaler
Messages postés
44
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
30 novembre 2007
-
Messages postés
44
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
30 novembre 2007
-
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

Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
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
Messages postés
48
Date d'inscription
mardi 3 avril 2007
Statut
Membre
Dernière intervention
11 juin 2007
1
c'est une base données access ou SQL?
Si c'est access je peux peut-être t'aider.
anto37_44
Messages postés
44
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
30 novembre 2007

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
Messages postés
48
Date d'inscription
mardi 3 avril 2007
Statut
Membre
Dernière intervention
11 juin 2007
1
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
Messages postés
44
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
30 novembre 2007

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'
Messages postés
44
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
30 novembre 2007

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'
Messages postés
48
Date d'inscription
mardi 3 avril 2007
Statut
Membre
Dernière intervention
11 juin 2007
1
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
Messages postés
797
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
23 février 2011
7
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
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
3
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
Messages postés
44
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
30 novembre 2007

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'