Suppression d'un enregistrement ACCESS à partir d'un feuile VB

Résolu
basamir Messages postés 335 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 8 mars 2008 - 19 avril 2007 à 23:19
chaibat05 Messages postés 1883 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

48 réponses

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

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

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

A+
Exploreur

 
0
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
19 avril 2007 à 23:46
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

 
0

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

Posez votre question
basamir Messages postés 335 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 8 mars 2008
20 avril 2007 à 02:11
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
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
20 avril 2007 à 08:52
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 ?
0
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
20 avril 2007 à 10:47
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

 
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
20 avril 2007 à 11:08
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.
0
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
20 avril 2007 à 11:17
Salut Nocko,


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


A+
Exploreur


 
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
20 avril 2007 à 11:31
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
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
20 avril 2007 à 11:32
Au fait, Exploreur, je t'ai vu passer a la tele hier, tu es si celebre que ca LOL.
0
basamir Messages postés 335 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 8 mars 2008
20 avril 2007 à 20:21
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
0
basamir Messages postés 335 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 8 mars 2008
20 avril 2007 à 20:36
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
0
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
20 avril 2007 à 20:41
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

 
0
basamir Messages postés 335 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 8 mars 2008
20 avril 2007 à 20:47
c'est pareil même avec les quotes '   ' la meme erreur apparait sur la meme ligne , bizzare non?
0
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
20 avril 2007 à 21:26
Re,

Essaye juste comme cela :

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

A+
Exploreur

 
0
basamir Messages postés 335 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 8 mars 2008
20 avril 2007 à 21:51
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'
0
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
20 avril 2007 à 22:03
Désolé, là je nage grave...

A+
Exploreur

 
0
basamir Messages postés 335 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 8 mars 2008
21 avril 2007 à 00:25
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
0
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
21 avril 2007 à 11:44
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

 
0