+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 10 su 10

Problema aggiornamento Listbox dopo salvataggio nuovo record

  1. #1
    Ginmile non  in linea Scolaretto
    Ho questo problema. All'avvio del programma se apro il listbox mi carica tutti gli elementi di una colonna di un dbAccess correttamente tramite datareader. Il problema sorge quando salvo un nuovo record sul db, infatti se riapro il listbox anzich ricaricarmi tutti gli elementi della colonna me ne fa vedere solo il primo della colonna di quel db

  2. #2
    Difficile darti una risposta senza altre informazioni.
    ℹ️ Leggi di pi su AntonioG ...

  3. #3
    L'avatar di gibra
    gibra non  in linea Very Important Person

  4. #4
    Ginmile non  in linea Scolaretto
    Non riesco a capire dov' il problema, visto che ad ogni click sull'apertura del listbox eseguo una rilettura dei campi del db. Ho provato anche a cancellare tutti gli elementi con u Clear prima di leggere ma niente stesso risultato.

  5. #5
    Ripeto pi chiaramente ... se non fai il discorso sulla base del codice che utilizzi, il thread non ha senso.
    ℹ️ Leggi di pi su AntonioG ...

  6. #6
    L'avatar di gibra
    gibra non  in linea Very Important Person

  7. #7
    Ginmile non  in linea Scolaretto
    Al caricamento del programma se clicco su Listaricette di un toolstrip, visualizzo il FormListaRicette la cui formload questa:
     Private Sub FormListaRicette_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Using connection As New OleDbConnection(strconn2)
                Dim command As New OleDbCommand(sqlRicette, connection)
                Dim adapter As OleDbDataAdapter = New OleDbDataAdapter(sqlRicette, connection)
                Try
                    connection.Open()
                    Dim nomericetta As DataSet = New DataSet
                    adapter.Fill(Nomericetta, "Gelati_A_base_latte")
                    ListBox1.DataSource = nomericetta.Tables("Gelati_A_base_latte")
                    ListBox1.DisplayMember = "NomeRicetta"
                    connection.Close()
                Catch ex As Exception
                    MsgBox(ex.Message)
                End Try
            End Using
        End Sub
    
    Mi popola tutta la listbox della colonna Ricette del db. Se clicco su di un elemento della Listbox eseguo questo codice:
     Private Sub ListBox1_Click(sender As Object, e As EventArgs) Handles ListBox1.Click
            cn2.Open()
            sqlRicette = "Select * FROM Gelati_a_base_latte WHERE NomeRicetta='" & ListBox1.SelectedItem("Nomericetta") & "'"
            cmd2 = New OleDbCommand(sqlRicette, cn2)
            dr2 = cmd2.ExecuteReader
            dr2.Read()
            Form1.ComboBox1.SelectedValue = dr2("Ingr1")
            Form1.ComboBox2.SelectedValue = dr2("Ingr2")
            Form1.ComboBox3.SelectedValue = dr2("Ingr3")
            Form1.ComboBox4.SelectedValue = dr2("Ingr4")
            Form1.ComboBox5.SelectedValue = dr2("Ingr5")
            Form1.ComboBox6.SelectedValue = dr2("Ingr6")
            Form1.ComboBox7.SelectedValue = dr2("Ingr7")
            Form1.ComboBox8.SelectedValue = dr2("Ingr8")
            Form1.GrammiTextBox1.Text = dr2("Grammi1")
            Form1.GrammiTextBox2.Text = dr2("Grammi2")
            Form1.GrammiTextBox3.Text = dr2("Grammi3")
            Form1.GrammiTextBox4.Text = dr2("Grammi4")
            Form1.GrammiTextBox5.Text = dr2("Grammi5")
            Form1.GrammiTextBox6.Text = dr2("Grammi6")
            Form1.GrammiTextBox7.Text = dr2("Grammi7")
            Form1.GrammiTextBox8.Text = dr2("Grammi8")
            Form1.UltimaRicettaCaricata.Text = "Ultima ricetta caricata: " & ListBox1.SelectedItem("NomeRicetta")
            Form1.UltimaRicettaCaricata.Visible = True
            dr2.Close()
            cn2.Close()
            Me.Visible = False
        End Sub
    
    Il problema nasce quando vado ad effettuare un inserimento di un nuovo record nel db con questo codice:
     'Salvataggio o aggiornamento ricette
        Sub SalvaRicetteAggiorna()
            InsertZeroGrammi()
            Dim query As Integer
            Dim str As String = FormSalvaRicetta.TextBoxSalvaRicette.Text
            sqlRicette = "SELECT COUNT(*) AS numRows FROM Gelati_a_base_latte WHERE NomeRicetta= '" & str & "'"
            cn2.Open()
            cmd2 = New OleDbCommand(sqlRicette, cn2)
            query = cmd2.ExecuteScalar
            cn2.Close()
            If query = 0 Then
                MsgBox("Non ci sono record simili")
                Dim mycommand As New System.Data.OleDb.OleDbCommand
                mycommand.CommandType = System.Data.CommandType.Text
                mycommand.CommandText = "INSERT INTO Gelati_a_base_latte (NomeRicetta,ingr1,ingr2,ingr3,ingr4,ingr5,ingr6,ingr7,ingr8,grammi1,grammi2,grammi3,grammi4,grammi5,grammi6,grammi7,grammi8) VALUES ('" & str & "'" & "," & ComboBox1.SelectedValue.ToString & "," & ComboBox2.SelectedValue.ToString & "," & ComboBox3.SelectedValue.ToString & "," & ComboBox4.SelectedValue.ToString & "," & ComboBox5.SelectedValue.ToString & "," & ComboBox6.SelectedValue.ToString & "," & ComboBox7.SelectedValue.ToString & "," & ComboBox8.SelectedValue.ToString & "," & GrammiTextBox1.Text & "," & GrammiTextBox2.Text & "," & GrammiTextBox3.Text & "," & GrammiTextBox4.Text & "," & GrammiTextBox5.Text & "," & GrammiTextBox6.Text & "," & GrammiTextBox7.Text & "," & GrammiTextBox8.Text & ")"
                mycommand.Connection = cn2
                Try
                    cn2.Open()
                    mycommand.ExecuteNonQuery()
                    cn2.Close()
                Catch ex As Exception
                    MsgBox(ex.Message)
                End Try
    
    Il record lo salva ma se clicco sul toolstrip per visualizzare il Listbox con tutte le ricette mi si presenta la Listbox con un solo Item con scritto "System.Data.DataRowView

  8. #8
    L'avatar di gibra
    gibra non  in linea Very Important Person
    Ma non hai nessun codice che ricarica il listbox dopo la INSERT in SalvaRicetteAggiorna().

    Ti suggerisco di spostare il codice che popola il listbox in una Sub o Function che richiamerai sia al Load del form che dopo la INSERT.

    Comunque dubito fortemente che la tua query funzioni, dato che non vedo valori formattati correttamente.
    ℹ️ Leggi di pi su gibra ...

  9. #9
    Ginmile non  in linea Scolaretto
    La query funziona perfettamente perch i nuovi record nel db li salva regolarmente. Provo a fare come dici tu

  10. #10
    Ginmile non  in linea Scolaretto
    Ho risolto. Praticamente usavo la stessa variabile stringa sqlricette sia quando facevo il popolamento della Listbox, che quando facevo il salvataggio in cui eseguivo la query SELECT COUNT.
    Mamma mia, quanto sono stato ingenuo. Comunque vi ringrazio per l'aiuto

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Risposte: 14
    Ultimo Post: 19-12-2017, 08:14
  2. Chiudere salvataggio record dopo query aggiornamento
    Da CESABAS nel forum Microsoft Access
    Risposte: 0
    Ultimo Post: 11-08-2014, 13:46
  3. Risolto: [VS2010] Aggiornamento combo dopo Update record
    Da dolcissimo nel forum Visual Basic .Net
    Risposte: 13
    Ultimo Post: 29-11-2011, 08:49
  4. Salvataggio nuovo record
    Da @Salvo nel forum Visual Basic .Net
    Risposte: 0
    Ultimo Post: 13-04-2011, 19:09
  5. [Access 2007] riordinare record dopo aggiornamento dati
    Da Lion nel forum Microsoft Access
    Risposte: 8
    Ultimo Post: 31-03-2010, 15:50