ayuda con suma de colomnas impares en datagridview (visual basic 2008)

Iniciado por CRIPLATA, 15 Diciembre 2014, 20:13 PM

0 Miembros y 1 Visitante están viendo este tema.

CRIPLATA

 :D

Eleкtro

#1
Estás asignando la columna de la celda activa, que en los 3 casos es la misma celda, y por lo tanto te devuelve el mismo índice de columna:
Citar
Código (vbnet) [Seleccionar]
       Dim Col1 As Integer = Me.DataGridView1.CurrentCell.ColumnIndex
       Dim Col3 As Integer = Me.DataGridView1.CurrentCell.ColumnIndex
       Dim Col5 As Integer = Me.DataGridView1.CurrentCell.ColumnIndex

¿Que problema encuentras en asignar directamente el valor, de esta manera?:
Código (vbnet) [Seleccionar]
       Dim Col1 As Integer = &H1
       Dim Col3 As Integer = &H3
       Dim Col5 As Integer = &H5


Además de eso, te sugiero NO utilizar la función Val, ya que forma parte de VB6, y esto es VB.Net. Para sacar el máximo beneficio al lenguaje que estás utilizando, en su lugar deberías usar el método Parse/TryParse del DataType correspondiente ( ej: Double.TryParse("") ).

Saludos!








CRIPLATA

hola, al colocar eso de &H1, &H3, &H5

me sale error en esta parte Me.Label5.Text = Total.ToString
        Dim Total2 As Single
        Dim Col5 As Integer = &H5
        For Each row As DataGridViewRow In Me.DataGridView1.Rows
            Total2 += Val(row.Cells(Col5).Value)


me dice que "El índice estaba fuera del intervalo. Debe ser un valor no negativo e inferior al tamaño de la colección. Nombre del parámetro: index"

Eleкtro

#3
Cita de: CRIPLATA en 15 Diciembre 2014, 23:22 PMme dice que "El índice estaba fuera del intervalo. Debe ser un valor no negativo e inferior al tamaño de la colección. Nombre del parámetro: index"

Es porque el índice en .Net está basado en "0", no empieza por "1". por ende no puedes acceder a la columna 5, ya que el rango de columnas son 4 (0, 1, 2, 3, 4).
Disminúyele un número a los índices como hiciste con las filas, y ya está:

Código (vbnet) [Seleccionar]
Dim Col1 As Integer = &H0I
Dim Col3 As Integer = &H2I
Dim Col5 As Integer = &H4I


Te muestro el ejemplo completo:

Código (vbnet) [Seleccionar]
       Const ColIndex1 As Integer = &H0I
       Const ColIndex3 As Integer = &H2I
       Const ColIndex5 As Integer = &H4I

       Dim totalCol1 As Integer, totalCol3 As Integer, totalCol5 As Integer

       For Each row As DataGridViewRow In Me.DataGridView1.Rows

           totalCol1 += CType(row.Cells(ColIndex1).Value, Integer)
           totalCol3 += CType(row.Cells(ColIndex3).Value, Integer)
           totalCol5 += CType(row.Cells(ColIndex5).Value, Integer)

       Next row

       Label4.Text = String.Format("La suma de los valores de la columna 1 es de: {0}", CStr(totalCol1))
       Label5.Text = String.Format("La suma de los valores de la columna 3 es de: {0}", CStr(totalCol3))
       Label6.Text = String.Format("La suma de los valores de la columna 5 es de: {0}", CStr(totalCol5))


Saludos








CRIPLATA

#4
hola, muchas gracias, es que me dejaron un trabajo y fue poca la información que enseño el profesor.... , no soy programador y la profesora me esta matando con este trabajo, ya tengo los otros dos puntos del taller, pero este tema de matrices no enseño bien... y que pena por este otro ejercicio

Pedir al usuario el número de filas y de columnas de una matriz bidimensional y asignar a cada posición el valor resultante de sumar la fila y la columna en la que se encuentra.

Utilizar datagridview para imprimir los datos de la matriz.

con lo que tengo asta el momento ya puedo crear la matriz como yo quiera, pero no se como llenarla de información y realizar la suma que pide, espero pueda ayudarme en eso, y disculpa por gastar un poco de su tiempo.

Código (vbnet) [Seleccionar]
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       Dim x, y, i, j As Integer
       Dim tabla(x, y) As Integer
       x = InputBox("digite el numero de filas")
       y = InputBox("digite el numero de columnas")
       With DataGridView1
           .ColumnCount = y

           .RowCount = x
         
           .Item(i, j).Value = (i + j)




       End With
   End Sub

Eleкtro

Es tarde por aquí, pero por la mañana en cuanto pueda te ayudo mostrándote un código (si no se me adelanta nadie)

saludos








CRIPLATA

gracias, pero era para hoy a las 11:pm colombia... pero con 3 puntos de 4 estoy feliz gracias por la ayuda prestada :D

Yaldabaot

Te están ayudando así que no pidas gustos en tiempos ni horas...


Nunca me contestan -_-