重新加载Datagrid视图返回Nothing

时间:2016-11-21 06:55:18

标签: database vb.net datagrid

我有一个函数可以将数据从Microsoft Access DB加载到DGV中,如下面的代码所示:

Public Sub LoaddgvCombined()  
    Try
        '//Clear DataGrid
        ds.Clear()
        dgvSales.DataSource = Nothing
        'dgvSales.Refresh()
        dgvSales.DataSource = ds

        '//Establish Connection to DB
        con.ConnectionString = dbProvider & dbSource
        tables = ds.Tables
        con.Open()

        sql = "SELECT * FROM [tblINV_SalesRecord] WHERE CDate(adddate &  ' ' &addtime) < CDate('" & selectfrm & "')) ORDER BY temID ASC"

        da = New OleDb.OleDbDataAdapter(sql, con)
        da.Fill(ds, "tblINV_SalesRecord")
        con.Close()

        Dim view As New DataView(tables(0))
        source1.DataSource = view
        dgvSales.DataSource = view
        dgvSales.AllowUserToAddRows = False

        If dgvSales.RowCount < 1 Then
            MessageBox.Show("No Sales Recorded Found From " & selectfrm)
        End If

    Catch ex As Exception
        MessageBox.Show(ex.Message & " - " & ex.Source)
        MessageBox.Show("An Error Occured While Loading Sales Record ")
    End Try 
End Sub

第一次工作正常,但是当我第二次调用该函数时它会清空DGV,但这次它没有加载任何数据。

任何人都可以指出我做错了什么。

1 个答案:

答案 0 :(得分:1)

我在这里注意到的事情是你传递给tables 之前你得到了你的查询结果。

填写tables后尝试传递ds的值。

像这样:

da = New OleDb.OleDbDataAdapter(sql, con)
da.Fill(ds, "tblINV_SalesRecord")
con.Close()
tables = ds.Tables '<=== transfer it here

它显示为空,因为在您转到tables时,您的ds变量尚未从您的查询中填充。