2011-10-07 2 views
0

J'ai un formulaire composé de datagridview et deux boutons de mise à jour et charger tous .. J'ai utilisé la méthode fillby pour obtenir des données de la base de données. La requête semble fonctionner correctement, sauf que les données ne sont pas affichées dans la grille.Datagrid et base de données

Comme dans, pour la requête, si les lignes retournées sont 2, il affichera 3 lignes dans la grille, mais toutes vides.

Imports System.Data 
Imports System.Data.OleDb 
Imports System.EventArgs 
Imports System.Data.OleDb.OleDbConnection 
Imports System.Data.OleDb.OleDbCommand 

Public Class Form1 
    Inherits System.Windows.Forms.Form 

    Dim wrkdir As String = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly.Location()) 
    Dim da As New OleDbDataAdapter 
    Dim ds As New DataSet 
    Dim bs As New BindingSource 
    Dim edit As Boolean 
    'Dim cnn As OleDbConnection 


    Dim cnn As New OleDbConnection("Provider=microsoft.jet.oledb.4.0;Data Source=E:\Project-Hemtech\HemDatabase1.mdb;") 

    'cnn = New OleDbConnection("Provider=microsoft.jet.oledb.4.0;Data Source=E:\Project-Hemtech\HemDatabase1.mdb;") 
    'cnn.Open() 

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click 

     If edit Then 
      da.Update(ds, "partno") 
      edit = False 
     End If 

    End Sub 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     'TODO: This line of code loads data into the 'HemDatabase1DataSet.partno' table. You can move, or remove it, as needed. 
     Me.PartnoTableAdapter.Fill(Me.HemDatabase1DataSet.partno) 

     dgv1.DataSource = bs 

     'Dim cnn As New OleDbConnection("Provider=microsoft.jet.oledb.4.0;Data Source=E:\Project-Hemtech\HemDatabase1.mdb;") 
     'cnn = New OleDbConnection("Provider=microsoft.jet.oledb.4.0;Data Source=E:\Project-Hemtech\HemDatabase1.mdb;") 
     'cnn.Open() 

    End Sub 

    Private Sub button2_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click 

     ds.Tables.Clear() 

     If tsText.Text <> "" Then 

      Dim sql As String = "SELECT partno.partnum, partno.partname, partno.partdesc, partno.partqty " & _ 
           "FROM(partno)" & _ 
           "WHERE (((partno.type)='" & tsText.Text & "'));" 

      Dim cmd As New OleDbCommand(sql, cnn) 

      da.SelectCommand = cmd 

      Dim cmdBuilder As New OleDbCommandBuilder(da) 

      da.Fill(ds, "partno") 
      bs.DataSource = ds.Tables(0) 

     Else 

      Exit Sub 

     End If 
    End Sub 

    Private Sub button3_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles button3.Click 

     ds.Tables.Clear() 

     Dim sql As String = "SELECT * FROM partno;" 
     Dim cmd As New OleDbCommand(sql, cnn) 

     da.SelectCommand = cmd 

     Dim cmdbuilder As New OleDbCommandBuilder(da) 
     da.Fill(ds, "partno") 
     bs.DataSource = ds.Tables(0) 

    End Sub 

    Private Sub FillByToolStripButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button3.Click 
     Try 
      Me.PartnoTableAdapter.FillBy(Me.HemDatabase1DataSet.partno, tsText.Text) 
     Catch ex As System.Exception 
      System.Windows.Forms.MessageBox.Show(ex.Message) 
     End Try 

    End Sub 
End Class 

Répondre

0

vous devez ajouter dgv1.DataSource = bs sur tous les événements de bouton afin que les données sur la GridView mettra à jour

+0

je l'ai fait .. quand j'ajouter sur les deux boutons, il cesse d'afficher des données .. J'ai ajouté sur le bouton de mise à jour , il fait la mise à jour !! Pour le bouton de chargement, j'ai utilisé: dgv1.DataSource = Me. HemDatabase1Dataset.partno Cependant, les deux fonctionnent apparemment bien, mais en cliquant sur le bouton de chargement, il n'affiche pas les données mises à jour du type spécifié ie. mon nouvel album est du type électronique. Lorsque j'ai cliqué sur mise à jour, après les changements mentionnés ci-dessus, il a montré l'enregistrement mis à jour dans la grille. Quand j'ai cliqué sur le bouton "charger tout", en mentionnant le type ci-dessus, cela m'a donné des enregistrements précédents avec le type électronique mais pas le nouveau. – Ruchi22