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.NET Discussion :

Lister les noms de table d'une base Access


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    314
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 314
    Par défaut Lister les noms de table d'une base Access
    Bonjours,

    Tout est dans le titre.
    J'aimerai lister les noms de table d'une base Access.
    Et comment ouvrir la base pour lister les tables, un objet OleDbConnection suffit ?

    FikoU

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Par défaut
    Utilise la méthode GetSchema implementée dans les fournisseurs managés :

    MSDN :

    http://msdn2.microsoft.com/fr-fr/lib...fh(VS.80).aspx

    La connection c'est bien OleDb.

    @+

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    314
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 314
    Par défaut
    Merci MaelstroeM,

    J'ai fait ça :

    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
    Private Sub listeTable_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            OuvreBase("SELECT  C_NomConcours, C_Date, C_Discipline, C_IdConcours, C_NomTable FROM Concours ORDER BY C_NomConcours", "cl25m.mdb", "Concours")
            Cl25m_Connection.Open()
            Dim table As DataTable = Cl25m_Connection.GetSchema()
     
            For Each row As DataRow In table.Rows
                For Each col As DataColumn In table.Columns
                     Console.WriteLine("{0} = {1}", col.ColumnName, row(col))
     
                Next
                Console.WriteLine("============================")
            Next
     
     
        End Sub
    1- concsole ne s'affiche pas chez moi ?
    2- je n'arrive pas à mettre le nom de la table dans une variable, combo ou autre
    Mon code ne génère aucune erreur

    FikoU

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Par défaut
    Dans les appli Windows VB.Net la console correpsond à la fenêtre de Sortie (Ctrl+Alt+O).

    Ensuite il faut que tu passes des filtres à GetSchema en utilisant cette surchage : OdbcConnection.GetSchema (String, String[]) sinon tu vas te taper plein d'infos qui ne t'interressent pas.

    Vas voir là :

    http://msdn2.microsoft.com/fr-fr/lib...34(VS.80).aspx
    Regardes à Spécification des valeurs de restriction

    Ensuite tu reccupérra un truc de ce genre dans la fenêtre de sortie :

    TABLE_CATALOG =
    TABLE_SCHEMA =
    TABLE_NAME = STYLE
    TABLE_TYPE = TABLE
    TABLE_GUID =
    DESCRIPTION =
    TABLE_PROPID =
    DATE_CREATED = 19/02/2007 14:11:41
    DATE_MODIFIED = 19/02/2007 15:51:30
    ============================
    TABLE_CATALOG =
    TABLE_SCHEMA =
    TABLE_NAME = WALLPAPER
    TABLE_TYPE = TABLE
    TABLE_GUID =
    DESCRIPTION =
    TABLE_PROPID =
    DATE_CREATED = 19/02/2007 14:13:43
    DATE_MODIFIED = 21/02/2007 09:41:26
    ============================

    @ toi de faire le trie, il est peut être possible de filtrer d'avantage, il faut voir les restrictions proposées :

    Vous pouvez interroger un fournisseur .NET Framework managé afin d'établir la liste des restrictions prises en charge en appelant la méthode GetSchema avec le nom de la collection de schémas de restrictions, « Restrictions ». Cette opération retourne un DataTable contenant une liste des noms de collections, des noms de restriction, des valeurs de restriction par défaut et des numéros de restriction.

    Dixit MSDN

    Ton code ne génére pas d'erreur car il est correct.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    314
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 314
    Par défaut
    Re MaelstroeM,

    J'ai réussi à afficher le nom de mes table dans la console :

    ============================
    TABLE_CATALOG =
    TABLE_SCHEMA =
    TABLE_NAME = Societe
    TABLE_TYPE = TABLE
    TABLE_GUID =
    DESCRIPTION =
    TABLE_PROPID =
    DATE_CREATED = 28.07.2007 09:38:04
    DATE_MODIFIED = 28.07.2007 09:38:05
    ============================

    Ce que je n'arive pas à faire c'est afficher dans une combo uniquement le nom des tables
    Je n'arrive pas à interpreter cette ligne pour m'en servir pour remplir une combo (une simple boucle serai l'ideal) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Console.WriteLine("{0} = {1}", col.ColumnName, row(col))

    encore merci
    FikoU

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Par défaut
    En fait il prend la chaîne {0} = {1}"
    Remplace {0} par col.ColumnName
    et {1} par row(col)

    il faut que tu fasses un test style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If col.ColumnName="TABLE_NAME" then
    Combo.Add(row(col))
    End If
    Mais si tu n'as pas fait comme je te l'ai conseilé en filtrant le GetSchema tu vas aussi recupérer les noms des tables system.

    @+

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/11/2008, 07h33
  2. Lister les noms des tables d'une base access
    Par chefinf dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 10/07/2008, 18h34
  3. Réponses: 1
    Dernier message: 02/07/2008, 16h30
  4. Afficher les nom des tables d'une base de donnée
    Par newmar dans le forum Administration
    Réponses: 4
    Dernier message: 02/04/2008, 16h40
  5. [SqlServer 2000] Comment lister les noms de table de ma base de données ?
    Par karima1972 dans le forum Accès aux données
    Réponses: 6
    Dernier message: 21/02/2007, 15h26

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