Aggiornamento database

martedì 18 marzo 2008 - 08.11

xxxgiacomoxxx Profilo | Newbie

Salve, sto cominciando a fare i primi passi nel mondo della programmazione di piccoli gestionali.
Mi sto creando una applicazione per gestire le mie finanze in VB.NET.
nelle mie prime prove, ho inserito all'interno di un form un datagridview per la visualizzazione dei dati di una tabella mysql, a fianco ho inserito un tasto "inserisci" per effettuare un inserimento di un nuovo record da un nuovo form.
Inserendo i dati, quando clicco sul mio tasto di add il datagrid non mi viene aggiornato, però so che l'inserimento è andato a buon fine, perchè se riavvio l'applicazione il nuovo record c'è.
Come faccio ad intercetare l'evento di modifica del dataset???Qualcuno può chiarirmi questo dilemma???
Grazie anticipatamente.

speedx Profilo | Junior Member

Ciao, ti do una risposta un po' generica non vedendo il codice...
Da quello che ho capito inserisci direttamente nel DB. il data table non si aggiorna direttamente ma devi rifare il ricaricamento della tabella. Non so come hai agganciato la tabella ai dati ma potrebbe esserti utile la funzione di Binding.
//// Marcello C.

SSUPERPIPPO Profilo | Guru

>Salve, sto cominciando a fare i primi passi nel mondo della programmazione
>di piccoli gestionali.
>Mi sto creando una applicazione per gestire le mie finanze in
>VB.NET.
>nelle mie prime prove, ho inserito all'interno di un form un
>datagridview per la visualizzazione dei dati di una tabella mysql,
>a fianco ho inserito un tasto "inserisci" per effettuare un inserimento
>di un nuovo record da un nuovo form.
>Inserendo i dati, quando clicco sul mio tasto di add il datagrid
>non mi viene aggiornato, però so che l'inserimento è andato a
>buon fine, perchè se riavvio l'applicazione il nuovo record c'è.
>Come faccio ad intercetare l'evento di modifica del dataset???Qualcuno
>può chiarirmi questo dilemma???
>Grazie anticipatamente.

Presumento che tu abbia collegato il tuo DataGridView ad un Dataset, tieni in considerazione che il Dataset è una copia lato client dell'origine dati, quindi tutte le modifiche che apporterai al Dataset (attraverso il DataGridView) non si riperquoteranno sul Database fino a quando non richiamerai il metodo Update del Dataadapter utilizzato per il popolamento.

Viceversa, eventuali modifiche effettuate sul database fisico non si riperquoteranno automanticamente sul tuo Dataset ma dovrai ricrearlo e ricollegarlo al DataGridView per ottenere i dati aggiornati.

Ti consiglierei di aggiungere con il tuo pulsante add i dati al DataSet anzichè al database ed eseguire l'update al momento desiderato, questo ti consentirà anche di poter annullare eventuali modifiche senza toccare il database fisico.

Ciao

Alessandro

http://blogs.dotnethell.it/alebadalin

xxxgiacomoxxx Profilo | Newbie

Ok grazie...appena ho due minuti proverò a riguardare il codice che ho scritto...
Grazie tante

xxxgiacomoxxx Profilo | Newbie

Ciao, ho provato a fare la modifica che mi hai detto, ma forse non ho capito bene; ti posto anche il codice, così vedi la mia schifezza[:):

Private Sub btnInserisci_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInserisci.Click
Inserisci.Show()
End Sub

questo è l'azione compiuta dal tasto inserisci.

Public Class Inserisci
Dim strConn As String = "server=localhost;user id=giacomo;Password=l3g0l4s;persist security info=True;database=gestioneeconomica"
Dim cn As New MySqlConnection(strConn)

Dim ds As New DataSet()

Dim da As New MySqlDataAdapter

Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
Dim exComm As New MySqlCommand()

Dim dataValuta As Date = CDate(txtData.Text)
Dim descrizione As String = txtDescrizione.Text
Dim dare As Double = CDbl(txtDare.Text)
Dim avere As Double = CDbl(txtAvere.Text)

Dim proxRiga As Integer = 0

Dim ottieniUltimaRiga As New MySqlCommand("SELECT max(IDRiga) from movimentigennaio;", cn)

cn.Open()
proxRiga = CType(ottieniUltimaRiga.ExecuteScalar, Integer)

proxRiga += 1

exComm.Connection = cn
exComm.CommandText = "CALL SP_I_MOV_MESE(?pMese, ?pRiga, ?pData, ?pDescr, ?pDare, ?pAvere, ?pSaldo);"

exComm.Parameters.AddWithValue("?pMese", 1).DbType = DbType.Int16
exComm.Parameters.AddWithValue("?pRiga", proxRiga).DbType = DbType.Int16
exComm.Parameters.AddWithValue("?pData", dataValuta).DbType = DbType.Date
exComm.Parameters.AddWithValue("?pDescr", descrizione).DbType = DbType.String
exComm.Parameters.AddWithValue("?pDare", dare).DbType = DbType.Double
exComm.Parameters.AddWithValue("?pAvere", avere).DbType = DbType.Double
exComm.Parameters.AddWithValue("?pSaldo", 0.0).DbType = DbType.Double

exComm.ExecuteNonQuery()

da.Update(ds, "movimentigennaio") <--

cn.Close()

da = Nothing
cn = Nothing

Me.Close()

End Sub
End Class

Questo invece è cio che viene eseguito dal pulsante Add all'interno del form Inserisci. Ti sarei molto grato se potessi dirmi dove sbaglio. Grazie
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