Salvare dati DataGridView con DataAdapter

venerdì 03 giugno 2011 - 11.12
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Visual Studio 2010  |  Access (.mdb)

luka82 Profilo | Junior Member

Allora, a livello di Form ho:
Dim DataAdapter As OleDbDataAdapter Dim ds As DataSet
nella Load della form ho:
Dim sql As String = "SELECT campo1, campo2 FROM [Tabella1]" ds = New DataSet Dim Conn As New OleDbConnection(StringaConnessione) DataAdapter = New OleDbDataAdapter(sql, Conn) Conn.Open() DataAdapter.Fill(ds, "Tabella1") Conn.Close() DG1.DataSource = ds DG1.DataMember = "Tabella1"

nella funzione Salva ho:
DataAdapter.Update(ds, "Tabella1")
quest'ultima riga di codice mi restituisce "Update richiede un UpdateCommand valido se la raccolta DataRow viene passato con righe modificate".

Cosa mi manca?

Cteniza Profilo | Guru

Devi verificare per prima cosa che sulla table ci sia una chiave primaria univoca.
La select per un dataset "aggiornabile" NON deve contenere delle join a qualsiasi titolo.
Poi devi verificare il tuo programma / select per il dataadapter, deve contenere tutti i campi chiave della tabella.
Come ultima cosa devi popolare il dataadapter con tutti i comandi (updatecommand, selectcommand, deletecommand, insertcommand).
Lo puoi fare automaticamente "dando in pasto" il dataadapter al "commandbuilder".
Dim cm As New OleDbCommandBuilder(mydataadapter).
Se il commandbuilder non è in grado di popolare dataadapter dovrai provvedere tu "manualmente" ad inserire i quattro command (e le 4 connessioni).

luka82 Profilo | Junior Member

>Devi verificare per prima cosa che sulla table ci sia una chiave
>primaria univoca.
>La select per un dataset "aggiornabile" NON deve contenere delle
>join a qualsiasi titolo.
>Poi devi verificare il tuo programma / select per il dataadapter,
>deve contenere tutti i campi chiave della tabella.
>Come ultima cosa devi popolare il dataadapter con tutti i comandi
>(updatecommand, selectcommand, deletecommand, insertcommand).
>Lo puoi fare automaticamente "dando in pasto" il dataadapter
>al "commandbuilder".
>Dim cm As New OleDbCommandBuilder(mydataadapter).
>Se il commandbuilder non è in grado di popolare dataadapter dovrai
>provvedere tu "manualmente" ad inserire i quattro command (e
>le 4 connessioni).
>
Ho provato con il CommandBuilder, poi ho fatto l'update e funziona. Quindi dovrei fare manualmente la updatecommand, selectcommand, deletecommand, insertcommand solo se non rispetto le premesse(chiave primaria e JOIN)?

Ciao

Cteniza Profilo | Guru

Se funziona allora ti dovresti trovare i dati aggiornati nel database così come modificati nel dataset/datagridview
In questo caso allora sei a posto, vieceversa se non aggiorna niente devi provvedere da codice a popolare i comandi del dataadapter.

luka82 Profilo | Junior Member

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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5