Visual Basic - Problema con decimales

Life is soft - evento anual de software empresarial
 
Vista:

Problema con decimales

Publicado por Gonso (25 intervenciones) el 03/01/2007 11:16:51
Buenas, aqui traigo un nuevo problema. Os lo resumiré con un ejemplo más sencillo.

Tengo 2 textbox y una label. En los textbox tengo que meter numeros decimales. En la label se muestra el resultado de la suma de esos dos numeros. Luego, con un boton, meto el resultado y los numeros iniciales en una tabla de base de datos mysql.

Me es IMPRESCINDIBLE tener esos decimales. El problema es que, por la nomenclatura inglesa o lo que sea, no es lo mismo un punto que una coma. Por ejemplo, 3,54 y 3.54. Tengo que obligarle al programa que, al presionar la coma, aparezca un punto para que realice la operacion con decimales. Hasta ahi bien. Luego doy al botón, y se guardan en la bd, representando los decimales con punto (como parece que tiene que ser)
PERO, cuanto vuelvo a coger esos datos de la base de datos y sacarlos en unas labels de mi programa en visual basic me aparecen con coma. Y claro, si los guardo de nuevo, la base de datos no entiende que tras la coma sean decimales y me los quita, es decir me deja un numero entero. Necesito esos decimales como sea. ¿Hay alguna forma?

Esto es un ejemplo, es algo más serio que eso, desde luego y no puedo ignorar los decimales, porque sino los resultados no son los mismos, y se trata de datos monetarios. Lo unico que he podido hacer es redondearlo (porque si tenias un 8,99 te ponia un 8, ahora por lo menos hice que te saque un 9)

¿Se puede solucionar. o tendre que dejarlo con datos redondeados?

Muchas gracias por vuestras ideas.
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:Problema con decimales

Publicado por Merche (35 intervenciones) el 03/01/2007 12:06:04
Cuando grabes los datos en la Base de datos, si el label tiene una coma
tienes que ponerle delante cdbl, es decir,
campobasededatos=cdbl(label)
Asi funciona contra una Base de datos SQL
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:Problema con decimales

Publicado por Gonso (25 intervenciones) el 03/01/2007 12:21:17
¿qué hace eso de cdbl? A decir verdad todo son textbox. Entonces debo hacer algo asi?

Si tengo estos tres textbox: numero1 numero2 y decimal y tengo sus correspondientes campos en mi base de datos mysql: num1 num2 dec

num1=cdbl(numero1)
num2=cdbl(numero2)
dec=cdbl(decimal)

Es eso?
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:Problema con decimales

Publicado por Gonso (25 intervenciones) el 03/01/2007 12:23:50
vale ya vi para que sirve el cdbl, devuelve un double...

Lo probaré y tanto si me funciona como sino os aviso.

Muchisimas gracias Merche.
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:Problema con decimales

Publicado por Merche (35 intervenciones) el 03/01/2007 12:45:15
Si no te funcionara otra solución sería
num1=Replace(numero1,",",".")
num2=Replace(numero2,",",".")
dec=Replace(decimal,",",".")

Así te remplaza la coma por el punto y te lo grabaría bien
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:Problema con decimales

Publicado por Gonso (25 intervenciones) el 03/01/2007 19:12:20
MUCHIIIIIIIISIMAS GRACIAS.

Usé el Replace. Menudo lio de decimales, en los datareport no tenia que usar puntos sino las comas, pero para la bd sql tenia que transformarlo a puntos, vaya lios.

En fin, que muchisimas gracias Merche y Christian!!
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
sin imagen de perfil
Val: 119
Ha disminuido 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Otra solucion

Publicado por Christian (713 intervenciones) el 03/01/2007 14:31:08
cdbl es para conversion de un tipo a otro en este caso Double sino mal no recuerdo mirate este link ...

http://msdn2.microsoft.com/es-es/library/d9d8d165-f967-44ff-a6cd-598e4740a99e(VS.80).aspx

podrias llegar a usar algo asi en el keypress

If KeyAscii = Asc(".") Then
KeyAscii = Asc(",")
End If

y hay una funcion Replacesi queres usar tambien

http://msdn.microsoft.com/library/spa/default.asp?url=/library/SPA/vblr7/html/vafctReplace.asp

saludos amigo
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