Suppression d'un enregistrement ACCESS à partir d'un feuile VB [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
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
-
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

48 réponses

Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
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
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
il faut lire

oRS.Open "SELECT * FROM Véhicule WHERE N°véhicule = '" & Text1(0).Text & "'" _
, oConn, adOpenDynamic, adLockOptimistic, adCmdText
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
Salut,

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

A+
Exploreur

 
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
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

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

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
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
2
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 ?
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
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

 
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
2
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.
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
Salut Nocko,


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


A+
Exploreur


 
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
2
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
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
2
Au fait, Exploreur, je t'ai vu passer a la tele hier, tu es si celebre que ca LOL.
Messages postés
335
Date d'inscription
vendredi 21 octobre 2005
Statut
Membre
Dernière intervention
8 mars 2008

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
Messages postés
335
Date d'inscription
vendredi 21 octobre 2005
Statut
Membre
Dernière intervention
8 mars 2008

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
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
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

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

c'est pareil même avec les quotes '   ' la meme erreur apparait sur la meme ligne , bizzare non?
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
Re,

Essaye juste comme cela :

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

A+
Exploreur

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

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'
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
Désolé, là je nage grave...

A+
Exploreur

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

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
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
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