Visual Basic - problemas al restar

Life is soft - evento anual de software empresarial
 
Vista:

problemas al restar

Publicado por mayra (10 intervenciones) el 29/01/2007 18:28:36
hola, mi problema es el siguiente: tengo que realizar 5 pagos, c/u de X cantidad, si en el primer pago doy una cantidad mayor a la que me indica, ese pago me lo pone en 0 y lo que sobra me lo resta al ultimo pago, todo eso me lo hace bien, hasta dejar en 0 todos los pagos, pero mi problema es que si doy una cantidad mayor a $1000 no me hace la operacion como es,sino que en el ultimo pago hace la resta, pero no me pone un tope, y los pagos me los deja en negativo, alguien me puede decir porque, y que puedo hacer, gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:problemas al restar

Publicado por denissa (1 intervención) el 29/01/2007 19:28:39
lo que podeis hacer es poner el codigo que utilisais y asi nos haremos una idea de lo que esta mal.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problemas al restar

Publicado por mayra (10 intervenciones) el 29/01/2007 22:32:24
ok aqui les va el codigo para ver si me pueden ayudar, gracias

If gloRS!NPagos = "5" Then 'Para cuando son cinco pagos
If gloRS!Pago1 = 0 And gloRS!Pago2 = 0 And gloRS!Pago3 = 0 And gloRS!Pago4 = 0 And gloRS!Pago5 = 0 Then
MsgBox ("No se pueden agregar Saldos ya que la cuenta ha sido PAGADA")
End If
If gloRS!Pago1 > 0 Then
If Pago < gloRS!Pago1 Then
MsgBox ("El Abono NO debe ser menor a la Quincena a Pagar")
End If
If gloRS!Pago1 <= Pago And gloRS!Pago1 > 0 Then
PSuma = Pago - gloRS!Pago1
gloRS!Pago1 = 0
If gloRS!Pago5 >= PSuma Then
PTotal = gloRS!Pago5 - PSuma
gloRS!Pago5 = PTotal
gloRS!PTotal = gloRS!PTotal - Pago
Else
PTotal = PSuma - gloRS!Pago5
gloRS!Pago5 = 0
If gloRS!Pago4 >= PTotal Then
PResta = gloRS!Pago4 - PTotal
gloRS!Pago4 = PResta
gloRS!PTotal = gloRS!PTotal - Pago
Else
PResta = PTotal - gloRS!Pago4
gloRS!Pago4 = 0
If gloRS!Pago3 >= PResta Then
PSuma = gloRS!Pago3 - PResta
gloRS!Pago3 = PSuma
gloRS!PTotal = gloRS!PTotal - Pago
Else
PSuma = PResta - gloRS!Pago3
gloRS!Pago3 = 0
If gloRS!Pago2 = PSuma Then
gloRS!Pago2 = 0
gloRS!PTotal = gloRS!PTotal - Pago
MsgBox "la cuenta ha sido saldada"
Else
If Pago < gloRS!Pago2 Or Pago > gloRS!Pago2 Then
MsgBox ("la cantidad no debe ser DIFERENTE de " & gloRS!Pago2)
End If
End If
End If
End If
End If
End If
Else
If gloRS!Pago2 > 0 Then
If Pago < gloRS!Pago2 Then
MsgBox ("El Abono NO debe ser menor a la Quincena a Pagar")
End If
If gloRS!Pago2 <= Pago And gloRS!Pago2 > 0 Then
PSuma = Pago - gloRS!Pago2
gloRS!Pago2 = 0
If gloRS!Pago5 >= PSuma Then
PTotal = gloRS!Pago5 - PSuma
gloRS!Pago5 = PTotal
gloRS!PTotal = gloRS!PTotal - Pago
Else
PTotal = PSuma - gloRS!Pago5
gloRS!Pago5 = 0
If gloRS!Pago4 >= PTotal Then
PResta = gloRS!Pago4 - PTotal
gloRS!Pago4 = PResta
gloRS!PTotal = gloRS!PTotal - Pago
Else
PResta = PTotal - gloRS!Pago4
gloRS!Pago4 = 0
If gloRS!Pago3 = PResta Then
gloRS!Pago3 = 0
gloRS!PTotal = gloRS!PTotal - Pago
MsgBox "la cuenta ha sido saldada"
Else
If Pago < gloRS!Pago3 Or Pago > gloRS!Pago3 Then
MsgBox ("la cantidad no debe ser DIFERENTE de " & gloRS!Pago3)
End If
End If
End If
End If
End If
Else
If gloRS!Pago3 > 0 Then
If Pago < gloRS!Pago3 Then
MsgBox ("El Abono NO debe ser menor a la Quincena a Pagar")
End If
If gloRS!Pago3 <= Pago And gloRS!Pago3 > 0 Then
PSuma = Pago - gloRS!Pago3
gloRS!Pago3 = 0
If gloRS!Pago5 >= PSuma Then
PTotal = gloRS!Pago5 - PSuma
gloRS!Pago5 = PTotal
gloRS!PTotal = gloRS!PTotal - Pago
Else
PTotal = PSuma - gloRS!Pago5
gloRS!Pago5 = 0
If gloRS!Pago4 = PTotal Then
gloRS!Pago4 = 0
gloRS!PTotal = gloRS!PTotal - Pago
MsgBox "La cuenta ha sido PAGADA"
Else
If Pago < gloRS!Pago4 Or Pago > gloRS!Pago4 Then
MsgBox ("la cantidad no debe ser DIFERENTE de " & gloRS!Pago4)
End If
End If
End If
End If
Else
If gloRS!Pago4 > 0 Then
If Pago < gloRS!Pago4 Then
MsgBox ("El Abono NO debe ser menor a la Quincena a Pagar")
End If
If gloRS!Pago4 <= Pago Then
PTotal = Pago - gloRS!Pago4
gloRS!Pago4 = 0
If gloRS!Pago5 = PTotal Then
gloRS!Pago5 = 0
gloRS!PTotal = gloRS!PTotal - Pago
MsgBox "la cuenta ha sido saldada"
Else
If Pago < gloRS!Pago5 Or Pago > gloRS!Pago5 Then
MsgBox ("la cantidad no debe ser DIFERENTE de " & gloRS!Pago5)
End If
End If
End If
Else
If gloRS!Pago5 > 0 Then
If Pago < gloRS!Pago5 Then
MsgBox ("El Abono NO debe ser menor a la Quincena a Pagar")
End If
If gloRS!Pago5 = Pago Then
gloRS!Pago5 = 0
gloRS!PTotal = gloRS!PTotal - Pago
MsgBox "la cuenta ha sido saldada"
End If
End If
End If
End If
End If
End If
End If
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problemas al restar

Publicado por AlbertoV (200 intervenciones) el 30/01/2007 00:28:21
No se ve como cargas la variable Pago, y por el problema que mencionas (cuando es mayor que 1000) es posible que estés usando Val( ) para cargarla desde algún TextBox.
Val( ) interpreta SIEMPRE al punto como separador decimal, y a la coma como separador de argumentos y descarta lo que haya después de una coma.
Si en el TextBox dice algo como "1.000,75" y haces: Pago = Val(TextBox.Text) Pago quedará igual a 1 pues los (para Val) decimales son ceros, y al 75 lo ignorará por considerarlo segundo argumento, y Val solo toma un argumento. Lo irritante es que no provoca error.
Espero que ande por ahí el problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar