Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/01/2009, 10:53
Danielc
 
Fecha de Ingreso: diciembre-2008
Mensajes: 4
Antigüedad: 15 años, 5 meses
Puntos: 0
Problema al sumar con variables..

Hola..
Espero que esta vez tenga mas suerte...
A ver, el problema que tengo es que al sumar un valor a una variable de tipo integer, a veces no lo suma..
En las pruebas que estoy haciendo sumo de a uno...
Uso visual basic.net 2008 y tengo el siguiente código:

Private Sub UnitList_RowsAdded(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowsAddedEventArg s) Handles UnitList.RowsAdded
Validacion()
If errores(0) = "" Then
ValidacionT.Text = "Tu lista cumple con todas las reglas de validación"
Else
ValidacionT.Text = "Tu lista tiene " & errores.Length & " errores. Haz click acá para verlos"
End If
MsgBox("Número de básicas: " & Basicas & " Mínimo de básicas " & minbasicas)
If Basicas < minbasicas Then
MsgBox(Basicas & "(Básicas) es menor que " & minbasicas & "(Mínimo de básicas)" & ". Se ha sumado " & unit(comparacion(UnitList.Rows(e.RowIndex), RosterHelper)).Basicas & " al contador de básicas")
Else
MsgBox(minbasicas & "(Mínimo de básicas) es menor que " & Basicas & "(Básicas) ")
End If
Comandantes += unit(comparacion(UnitList.Rows(e.RowIndex), RosterHelper)).Comandantes
Heroes += unit(comparacion(UnitList.Rows(e.RowIndex), RosterHelper)).Heroes
Basicas += unit(comparacion(UnitList.Rows(e.RowIndex), RosterHelper)).Basicas
Especiales += unit(comparacion(UnitList.Rows(e.RowIndex), RosterHelper)).Especiales
Singulares += unit(comparacion(UnitList.Rows(e.RowIndex), RosterHelper)).Singulares
'ReDim Preserve value(9, UnitList.Rows.Count - 1)
End Sub

----
Estoy haciendo las pruebas con la variable basicas.. Los Msgbox son para eso..
Lo declaro de la siguiente manera:
Dim Comandantes As Integer = 0
Dim Heroes As Integer = 0
Dim Basicas As Integer = 0
Dim Especiales As Integer = 0
Dim Singulares As Integer = 0
Dim maxcoman As Integer = 0
Dim maxheroes As Integer = 0
Dim minbasicas As Integer = 0
Dim maxespeciales As Integer = 0
Dim maxsingulares As Integer = 0

----
Y en el evento de UserDeletingRow, tengo el otro código que resta:

Private Sub UnitList_UserDeletingRow(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowCancelEventArg s) Handles UnitList.UserDeletingRow


Comandantes -= unit(comparacion(e.Row, RosterHelper)).Comandantes
Heroes -= unit(comparacion(e.Row, RosterHelper)).Heroes
Basicas -= unit(comparacion(e.Row, RosterHelper)).Basicas
Especiales -= unit(comparacion(e.Row, RosterHelper)).Especiales
Singulares -= unit(comparacion(e.Row, RosterHelper)).Singulares
If Basicas < minbasicas Then
MsgBox(Basicas & "(Básicas) es menor que " & minbasicas & "(Mínimo de básicas)")
Else
MsgBox(minbasicas & "(Mínimo de básicas) es menor que " & Basicas & "(Básicas) ")
End If
End Sub
-------
Mediante el programa asigno los valores a las variables minbasicas, maxcoman, etc, que son para la "validacion"...
El problema exacto es el siguiente:
Inicialmente la variable basicas tiene un valor de 0. Se supone que cuando agrega una fila, se suma el valor de la propiedad basicas de la fila... Entonces, agrego la fila, y raramente, no suma ningun valor, cuando deberia sumar 1 a básicas... Pero por ejemplo, si yo agrego nuevamente otra fila, si que suma el valor, cuando estoy agregando filas con propiedades totalmente identicas, con valores totalmente identicos...
El mismo problema ocurre en el caso contrario, solo que cuando uno quita un valor a la variable basicas, el problema ocurre con la última fila...

No se que podria estar pasando, intenté verificando el codigo, volviendo a generar todo, limpiando basura, pero nada..
Por favor, algun alma caricativa que me ayude...

Saludos