Suppression d'un enregistrement ACCESS à partir d'un feuile VB [Résolu]

Messages postés
335
Date d'inscription
vendredi 21 octobre 2005
Statut
Membre
Dernière intervention
8 mars 2008
- - Dernière réponse : chaibat05
Messages postés
1884
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
- 23 avril 2007 à 02:10
Bonsoir,

je voulais prendre votre avis sur ce code qui marche pas pour la suppression d'un enregistrement d'une table dans une feuille VB6, voici le code:

Private Sub Suppression_Click()
' Chemin complet et nom de la base
strDB = "C:\pesageo.mdb"
' Nom de la table
strTable = "Véhicule"
 
' 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

oRS.Delete
Adodc1.Refresh
On Error Resume Next 'éviter l' erreur
oRS.MoveNext 'pour se palcer au suivant
If oRS.EOF Then oRS.MovePrevious
End Sub

mais celà engendre l'erreur suivante:

Erreur d'execution '-2147467259 (80004005)':
Impossible de supprimer dans les tables spécifiées.

Merci de m'aider
Afficher la suite 

20/48 réponses

Meilleure réponse
Messages postés
1884
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
3
Merci
tu es sur la bonne voie, il manque juste
oRS.Open "SELECT * FROM Véhicule WHERE N°véhicule = '" & Text1(0).Text & "'" _
, oConn,, adOpenDynamic, adLockOptimistic, adCmdText

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 201 internautes nous ont dit merci ce mois-ci

Commenter la réponse de chaibat05
Messages postés
1884
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
3
Merci
il faut lire

oRS.Open "SELECT * FROM Véhicule WHERE N°véhicule = '" & Text1(0).Text & "'" _
, oConn, adOpenDynamic, adLockOptimistic, adCmdText

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 201 internautes nous ont dit merci ce mois-ci

Commenter la réponse de chaibat05
Messages postés
4824
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
11
0
Merci
Salut,

tu es sûr que ta table : Véhicule existe ?

A+
Exploreur

 
Commenter la réponse de cs_Exploreur
Messages postés
4824
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
11
0
Merci
Salut,

Car je viens de tester ton code jusqu'à l'exécution de la requête, et sur mon aplli, il m'efface bien toute ma table et tout les champs de celle-ci..

A+
Exploreur

 
Commenter la réponse de cs_Exploreur
Messages postés
335
Date d'inscription
vendredi 21 octobre 2005
Statut
Membre
Dernière intervention
8 mars 2008
0
Merci
je suis désolé mais ce code est correcte et efface belle et bien les enregistrements mais pas celui sélectionné et par la suite il supprime le premier meme si on sélectionne un autre

Merci pour la remarque
Commenter la réponse de basamir
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
1
0
Merci
Une petite question car je n'ai pas compris une chose,

OU est l'erreur (la ligne en question) et veux tu supprimer un enregistrement ou tous?

Car pour tout effacer, je fais cela:

rs.Open "DELETE * FROM Nom_Table", ta_connecxion

en remplacant ca donnerait pour toi:

rs.Open "DELETE * FROM Vehicule", oConn

Et sinon, c'est bon, tu as reussi ta liaison serie ?
Commenter la réponse de cs_Nicko11
Messages postés
4824
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
11
0
Merci
Salut,

Je n'ai pas dit que ton code ne fonctionné pas Basamir, mais il y a une chose qui est bizarre...Tu exécute donc ta requête qui efface toute ta table, avant d'avoir récupéré le champ à effacer!!!

Si tu veux effacer un champ bien précis dans ta table véhicule, il faut le préciser dans ta requête avec WHERE =....

Moi, quand je veux effacer un champ dans ma table aprés un click sur ma listview, cela donne cela :
Sql "DELETE FROM hippo WHERE N° " & Key & ""

Key(ma variable), pour moi représente le N° du champ de la clé primaire, que j'ai récupéré juste avant d'excécuter ma requête....

Nicko >> Tu as la bonne taille !!!

A+
Exploreur

 
Commenter la réponse de cs_Exploreur
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
1
0
Merci
Salut Exploreur, desidemment on est souvent amené a se croiser en ce moment. (Pour la taille, je sais pas car les votres sont sont quand meme plus grand).

Pour le pb de basamir, je suis a l'ouest car tu parles de suppimer un champ, mais ca supprimerait pas un enregistrement plutot.
Sql "DELETE FROM hippo WHERE N° " & Key & ""

Sinon, basamir, quand tu repasse, dis nous vraiment ce que tu veux faire precisement. Supprimer un enregistrement, tous les enregistrements, ou un champ, bref ce que tu veux faire quoi.

Et n'oublie pas, quand tu as une erreur dis nous la ligne et le type d'erreur MERCI.
Commenter la réponse de cs_Nicko11
Messages postés
4824
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
11
0
Merci
Salut Nocko,


Tu as raison, ce n'est pas un champ que je veux dire, c'est effacer un enregistrement...


A+
Exploreur


 
Commenter la réponse de cs_Exploreur
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
1
0
Merci
Tu vas penser que je chipote grave mais c'est que je suis un peu perdu mais le mieux c'est d'attendre la reponse de basamir
Commenter la réponse de cs_Nicko11
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
1
0
Merci
Au fait, Exploreur, je t'ai vu passer a la tele hier, tu es si celebre que ca LOL.
Commenter la réponse de cs_Nicko11
Messages postés
335
Date d'inscription
vendredi 21 octobre 2005
Statut
Membre
Dernière intervention
8 mars 2008
0
Merci
je ne veux pas supprimer tous les enregistrements mais seulement celui selectionné
pour la communication c'est résolu grace à un ami que j'ai connu sur vbfrance
Commenter la réponse de basamir
Messages postés
335
Date d'inscription
vendredi 21 octobre 2005
Statut
Membre
Dernière intervention
8 mars 2008
0
Merci
j'ai essayé ça, mais ça n a pas marché:
Private Sub Suppression_Click()
' Chemin complet et nom de la base
strDB = "C:\pesageo.mdb"
' Nom de la table
strTable = "Véhicule"
 
' 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 "DELETE * FROM Véhicule WHERE N°véhicule = " & Text1(0).Text & "", oConn, adOpenDynamic, adLockOptimistic, adCmdTable
'strTable
oRS.Delete
Adodc1.Refresh
On Error Resume Next 'éviter l' erreur
oRS.MoveNext 'pour se palcer au suivant
If oRS.EOF Then oRS.MovePrevious
End Sub

Erreur au niveau de cette ligne:
oRS.Open "DELETE * FROM Véhicule WHERE N°véhicule = " &
Text1(0).Text & "", oConn, adOpenDynamic, adLockOptimistic,
adCmdTable

Erreur de syntaxe dans la clause FORM
Commenter la réponse de basamir
Messages postés
4824
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
11
0
Merci
Salut,

Essaye cela :

oRS.Open "DELETE * FROM Véhicule WHERE N°véhicule = '" & Text1(0).Text & "' ", oConn, adOpenDynamic, adLockOptimistic, adCmdTable

Tu as oublié des quotes en rouge

A+
Exploreur

 
Commenter la réponse de cs_Exploreur
Messages postés
335
Date d'inscription
vendredi 21 octobre 2005
Statut
Membre
Dernière intervention
8 mars 2008
0
Merci
c'est pareil même avec les quotes '   ' la meme erreur apparait sur la meme ligne , bizzare non?
Commenter la réponse de basamir
Messages postés
4824
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
11
0
Merci
Re,

Essaye juste comme cela :

oRS.Open "DELETE * FROM Véhicule WHERE N°véhicule = " & Text1(0).Text & "", oConn

A+
Exploreur

 
Commenter la réponse de cs_Exploreur
Messages postés
335
Date d'inscription
vendredi 21 octobre 2005
Statut
Membre
Dernière intervention
8 mars 2008
0
Merci
avec :
oRS.Open "DELETE * FROM Véhicule WHERE N°véhicule = " & Text1(0).Text & "", oConn

Voici l'erreur générée:
Erreur de syntaxe (opérateur absent) dans l'expression 'N°véhicule = 45621A7'
Commenter la réponse de basamir
Messages postés
4824
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
11
0
Merci
Désolé, là je nage grave...

A+
Exploreur

 
Commenter la réponse de cs_Exploreur
Messages postés
335
Date d'inscription
vendredi 21 octobre 2005
Statut
Membre
Dernière intervention
8 mars 2008
0
Merci
Merci Exploreur

est ce que tu peux me proposer une solution différente de la mienne car là j'ai l'impression que toute ma solution est foutue.

Merci pour ton soutien
Commenter la réponse de basamir
Messages postés
4824
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
11
0
Merci
Salut,

Je viens d'essayer un truc sur mon aplli et cela fonctionne, essaye toi si cela marche pour toi aussi :

Dim MonText As String
Dim Sql As String

MonText = Text1(0).Text

Sql = "DELETE  FROM Véhicule WHERE N°véhicule = " & MonText & ""

oRS.Open Sql, oConn

A+
Exploreur

 
Commenter la réponse de cs_Exploreur