2017-08-16 92 views
0

我在Access數據庫中有兩個表,我用它來存儲Item InItem Out的信息。我使用DataSet在DataGridView中顯示這兩個表中的數據。項目顯示在DataGridView1中,Data Out顯示在DataGridView2中。將數據庫中的數據顯示到DataGridView中

這裏是我的模塊功能

功能顯示項目在

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 

功能到Out

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

看起來您在兩個函數中都使用相同的DataSet,並在每次調用之前重置它。

ds_i.Reset()方法load_item_out()正在清除第一個方法load_item_in()檢索到的數據。在填充DataAdapter之前,刪除DataSet「reset」並添加DataTable清除。

0

已經有一段時間,因爲我在VB工作 - 雖然你有這些在兩個單獨的子例程,我沒有看到您正在關閉與數據庫的連接。每個子應該有一個連接開始和一個連接停止。

+0

我已經爲每個子項添加'conn_i.Close()',仍然得到相同的結果 – Emerald

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 
相關問題