Bonjour à tous,

A la suite de cette discussion , j'arrive à lister les tables et les champs pour chaque table sélectionnée.

Pour lister les champs d'une table choisie j'utilise ce code et qui rempli une liste déroulante.

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
21
Public Sub ListeChamps(strBase As String, strTable As String)
        ' Cette Routine va permettre de liste les champs de la table sélectionnée
        Dim Tables As DataTable
        strConnexion = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strBase
        Using cnn As New OleDbConnection(strConnexion)
            cnn.Open()
            Tables = cnn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, New String() {Nothing, Nothing, strTable})
        End Using
        '    Tables.DefaultView.Sort(Tables.Rows)
        ' Remplissage de la liste des champs
        Dim K As DataRow
        frm_Main.cbo_Liste_Tables.Items.Clear()
 
        For Each K In Tables.Rows
 
            Dim strChamp = K.Item("COLUMN_NAME")
            frm_Main.cbo_ListeChamps.Items.Add(strChamp)
 
        Next
 
    End Sub
Tout fonctionne correctement, cependant les champs sont visualiser dans l'ordre alphabétique et non dans l'ordre dans la table, je sais que l'ordre n'a aucune importance dans une table mais cela en a une pour la visualisation.

Donc en résumant je ne sais pas comment avoir le bon ordre.

Je pense que cela vient des paramétrages de cette ligne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Tables = cnn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, New String() {Nothing, Nothing, strTable})
Malgré mes recherches je ne comprends pas la 2 ème composante de la commande New String() {Nothing, Nothing, strTable} qui est la restriction.

A moins que le puisse faire un tri sur la DataTable ?

Merci de votre aide.

ONTAYG