ADO Supprimer tous les enregistrements d'une table [Résolu]

cboin 9 Messages postés vendredi 2 septembre 2005Date d'inscription 10 janvier 2007 Dernière intervention - 26 juil. 2006 à 16:36 - Dernière réponse : Eagle888 9 Messages postés mercredi 19 avril 2006Date d'inscription 8 août 2006 Dernière intervention
- 31 juil. 2006 à 10:54
Bonjour,

j'essai d'utiliser le code suivant pour supprimer tous les enregistrements d'une table

Sub cde_Vider_BDD()
    frm_Principale.Adodc1_tbl_Liste_Barres.Refresh    
    With frm_Principale.Adodc1_tbl_Liste_Barres.Recordset
        .Delete adAffectAllChapters
    End With
    frm_Principale.Adodc1_tbl_Liste_Barres.Refresh
End Sub

et ce code génère le message d'erreur suivant :

Erreur d'exécution 3219
L'opération demandée n'est pas autorisée dans ce contexte.

A quoi cela est-il dû et comment contourner ce problème ?
Je vois bien la solution qui consiste à effacer tous les enregistrements un par un mais je pense que cela n'est pas très propre et pas rapide.

Si quelqu'un peut m'éclairer sur ce sujet ...
A bientôt.
Afficher la suite 

5 réponses

Répondre au sujet
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 27 juil. 2006 à 09:02
+3
Utile
Salut,


Utilises les objets Connection et Recordset

@+, Julien
Pensez: Règlement/STRONG>
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de jrivet
Eagle888 9 Messages postés mercredi 19 avril 2006Date d'inscription 8 août 2006 Dernière intervention - 31 juil. 2006 à 10:54
+3
Utile
Le plus rapide consiste a supprimer ta table et la recree

cnn1.ConnectionString = "provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & App.Path & "\database.mdb ;User Id=Admin; Password="
cnn1.Open

'Test l'existence de la table
Set MonRs = cnn1.OpenSchema(adSchemaTables)
    While Not MonRs.EOF
          If MonRs!TABLE_NAME = "nom de ta table" Then
          test = True
          End If
          MonRs.MoveNext
     Wend
MonRs.Close

'Si la table existe , on la supprime avec une requete SQL
If test = True Then
sql = "DROP TABLE ByEmployee"
cnn1.Execute sql
End If

'On crée une nouvelle table par une requete SQL
sql = "CREATE TABLE Matable (Nom type,Nom type,Nom type )"
cnn1.Execute sql

Ou le nom designe le nom de la colonne et type le type d'argument de la colonne
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Eagle888
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 26 juil. 2006 à 16:40
0
Utile
Salut,
pourquoi tu ne passes pas par une requête SQL:


DELETE * FROM NOMTABLE

@+, Julien
Pensez: Règlement/STRONG>
Commenter la réponse de jrivet
econs 4066 Messages postés mardi 13 mai 2003Date d'inscription 23 décembre 2008 Dernière intervention - 26 juil. 2006 à 17:07
0
Utile
Salut,

Un petit "TRUNCATE nomDeLaTable" serait plus approprié. Ca vide les enregistrements, et remet, entre autres, les numéros auto à 0 ... Bref, çà réinitialise complètement la table, ce que ne fait pas DELETE.






Manu


--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.
Commenter la réponse de econs
cboin 9 Messages postés vendredi 2 septembre 2005Date d'inscription 10 janvier 2007 Dernière intervention - 26 juil. 2006 à 18:10
0
Utile
Merci pour vos réponses :


je veux bien faire les essais mais comment dois-je procéder pour envoyer une requête SQL via ADO ?


Cela serait pratique pour faire des filtres, entre autres, car la commande "Filter" ne gère qu'un seul critère a priori.


Merci.


Charles
Commenter la réponse de cboin

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.