Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    [vb 2005] reload datagridview

    Ciao, io ho una form dove faccio una insert in una tabella di access e ho un datagridview che mi visualizza i records presenti in questa tabella.
    Quando inserisco un nuovo record con una insert vorrei fare in modo che l'oggetto datagridview venisse ricaricato e mi mostrasse i record appena inseriti.
    Mi date qualche suggerimento per fare tutto cio'?

    Grazie
    Ciao

  2. #2
    Anche io ho questo tipo di problema, se qualcuno ci aiuta lo ringrazio

    www.ertinformatica.com Vendita computer e hardware

    www.risorsefantacalcio.it News, voti del Corriere e della Gazzetta, e tanto altro.

    www.parrocchie.eu Parrocchie e siti cattolici italiani

  3. #3
    come fate il binding dei dati al datagridview? postate un paio di righe di codice che usate
    no pain no gain!

    ricordati che hai dei limiti...

  4. #4
    Eccolo!

    Private Sub ArticoliPage_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    objDataAdapter.SelectCommand = New OleDbCommand()
    objDataAdapter.SelectCommand.Connection = objConnection
    objDataAdapter.SelectCommand.CommandText = "Select * from Articoli"
    objDataAdapter.SelectCommand.CommandType = CommandType.Text

    ' Open db connction
    objConnection.Open()

    ' Fill
    objDataAdapter.Fill(objDataSet, "Articoli")

    ' Close db connection
    objConnection.Close()

    ' Set datagridview properties
    DataGridView1.AutoGenerateColumns = True
    DataGridView1.DataSource = objDataSet
    DataGridView1.DataMember = "Articoli"

    ' Clean up
    objDataAdapter = Nothing
    objDataAdapter = Nothing
    End Sub

    Grazie
    Ciao

  5. #5
    l'insert come lo fai invece? tramite form di dettagli apposita? in questo caso dovresti gestire la fine dell'inserimento e forzare il reload dei dati nella datagridview
    no pain no gain!

    ricordati che hai dei limiti...

  6. #6
    Originariamente inviato da nogovoia
    l'insert come lo fai invece? tramite form di dettagli apposita?
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

    Dim objCommand As OleDbCommand = New OleDbCommand()
    objCommand.Connection = objConnection

    objCommand.CommandText = "insert into Articoli" & _
    "(articolo,descrizione,prezzo,misura) " & _
    "values(articolo, descrizione, prezzo, misura);"

    ' Set Variables
    objCommand.Parameters.AddWithValue("articolo", TBCodice.Text)
    objCommand.Parameters.AddWithValue("descrizione", TBDescrizione.Text)
    objCommand.Parameters.AddWithValue("prezzo", TBPrezzo.Text)
    objCommand.Parameters.AddWithValue("misura", TBMisura.Text)

    ' Open Conn
    objConnection.Open()

    ' Execute Command
    Try
    objCommand.ExecuteNonQuery()
    MessageBox.Show("Inserimento eseguito con successo")

    Catch ex As Exception
    MessageBox.Show(ex.Message)
    End Try

    ' Close Conn
    objConnection.Close()
    End Sub

    Originariamente inviato da nogovoia
    ..in questo caso dovresti gestire la fine dell'inserimento e forzare il reload dei dati nella datagridview
    Cioè? ..Purtroppo è propio questo che nn so come farlo..

    Grazie
    Ciao

  7. #7
    ok. passo per passo. il codice che provvede all'inserimento è fatto nella stessa form del page_load che si occupa di caricare i dati nella datagridview?

    se sì allora ti consiglio di spostare le righe di codice che associano i dati dell'mdb access alla datagridview in un metodo a se stante tipo:

    codice:
    Private Sub ArticoliPage_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
      LoadData()
    End Sub
    
    Private Sub LoadData()
      objDataAdapter.SelectCommand = New OleDbCommand()
      objDataAdapter.SelectCommand.Connection = objConnection
      objDataAdapter.SelectCommand.CommandText = "Select * from Articoli"
      objDataAdapter.SelectCommand.CommandType = CommandType.Text
    
      ' Open db connction
      objConnection.Open()
    
      ' Fill
      objDataAdapter.Fill(objDataSet, "Articoli")
    
      ' Close db connection
      objConnection.Close()
    
      ' Set datagridview properties
      DataGridView1.AutoGenerateColumns = True
      DataGridView1.DataSource = objDataSet
      DataGridView1.DataMember = "Articoli"
    
      ' Clean up
      objDataAdapter = Nothing
      objDataAdapter = Nothing
    End Sub
    In questo modo, se il codice di insert dell'articolo si trova nella stessa classe lo puoi richiamare semplicemente con LoadData() di nuovo. altrimenti devi gestire la chiusura della form di inserimento e richiamare il metodo per ricaricare i dati.
    no pain no gain!

    ricordati che hai dei limiti...

  8. #8
    Questa è il mio form, ho modificato come mi hai suggerito tu, (ho provato a richiamare LoadData() prima del catch, ma mi dice che fa riferimento ad un oggetto nn impostato su un'istanza di oggetto)... Devo "costruire" la mia form in modo diverso?

    Grazie 1000 x l'aiuto.
    Ciao

    Imports System.Data
    Imports System.Data.OleDb

    Public Class ArticoliPage

    ' Percorso del DataBase (db.mdb)
    Dim PercorsoDB As String = "C:\db.mdb"

    ' Stringa di Connessione
    Dim objConnection As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; " & "Data Source=" & PercorsoDB)
    Dim objDataAdapter As New OleDbDataAdapter()
    Dim objDataSet As New DataSet()


    Private Sub ArticoliPage_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    LoadData()
    End Sub

    Private Sub LoadData()
    objDataAdapter.SelectCommand = New OleDbCommand()
    objDataAdapter.SelectCommand.Connection = objConnection
    objDataAdapter.SelectCommand.CommandText = "Select * from Articoli"
    objDataAdapter.SelectCommand.CommandType = CommandType.Text

    ' Open db connction
    objConnection.Open()

    ' Fill
    objDataAdapter.Fill(objDataSet, "Articoli")

    ' Close db connection
    objConnection.Close()

    ' Set datagridview properties
    DataGridView1.AutoGenerateColumns = True
    DataGridView1.DataSource = objDataSet
    DataGridView1.DataMember = "Articoli"

    ' Change Column Name anfd width
    DataGridView1.Columns(0).Visible = False
    DataGridView1.Columns(1).HeaderText = "Codice"
    DataGridView1.Columns(1).Width = 150
    DataGridView1.Columns(2).HeaderText = "Descrizione"
    DataGridView1.Columns(2).Width = 250
    ' Clean up
    objDataAdapter = Nothing
    objDataAdapter = Nothing
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

    Dim objCommand As OleDbCommand = New OleDbCommand()
    objCommand.Connection = objConnection

    objCommand.CommandText = "insert into Articoli" & _
    "(articolo,descrizione,prezzo,misura) " & _
    "values(articolo, descrizione, prezzo, misura);"

    ' Set Variables
    objCommand.Parameters.AddWithValue("articolo", TBCodice.Text)
    objCommand.Parameters.AddWithValue("descrizione", TBDescrizione.Text)
    objCommand.Parameters.AddWithValue("prezzo", TBPrezzo.Text)
    objCommand.Parameters.AddWithValue("misura", TBMisura.Text)

    ' Open Conn
    objConnection.Open()

    ' Execute Command
    Try
    objCommand.ExecuteNonQuery()
    MessageBox.Show("Inserimento eseguito con successo")

    Catch ex As Exception
    MessageBox.Show(ex.Message)
    End Try

    ' Close Conn
    objConnection.Close()
    End Sub

    End Class

  9. #9
    il problema sta nel fatto che istanzi l'OleDbDataAdapter a livello di classe una volta sola e lo annulli al termine del metodo LoadData

    codice:
        Dim objDataAdapter As New OleDbDataAdapter()
    
        [...]
    
            ' Clean up
            objDataAdapter = Nothing
            objDataAdapter = Nothing
    consiglio spassionato: gestisci l'evento Load e Closing della form principale in cui nel Load istanzi l'oggetto objConnection e apri la connessione al db; nel Closing chiudi la connessione al db.

    codice:
    Imports System.Data
    Imports System.Data.OleDb
    
    Public Class ArticoliPage
    
        ' Percorso del DataBase (db.mdb)
        Private PercorsoDB As String = "C:\db1.mdb"
    
        ' Stringa di Connessione
        Dim objConnection As OleDbConnection
        Dim objDataAdapter As OleDbDataAdapter
        Dim objDataSet As DataSet
    
    
        Private Sub ArticoliPage_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Try
                ' Open db connction
                objConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & PercorsoDB)
                objConnection.Open()
                LoadData()
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub
    
        Private Sub ArticoliPage_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
            Try
                ' Close db connection
                objConnection.Close()
            Catch ex As Exception
            End Try
        End Sub
    
        Private Sub LoadData()
            objDataAdapter = New OleDbDataAdapter()
            objDataAdapter.SelectCommand = New OleDbCommand()
            objDataAdapter.SelectCommand.Connection = objConnection
            objDataAdapter.SelectCommand.CommandText = "Select * from Articoli"
            objDataAdapter.SelectCommand.CommandType = CommandType.Text
    
    
            ' Fill
            objDataAdapter.Fill(objDataSet, "Articoli")
    
    
            ' Set datagridview properties
            DataGridView1.AutoGenerateColumns = True
            DataGridView1.DataSource = objDataSet
            DataGridView1.DataMember = "Articoli"
    
            ' Change Column Name anfd width
            DataGridView1.Columns(0).Visible = False
            DataGridView1.Columns(1).HeaderText = "Codice"
            DataGridView1.Columns(1).Width = 150
            DataGridView1.Columns(2).HeaderText = "Descrizione"
            DataGridView1.Columns(2).Width = 250
            ' Clean up
            objDataAdapter = Nothing
        End Sub
    
        Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    
            Dim objCommand As OleDbCommand = New OleDbCommand()
            objCommand.Connection = objConnection
    
            objCommand.CommandText = "insert into Articoli" & _
            "(articolo,descrizione,prezzo,misura) " & _
            "values(articolo, descrizione, prezzo, misura);"
    
            ' Set Variables
            objCommand.Parameters.AddWithValue("articolo", TBCodice.Text)
            objCommand.Parameters.AddWithValue("descrizione", TBDescrizione.Text)
            objCommand.Parameters.AddWithValue("prezzo", TBPrezzo.Text)
            objCommand.Parameters.AddWithValue("misura", TBMisura.Text)
    
            ' Execute Command
            Try
                objCommand.ExecuteNonQuery()
                MessageBox.Show("Inserimento eseguito con successo")
                LoadData()
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub
    End Class
    no pain no gain!

    ricordati che hai dei limiti...

  10. #10
    Ho capito! Grazie 1000 per le tue spiegazioni/esempi, sei stato veramente gentile!

    Ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.