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

Access Discussion :

Dé-lier des tables "TablbeDefs.Refresh"


Sujet :

Access

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 16
    Points : 13
    Points
    13
    Par défaut Dé-lier des tables "TablbeDefs.Refresh"
    Voila, j'ai une petit bout de code qui permet de supprimer toutes les tables liées d'une base access:

    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
     
    Dim BD As DAO.Database
    Set BD = CurrentDb
    Dim tb As DAO.TableDef
    Dim i As Integer
     
     
        BD.TableDefs.Refresh
        For Each tb In BD.TableDefs
     
            If Left(tb.Name, 4) <> "MSys" Then
                MsgBox tb.Connect & "  - " & tb.Attributes
                If Len(tb.Connect) > 0 Then
     
                    'MsgBox tb.Name
                    BD.TableDefs.Delete (tb.Name)
                End If
            End If
        Next tb
     
    BD.TableDefs.Refresh

    On s'attendrait a ce que toutes les tables liées aient disparues et bien non... pas toutes . Si je lance 3 ou 4 fois ce petit bout de code, ou que je le mets dans une boucle... pas de soucis ca enlève tout... mais en plusieurs fois.


    Quelqu'un y verrait il une raison??


    Merci d'avance

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonsoir,

    En parcourant la collection TableDefs avec For Each, lorsque tu supprimes l'élément N en cours dans la collection,
    c'est l'élément N+1 qui devient l'élément en cours dans la boucle.
    En arrivant sur Next on passe au N+2 (N+1+1).
    L'élément N+1 n'a donc pas été traité.

    Fais une boucle qui part du dernier élément vers le permier.
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For i = BD.TableDefs.Count-1 To 0 Step-1
        Set tb = BD.TableDefs(i)
    ...
    Next
    A+

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    Effectivement...
    j'avais pas du tout vu ca venir... Merci beaucoup ca m'evitera de faire l'erreur la prochaine fois.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lier des tables MySQL / numérotation auto
    Par alfigor dans le forum Requêtes
    Réponses: 5
    Dernier message: 09/05/2006, 09h34
  2. lier des tables par le code
    Par karimspace dans le forum Contribuez
    Réponses: 5
    Dernier message: 20/03/2006, 11h28
  3. Lier des tables
    Par Al_Ameen dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 18/12/2005, 14h38
  4. Comment lier des tables Access ?
    Par po.lombard dans le forum Bases de données
    Réponses: 1
    Dernier message: 18/12/2005, 12h54

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