2017-08-16 13 views
0

私はItem InItem Outという情報を格納するために使用したAccessデータベースに2つのテーブルを持っています。 DataSetを使用して、両方のテーブルのデータをDataGridViewに表示しています。 DataGridView1に表示されるItem InとDataGridView2に表示されるItem Out。ここでデータベースからDataGridViewにデータを表示

が機能する場合呼び出す

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 

うち項目を表示するには、

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 

で機能項目を表示するには、私のモジュールの機能

機能ですボタンは、あなたがそこに見ることができるように、私は同じ形で二つの異なるDataGridViewのを表示しています

myModule.load_item_in() 
myModule.load_item_out() 

をクリックしました。

私がここで直面した問題は、DataGridView1に表が表示されていますが、データは表示されません。私のDataGridView2はすべてのデータを表示することができます。だから私はシステムがデータを表示することができないので呼び出されたデータを混乱させるかと疑問に思っていますDataGridView1

答えて

0

あなたは両方の関数で同じDataSetを使用していて、呼び出しごとにリセットしているようです。

load_item_out()ds_i.Reset()メソッドは、最初のメソッドload_item_in()が取得したデータをクリアしています。データセット "reset"を削除し、DataAdapterにデータを書き込む前にDataTableクリアを追加します。

0

私はVBで働いて以来、しばらくしています - 私は見ることができない2つの別個のサブルーチンDBへの接続を終了します。各サブには接続開始と接続停止が必要です。

+0

'すべてのサブ用conn_i.Close()'とまだ同じ結果を得ることを – Emerald

0

これは私が学校で行ったプロジェクトのデータグリッドビューの例です。メインフォームには4つのdgvがあり、それぞれに異なるselect文を持つこのコードブロックがあります。彼らは皆、同じサブで実行されていましたが、自分自身の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 
関連する問題