将数据库中的数据显示到DataGridView中

时间:2017-08-16 15:23:59

标签: vb.net winforms datagridview dataset

我的Access数据库中有两个表,用于存储Item InItem Out的信息。我使用DataSet在DataGridView中显示这两个表中的数据。项目显示在DataGridView1中的DataGridView1和Item Out中。

这是我的模块功能

显示项目的功能

Public Sub load_item_in()
    ds_i.Reset()
    Dim i_sql As String
    Dim conn_i As New OleDb.OleDbConnection("PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source = access-database-file-dir")
    i_sql = "SELECT * FROM item_in"
    da_i = New OleDb.OleDbDataAdapter(i_sql, conn_i)
    da_i.Fill(ds_i, "InventoryIn")
    Form6.DataGridView1.DataSource = ds_i.Tables("InventoryIn")
    Form6.DataGridView1.ReadOnly = True
End Sub

显示项目输出的功能

Public Sub load_item_out()
    ds_i.Reset()
    Dim i_sql As String
    Dim conn_i As New OleDb.OleDbConnection("PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source = access-database-file-dir")
    i_sql = "SELECT * FROM item_out"
    da_i = New OleDb.OleDbDataAdapter(i_sql, conn_i)
    da_i.Fill(ds_i, "InventoryOut")
    Form6.DataGridView2.DataSource = ds_i.Tables("InventoryOut")
    Form6.DataGridView2.ReadOnly = True
End Sub

点击按钮时调出该功能

myModule.load_item_in()
myModule.load_item_out()

正如你在那里看到的那样,我在同一个表单中显示两个不同的DataGridView。

我遇到的问题是,我在DataGridView1中显示了表格,但没有显示数据。我的DataGridView2能够显示所有数据。所以我想知道系统是否因为无法在DataGridView1显示数据而混淆了哪些数据?

3 个答案:

答案 0 :(得分:0)

自从我在VB工作以来已经有一段时间了 - 尽管你在两个独立的子程序中有这些,但我没有看到你在哪里关闭与DB的连接。每个子应该有一个连接开始和一个连接停止。

答案 1 :(得分:0)

看起来您在两个函数中使用相同的DataSet并在每次调用之前重置它。

ds_i.Reset()中的load_item_out()方法正在清除第一个方法load_item_in()检索到的数据。删除DataSet“reset”并在填充DataAdapter之前添加DataTable清除。

答案 2 :(得分:0)

这是我在学校做的一个项目的datagridview示例 - 主要表单有4个dgv,每个都有一个带有不同select语句的代码块。他们都跑在同一个子区域,但有自己的试一试 -

   Private Sub Sponsor_Load()
    '-----gridviewB----++++++
    'required try catch +++++
    Try
        'declare variables
        Dim strSelect As String = ""
        Dim cmdSelect As OleDb.OleDbCommand
        Dim drSourceTable As OleDb.OleDbDataReader
        Dim dt As DataTable = New DataTable

        'database opened
        If OpenDatabaseConnectionSQLServer() = False Then

            'database fail - alert user and exit program
            MessageBox.Show(Me, "Database connection error." & vbNewLine &
                                "The application will now close.",
                                Me.Text + " Error",
                                MessageBoxButtons.OK, MessageBoxIcon.Error)
            Me.Close()

        End If

        'select statement
        strSelect = "SELECT * FROM TSponsors WHERE intSponsorID= " & cboSponsor.SelectedValue.ToString

        'pull records from sourcetable
        cmdSelect = New OleDb.OleDbCommand(strSelect, m_conAdministrator)
        drSourceTable = cmdSelect.ExecuteReader

        'load data table
        dt.Load(drSourceTable)

        'populate the datagrid view
        dgvSponsor.DataSource = dt

        'close source table
        drSourceTable.Close()

        'close db connection
        CloseDatabaseConnection()

        'requried try catch - +++++
    Catch excError As Exception

        'display error message
        MessageBox.Show(excError.Message)

    End Try

End Sub