[vba] requete sql
poulain35
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai une erreur pour supprimer des données d'une BDD Access a partir de mon code VBA Excel :
Il me mette Erreur d'exécution '3219' : Opération non valide. !! En mode débogage, je tombe sur la ligne : Set table = base.OpenRecordset(requete)
Je ne vois pas d'ou vien le probleme.
Merci d'avance.
J'ai une erreur pour supprimer des données d'une BDD Access a partir de mon code VBA Excel :
'Se connecter à la base de données
CheminBDD = ThisWorkbook.Path & "\BDD_WOP.accdb"
Set base = DBEngine.OpenDatabase(CheminBDD)
'Déclaration la requète de selection
requete = "DELETE id_fic, nom_fic, type_fic, loc_fic FROM fichiers WHERE nom_fic = '" & liaison1 & "'"
'Déclaration du recordset
Set table = base.OpenRecordset(requete)
Il me mette Erreur d'exécution '3219' : Opération non valide. !! En mode débogage, je tombe sur la ligne : Set table = base.OpenRecordset(requete)
Je ne vois pas d'ou vien le probleme.
Merci d'avance.
A voir également:
- [vba] requete sql
- Logiciel sql - Télécharger - Bases de données
- Excel compter cellule couleur sans vba - Guide
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Vba sleep ✓ - Forum VB / VBA
- Incompatibilité de type vba ✓ - Forum VB / VBA
5 réponses
Bonjour,
La syntaxe d'une requête SQL DELETE est :
DELETE FROM [NOM_TABLE] WHERE [CONDITIONS]
Donc en premier lieu, ta requête est invalide.
En second lieu, le OpenRecordset permet d'ouvrir un jeu d'enregistrements (comme son nom l'indique).
Une requête SQL DELETE ne renvoie aucun enregistrement (contrairement à un SELECT).
Même si je ne connais pas bien VBA ; je pense donc que le OpenRecordset est inapproprié pour l'exécution d'une requête DELETE.
Cordialement, M.
La syntaxe d'une requête SQL DELETE est :
DELETE FROM [NOM_TABLE] WHERE [CONDITIONS]
Donc en premier lieu, ta requête est invalide.
En second lieu, le OpenRecordset permet d'ouvrir un jeu d'enregistrements (comme son nom l'indique).
Une requête SQL DELETE ne renvoie aucun enregistrement (contrairement à un SELECT).
Même si je ne connais pas bien VBA ; je pense donc que le OpenRecordset est inapproprié pour l'exécution d'une requête DELETE.
Cordialement, M.
Bonjour,
Je pense que swedd a raison sur la syntaxe du DELETE.
Essaye :
DIM SQL_test As String
DIM tabe as Recordset
SQL_test = "DELETE FROM fichiers WHERE nom_fic = '" & liaison1 & "';"
Set table = base.OpenRecordset(SQL_test)
table.Close
Sinon
DoCmd.RunSQL "DELETE FROM fichiers WHERE nom_fic = '" & liaison1 & "';"
Je pense que swedd a raison sur la syntaxe du DELETE.
Essaye :
DIM SQL_test As String
DIM tabe as Recordset
SQL_test = "DELETE FROM fichiers WHERE nom_fic = '" & liaison1 & "';"
Set table = base.OpenRecordset(SQL_test)
table.Close
Sinon
DoCmd.RunSQL "DELETE FROM fichiers WHERE nom_fic = '" & liaison1 & "';"
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
une piste peut-^tre:
1/ton identifiant est il autoincrémenté ?
2/ as tu des intégrités référentielles avec d'autre tables (dependance)?
3/mais je partage aussi les remarques de Swed et dylan sur la syntaxe de DELETE
autre chose:
Tu peux aussi feinter avec
SELECT..... FROM fichiers WHERE nom_fic = '" & liaison1 & "';"
puis avec table
While not table.eof
table.delete
table.movenext
wend
Michel
1/ton identifiant est il autoincrémenté ?
2/ as tu des intégrités référentielles avec d'autre tables (dependance)?
3/mais je partage aussi les remarques de Swed et dylan sur la syntaxe de DELETE
autre chose:
Tu peux aussi feinter avec
SELECT..... FROM fichiers WHERE nom_fic = '" & liaison1 & "';"
puis avec table
While not table.eof
table.delete
table.movenext
wend
Michel