none
no recorre los registros del reader solo actualiza el primero que encuentra RRS feed

  • Pregunta

  • hola buenas tardes, intento recorrer un datareader para localizar los campos que cumplen cierta condición y al encontrarlo cambiar y actualizar el dato que contienen. tengo este código lo hace bien para el primer registro que encuentra pero no para los demás. ayuda por favor

    Try
                conn.Open()
                Dim sql As String
                sql = "select codart,costoart,p1art from articulos where divart='" & ComboBox1.Text & "'"
                comando = New MySqlCommand(sql, conn)
                reader = comando.ExecuteReader
                While reader.Read()
                    Dim codigo, costo, precio, costo1, precio1 As String
                codigo = reader.GetString(0).ToString
                costo = reader.GetString(1).ToString
                precio = reader.GetString(2).ToString
                costo1 = costo + (costo * Val("0." & TextBox11.Text))
                precio1 = precio + (precio * Val("0." & TextBox11.Text))
                reader.Close()
                Dim sql1 As String
                sql1 = "update articulos set costoart='" & costo1 & "', p1art='" & precio1 & "'where codart='" & codigo & "'"
                comando = New MySqlCommand(sql1, conn)
                reader = comando.ExecuteReader
                MessageBox.Show("REGISTROS CAMBIADO...", "SISCONVILSA")
                End While
                conn.Close()
            Catch ex As MySqlException
                MessageBox.Show(ex.Message)
            Finally
                conn.Dispose()
            End Try

    jueves, 21 de septiembre de 2017 20:28

Respuestas

  •    

    Try
                conn.Open()
                Dim sql As String
                sql = "select codart,costoart,p1art from articulos where divart='" & ComboBox1.Text & "'"
                comando = New MySqlCommand(sql, conn)
                reader = comando.ExecuteReader

    Dim sql1 As String

                While reader.Read()
                 
            

    sql1 += "update articulos set costoart='" &  reader.GetString(1).ToString * ( (Val("0." & TextBox11.Text) /100 )+1) & "', p1art='" &  reader.GetString(2).ToString * ( (Val("0." & TextBox11.Text) /100 )+1)& "'where codart='" & reader.GetString(0).ToString & "';"

                End While

      reader.Close()

     comando = New MySqlCommand(sql1, conn)
                reader = comando.ExecuteReader
                MessageBox.Show("REGISTROS CAMBIADO...", "SISCONVILSA")
                End While
                conn.Close()
            Catch ex As MySqlException
                MessageBox.Show(ex.Message)
            Finally
                conn.Dispose()
            End Try

    Asi quedaria menos codigo

    No soy un vendido pero algo vendo Si soy divertido pero esto es serio Vivo riendo pero eso no quiere decir que nada me importa Ya pase las malas, me tocan las buenas, por eso empece a disfrutar ♪♫




    jueves, 21 de septiembre de 2017 20:36

Todas las respuestas

  •    

    Try
                conn.Open()
                Dim sql As String
                sql = "select codart,costoart,p1art from articulos where divart='" & ComboBox1.Text & "'"
                comando = New MySqlCommand(sql, conn)
                reader = comando.ExecuteReader

    Dim sql1 As String

                While reader.Read()
                 
            

    sql1 += "update articulos set costoart='" &  reader.GetString(1).ToString * ( (Val("0." & TextBox11.Text) /100 )+1) & "', p1art='" &  reader.GetString(2).ToString * ( (Val("0." & TextBox11.Text) /100 )+1)& "'where codart='" & reader.GetString(0).ToString & "';"

                End While

      reader.Close()

     comando = New MySqlCommand(sql1, conn)
                reader = comando.ExecuteReader
                MessageBox.Show("REGISTROS CAMBIADO...", "SISCONVILSA")
                End While
                conn.Close()
            Catch ex As MySqlException
                MessageBox.Show(ex.Message)
            Finally
                conn.Dispose()
            End Try

    Asi quedaria menos codigo

    No soy un vendido pero algo vendo Si soy divertido pero esto es serio Vivo riendo pero eso no quiere decir que nada me importa Ya pase las malas, me tocan las buenas, por eso empece a disfrutar ♪♫




    jueves, 21 de septiembre de 2017 20:36
  • buenas tardes AUTIS

    me sirvió mucho tu código, ya quedo solucionado. solo le cambien las líneas de los cálculos en el update y le agregue los cálculos unas líneas antes. y listo.

    saludos

    jueves, 21 de septiembre de 2017 23:18