Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Me suma MAL los decimales!

Estas en el tema de Me suma MAL los decimales! en el foro de Visual Basic clásico en Foros del Web. Buenas noches amigos de Foros Del Web, tengo un problema con la suma de textbox con decimales, ya he revisado el foro pero las otras ...
  #1 (permalink)  
Antiguo 02/01/2008, 20:06
Avatar de ElPadrino  
Fecha de Ingreso: noviembre-2007
Mensajes: 3
Antigüedad: 16 años, 6 meses
Puntos: 0
Me suma MAL los decimales!

Buenas noches amigos de Foros Del Web, tengo un problema con la suma de textbox con decimales, ya he revisado el foro pero las otras soluciones aportadas no me han sido de ayuda, espero puedan ayudarme aqui.

el caso es que estoy haciendo un pequeño sistema de facturacion y al momento de sumar los textbox (esta sumando mal) por EJEMPLO:

en la venta de 3 articulos 1,5 + 1,6 + 1,7 = 4,7 es el resultado
PERO VISUAL BASIC ME MUESTRA EN PANTALLA QUE ES RESULTADO ES "3"
por lo que obviamente no me esta sumando los decimales.

los codigos que he usado son estos:

Cita:
'subtotal
Text145.Text = Val(Text18.Text) + Val(Text27.Text) + Val(Text36.Text) + Val(Text45.Text) + Val(Text54.Text) + Val(Text63.Text) + Val(Text72.Text) + Val(Text81.Text) + Val(Text90.Text) + Val(Text99.Text) + Val(Text108.Text) + Val(Text117.Text) + Val(Text126.Text) + Val(Text135.Text) + a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + a11 + a12 + a13 + a14
'IVA
Text146.Text = Val(Text17.Text) + Val(Text26.Text) + Val(Text35.Text) + Val(Text44.Text) + Val(Text53.Text) + Val(Text62.Text) + Val(Text71.Text) + Val(Text80.Text) + Val(Text89.Text) + Val(Text98.Text) + Val(Text107.Text) + Val(Text116.Text) + Val(Text125.Text) + Val(Text134.Text)
'TOTAL
Text147.Text = Val(Text145.Text) + Val(Text146.Text)
Cita:
Dim caja145 As Double
Dim caja146 As Double
Dim caja147 As Double

caja145 = CDbl (Val(Text18.Text) + Val(Text27.Text) + Val(Text36.Text) + Val(Text45.Text) + Val(Text54.Text) + Val(Text63.Text) + Val(Text72.Text) + Val(Text81.Text) + Val(Text90.Text) + Val(Text99.Text) + Val(Text108.Text) + Val(Text117.Text) + Val(Text126.Text) + Val(Text135.Text) + a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + a11 + a12 + a13 + a14 )
'IVA
caja146 = CDbl (Val(Text17.Text) + Val(Text26.Text) + Val(Text35.Text) + Val(Text44.Text) + Val(Text53.Text) + Val(Text62.Text) + Val(Text71.Text) + Val(Text80.Text) + Val(Text89.Text) + Val(Text98.Text) + Val(Text107.Text) + Val(Text116.Text) + Val(Text125.Text) + Val(Text134.Text))
'TOTAL
caja147 = CDbl (Val(Text145.Text) + CDbl (Val(Text146.Text))

Text145.Text = caja145

Text146.Text = caja146

Text147.Text = caja147
Ninguno me a solucionado el problema, espero puedan ayudarme.

Última edición por ElPadrino; 02/01/2008 a las 20:10 Razón: error de escitura
  #2 (permalink)  
Antiguo 02/01/2008, 20:43
 
Fecha de Ingreso: febrero-2002
Ubicación: Chile
Mensajes: 1.573
Antigüedad: 22 años, 2 meses
Puntos: 2
Re: Me suma MAL los decimales!

Dim a As Double
Dim b As Double

a = Text1.Text
b = Text2.Text
Text3.Text = a + b
  #3 (permalink)  
Antiguo 03/01/2008, 02:15
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 20 años, 6 meses
Puntos: 19
Re: Me suma MAL los decimales!

Cita:
Iniciado por NRLABS Ver Mensaje
Dim a As Double
Dim b As Double

a = Text1.Text
b = Text2.Text
Text3.Text = a + b
Dim a As Double
Dim b As Double

a = cdbl(Text1.Text)
b = cdbl(Text2.Text)
Text3.Text = a + b
  #4 (permalink)  
Antiguo 03/01/2008, 05:59
Avatar de ElPadrino  
Fecha de Ingreso: noviembre-2007
Mensajes: 3
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Me suma MAL los decimales!

Error "13" en linea de tiempo

no coinciden los tipos


este es el codigo

Cita:
dim iva1 as double
dim iva2 as double
dim iva3 as double
dim iva4 as double
dim iva5 as double
dim iva6 as double
dim iva7 as double
dim iva8 as double
dim iva9 as double
dim iva10 as double
dim iva11 as double
dim iva12 as double
dim iva13 as double
dim iva14 as double

dim subt1 as double
dim subt2 as double
dim subt3 as double
dim subt4 as double
dim subt5 as double
dim subt6 as double
dim subt7 as double
dim subt8 as double
dim subt9 as double
dim subt10 as double
dim subt11 as double
dim subt12 as double
dim subt13 as double
dim subt14 as double

dim subtotal as double
dim impuestos as double
dim total as double

iva1 = cdbl(text17.text)
iva2 = cdbl(text26.text)
iva3 = cdbl(text35.text)
iva4 = cdbl(text44.text)
iva5 = cdbl(text53.text)
iva6 = cdbl(text62.text)
iva7 = cdbl(text71.text)
iva8 = cdbl(text80.text)
iva9 = cdbl(text89.text)
iva10 = cdbl(text98.text)
iva11 = cdbl(text107.text)
iva12 = cdbl(text116.text)
iva13 = cdbl(text125.text)
iva14 = cdbl(text134.text)

subt1 = cdbl(text18.text)
subt2 = cdbl(text27.text)
subt3 = cdbl(text36.text)
subt4 = cdbl(text45.text)
subt5 = cdbl(text54.text)
subt6 = cdbl(text63.text)
subt7 = cdbl(text72.text)
subt8 = cdbl(text81.text)
subt9 = cdbl(text90.text)
subt10 = cdbl(text99.text)
subt11 = cdbl(text108.text)
subt12 = cdbl(text117.text)
subt13 = cdbl(text126.text)
subt14 = cdbl(text135.text)

subtotal = cdbl(text145.text)
impuestos = cdbl(text146.text)
total = cdbl(text147.text)

text145.text = iva1 + iva2 + iva3 + iva4 + iva5 + iva6 + iva7 + iva8 + iva9 + iva10 + iva11 + iva12 + iva13 + iva14

text146.text = subt1 + subt2 + subt3 + subt4 + subt5 + subt6 + subt7 + subt8 + subt9 + subt10 + subt11 + subt12 + subt13 + subt14

text147.text = subtotal + impuestos
  #5 (permalink)  
Antiguo 03/01/2008, 06:26
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 20 años, 6 meses
Puntos: 19
Re: Me suma MAL los decimales!

Cita:
Iniciado por ElPadrino Ver Mensaje
Error "13" en linea de tiempo

no coinciden los tipos


este es el codigo
ACLARACIONES:

Cuando vas a tomar el valor de un textbox siempre tenes que tranformar al tipo de variable a la que vas a asignar...
No es necesario el .text...

EJ:

A = cdbl(Text1)
Vos pones A = cdbl(Tex1.Text)

----------------------------------------------------------------------------------

Muy bien, si vas a manejar MONEDA, la variable es CURRENCY, y al asignar el valor a la variable del text seria ccur(text1)

----------------------------------------------------------------------------------

Es OBVIO que si vas a manejar monedas, en tus textbox solo tengas NUMEROS Y EL SIMBOLO DECIMAL CONFIGURADO EN LA CONFIGURACION REGIONAL (te maree?)

Inicio -----> Configuracion ------> Panel de control -----> Configuracion regional

Click en el boton "Personalizar"
y ahi dice "SIMBOLO DECIMAL", si es una "," en tus textbox tenes que trabajar con ",", si es un "." en tus textbox tenes que trabajar con "."

Si vos en un textbox tenes el valor "HOLA" y queres sumarlo, obvio que te tira error de que no coinciden los tipos...

(tambien tira error si dejas vacio)

------------------------------------------------------------------------------------

Eso de crear 10000 textbox, y 10000 variables con el nombre
TextBox1
TextBox2
TextBox3
..........
TextBoxN

Es una boludes....

Para algo existen las matrices de controles y de variables...

Cuando copias y pegas un TextBox te pregunta "Desea crear una matriz de controles?), le pones que si... y vas a tener asi "TextBox(Index)" donde index es el identificador de tu textbox para diferenciarlo de los demas de la matris.
TextBox(0)
TexBoxt(1)
TextBox(2)
................
TextBox(N)

Tu cabeza debe estar pensando "es lo mismo, solo que el numero va entre los parentesis"...

No es lo mismo....

Por que si vos queres sumar 10 textbox seguidos, usas un for, ejemplo

Código:
Dim Suma as Currency
Dim X as Integer
For X = 0 to 9
     Suma = Suma + Ccur(TextBox(X))
Next X
Y te evitaste hacer el:

Código:
Dim Suma as Currency
Suma = CCur(TextBox1) + CCur(TextBox2) + CCur(TextBox3) + CCur(TextBox4) + CCur(TextBox5) + CCur(TextBox6) + CCur(TextBox7) + CCur(TextBox8) + CCur(TextBox9) + CCur(TexBox9)
¿Cual de los dos es mas OPTIMO y logicamente mejor

---------------------------------------------------------------------------------------

En fin, la programacion no es para cualquiera.

Que se sientan ofendidos a los que le llego mi mensaje.

EDITO: Pa demostrarlo mejor por que arriba no se noto tanto...

Como haces para sumar 100 TextBox...

Si seguimos tu idea seria...

Código:
Dim Suma as Currency

Suma = Ccur(TextBox1) + Ccur(TextBox2) + Ccur(TextBox3) + Ccur(TextBox4) + Ccur(TextBox5) + Ccur(TextBox6) + Ccur(TextBox7) + Ccur(TextBox8) + Ccur(TextBox9) + Ccur(TextBox10) + Ccur(TextBox11) + Ccur(TextBox12) + Ccur(TextBox13) + Ccur(TextBox14) + Ccur(TextBox15) + Ccur(TextBox16) + Ccur(TextBox17) + Ccur(TextBox18) + Ccur(TextBox19) + Ccur(TextBox20) + Ccur(TextBox21) + Ccur(TextBox22) + Ccur(TextBox23) + Ccur(TextBox24) + Ccur(TextBox25) + Ccur(TextBox26) + Ccur(TextBox27) + Ccur(TextBox28) + Ccur(TextBox29) + Ccur(TextBox30) + Ccur(TextBox31) + Ccur(TextBox32) + Ccur(TextBox33) + Ccur(TextBox34) + Ccur(TextBox35) + Ccur(TextBox36) + Ccur(TextBox37) + Ccur(TextBox38) + Ccur(TextBox39) + Ccur(TextBox40) + Ccur(TextBox41) + Ccur(TextBox42) + Ccur(TextBox43) + Ccur(TextBox44) + Ccur(TextBox45) + Ccur(TextBox46) + Ccur(TextBox47) + Ccur(TextBox48) + Ccur(TextBox49) + Ccur(TextBox50) + Ccur(TextBox51) + Ccur(TextBox52) + Ccur(TextBox53) + Ccur(TextBox54) + Ccur(TextBox55) + Ccur(TextBox56) + Ccur(TextBox57) + Ccur(TextBox58) + Ccur(TextBox59) + Ccur(TextBox60) + Ccur(TextBox61) + Ccur(TextBox62) + Ccur(TextBox63) + Ccur(TextBox64) + Ccur(TextBox65) + Ccur(TextBox66) + Ccur(TextBox67) + Ccur(TextBox68) + Ccur(TextBox69) + Ccur(TextBox70) + Ccur(TextBox71) + Ccur(TextBox72) + Ccur(TextBox73) + Ccur(TextBox74) + Ccur(TextBox75) + Ccur(TextBox76) + Ccur(TextBox77) + Ccur(TextBox78) + Ccur(TextBox79) + Ccur(TextBox80) + Ccur(TextBox81) + Ccur(TextBox82) + Ccur(TextBox83) + Ccur(TextBox84) + Ccur(TextBox85) + Ccur(TextBox86) + Ccur(TextBox87) + Ccur(TextBox88) + Ccur(TextBox89) + Ccur(TextBox90) + Ccur(TextBox91) + Ccur(TextBox92) + Ccur(TextBox93) + Ccur(TextBox94) + Ccur(TextBox95) + Ccur(TextBox96) + Ccur(TextBox97) + Ccur(TextBox98) + Ccur(TextBox99) + Ccur(TextBox100)
Si seguimos mi idea seria (obviamente creando una matris de controles textbox

Código:
Dim Suma as Currency
Dim X as Integer
For X = 0 to 99
     Suma = Suma + Ccur(TextBox(X))
Next X
Cuack. Ahi si se noto la diferencia

Última edición por culd; 03/01/2008 a las 06:31
  #6 (permalink)  
Antiguo 03/01/2008, 06:32
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Re: Me suma MAL los decimales!

Hola,solamente tenes que usar la funcion Formatnumber y decirle los decimales que queres despues de la coma,mira este simple ejemplo:

Código:
Private Sub Form_Load()
Dim numero1, numero2, nuemro3 As Double
numero1 = 1.5
numero2 = 1.6
numero3 = 1.7
MsgBox FormatNumber(numero1 + numero2 + numero3, 2, vbFalse)
End Sub
y una aclaracion fijate que en el primer post dijiste que el resultado es 4.7 y es en realidad 4.8

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #7 (permalink)  
Antiguo 03/01/2008, 07:12
Avatar de ElPadrino  
Fecha de Ingreso: noviembre-2007
Mensajes: 3
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Me suma MAL los decimales!

Muchas Gracias culd y todos los que colaboraron, ya corrio el sistema que estoy haciendo, con respecto a las aclaraciones de culd y seba123neo los tendre muy en cuenta.

Gracias nuevamente y Feliz año nuevo...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:12.