2016-07-16 85 views
0

我一直在寻找如何做到这一个小时,但所有我看到的都是C#中的答案..我想在Datagridview1中显示tbl_scancheck以下的数据为了(这些是列标题):Emp_No, DN_PickList, PickList_DT, DN_Thermal,Thermal_DT, TALLY如何将数据表的选定列绑定到datagridview

然而,tbl_scancheck是按此顺序:DN_PickList, PickList_DT, DN_Thermal,Thermal_DT, TALLY, Emp_No

当前tbl_scancheck顺序目前正在另一个datagridview的使用,因此我不能手动编辑MS Access。

这里是我当前的代码:

Dim dbprovider As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = C:\Users\austin\Documents\Visual Studio 2015\Projects\ScanCheckSystem\ScanCheckSystem\bin\Debug\packerdb.accdb" 
Dim myConnection As OleDbConnection = New OleDbConnection(dbprovider) 
Dim da As OleDbDataAdapter 
Dim ds As DataSet 
Dim tables As DataTableCollection 
Dim source1 As New BindingSource 

Private Sub Packer_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
ds = New DataSet 
    tables = ds.Tables 
    da = New OleDbDataAdapter("Select * from [tbl_scancheck]", myConnection) 
    da.Fill(ds, "tbl_scancheck") 
    Dim view As New DataView(tables(0)) 
    source1.DataSource = view 
    DataGridView1.DataSource = view 
End Sub 
+0

在设计器中,按照您需要的顺序在“DataGridView”中创建列。将'DataGridViewColumn'的'DataProperty'设置为'DataTable'中列的相应名称。并在设置'.DataSource'设置'DataGridView.AutoColumnGeneration = false'之前'Load'事件处理程序。 – Fabio

回答

3

在行,你分配你一个SELECT * FROM SQL命令通过OleDbDataAdapter -

da = New OleDbDataAdapter("Select * from [tbl_scancheck]", myConnection) 

既然你知道你想要的列的名称以及您想要它们的顺序,如果您修改SQL以显式命名列,它可能会工作吗?示例 -

da = New OleDbDataAdapter("SELECT Emp_No, DN_PickList, PickList_DT, DN_Thermal,Thermal_DT, [TALLY] FROM [tbl_scancheck]", myConnection) 
+0

我目前正在计算法比奥的答案,并看到你的..中间试了它,并工作。感谢您的简单解决方案。 – austin

+0

不客气!乐意效劳 – LogicalFlaps