我的Access数据库中有两个表,用于存储Item In
和Item 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
显示数据而混淆了哪些数据?
答案 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