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 :

Récupérer les noms des tables [Débutant]


Sujet :

VB.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 55
    Par défaut Récupérer les noms des tables
    Bonjour,

    Donc j'aurais voulu récupérer les noms des champs d'une table mais je sais que c'est impossible hélas.
    En revanche, il me semble que l'on peut récupérer les noms des tables d'une mdb. Ca n'est pas très conseillé mais j'ai vu ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT MSysObjects.Name FROM MSysObjects WHERE ( (MSysObjects.Type = 1) AND (MSysObjects.Flags = 0) )"
    Il faut absolument que je puisse avoir les noms des champs et des tables sans avoir à les connaitre par cœur.
    Avez-vous une idée pour une démarche à suivre, au moins concernant les noms des tables ?

  2. #2
    Membre Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Par défaut
    Access : Pas de table pour référencer les colonnes, tu vas devoir charger une datatable, et demander à cette dernière de te renvoyer les noms de colonnes.


    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
    Public sub GetColumns(ByRef database As String, ByRef table_name As String, ByRef columns As List(Of String))
    Dim com As OleDbConnection
     
                com = New OleDbConnection(database)
                Using Com
                com.Open()
     
     
            Dim restrictions As String() = New String() {Nothing, Nothing, table_name, Nothing}
            Dim dt As DataTable = com.GetSchema("Columns", restrictions)
           End Using
     
            For Each DR As DataRow In dt.Rows
                columns.Add(DR("Column_Name").ToString)
            Next
     
            For Each holding As String In columns
                Console.WriteLine(holding)
            Next
    End Function

    SQL Serv : Tu dois interroger Information_schemas.Columns

    Oracle : Tu dois interroger ALL_TAB_COLUMNS


    EDIT: Grilled par @DotNetMatt

  3. #3
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par _Ez3kiel Voir le message
    EDIT: Grilled par @DotNetMatt
    Je n'avais pas fait attention au fait qu'il s'agit d'un fichier .MDB Donc ma réponse est HS. Je l'ai supprimée.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 55
    Par défaut
    Désolé j'étais parti sur autre chose.

    Merci de vos réponses J'essaierais ça surement que lundi maintenant, un autre petit imprévu est arrivé entre temps, je veux lui régler son compte d'abord

    Sinon y'a pas un moyen plus simple, avec d'autres logiciels peut être, pour récupérer mes valeurs ? Parce que sinon ça va geulé au boulot ^^
    Par contre je suis lié au niveau de ma mdb, Access oblige

  5. #5
    Membre Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Par défaut
    Citation Envoyé par Thyyb Voir le message
    Sinon y'a pas un moyen plus simple, avec d'autres logiciels peut être, pour récupérer mes valeurs ? Parce que sinon ça va geulé au boulot ^^
    Par contre je suis lié au niveau de ma mdb, Access oblige
    Sans passer par la DataTable ? J'en connais pas, mais je suis pas du tout expert Access.

    @DotNetMatt, j'avais vu que c'était .mdb mais dans le doute j'ai parlé aussi de Sql Serv et Oracle.

  6. #6
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Donc j'aurais voulu récupérer les noms des champs d'une table mais je sais que c'est impossible hélas.
    En revanche, il me semble que l'on peut récupérer les noms des tables d'une mdb.
    Les 2 sont possibles : voir http://support.microsoft.com/kb/309681/fr

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 55
    Par défaut
    Alors du coup je me suis lancé dans la liste de mes tables. Et donc j'ai réussi à les récupérées, Merci à vous

    La dans la fin de l'après midi je m'attaque aux champs, ça m'a l'air plus difficile mais vous m'avez déjà avancé



    Edit :
    Bon alors j'ai réussi à les récupérés Oui et comment. Je les ai en 4x plus d'autres champs que je ne connais même pas xD Nan en fait j'ai compris. La ligne suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab(i) = schemaTable.Rows(i)!COLUMN_NAME.ToString()
    récupére toutes les lignes, alors que je veux récupérer que celle de la table que j'ai préalablement chois. On peut faire quelque chose du style un WHERE pour sélectionner que les lignes dont j'ai besoin ?

    Du coup je fais comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, New [Object]() {Nothing, Nothing, NameTable, Nothing})
            Dim tab(schemaTable.Rows.Count - 1) As String
            For i As Integer = 0 To schemaTable.Rows.Count - 1
                tab(i) = schemaTable.Rows(i)!COLUMN_NAME.ToString()
            Next
            Me.ComboBox_champ1.DataSource = tab
    Me.ComboBox_champ2.DataSource = tab
    Mais quand j'ai plusieurs ComboBox à remplir, l'utilisateur ne peut pas choisir des champs différents dans les autres ComboBox. C'est-à-dire que si dans la 1ère ComboBox il choisi "champ1", les autres se remplissent de champ1 et je ne peux pas les changés...
    C'est normal ou c'est moi (mon code) ? ^^



    Edit2 :
    Bon eh bien, j'ai pu régler mon soucis. Je ne sais pas si c'est très esthétique mais bon ^^
    J'ajoute autant de variables tab que j'ai de combobox à remplir ou je fais une autre boucle pour créer mes tableau et une autre pour remplir mes combobox ... Du coup ça donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, New [Object]() {Nothing, Nothing, NameTable, Nothing})
            Dim tab1(schemaTable.Rows.Count - 1), tab2(schemaTable.Rows.Count - 1) As String
            For i As Integer = 0 To schemaTable.Rows.Count - 1
                tab1(i) = schemaTable.Rows(i)!COLUMN_NAME.ToString()
                tab2(i) = schemaTable.Rows(i)!COLUMN_NAME.ToString()
            Next
            Me.ComboBox_champ1.DataSource = tab1
            Me.ComboBox_champ2.DataSource = tab2
    Au lieu de ce qu'il y avait au dessus ...
    Par contre si vous avez une autre solution je suis complétement preneur. Parce que la ça va me faire beaucoup trop de variables en fait.
    Plus de champs = Plus de variables :/

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

Discussions similaires

  1. Requête pour récupérer les noms des tables
    Par cendrine15 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 20/04/2012, 00h46
  2. requête SQl pour récupérer les noms des tables
    Par taher84 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 16/07/2010, 22h07
  3. Réponses: 5
    Dernier message: 11/07/2007, 16h03
  4. récupérer les noms des champs d'une table access
    Par fabrice33 dans le forum Accès aux données
    Réponses: 2
    Dernier message: 06/04/2007, 19h38
  5. Réponses: 2
    Dernier message: 03/02/2005, 13h21

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