Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET] [Risolto] Datagridview e Mysql con funzione Group By
Forum - C# / VB.NET - [VB.NET] [Risolto] Datagridview e Mysql con funzione Group By

Avatar
aragorn76 (Normal User)
Newbie


Messaggi: 17
Iscritto: 10/04/2014

Segnala al moderatore
Postato alle 17:38
Mercoledì, 10/06/2020
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:

Codice sorgente - presumibilmente C# / VB.NET

  1. connetti.Open()
  2.                 comando.CommandText = "SELECT * FROM soggetti GROUP By nome, cognome  ORDER BY cognome ASC ;"  
  3.                 soggetti.SelectCommand = comando
  4.                 soggetti.Fill(soggettidt)   ' riempio il datatable
  5.                 ss.DataSource = soggettidt
  6.                 DataGridView2.DataSource = ss  ' inseriamo i valori
  7.                 DataGridView2.Columns("cognome").ReadOnly = True   'non modificabile
  8.                 DataGridView2.Columns("nome").ReadOnly = True        'non modificabile
  9.                 DataGridView2.Columns("id").Visible = False 'nasconde id
  10.                 connetti.Close()   ' connection close...
  11.                 DataGridView2.Columns("cognome").HeaderText = "Cognome"
  12.                 DataGridView2.Columns("nome").HeaderText = "Nome"
  13.                 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

Codice sorgente - presumibilmente C# / VB.NET

  1. Dim ct As New MySqlCommandBuilder(soggetti)
  2.   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 il 12/06/2020 alle 18:56
PM Quote
Avatar
aragorn76 (Normal User)
Newbie


Messaggi: 17
Iscritto: 10/04/2014

Segnala al moderatore
Postato alle 10:55
Giovedì, 11/06/2020
dimenticato di indicare le variabili

Codice sorgente - presumibilmente VB.NET

  1. Dim soggetti As New MySqlDataAdapter
  2.  Dim soggettidt As New DataTable
  3.  Private WithEvents ss As New BindingSource



:)

PM Quote
Avatar
aragorn76 (Normal User)
Newbie


Messaggi: 17
Iscritto: 10/04/2014

Segnala al moderatore
Postato alle 18:55
Venerdì, 12/06/2020
Me la canto e me la suono :D:D:D:D:D

Risolto cosi:

Codice sorgente - presumibilmente VB.NET

  1. Private WithEvents ss As New BindingSource
  2. Dim soggetti As New MySqlDataAdapter
  3. Dim soggettidt As New DataTable
  4.          
  5. Private Sub secondo()
  6. connetti.Open()
  7. comando.CommandText = "SELECT * FROM soggetti GROUP By nome, cognome  ORDER BY cognome ASC ;"  
  8. soggetti.SelectCommand = comando
  9. soggetti.Fill(soggettidt)  
  10. ss.DataSource = soggettidt
  11. DataGridView2.DataSource = ss  ' inseriamo i valori
  12. DataGridView2.Columns("cognome").ReadOnly = True   'non modificabile
  13. DataGridView2.Columns("nome").ReadOnly = True        'non modificabile
  14. DataGridView2.Columns("id").Visible = False 'nasconde id
  15. connetti.Close()   ' connection close...
  16. end sub      
  17.  
  18. Private Sub ss_CurrentItemChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ss.CurrentItemChanged
  19.  Dim row As DataGridViewRow
  20.         For Each row In DataGridView2.Rows
  21.                 stringa = "UPDATE soggetti SET note = '" & row.Cells("note").Value.ToString() & "' WHERE  cognome = '" & row.Cells("cognome").Value.ToString() & "'     AND nome = '" & row.Cells("nome").Value.ToString() & "';"
  22.                 connetti.Open()
  23.                 comando = New MySqlCommand(stringa, connetti)
  24.                 comando.ExecuteNonQuery()
  25.                 connetti.Close()
  26.         Next  
  27. End Sub



A presto :)

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 9:54
Sabato, 13/06/2020


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à.
PM Quote
Avatar
aragorn76 (Normal User)
Newbie


Messaggi: 17
Iscritto: 10/04/2014

Segnala al moderatore
Postato alle 9:28
Lunedì, 15/06/2020
Testo quotato

Postato originariamente da nessuno:

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

https://www.iprogrammatori.it/forum-programmazione/vbnet/da ...



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:

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 9:41
Lunedì, 15/06/2020
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à.
PM Quote
Avatar
aragorn76 (Normal User)
Newbie


Messaggi: 17
Iscritto: 10/04/2014

Segnala al moderatore
Postato alle 10:35
Lunedì, 15/06/2020
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:

Codice sorgente - presumibilmente VB.NET

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



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

PM Quote