Ciao a tutti e intanto grazie per la risposta.. si in effetti mi sembra un po bruttino il metodo.. ma non so come potrei fare altrimenti.. vi spiego meglio il mio problema.. ho due tabelle in mysql , tabella soggetti (id, cognome, nome, note.. id è chiave) e tabelle telefono (id, numero, note) id e numero sono chiavi... sul mio form invece ho le 2 datagridview... quella collegata al telefono ho questo codice:
Dim numeri As New MySqlDataAdapter
Dim numeridt As New DataTable
Private WithEvents tt As New BindingSource
Private Sub primo()
connetti.Open()
comando.CommandText = "SELECT * FROM telefono ORDER BY numero ASC ;"
numeri.SelectCommand = comando
numeri.Fill(numeridt)
Dim ct As New MySqlCommandBuilder(numeri)
tt.DataSource = numeridt
DataGridView1.DataSource = tt
DataGridView1.Columns("numero").ReadOnly = True
DataGridView1.Columns("id").Visible = False 'nasconde id
connetti.Close() ' connection close...
End Sub
Private Sub tt_CurrentItemChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles tt.CurrentItemChanged
numeri.Update(numeridt)
End Sub
Se avvio il software, ho tutti i valori nella datagridview1 presi dalla tabella telefono... appena clicco sul datagridview nel campo note (la colonna numero è readonly), scrivo quello che voglio e appena confermo valori con invio, in automatico quello che ho scritto è nella tabella mysql... funziona tutto alla perfezione!!
Adesso il problema è per la seconda tabella ho un select diverso come detto prima:
comando.CommandText = "SELECT * FROM soggetti GROUP By nome, cognome ORDER BY cognome ASC ;"
volevo usare lo stesso codice, ma non va.... Ho visto che usando lo stesso codice mi si riempie la datagridview2, modifico nel datagridview il campo note, ma nella tabella mysql non succede nulla.. giustamente perchè è raggruppato per nomi e cognomi... quindi tengo consiglio dell'UPDATE ed ho risolto cosi per chi dovesse servire:
Private WithEvents ss As New BindingSource
Dim soggetti As New MySqlDataAdapter
Dim soggettidt As New DataTable
Private Sub secondo()
connetti.Open()
comando.CommandText = "SELECT * FROM soggetti GROUP By nome, cognome ORDER BY cognome ASC ;"
soggetti.SelectCommand = comando
soggetti.Fill(soggettidt)
ss.DataSource = soggettidt
DataGridView2.DataSource = ss ' inseriamo i valori
DataGridView2.Columns("cognome").ReadOnly = True 'non modificabile
DataGridView2.Columns("nome").ReadOnly = True 'non modificabile
DataGridView2.Columns("id").Visible = False 'nasconde id
connetti.Close() ' connection close...
end sub
' /// -> qui cambia <- ///
Private Sub ss_CurrentItemChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ss.CurrentItemChanged
Dim row As DataGridViewRow
For Each row In DataGridView2.Rows
stringa = "UPDATE soggetti SET note = '" & row.Cells("note").Value.ToString() & "' WHERE cognome = '" & row.Cells("cognome").Value.ToString() & "' AND nome = '" & row.Cells("nome").Value.ToString() & "';"
connetti.Open()
comando = New MySqlCommand(stringa, connetti)
comando.ExecuteNonQuery()
connetti.Close()
Next
End Sub
rispetto a prima non ha una sola riga di comando, ma funziona bene
Grazie a tutti