[VB.NET] Aggiornare una griglia dopo un ADD

venerdì 08 febbraio 2008 - 05.46

marco.santilli Profilo | Junior Member

Popolo una griglia con i dati di una tabella

Poi aggiungo un record a quella tabella

Come faccio ad aggiornare la tabella in modo da far visualizzare il nuovo record???

Ciao e grazieeeeee


----------------------------------------------------------------
DS = New DataSet()
command = New OleDb.OleDbCommand("SELECT * FROM [DvdStorico] order by Titolo", Conn)
adapter = New OleDb.OleDbDataAdapter(command)
adapter.Fill(DS)

Me.GridEX.DataSource = DS.Tables(0)
--------------------------------------------------------------------

Private Sub btnNuovo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNuovo.Click
Dim command As New OleDb.OleDbCommand

command = New OleDbCommand("INSERT INTO DvdStorico (Titolo,NCD) VALUES(?,?)", Conn)

command.Parameters.Add("@Titolo", OleDbType.Char, 50).Value = Me.txtTitolo.Text
command.Parameters.Add("@NCD", OleDbType.Char, 50).Value = Me.txtNCD.Text
command.ExecuteNonQuery()



End Sub
--------------------------------------------------------------------

SSUPERPIPPO Profilo | Guru

>Popolo una griglia con i dati di una tabella
>
>Poi aggiungo un record a quella tabella
>
>Come faccio ad aggiornare la tabella in modo da far visualizzare
>il nuovo record???
>
>Ciao e grazieeeeee
>
>
>----------------------------------------------------------------
>DS = New DataSet()
>command = New OleDb.OleDbCommand("SELECT * FROM [DvdStorico]
>order by Titolo", Conn)
> adapter = New OleDb.OleDbDataAdapter(command)
> adapter.Fill(DS)
>
> Me.GridEX.DataSource = DS.Tables(0)
>--------------------------------------------------------------------
>
>Private Sub btnNuovo_Click(ByVal sender As System.Object, ByVal
>e As System.EventArgs) Handles btnNuovo.Click
> Dim command As New OleDb.OleDbCommand
>
>command = New OleDbCommand("INSERT INTO DvdStorico (Titolo,NCD)
>VALUES(?,?)", Conn)
>
>command.Parameters.Add("@Titolo", OleDbType.Char, 50).Value =
>Me.txtTitolo.Text
>command.Parameters.Add("@NCD", OleDbType.Char, 50).Value = Me.txtNCD.Text
> command.ExecuteNonQuery()
>
>
>
> End Sub
>--------------------------------------------------------------------

nel tuo caso, hai collegato al tuo DataGridView un Dataset che altro non è che una 'copia lato client' della tua tabella fisica. Ciò significa che le modifiche che tu apporti al database fisico non si riperquotono sul dataset e viceversa eventuali modifiche al DataSet e quindi al contenuto del DataGrid non si riperquotono direttamente sul database fisico fino a quando non esegui il metodo Update del DataAdapter.

Detto questo ti consiglierei, anzichè eseguire una query di inserimento sulla tabella fisica come hai fatto sopra, di aggiungere il record
direttamente al DataSet (Il tuo datagrid si aggiornerà automaticamente di conseguenza).
Quando deciderai di sincronizzare il Database fisico allora dovrai eseguire il metodo Update dell'oggetto DataAdapter utilizzato per il popolamento del DataSet.

Se hai bisogno di ulteriori chiarimenti sono a disposizione.

Ciao

Alessandro


http://blogs.dotnethell.it/alebadalin

marco.santilli Profilo | Junior Member

Ok....ottimo

Non l'ho mai fatto

Potresti farmi un esempio, cosi provo ad adattarlo????

Ciao e grazieeeeee

P.S.= Scusa del disturbo

SSUPERPIPPO Profilo | Guru

Cerco di sintetizzare la procedura:

1. Crei il DataSet popolandolo con i dati provenienti dalla Tabella del DataBase (come avevi già fatto tu):

DS = New DataSet()
command = New OleDb.OleDbCommand("SELECT * FROM [DvdStorico]
order by Titolo", Conn)
adapter = New OleDb.OleDbDataAdapter(command)
adapter.Fill(DS)

Me.GridEX.DataSource = DS.Tables(0)

2. Se devi aggiungere un record al tuo DataSet fai così:

Dim CurRow As DataRow = DbDbase.SqlDS.Tables(0).Rows.Add()

CurRow.Item("Colonna1") = Valore1
CurRow.Item("Colonna2") = Valore2

...

CurRow.EndEdit

Vedrai che il tuo DataGrid si aggiorna automaticamente

3. Per salvare le modifiche

adapter.Update(DS, "NomeTabella")

Spero ti sia tutto chiaro, se hai bisogno di ulteriori chiarimenti sono a disposizione.

Ciao

Alessandro

P.S.: Potrebbe esserti utile, sul mio blog (link qui sotto), trovi una classe per la gestione degli accessi al database semplificata.



http://blogs.dotnethell.it/alebadalin
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5