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

Défis Discussion :

La table existe-t-elle ?


Sujet :

Défis

  1. #1
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    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,

    Inspiré de ce qui se pratique sur SQL serveur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    Bravo LedZeppII
    C'est effectivement la solution que j'avais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 chevronné
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    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 éclairé

    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    626
    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 : 626
    Points : 726
    Points
    726
    Par défaut Portable
    Bonjour,

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

    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
     
    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 éclairé

    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    626
    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 : 626
    Points : 726
    Points
    726
    Par défaut désolé
    bonjour,
    J'avais pas vu c'était dans la FAQ .....gasp
    a+

  7. #7
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    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 : 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
     
    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.

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

Discussions similaires

  1. table existe sous IB/FB
    Par VLDG dans le forum SQL
    Réponses: 1
    Dernier message: 18/01/2005, 14h12
  2. [Delphi7 interbase] Rechercher si une table existe
    Par Ricardeau dans le forum Bases de données
    Réponses: 6
    Dernier message: 15/03/2004, 10h07
  3. effacer une table que si elle existe ?
    Par soniaSQL dans le forum Requêtes
    Réponses: 2
    Dernier message: 25/06/2003, 14h55
  4. effacer une table que si elle existe ?
    Par soniaSQL dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 25/06/2003, 14h55
  5. [VB6] Tester via vb si une table existe
    Par ronald dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 17/04/2003, 15h59

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