Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/06/2011, 11h30   #1
Membre régulier
 
Inscription : avril 2005
Messages : 251
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 251
Points : 86
Points : 86
Par défaut Vider toutes les tables d' une base

Bonjour le forum
On peut utilisé soit Docmd.Runsql ou Currentdb.execute pour supprimer les données d' une table. Mais Comment peut on proceder pour faire un raz des données de toutes les tables en une seule fois.
Aladin
Aladin_23 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2011, 12h08   #2
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 209
Points : 6 209
Envoyer un message via MSN à argyronet
Bonjour,

Tu n'as pas d'autre choix que de procéder table par table...
Il y a quelques années, j'avais pondu une fonction qui remmplissait ce rôle :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
Public Function TruncateAllTables(ByVal OnlyLinkedTables As Boolean) As Boolean
'---------------------------------------------------------------------------
' Procedure     : TruncateAllTables
' DateTime      : 8/06/2005
' Author        : Jean-Philippe AMBROSINO
' Purpose       : Delete all [linked] tables of the DB
'...........................................................................
' Parameters    : OnlyLinkedTables = True
 
' Return Codes  :  = True if success
'...........................................................................
' Notes         :
'---------------------------------------------------------------------------
 
Dim oDB                                                As DAO.Database
Dim oTDF                                               As DAO.TableDef
Dim SQL                                                As String
Dim T                                                  As Long
 
    On Error GoTo L_ErrTruncateAllTables
    Set oDB = CurrentDb()
    For Each oTDF In oDB.TableDefs
        If Left$(oTDF.Name, 4) <> "MSys" And InStr(oTDF.Name, Chr(126)) = 0 Then
            SQL = "DELETE * FROM [" & oTDF.Name & "];"
            If OnlyLinkedTables Then
                If Len(oTDF.Connect) = 0 Then
                    GoTo L_Next_Table
                Else
                    T = T + 1
                End If
            End If
            oDB.Execute SQL, dbFailOnError
L_Next_Table:
        End If
    Next
    If OnlyLinkedTables = -1 And T = 0 Then
        Err.Raise 3078, "Aucune table liée", "Il n'existe pas de tables liées dans cette base de données."
    End If
    MsgBox "Toutes les tables " & IIf(OnlyLinkedTables, "liées", "") & " ont été effacées.", vbInformation, "TABLES TRUNCATED"
    If Not oDB Is Nothing Then oDB.Close
    TruncateAllTables = True
    On Error GoTo 0
L_ExTruncateAllTables:
    Set oTDF = Nothing
    Set oDB = Nothing
    Exit Function
 
L_ErrTruncateAllTables:
TruncateAllTables = False
    Select Case Err.Number
        Case 3376, 3270
            Resume Next
        Case Else
            MsgBox Err.Description, 48, Err.Source
            Resume L_ExTruncateAllTables
    End Select
End Function
Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/06/2011, 13h12   #3
Membre régulier
 
Inscription : avril 2005
Messages : 251
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 251
Points : 86
Points : 86
Bonjour argyronet et le forum
Merci pour ta fonction je vais éssayé de l' adapter.
Aladin
Aladin_23 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 10h03   #4
Membre Expert
 
Avatar de stigma
 
Homme Alain
Développeur informatique
Inscription : octobre 2003
Messages : 846
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 61
Localisation : France, Oise (Picardie)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : octobre 2003
Messages : 846
Points : 1 053
Points : 1 053
Envoyer un message via MSN à stigma
J'ai un truc tout simple pour vider des tables en une seule fois (à adapter à ton code)
Code :
1
2
3
4
5
6
7
8
9
10
11
 
Sub Delete_Tests()
    DoCmd.SetWarnings False
    DoCmd.RunSQL ("DELETE * FROM Tests")
    DoCmd.RunSQL ("DELETE * FROM NReferences")
    DoCmd.RunSQL ("DELETE * FROM NTests")
    DoCmd.RunSQL ("DELETE * FROM SaveReferences")
    DoCmd.RunSQL ("DELETE * FROM Resultats")
    DoCmd.SetWarnings True
    MsgBox "Tests supprimés"
End Sub
__________________
Je ne suis pas une adresse IP, je suis un homme libre !
stigma est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 11h06   #5
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 209
Points : 6 209
Envoyer un message via MSN à argyronet
Citation:
Envoyé par stigma Voir le message
J'ai un truc tout simple pour vider des tables en une seule fois (à adapter à ton code)...
Et si j'ai 2500 tables, j'écris 2500 DoCmd ?

Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 11h20   #6
Membre Expert
 
Avatar de stigma
 
Homme Alain
Développeur informatique
Inscription : octobre 2003
Messages : 846
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 61
Localisation : France, Oise (Picardie)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : octobre 2003
Messages : 846
Points : 1 053
Points : 1 053
Envoyer un message via MSN à stigma
Effectivement dans ce cas ça devient galère. Je me sert de ça pour des petits développements.
__________________
Je ne suis pas une adresse IP, je suis un homme libre !
stigma est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h12.


 
 
 
 
Partenaires

Hébergement Web