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

VB 6 et antérieur Discussion :

[VB6] Tester via vb si une table existe


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2002
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 20
    Points : 12
    Points
    12
    Par défaut [VB6] Tester via vb si une table existe
    bonjour,

    Comment peut-on savoir si une table existe dans une base de données access?

    Est-il possible de le faire via une requête SQL?

    J'ai essayé avec un On error goto ... lors de la création de la table (si elle existe, alors ça génère une erreur) mais j'arrive pas a attraper cette erreur.

    Merci d'avance

    Ronald

  2. #2
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    cela dépend si c'est en DAO ou en ADO

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 285
    Points : 300
    Points
    300
    Par défaut
    chercher l'erreur

    En ADO avec tout declaré auparavant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    On Error Goto gereerr 'Si y a une erreur c'est que la table n'existe pas. Seule erreur possible ici, je pense...
    SQL = "SELECT * From table"
    rec.open sql, con, adcmdtext, admodereadwrite
    MsgBox "La table existe.",vbinformation  'Logiquement si y a pas eu d'erreur c ke la table existe, vide ou non.
    rec.close
    On Error goto 0
    exit sub
     
    gereerr:
       msgbox "La table n'existe pas"
    end sub

  4. #4
    Fox
    Fox est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2002
    Messages : 52
    Points : 52
    Points
    52
    Par défaut
    Voilà qq infos que j'ai pu récupérer sur le sujet, en espérant que ça pourra t'aider.

    Il faut employer le modèle objet ADOX qui est consacré à la structure des bases de données (le modèle objet ADODB étant lui consacré à la gestion de données).

    La première chose à faire est donc de rajouter une référence à ADOX. Pour ce faire, cliquer sur le menu "Projet/Références...". Dans la liste des références disponibles, sélectionnez "Microsoft ADO Ext. 2.1 for DDL and Security". Vous pouvez maintenant essayer la fonction suivante qui vérifie l'existence d'une table :

    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
     
    Public Function TableExists(cat As ADOX.Catalog, TableName As String) As Boolean
     
        Dim tbl As ADOX.Table
     
        ' Enumère toutes les tables du catalogue
        For Each tbl In cat.Tables
            If tbl.Name = TableName Then
                TableExists = True
                Exit For
            End If
        Next
     
        Set tbl = Nothing
     
    End Function
     
    Private Sub Form_Load()
     
        Dim cat As New ADOX.Catalog
     
        ' Connexion à la base de donnée
        cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Mes Documents\MyDataBase.mdb"
     
        MsgBox TableExists(cat, "Table1")
     
        Set cat = Nothing
     
    End Sub
    @+

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2002
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    c'est en ADO

  6. #6
    Membre à l'essai
    Inscrit en
    Juillet 2002
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    ha ok, j'essaie et je dis quoi...
    Merci

  7. #7
    Membre à l'essai
    Inscrit en
    Juillet 2002
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    c peut être plus simple d'effacer toutes les tables de la BD. Mais je sais pas comment faire...

    Quelqu'un à une idée???

  8. #8
    Membre à l'essai
    Inscrit en
    Juillet 2002
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Ok ça marche... C Jérome ...heu non c génial... Merci

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 285
    Points : 300
    Points
    300
    Par défaut
    Citation Envoyé par ronald
    c peut être plus simple d'effacer toutes les tables de la BD. Mais je sais pas comment faire...
    Autant virer la BD en entier et la recreer ensuite

  10. #10
    Membre à l'essai
    Inscrit en
    Août 2002
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 27
    Points : 24
    Points
    24
    Par défaut
    Autant formatter le disque dur et laisser tomber(ouais le soleil me tape un peu sur la tête)

  11. #11
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    fox voila ce qu'l ne faut pas faire.
    Il faut utiliser la méthode openschema ADO
    lire
    ftp://ftp2.developpez.be/developps/vb/VB-ADOX.pdf

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 285
    Points : 300
    Points
    300
    Par défaut
    bidou, tu peux developper ?
    pkoi faut pas utiliser la methode de fox ?

    c'est expliké dans le PDF ?

  13. #13
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    oui monsieur.
    Mais je te résume, si tu accèdes par ADOX tu ouvres la base en modification de structure ce qui est lourd et dangereux. Qui plus est, si ta connexion à des accès utilisateurs définis, il se peut que l'objet catalog ne te montre pas une table qui pourtant existe. En utilisant openschema, tu t'affranchis de l'ensemble de ses problèmes.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 285
    Points : 300
    Points
    300
    Par défaut
    oki dokiii ^^

    je pensais bien en fait, que openschema avait un rapport avec la structure de la table, mais je savais pas kel genre... pis g po trop regarder non plus vu que de toutes facon c t po pour moi

    en tout cas maintenant je le sais, et ca m'aidera peut-etre plus tard ^^

    Mici

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

Discussions similaires

  1. [Lazarus] Tester si une table existe dans une base Sqlite
    Par ovni76 dans le forum Lazarus
    Réponses: 7
    Dernier message: 16/10/2014, 20h54
  2. Tester si une table existe dans une base access
    Par codial dans le forum Bases de données
    Réponses: 6
    Dernier message: 28/03/2007, 08h39
  3. [MySQL] Tester qu'une table existe
    Par lodan dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 25/07/2006, 18h57
  4. tester si une table existe ou non sous access
    Par Lady_jade dans le forum Access
    Réponses: 4
    Dernier message: 17/02/2006, 19h44
  5. Réponses: 2
    Dernier message: 20/05/2005, 10h18

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