IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Vider toutes les tables d' une base


Sujet :

VBA Access

  1. #1
    Membre habitué
    Inscrit en
    Avril 2005
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 352
    Points : 150
    Points
    150
    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

  2. #2
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    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.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  3. #3
    Membre habitué
    Inscrit en
    Avril 2005
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 352
    Points : 150
    Points
    150
    Par défaut
    Bonjour argyronet et le forum
    Merci pour ta fonction je vais éssayé de l' adapter.
    Aladin

  4. #4
    Membre expérimenté Avatar de stigma
    Homme Profil pro
    Créateur jeux vidéo
    Inscrit en
    Octobre 2003
    Messages
    1 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Créateur jeux vidéo
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 111
    Points : 1 612
    Points
    1 612
    Par défaut
    J'ai un truc tout simple pour vider des tables en une seule fois (à adapter à ton code)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  5. #5
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    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
    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.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  6. #6
    Membre expérimenté Avatar de stigma
    Homme Profil pro
    Créateur jeux vidéo
    Inscrit en
    Octobre 2003
    Messages
    1 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Créateur jeux vidéo
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 111
    Points : 1 612
    Points
    1 612
    Par défaut
    Effectivement dans ce cas ça devient galère. Je me sert de ça pour des petits développements.

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/06/2006, 20h06
  2. [MySQL] lister toutes les tables d'une base
    Par Tr@nkill dans le forum Langage SQL
    Réponses: 8
    Dernier message: 14/04/2006, 14h45
  3. Liste de toutes les tables d'une base inconnue
    Par TTiger dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/11/2005, 07h59
  4. Sélection de toute les tables d'une base
    Par lord_paco dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 21/07/2003, 14h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo