Les paramètrages de GetOleDbSchemaTable
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:
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:
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