none
error al sumar columnas datagridview RRS feed

  • Pregunta

  •  Try
                cone.Open()
                Dim sl As String = "select stocks.codigo,stocks.stock_p,stocks.stock_t,stocks.stock_bt,ubicacion.ubicacionp1,ubicacion.ubicacionp2,ubicacion.ubicaciont1,ubicacion.ubicaciont2 from bdbodega.stocks,bdbodega.ubicacion where stocks.codigo like @codigo and stocks.codigo=ubicacion.codigo order by stocks.codigo asc"
                Dim cm As New MySqlCommand(sl, cone)
                Dim da As New MySqlDataAdapter(cm)
                Dim dt As New DataTable
                cm.Parameters.AddWithValue("@codigo", "%" & TextBox1.Text & "%")
                cm.ExecuteNonQuery()
                da.Fill(dt)
                If dt.Rows.Count = 0 Then
                    MsgBox("CODIGO NO EXISTE", MsgBoxStyle.Information, "GESTION CONSULTAS")
                    cone.Dispose()
                    TextBox1.Clear()
                Else
                    dgvstock.DataSource = dt
                    Dim suma As Integer
                    For Each row As DataGridViewRow In dgvstock.Rows
                        Dim principal As Integer = row.Cells(1).Value
                        suma = suma + principal
                    Next
                    Label3.Text = suma
                    cone.Dispose()
                    TextBox1.Clear()
                End If
            Catch ex As Exception
                MsgBox(ex.Message)
                cone.Dispose()
            End Try
    
     Hola, tengo este codigo con el cual lleno un datagridview dese una base de datos a traves de la consulta like, agregue un label y un ciclo For Each para recorrer el datagridview y sumar una columna y mostgrarla en el label, no tengo problemas cuando en el textbox coloco parte del criterio de busqueda, pero si no coloco nada, la consulta like me trae todos los datos de la tabla pero el ciclo For Each no me suma y me lanza un error.
    Agradesco me ayudan a solucionar este problema.
    Saludos.
    martes, 22 de noviembre de 2011 14:15

Respuestas

Todas las respuestas

  • porque no usas

     

    For Each row As DataGridViewRow In dgvstock.Rows

    If row.Cells(1).Value = DBNull.Value Then
    Continue
    End If
     
     Dim principal As Integer = 0
    Int32.TryParse(CStr(row.Cells(1).Value), principal)

     suma = suma + principal

    Next

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    martes, 22 de noviembre de 2011 14:25
  •  If row.Cells(1).Value = DBNull.Value Then
    

    Gracias Leandro por responder, en esta linea de codigo me sale un error:

    El operador '=' no está definido para los tipos 'Object' y 'System.DBNull'.

    Saludos.
    martes, 22 de noviembre de 2011 14:43
  • ups si es que deberia ser

    If row.Cells(1).Value Is DBNull.Value Then

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    martes, 22 de noviembre de 2011 15:23
  • Gracias Leandro, me podria explicar algunas cosas

     

    For Each row As DataGridViewRow In dgvstock.Rows

    If row.Cells(1).Value = DBNull.Value Then
    Continue "esta linea que hace "
    End If
     
     Dim principal As Integer = 0
    Int32.TryParse(CStr(row.Cells(1).Value), principal) "Aca haces una conversion de tipos, se es asi me puedes explicar el codigo"

     suma = suma + principal

    Next

    Como siempre Gracias.
    Saludos desde Chile.

    martes, 22 de noviembre de 2011 17:18
  • Aca haces una conversion de tipos, se es asi me puedes explicar el codigo

    exacto hace una conversion

    basicamente esa linea convierte asignando en la celda a entero pero asigna el resultado a la variable "principal"

    pero sin fallar, sino puede convertir deja el valor por defecto en la variable

     

    alli no lo use pero el TryParse() devuele true/false sino puede convertir

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    martes, 22 de noviembre de 2011 17:28
  • Muchas gracias Leandro.

    Saludos.

    martes, 22 de noviembre de 2011 17:58