我正在尝试从数据库加载数据,然后在DatagridView中显示它。我根据各种在线网站的建议尝试了使用不同类的不同组合,如SQLDataAdapter,DataBinding。
然而没有任何作用..
这是我的代码:
Dim sql As String
sql = "select "
sql = sql & " dbo.tblMvMovimentos.Sigla, dbo.tblMvMovimentos.numero,dbo.tblMvMovimentos.chkdigit,"
sql = sql & " CodTipocontentor,Dim, dbo.tblMvMovimentos.CodArmador,CodDebito,"
sql = sql & " DataEntrada, EstadoCarga, PesoBascula, "
sql = sql & " FrigoTemperatura, FrigoLigado, Observacoes"
sql = sql & " from tblMvMovimentos INNER JOIN dbo.tblCtContentores ON"
sql = sql & " dbo.tblMvMovimentos.Sigla = dbo.tblCtContentores.Sigla AND"
sql = sql & " dbo.tblMvMovimentos.Numero = dbo.tblCtContentores.Numero"
Dim rs As ADODB.Recordset
Consulta(sql, rs)
da = New OleDb.OleDbDataAdapter
ds = New DataTable()
da.Fill(ds, rs)
MessageBox.Show(rs.RecordCount)
MessageBox.Show(ds.Rows.Count)
With DataGridView1
.AutoGenerateColumns = False
.DataSource = ds
.Refresh()
End With
MessageBox.Show(DataGridView1.RowCount)
Consulta是一个处理对db的查询的函数。我编写了这些消息框,以查看数据是否实际被加载,它既是记录集又是DataTable。但是最后一个,引用datagrid返回0并且datagridview显示为全灰色。有人能指出我正确的方向吗?
答案 0 :(得分:2)
With DataGridView1
.AutoGenerateColumns = True
.DataSource = ds
.Refresh()
End With
设置AutoGenerateColumns = False时,必须自己定义列。如果将其设置为True,它将根据数据源确定列。
-E