CLR: .Net / Mono / Boo / Otros CLR > VB .NET
Buble Extraño
senzao18:
MsgBox(aux, MsgBoxStyle.OkOnly)
'DataGridView1.Item(j + 1, i).Value = CType(aux, String)
Cuando comentas la segunda lienA TODO BIEN,
Y si no la comentas todo mal?
O solo sale mal el ultimo total?......
--- 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
DataGridView1.Item(j + 1, i).Value = CType(aux, String)<---Aqui metes algo, pero igual esa celda ya tiene un valor antes de...... ????
Si los indices estan bien, entonces ahora pasa a checar los valores que toma cuando haces algo como esto CType(DataGridView1.Item(j + 1, i).Value, Decimal). Y pues con la calculadora ahi sacs cuentas :blink: .
Por que tu error si que esta raro. :(
Lamento no poder ayudar mas. :whistling:
senzao18:
Tambien podrias hacer los calculos sobre el datasource....
Si tienes un origen de datos como un DataTable. Que es lo mas comun....
Podrias hacerlo los calculos ahi y las afectaciones a los DataRow o Registros, se te reflejaran en el control.
Y creo que este ciclo como que esta de mas
--- Código: Text --- While (j < DataGridView1.Columns.Count) 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 j += 1End While
Para que barres las celdas??? Si ya sabes que siempre J sera 4 para que hagas el calculo pues mejor usa los numeros directamente, y solo barre los registros.
--- Código: Text --- Dim aux As Decimal = CType(DataGridView1.Item(5, i).Value, Decimal) - CType((CType(DataGridView1.Item(4, i).Value, Decimal) / 100 * CType(DataGridView1.Item(5, i).Value, Decimal)), Decimal) DataGridView1.Item(5, i).Value = CType(aux, String)
Otra cosa tambien tu formula como que no me deja tranquilo. No encuentro parentesis para indicar el orden en como se hace la operacion. jeje.
Y por ultimo yo usaria un FOR EACH para barrer el control, o el origen de datos.
franc:
Cuando comento esa linea, el msgbox imprime lo que tiene que imprimir ( 90 ) si no comento esa linea, empieza el buble y imprime 90 luego 81,3 etc etc.... hasta llegar a 0.000000005
inexplicable.
Por cierto, el bucle while parece inecesario, pero esque dentro de él hay 2 if`s mas que no he puesto porque no vienen al caso ( que por cierto, esos ifs hacenalgo parecido y si que van ), el problema está en ese if.
senzao18:
Es logico que si comentas esa linea el resultado saldra bien, pues no haces afectacion a las celdas, el problema es que has de estar afectando mal a las celdas y la operacion hace que te regrese ese eresultado, checa los valores con los quew haces la operacion en cada ciclo y ve si algun valor no esta afectandose mal.
Si asi lo deseas pasa el proyecto con el formulario en el cual tienes el error para ejecutarlo y asi poder verlo mas a detalle.
Si ya viene con un caso de prueba mejor jeje.
Navegación
[*] Página Anterior
Ir a la versión completa