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 :

Remplir liste des tables dans une datagridv


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    août 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : août 2019
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Remplir liste des tables dans une datagridv
    Bonjour les amis
    svp est ce que quelqu’un peut me rendre ce service?
    j'ai une base de donnée Access et je veux remplir une datagridv par la liste des tables de ma base de donnée.
    si possible un code simple.
    merci d'avantage

  2. #2
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    février 2010
    Messages
    3 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2010
    Messages : 3 695
    Points : 6 328
    Points
    6 328
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Cette requête SQL retourne la liste des tables dans une base Access ACCDB :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT MSysObjects.Name AS table_name
    FROM MSysObjects
    WHERE (((Left([Name],1))<>"~") 
            AND ((Left([Name],4))<>"MSys") 
            AND ((MSysObjects.Type) In (1,4,6))
            AND ((MSysObjects.Flags)=0))
    order by MSysObjects.Name

    Il suffit ensuite de charger le résultat dans un datagridview.
    On ne jouit bien que de ce qu’on partage.

  3. #3
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    août 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : août 2019
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Merci Mon Ami mais cette requête ne marche pas
    elle s’exécute bien sur Access 2007 mais en vb2010 me donne ce message d'erreur : Impossible de lire les enregistrements. Aucune autorisation de lecture sur « MSysObjects »
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    req = "SELECT MSysObjects.Name AS table_name FROM(MSysObjects) WHERE (((Left([Name],1))<>'~') AND ((Left([Name],4))<>'MSys') AND ((MSysObjects.Type) In (1,4,6)) AND ((MSysObjects.Flags)=0)) order by MSysObjects.Name"
            charger_grid_view(maform, req, dgvv)
    Nom : Erreur.png
Affichages : 43
Taille : 22,6 Ko

  4. #4
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    février 2010
    Messages
    3 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2010
    Messages : 3 695
    Points : 6 328
    Points
    6 328
    Billets dans le blog
    1
    Par défaut
    Quelle est l'extension de ton fichier de base de données Access ?
    On ne jouit bien que de ce qu’on partage.

  5. #5
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    août 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : août 2019
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    Quelle est l'extension de ton fichier de base de données Access ?
    ma base de donnée Access 2007 extension .accdb
    c'est bizarre la requête fonctionne 100% en Access et sql Access et ne fonctionne pas en vb 2010 par code????????????
    j'ai consulté d'autre forum ils ont proposé de modifier les autorisations d'accée dans la base de donnée, même si ça marche c'est impossible dans mon cas car je vais utilisé des bases de données qui ne sont pas disponible tout le temps.
    si c'est nécessaire je veux modifie ces autorisation par code vb.

  6. #6
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    août 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : août 2019
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par roiyassin246 Voir le message
    ma base de donnée Access 2007 extension .accdb
    c'est bizarre la requête fonctionne 100% en Access et sql Access et ne fonctionne pas en vb 2010 par code????????????
    j'ai consulté d'autre forum ils ont proposé de modifier les autorisations d'accée dans la base de donnée, même si ça marche c'est impossible dans mon cas car je vais utilisé des bases de données qui ne sont pas disponible tout le temps.
    si c'est nécessaire je veux modifie ces autorisation par code vb.
    en attendant la résolution de mon problème notamment la requête précitée j'ai trouvé une autre solution sans utilisation de ladite requête.
    dans le module j'ai créer cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Public Function ListeTables(ByVal txt As String, ByVal txt1 As String)
            If txt = txt1 Then
                Return True
            Else
                Return False
            End If
    End Function
    en suite j'ai fais le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub test1()
            connection()
            Dim var As DataTable
            var = cnn1.GetSchema("Tables")       
            For Each element2 As DataRow In var.Rows
                If ListeTables(element2.Item(3), "TABLE") = True Then
                    dgvv.Rows.Add()
                    dgvv(0, (dgvv.RowCount - 1)).Value = element2.Item(2)
                End If
            Next
            cnn1.Close()
     End Sub
    mais j’attends toujours vos repenses concernant la requête précitée
    merci les amis

  7. #7
    Membre éprouvé Avatar de Phil Rob
    Homme Profil pro
    Enseignant
    Inscrit en
    novembre 2013
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : novembre 2013
    Messages : 660
    Points : 1 114
    Points
    1 114
    Par défaut
    Bonjour,

    Le code suivant donne la liste de toutes les tables d'une DB Access (Testé en 2003 et 2013).
    Attention, avant de tester, tu dois ajouter la référence Microsoft.Office.Interop.Access à ton projet (cf. illustration ci-dessous).
    L'Interop n'est sans doute pas le plus performant des outils, mais ça dépanne ...

    Voici le code :

    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
            'Dim NomDBComplet As String = "D:\Tmp\TestAccesDBSQLExpress\MonStock2003.mdb"
            Dim NomDBComplet As String = "D:\Tmp\TestAccesDBSQLExpress\MonStock2013.accdb"
     
            Dim AppAccess As New Microsoft.Office.Interop.Access.Application
     
            Dim NomTable As String
     
            AppAccess.OpenCurrentDatabase(NomDBComplet)
     
            For Each Obj As Object In AppAccess.CurrentData.AllTables   ' Contient toutes les tables.
                NomTable = Obj.Name
                If Not NomTable Like "MSys*" Then    ' Eviter les tables systèmes.
                    MessageBox.Show(NomTable)
                End If
            Next
     
            AppAccess.CloseCurrentDatabase()
    J'espère que ça t'aidera !

    Nom : Ref_Access.jpg
Affichages : 28
Taille : 106,1 Ko

  8. #8
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    août 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : août 2019
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    merci Phil Rob pour votre attention une autre façon de le faire
    mais je tien toujours à savoir pourquoi cette requête ne fonctionne pas

Discussions similaires

  1. Liste des tables dans une base
    Par wissem.ba dans le forum SQL
    Réponses: 2
    Dernier message: 24/03/2011, 11h07
  2. [phpMyAdmin] bug ou lenteur dans le chargement de la liste des tables/vues une fois choisi la base
    Par clavier12AZQSWX dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 23/06/2009, 23h58
  3. liste des descendants dans une table hiérarchique
    Par dingoth dans le forum Administration
    Réponses: 4
    Dernier message: 02/11/2008, 20h36
  4. Obtenir la liste des doublons dans une table SAS
    Par marie mouse dans le forum SAS Base
    Réponses: 2
    Dernier message: 05/12/2007, 15h33
  5. Réponses: 18
    Dernier message: 13/06/2007, 16h17

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