2017-08-16 3 views
0

J'ai deux tables dans ma base de données Access où j'ai utilisé pour stocker les informations de Item In et Item Out. J'affiche ces données de la table dans un DataGridView en utilisant un DataSet. Item In affiché dans DataGridView1 et Item Out affichés dans DataGridView2.Afficher les données de la base de données dans DataGridView

Voici mon Module Fonction

Fonction pour afficher un élément dans la

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 

Fonction pour afficher l'article 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 

Criant la fonction lorsque bouton cliqué

myModule.load_item_in() 
myModule.load_item_out() 

Comme vous pouvez le voir là-bas, je suis l'affichage de deux DataGridView différents dans une même forme.

Le problème que j'ai rencontré ici est, j'ai une table affichée dans DataGridView1 mais aucune donnée n'y est affichée. Mon DataGridView2 est capable d'afficher toutes les données. Donc, je me demande si le système se confondre avec quelles données appeler parce qu'il est impossible d'afficher les données à DataGridView1

Répondre

0

On dirait que vous utilisez le même DataSet dans les deux fonctions et que vous le réinitialisez avant chaque appel. La méthode ds_i.Reset() de load_item_out() efface les données que la première méthode load_item_in() a récupérées. Supprimer votre DataSet "réinitialiser" et ajouter un DataTable effacer avant de remplir le DataAdapter.

0

Cela fait longtemps que je n'ai pas travaillé en VB - bien que vous les ayez dans deux sous-routines séparées que je ne vois pas où vous fermez la connexion à la base de données. Chaque sous-réseau devrait avoir un début de connexion et un arrêt de connexion.

+0

J'ai ajouté 'conn_i.Close()' pour chaque sub et obtenant toujours le même résultat – Emerald

0

Ceci est un exemple datagridview d'un projet que j'ai fait à l'école - la forme principale avait 4 dgv et chacun avait ce bloc de code avec une instruction select différente. Ils ont tous couru dans le même sous mais ont eu leurs propres appels d'essai -

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