CLR: .Net / Mono / Boo / Otros CLR > VB .NET

 Buble Extraño

(1/2) > >>

franc:
Hola, tengo un datagrid con 6 columnas y las filas se rellenan segun la elección de un combobox. Mi problema es que cuando recorro el contenido del datagrid mediante un doble bucle:


--- Código: Text ---             While (i < DataGridView1.Rows.Count)                Dim j As Integer = 0                While (j < DataGridView1.Columns.Count)                              ( codigo ...... )                      j += 1                End While                i += 1            End While  

distingo en que columna estamos mediante el siguiente if, veo que estamos en la culmna 4 y con ello quiero hacer unos calculos ( concretamente esta columna es la de "descuento" y lo que hago es calcular el TOTAL ( columna siguiente ) sobre una cantidad ( columna anterior ) y sobre el decuento ( columna actual ) )

Bueno en definitiva, cuando hago este calculo y asigno a la siguiente columna ( el total ) el valor actualizado con el descuento... resulta que hay un "bucle" muy raro que no se porque lo hace.



--- Código: Text --- If j = 4 Then Dim aux As Decimal = CType(DataGridView1.Item(j + 1, i).Value, Decimal) - CType((CType(DataGridView1.Item(j, i).Value, Decimal) / 100 * CType(DataGridView1.Item(j + 1, i).Value, Decimal)), Decimal) MsgBox(aux, MsgBoxStyle.OkOnly) DataGridView1.Item(j + 1, i).Value = CType(aux, String) End If  
Suponiendo que las cantidades que coge el datagrid fueran:

precio unitario···········descuento············total
______100__________10_____________0______

El if anterior hace que donde pone un 0 deberia poner un 90 ( por el descuento )
y lo que realmente pone es 0.0000000000000005

Imprimiendo las cantidades con el MsgBox que veis en el codigo anterior, veo que primero muestra 90,0 ( valor correcto ) luego 81,0 luego 72,900 luego 65,6100 etc... hasta llegar a 0.00000000000000005


he intentado hacer un exit sub pero realmente el programa no pasa de la asignacion... sino que este buble se hace en la misma asignacion.


¿ Alguien sabe que está pasando aquí ?

Gracias

senzao18:
Segun yo, tu codigo no tiene problemas los bucles estan bien, creo que tienes que hacer un debug para ver el contenido no los index.  Asi sabras si no te esta tomando alguna linea de mas.

franc:
Hola, gracias por tu respuesta.


Ya sabia que no tenia problemas en los bucles, de hecho el problema está en la ultima asginacion


--- Código: Text --- MsgBox(aux, MsgBoxStyle.OkOnly)DataGridView1.Item(j + 1, i).Value = CType(aux, String)  
que no para de ir de una linea a otra ( de la asignacion al msgbox ) es algo muy estraño y no entiendo porqué

De hecho, si comento la linea de la asignación


--- Código: Text --- MsgBox(aux, MsgBoxStyle.OkOnly)'DataGridView1.Item(j + 1, i).Value = CType(aux, String)  
el MsgBox imprime 90 ( lo correcto ) y no se hace el bucle "extraño" osea que el problema está en esa linea y no se en qué.

senzao18:
Pues yo insisto enque hagas debug y veas los indices jeej :D. :rolleyes:

franc:
los indices están bien, no avanzan a pesar del "blucle no deseado... y a a par extraño" :(

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa