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
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
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.
@+
Merci MaelstroeM,
J'ai fait ça :
1- concsole ne s'affiche pas chez moi ?
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
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
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.
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
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
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.
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
@+
Partager