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 :

Comment vérifier si une table existe? (fn OpenSchema) [AC-97]


Sujet :

VBA Access

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 152
    Points : 143
    Points
    143
    Par défaut Comment vérifier si une table existe? (fn OpenSchema)
    Bonjour à tous,

    Il y a un moment, dans mon code, où j'ai besoin de savoir si une table temporaire existe.

    Dans un cours de ce même site, j'ai trouvé la fonction suivante:

    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
    Public Function TableExiste(cnn As ADODB.Connection, ByVal strTable As String) As Boolean
    
    Dim rstTables As ADODB.Recordset
    
    'création du recordset contenant la structure des tables
    Set rstTables = cnn.OpenSchema(adSchemaTables)
    
    'Parcours de la collection des tables
    Do While Not rstTables.EOF
        If rstTables.fields("Table_Name").Value = strTable And rstTables.fields("Table_Type").Value <> "VIEW" Then
            TableExiste = True
            Exit Do
        End If
        rstTables.MoveNext
    Loop
    rstTables.Close
    
    End Function
    Elle semble couvrir parfaitement mes besoins.

    MAIS

    adSchemaTables n'est pas reconnu comme variable.
    Si j'ai bien compris, il s'agit du type de query, donc a priori une variable globale système, non?
    Faut-il que j'importe une bibliothèque en particulier? Si oui, laquelle?
    De même OpenSchema n'apparaît pas dans la doc de Access-97: est-elle réellement reconnue?
    Cette solution est-elle valide pour l'application AC-97 (et donc probablement - j'ai du mal à voir où l'information figure - du Visual Basic 5) ?

    N'y a t-il pas simplement une fonction système qui lit une table avec retour (si la table n'existe pas -> erreur) ?

    Je cherche, je cherche, mais je n'arrive à complier aucune solution que j'implémente...

    Merci beaucoup!

  2. #2
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 152
    Points : 143
    Points
    143
    Par défaut
    Après de nouveaux tests, il semblerait que ce soit effectivement la méthode OpenSchema qui ne soit pas reconnue par le compilateur...

    Quelqu'un a t-il une idée d'une méthode qui pourrait la remplacer?

    Ou d'une autre manière d'approcher le problème?
    Merci!

  3. #3
    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 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Access 97 !!!... Euh avec cette fonction, ça devrait passer :
    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
     
     
    Public Function TableExists(ByVal TableName As String) As Boolean
    Dim blnTableExists As Boolean
    Dim oTDF As Object
     
        On Error GoTo TableNotExist
        Set oTDF = CurrentDb.TableDefs(TableName)
        blnTableExists = True
     
    ExitProc:
        Set oTDF = Nothing
        TableExists = blnTableExists
    TableNotExist:
        blnTableExists = False
    End Function
    Argy

  4. #4
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 152
    Points : 143
    Points
    143
    Par défaut
    Bonjour Argy,

    Merci, ça marche parfaitement

    Pour Access 97, oui, et tu serais surpris de savoir qui est mon client

    Résolu.

  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 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par BornToBe Voir le message
    Pour Access 97, oui, et tu serais surpris de savoir qui est mon client :
    Des noms, des noms !!!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/06/2010, 21h53
  2. Comment vérifier qu'une table ne contient aucun enregistrement ?
    Par makaphrodite dans le forum Bases de données
    Réponses: 5
    Dernier message: 13/10/2008, 14h50
  3. Comment verifier si une table existe deja
    Par amine_en_france dans le forum Langage SQL
    Réponses: 1
    Dernier message: 08/03/2007, 17h21
  4. comment savoir si une table existe dans la base?
    Par isa21493 dans le forum ASP
    Réponses: 6
    Dernier message: 01/09/2005, 17h09
  5. comment vérifier qu'une table esclave vérifie une condition?
    Par loikiloik dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/04/2004, 16h48

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