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é
    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
    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é
    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é
    Voici une autre méthode utilisée dans la FAQ :
    http://access.developpez.com/faq/?page=Tables#TableExist

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

  5. #5
    Membre éclairé
    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é
    désolé
    bonjour,
    J'avais pas vu c'était dans la FAQ .....gasp
    a+

  7. #7
    Expert éminent
    Salut,

    Citation Envoyé par Demco Voir le message
    Voici une autre méthode utilisée dans la FAQ :
    http://access.developpez.com/faq/?page=Tables#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.

###raw>template_hook.ano_emploi###