Oppure

Loading
10/06/20 15:38
aragorn76
Salve a tutti,
ho un piccolo problema con una parte di codice che sembra semplice ma non capisco dove sbaglio.
Ho una datagridview che prende i valori da una tabella Mysql in questo modo:

  connetti.Open()
                comando.CommandText = "SELECT * FROM soggetti GROUP By nome, cognome  ORDER BY cognome ASC ;"   
                soggetti.SelectCommand = comando
                soggetti.Fill(soggettidt)   ' riempio il datatable
                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...
                DataGridView2.Columns("cognome").HeaderText = "Cognome"
                DataGridView2.Columns("nome").HeaderText = "Nome"
                DataGridView2.Columns("note").HeaderText = "Note: "


come ben vedete ho 3 campi nella mia tabella (nome, cognome e note) ma il datagridview ha solo il campo "note" modificabile.. io vorrei che modificando la cella note, si aggiorni in automatico il DB.. ho inserito il comando

  Dim ct As New MySqlCommandBuilder(soggetti)
  soggetti.Update(soggettidt)


ma non funziona, credo perche ho selezionato i valori e messi della datagridview con GROUP BY perche non voglio nomi e cognomi duplicati.. ma vorrei che se dovessi modificare il campo "note" a Giuseppe Bianchi ad esempio.. che tale valore venga inserito in tutti i campi "Note" di ogni record della tabella con nome Giuseppe Bianchi... ma continuo ad avere errori e non mi aggiorna il database.. come posso risolvere?
Ultima modifica effettuata da aragorn76 12/06/20 16:56
aaa
11/06/20 8:55
aragorn76
dimenticato di indicare le variabili

 Dim soggetti As New MySqlDataAdapter
 Dim soggettidt As New DataTable
 Private WithEvents ss As New BindingSource


:)
aaa
12/06/20 16:55
aragorn76
Me la canto e me la suono :D:D:D:D:D

Risolto cosi:

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      
  
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


A presto :)
aaa
13/06/20 7:54
nessuno
Veramente ... "te la suonano" ... qui

iprogrammatori.it/forum-programmazione/vbnet/…
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
15/06/20 7:28
aragorn76
Postato originariamente da nessuno:

Veramente ... "te la suonano" ... qui

iprogrammatori.it/forum-programmazione/vbnet/…


Bravo.. ti sei accorto che me la sono suonata 2 volte, dato che il link che hai postato sono sempre io che ho messo la soluzione su 2 forum!! bastava che ti accorgevi che a postare sono sempre io :rofl::rofl::rofl::rofl::rofl::rofl::rofl:

:pat:
aaa
15/06/20 7:41
nessuno
Direi bravo all'utente asql che ti ha spiegato e messo sulla buona strada ...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
15/06/20 8:35
aragorn76
no veramente li mi sono un po confuso se devo dirla tutta.. perchè io cercavo una stringa che aggiornava un dataset e mi parlava del comando update, che invece gia conosco.. e poi se leggi vi era un cognome nuovo da mettere al posto di quello vecchio.. che non era quello che volevo io..

Alla fine ho messo soluzione usando la vecchia maniera dell'update ma cercavo qualcosa di piu rapido con una riga se esisteva, invece del ciclo che ho messo..... a questo potevo arrivarci senza fare post.. quindi me la sono suonata :)

Ma se qualcuno trova una soluzione tipo:

Private Sub tt_CurrentItemChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles tt.CurrentItemChanged
            numeri.Update(numeridt)
End Sub


tanto di cappello.... o fammi sapere quale metodo useresti tu.
aaa