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
    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
    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
    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)


  4. #4
    Expert éminent
    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
    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
    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 chevronné
    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 !


  8. #8
    Candidat au Club
    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

###raw>template_hook.ano_emploi###