Hola gente!!
Estoy trabajando con mysql y VB .net (2003) y tengo un problema con los puntos decimales que no puedo solucionar..
Es asi: necesito guardar un monto en la base de datos, ej: 103,59.. pero cuando guardo ese monto queda registrado en la BD solo la parte entera (103) y no la parte decimal (,59).. Si utilizo el punto (.) en vez de la coma (,) para separar los decimales se guarda todo como un nro entero, o sea: 103.59 lo guarda como 10359..
Probe con tipos de datos double, decimal y siempre hace lo mismo..
Si alguien puede darme alguna pista se lo voy a agradecer..
SALUDOS!!!
Probaste encerrar el valor entre comillas?
Suponiendo que TxtPrecio es decimal...
"INSERT INTO Tabla VALUES ('" & TxtPrecio.text & "')"
Si, el monto lo pongo en la consulta entre comillas simples (').. Tambien probe usando la funcion Format(precio,"##,##0.00") y tampoco lo toma..
Si hago la consulta (insert) directamente en mysql (por la linea de comandos) si lo toma, asi que yo supongo que el inconveniente debe estar en vb, algun tipo de conversion o algo por el estilo..
Estoy frenado por esto ja
Gracias por responder :up:
proba
1) Sacando las comillas entre el numero
2) parseando las comillas con \" o \'
"INSERT INTO Tabla VALUES (\'" & TxtPrecio.text & "\')"
Solucionado!!!
El problema es que vb y mysql utilizan distintos separadores decimales:
en mysql es el punto (.) ej: 10.5
en vb es la coma (,) ej: 10,5
si utilizo el punto (.) como separador decimal en vb, lo que pasa es que al asignar un valor, digamos 10.5, a una variable tipo double esta variable queda con el valor 105 (porque? nose)
ej: monto <= 10.5 --------> monto=105
por lo tanto a una variable tipo double debo asignarle un nro con la coma (,) como separador decimal.
ej: monto<=10,5 ------> monto=10,5
ahora, si intento guardar esta variable monto (10,5) en mysql se almacenara el valor 10.00 (porque? nose jeje)
por lo tanto lo que hago es trabajar usando la coma como separador decimal en la aplicacion, pero al momento de almacenar el valor en mysql, reemplazo la coma (,) por el punto (.) en la variable utilizando la funcion Replace(variable, "," , ".")
ej: monto=10,5 -------> replace(monto, "," , ".") ----------> monto=10.5 y ahora si guardo esta variable en mysql
Espero que se entienda.. intente explicarlo lo mejor que pude
y gracias por la ayuda :up:
Hola,
ese es un problema comun cuando el sistema oeprativo del cliente esta en un idioma (español en este caso) y el SQL Server esta en otro (ingles en este caso) por ende espera los numeros de otra manera. Esto mismo pasa con las fechas donde el 31-12-2008 en Argentina seria 12-31-2008 en USA, razon por la que muchos sistemas desarrollados definen directamente las fechas como enteros de la forma AAAAMMDD (20081231) para evitar problemas de regionalizacion.
Baii
Cita de: marcosp en Noviembre 29, 2008, 02:05:45
Solucionado!!!
El problema es que vb y mysql utilizan distintos separadores decimales:
en mysql es el punto (.) ej: 10.5
en vb es la coma (,) ej: 10,5
si utilizo el punto (.) como separador decimal en vb, lo que pasa es que al asignar un valor, digamos 10.5, a una variable tipo double esta variable queda con el valor 105 (porque? nose)
ej: monto <= 10.5 --------> monto=105
por lo tanto a una variable tipo double debo asignarle un nro con la coma (,) como separador decimal.
ej: monto<=10,5 ------> monto=10,5
ahora, si intento guardar esta variable monto (10,5) en mysql se almacenara el valor 10.00 (porque? nose jeje)
por lo tanto lo que hago es trabajar usando la coma como separador decimal en la aplicacion, pero al momento de almacenar el valor en mysql, reemplazo la coma (,) por el punto (.) en la variable utilizando la funcion Replace(variable, "," , ".")
ej: monto=10,5 -------> replace(monto, "," , ".") ----------> monto=10.5 y ahora si guardo esta variable en mysql
Espero que se entienda.. intente explicarlo lo mejor que pude
y gracias por la ayuda :up:
Estimado, es lo que estaba buscando, Yo trabajo en MS Access como cliente y MySQL como Servidor y había creado un expresión para hacer lo que tu hiciste. jajaja. tome casi media hora en crear mi expresión. jaja.
Esta era mi expresión: Cantidad_Paso= Cstr(Int(Cantidad)) & "." & Rigth(Left(Cstr(Cantidad - Int(Cantidad)),4),2)
Lo que hace esta expresión es dividir la parte decimal de la entera, luego a la parte decimal solo toma los 4 primeros caracteres y luego toma los últimos 2 el 0 y la , no las toma, Luego de eso los une con la parte entera a a traves de el punto. Ejemplo si hubiera ingresado 54,75 entonces hace esto "54" & "." & "75"= "54.75" Jajaja. el problema salta cuando los valores decimales a tomas son 3. jaja.
Pero bueno, tu respuesta fue de gran ayuda, porque ya me estaba volviendo loco con esto.
Saludos y sigamos en contacto.