【问题标题】:Display data from database into DataGridView将数据库中的数据显示到 DataGridView
【发布时间】:2018-01-24 19:53:47
【问题描述】:

我的 Access 数据库中有两个表,用于存储 Item InItem Out 的信息。我使用DataSet 在DataGridView 中显示这两个表中的这些数据。在 DataGridView1 中显示 Item In,在 DataGridView2 中显示 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显示数据

【问题讨论】:

    标签: vb.net winforms datagridview dataset


    【解决方案1】:

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

    【讨论】:

    • 我为每个子添加了conn_i.Close(),但仍然得到相同的结果
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      这是我在学校做的一个项目的 datagridview 示例 - 主窗体有 4 个 dgv,每个都有这个代码块和不同的选择语句。他们都在同一个 sub 中运行,但有自己的 try 调用 -

         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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-15
        • 1970-01-01
        • 2023-04-02
        • 1970-01-01
        相关资源
        最近更新 更多