Soutenez-nous
Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 7 sur 7
  1. #1
    Membre Expert
    Inscrit en
    août 2006
    Messages
    1 468
    Détails du profil
    Informations forums :
    Inscription : août 2006
    Messages : 1 468
    Points : 1 800
    Points
    1 800

    Par défaut La table existe-t-elle ?

    Remplacer ce qui est entre parenthèse par un test de l'existence d'une table

    Code :
    1
    2
     
     If  (la table NomTable existe) Then DoCmd.DeleteObject acTable, NomTable
    Sans créer de fonction, le test de l'existence de la table ne doit pas provoquer d'erreur.

    Peut-être trop facile pour les experts. Alors se sera la meilleure solution.
    La mienne fonctionne sous Access 2003.

  2. #2
    Rédacteur
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    décembre 2005
    Messages
    4 312
    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 312
    Points : 6 667
    Points
    6 667

    Par défaut

    Bonsoir,

    Inspiré de ce qui se pratique sur SQL serveur:
    Code :
    1
    2
    3
    Dim strNomTable As String
    strNomTable = "Nom de la atble"
    If DCount("*", "MSysObjects", "type=1 AND Name='" & strNomTable & "'")=1 Then DoCmd.DeleteObject acTable, strNomTable
    A+

    Edit : type=4 pour les tables liées ODBC, type=6 pour table liées Acces, Excel, Texte

  3. #3
    Membre Expert
    Inscrit en
    août 2006
    Messages
    1 468
    Détails du profil
    Informations forums :
    Inscription : août 2006
    Messages : 1 468
    Points : 1 800
    Points
    1 800

    Par défaut

    Bravo LedZeppII
    C'est effectivement la solution que j'avais

    Code :
    1
    2
     
    If -DCount("*", "MSysObjects", "type=1 AND Name='" & strNomTable & "'") Then DoCmd.DeleteObject acTable, strNomTable
    Je pensais trouver une fonction cachée, on ne sait jamais ...
    A ce sujet, en existe-t-il ?

  4. #4
    Membre Expert Avatar de Demco
    Inscrit en
    mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 33

    Informations forums :
    Inscription : mai 2002
    Messages : 1 396
    Points : 1 947
    Points
    1 947

    Par défaut

    Voici une autre méthode utilisée dans la FAQ :
    http://access.developpez.com/faq/?pa...les#TableExist

    Pas de fonctionnalité caché permettant de savoir ça directement apparemment.
    J'aime les gâteaux.

  5. #5
    Membre chevronné
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : juillet 2005
    Messages : 606
    Points : 630
    Points
    630

    Par défaut Portable

    Bonjour,

    une autre bon d'accord
    rien à voir avec les autres mais portable sur ADP

    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
     
    Function ExisteTable(Nomtable As String) As Boolean
        On Error GoTo err:
        Dim MCat As New ADOX.Catalog
        Dim MTable As ADOX.Table
        Set MCat.ActiveConnection = CurrentProject.Connection
        Set MTable = MCat.Tables(Nomtable)
     
        ExisteTable = True
    err:
        Set MCat = Nothing
        Set MTable = Nothing
        Exit Function
    End Function
     
    Function SupprimerTable(Nomtable As String) As Boolean
        On Error GoTo err
        Dim MCat As New ADOX.Catalog
        Set MCat.ActiveConnection = CurrentProject.Connection
        MCat.Tables.Delete (Nomtable)
        SupprimerTable = True
    err:
        Set MCat = Nothing
        Exit Function
    End Function
     
    ' Ca donne 
     
    If ExisteTable("latable") = True Then SupprimerTable "latable"
    a+

  6. #6
    Membre chevronné
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : juillet 2005
    Messages : 606
    Points : 630
    Points
    630

    Par défaut désolé

    bonjour,
    J'avais pas vu c'était dans la FAQ .....gasp
    a+

  7. #7
    Rédacteur
    Avatar de Lou Pitchoun
    Profil pro Christophe Lessirard
    Inscrit en
    février 2005
    Messages
    5 031
    Détails du profil
    Informations personnelles :
    Nom : Christophe Lessirard
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : février 2005
    Messages : 5 031
    Points : 7 421
    Points
    7 421

    Par défaut

    Salut,

    Citation Envoyé par Demco Voir le message
    Voici une autre méthode utilisée dans la FAQ :
    http://access.developpez.com/faq/?pa...les#TableExist

    Pas de fonctionnalité caché permettant de savoir ça directement apparemment.
    ok.

    Citation Envoyé par naphta Voir le message
    Bonjour,

    une autre bon d'accord
    rien à voir avec les autres mais portable sur ADP

    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
     
    Function ExisteTable(Nomtable As String) As Boolean
        On Error GoTo err:
        Dim MCat As New ADOX.Catalog
        Dim MTable As ADOX.Table
        Set MCat.ActiveConnection = CurrentProject.Connection
        Set MTable = MCat.Tables(Nomtable)
     
        ExisteTable = True
    err:
        Set MCat = Nothing
        Set MTable = Nothing
        Exit Function
    End Function
     
    Function SupprimerTable(Nomtable As String) As Boolean
        On Error GoTo err
        Dim MCat As New ADOX.Catalog
        Set MCat.ActiveConnection = CurrentProject.Connection
        MCat.Tables.Delete (Nomtable)
        SupprimerTable = True
    err:
        Set MCat = Nothing
        Exit Function
    End Function
     
    ' Ca donne 
     
    If ExisteTable("latable") = True Then SupprimerTable "latable"
    a+
    Re ok.

    Sauf que :
    Citation Envoyé par helas Voir le message
    Sans créer de fonction, le test de l'existence de la table ne doit pas provoquer d'erreur.

    Access : Les Cours, Les Sources et Les FAQs Office
    Avant de poster : les choses importantes à lire pour la bonne tenue du forum.
    sinon

    Ma boite à MPs n'est pas l'annexe du forum Le complément BouleDeCristal n'existe pas encore !!!

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •