Problème d'ajout d'un enregistrement dans une table ACCESS

[Résolu]
Signaler
Messages postés
335
Date d'inscription
vendredi 21 octobre 2005
Statut
Membre
Dernière intervention
8 mars 2008
-
Messages postés
19
Date d'inscription
mercredi 17 mars 2010
Statut
Membre
Dernière intervention
25 mars 2011
-
Bonjour les amis,

je bute contre un problème que je ne comprends pas, j'ai mis sur une feuille des boutons pour ajouter des enregistrements dans une table ACCESS, mais celà m'affiche une erreur, voici mon code:

Ajouter:
Private Sub Command3_Click()
Adodc1.Recordset.AddNew
End Sub

Enregistrer:
Private Sub Command4_Click()
' Chemin complet et nom de la base
strDB = "C:\pesageo.mdb"
' Nom de la table
strTable = "Produit"
 
' Ouverture connexion vers la base
Set oConn = New ADODB.Connection
oConn.Provider = "Microsoft.Jet.OLEDB.4.0"
oConn.Open strDB
 
' Optionnel : Vide la table
'oConn.Execute "DELETE FROM " & strTable
 
' Ouverture recordset sur la table
Set oRS = New ADODB.Recordset
oRS.CursorLocation = adUseClient
oRS.Open strTable, oConn, adOpenDynamic, adLockOptimistic, adCmdTable
 
'For i = 4 To 9  ' Début de Boucle, à partir de la ligne index 0 et ce, jusqu'à la dernière
     enr1 = Text1(0).Text ' Extraction de la ligne en cours
     enr2 = Text1(1).Text
     oRS.AddNew
     oRS.Fields("code_produit") = enr1  ' remplacer Champ1 par le vrai nom du champ
     oRS.Fields("Libellé") = enr2
    
'Next ' Fin de Boucle

If oRS.EditMode = adEditAdd Or _
   oRS.EditMode = adEditInProgress Then
       oRS.Update
End If
 
' Fermeture et libération des objets
'If oRS.State <> adStateClosed Then oRS.Close
'Set oRS = Nothing
'oConn.Close
'Set oConn = Nothing

oConn.Execute "SELECT * FROM " & strTable

Set oRS = New ADODB.Recordset
oRS.CursorLocation = adUseClient
oRS.Open strTable, oConn, adOpenDynamic, adLockOptimistic, adCmdTable

oRS.MoveFirst
'Do While oRS.EOF = False
  '  List1.AddItem.Fields (1)
 '   oRS.MoveNext
'Loop
End Sub

l'erreur est la suivante:
L'opération doit utiliser une requête qui peut être mise à jour.

Merci les amis

34 réponses

Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
on est bien d' accord
Ajouter
Saisie
Enregistrer
Messages postés
335
Date d'inscription
vendredi 21 octobre 2005
Statut
Membre
Dernière intervention
8 mars 2008

je ne peux pas supprimer Adodc1 car je dois visualiser tous les enregistrements dans un tableau pour permettre le choix d'un produit et son transfert vers un champ d'un autre Form

pourtant j'ai essayé ce que tu m'as dit et ça marche mais je n'affiche pas tous les enregistrements

Qu'est ce queje peux faire alors???
Messages postés
335
Date d'inscription
vendredi 21 octobre 2005
Statut
Membre
Dernière intervention
8 mars 2008

ça larche maintenant

je vais abuser de ta patience mais j'ai essayé la suppresion avec :

oRS.Delete
Adodc1.Refresh
oRS.MoveNext
If oRS.EOF = True Then
oRS.MovePrevious
End If

mais ça fonctionne pas il y a une erreur retournée!!!
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Attention avec Delete...
Si tu n' as qu' un enregistrement, après Delete tu ne te pointe sur aucun enregistrement
et .MoveNext ou le .MovePrevious renvoie une erreur


Fais comme ceci
oRS.Delete
Adodc1.Refresh
On Error Resume Next 'éviter l' erreur
oRS.MoveNext 'pour se palcer au suivant
If Ors.Eof Then oRS.MovePrevious 
Maintenant soit tu es en fin de fichier, soit au précédent,
soit au début de fichier
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
l' erreur arrive aussi si l' enregistrement que tu viens
de supprimer était le dernier de la liste
Messages postés
335
Date d'inscription
vendredi 21 octobre 2005
Statut
Membre
Dernière intervention
8 mars 2008

j'ai essayé mais je crois que celà supprime le premier enregistrement et non celui sélectionné?!!
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
si tu supprimesavec ors, tu dois d' abord rechercher avec
Ors l' élément sélectionné...
lorsque tu le trouves tu supprimes.
Sinon laisses tomber pou cette nuit et va te reposer
Moi aussi je vais faire de même
Moi je suis erreinté ...

A la prchaine InchAllah..
Messages postés
335
Date d'inscription
vendredi 21 octobre 2005
Statut
Membre
Dernière intervention
8 mars 2008

Ok inchaellah, je laisse tomber pour cette nuit tout en ésperant que demain nchaellah tu vas m'apporter une aide comme ce soir.

je te remercie mon frère
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
si tu as des problème avec Ors, supprimes directement avec Adodc1
Adodc1.Recordset.Delete
et refais le même traitement pour la gestion de l' erreur
mais en utilisant toujours Adodc1

Allez Bonne nuit
Je t' enverrais la facture demain...

 
Messages postés
335
Date d'inscription
vendredi 21 octobre 2005
Statut
Membre
Dernière intervention
8 mars 2008

Private Sub Suppression_Click()
Adodc1.Recordset.Delete
Adodc1.Refresh
On Error Resume Next 'éviter l' erreur
Adodc1.Recordset.MoveNext
If Adodc1.Recordset.EOF Then Adodc1.Recordset.MovePrevious
End Sub

et voici l'erreur générée:
Impossible de supprimer dans les tables spécifiées, tout en sachant que mon Adodc1 est liée à ma table produit.

!!!! bizzare
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Bonsoir,
regardes dans les propriétés de ton Adodc...
CusrorType doit être Dynamic
Messages postés
335
Date d'inscription
vendredi 21 octobre 2005
Statut
Membre
Dernière intervention
8 mars 2008

ça marche pas non plus

!!!!
Messages postés
335
Date d'inscription
vendredi 21 octobre 2005
Statut
Membre
Dernière intervention
8 mars 2008

on est arrivé au terminus je crois :)
Messages postés
19
Date d'inscription
mercredi 17 mars 2010
Statut
Membre
Dernière intervention
25 mars 2011

bjr,jé une problème lors de code d'ajout d'un enregistrement dans une base Access2007,je peut pa faire même la connexion.??