Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Trasferimento dati al database con binding
lunedì 10 giugno 2013 - 11.13
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
VB.NET
|
Visual Studio 2010
MasterLed
Profilo
| Newbie
12
messaggi | Data Invio:
lun 10 giu 2013 - 11:13
buongiorno, sono arenato su un problema di aggiornamento dati nel database.
la base dati è postgresql
la parte di prelievo dei dati funziona correttamente, ovvero tramite un dataset ed un binding su di una datagridview vedo tutti i dati del mio database utilizzando in apertura l'istruzione
Me.AnagdipTableAdapter.Fill(Me.AnagDip_DataSet.anagdip)
quando però modifico nella tabella dei dati e voglio andare ad aggiornare il database la procedura non mi segnala nessun errore, però nel database i dati non sono per nulla cambiati
Me.Validate()
Me.AnagdipBindingSource.EndEdit()
Me.AnagDip_DataSet.AcceptChanges()
Me.AnagdipTableAdapter.Update(Me.AnagDip_DataSet.anagdip)
sapete aiutarmi su dove sbaglio o cosa mi manca?
grazie
AntCiar
Profilo
| Expert
936
messaggi | Data Invio:
lun 10 giu 2013 - 11:20
Ciao
L'errore sta qua: Me.AnagDip_DataSet.AcceptChanges()
In pratica non devi fare l'AcceptChanges() ma fare direttamente l'istruzione di Update che hai messo dopo.
Succede questo: quando tu fai delle modifiche dei dati contenuti nel dataset, ti vengono "marchiati" i record modificati a seconda delle modifiche che ci hai fatto sopra (RowState).
Quando richiami il medoto di Update il dataset valuta ogni singola riga e a seconda del RowState richiama l'istruzione adeguata (Insert, Update o Delete)
Quanto tu richiami il metodo AcceptChanges non fai altro che rimuovere tutti i RowState delle righe e quindi l'istruzione Update non esegue nessun comando sul DB.
PS. Update() al suo interno esegue già al termine un comando di AcceptChanges()
Cristian Barca
MasterLed
Profilo
| Newbie
12
messaggi | Data Invio:
lun 10 giu 2013 - 11:41
ti ringrazio per la risposta, se tolgo però l'AcceptChang mi dà il seguente msg di errore e si inchioda sulla riga dell'Update
'Update richiede un UpdateCommand valido se la raccolta DataRow viene passato con righe modificate'
non riesco a venirne a capo di cosa mi manca per eseguire l'aggiornamento del database
AntCiar
Profilo
| Expert
936
messaggi | Data Invio:
lun 10 giu 2013 - 11:48
questo è un altro problema.
Se lasci l'AcceptChange non ti va in errore perchè come detto non esegue nessun comando sul database.
ma il DataAdapter e il relativo Dataset lo hai creato con il wizard oppure lo hai fatto tu via codice?
Questo perchè l'errore che ti ha dato è relativo all'istruzione di Update nel DataAdapter che non è corretta oppure non è proprio valorizzata.
Per controllare puoi prima di fare l'UPDATE verificare l'oggetto XXXXX.UpdateCommand.CommandText (al posto di XXXX devi mettere il nome del tuo oggetto dataAdapter).
All'interno dell'UpdateCommand (come per l'InsertCommand e per il DeleteCommand) dovresti trovarci all'interno delle query parametriche del tipo:
UPDATE tab SET campo1= ?param1, campo2 = ?param2 WHERE chiave1 = ?chiave1 ....
Cristian Barca
MasterLed
Profilo
| Newbie
12
messaggi | Data Invio:
lun 10 giu 2013 - 12:51
l'ho creato con il wizard... ed in effetti ora vedo che la proprietà 'UpdateCommand' e 'DeleteCommand' ha come valore (Nessuno)
ho riprovato creando un progetto da zero e tutto funziona... mi sa che ho mastruzzato troppo i dataset e si sono staccate tutte le connessioni e ha perso le proprietà, per questo non riusciva più a sincronizzarsi con il database
Torna su
Stanze Forum
Elenco Threads
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 !