Principales respuestas
recordset.fields(2) NO ACEPTA DECIMALES

Pregunta
-
Hola.... alguien me podria ayudar compañeros? tengo la siguiente tabla en sql express 2008, el codigo en vb 6.0 el problema es que cuando escribo en sql directatamente si me acepta los decimales y cuando se lo paso por el recordset no, por ejemplo, le pongo 9.2 y me gurada 92.0 ya intente de todo convertir a double, currency y nada
CREATE TABLE [dbo].[productos](
[codigo] [varchar](20) NOT NULL,
[descripcion] [varchar](100) NULL,
[precioventa] [decimal](18, 2) NULL,
[existencias] [decimal](10, 2) NULL,
Registros.Fields(1) = VarDescripcion
Registros.Fields(2) = CCur(Trim(VarPrecioVenta))Registros.Fields(2) = Cdbl(Trim(VarPrecioVenta))
Registros.Update
A Alguno de ustedes y le ha pasado? como lo hamn solucionado
Gracias
Jose Maria Bracamontes Almeraz
Respuestas
-
He estado probando en mi vb6 en español ahorita mismo y efectivamente si le pasas un 9.20 a CCur() o CDbl() te devuelve un 920... pero lo pruebo haciendo CDbl("9,20") y te devuelve 9,2...
Pruebas a pasarle separador decimal una coma ok??
Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos
- Marcado como respuesta jmba24 domingo, 2 de junio de 2013 19:05
-
Visual Basic te está cogiendo la configuración regional del equipo sobre el que estas trabajando. Si cambias el idioma de Windows a ingles ya veras como le pasas 9,2 con coma y te sucede lo mismo. Pruébalo ya veras que es así. Sabiendo esto, debes trabajar si estas en español con coma coma separador decimal y automáticamente el recordset lo adecua al tipo de dato que entiende SQL...espero haberme explicado. Si no, házmelo saber
Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos
- Marcado como respuesta jmba24 domingo, 2 de junio de 2013 19:36
Todas las respuestas
-
Hola, lo primero estas estableciendo dos veces el mismo campo
Registros.Fields(2) = CCur(Trim(VarPrecioVenta))Registros.Fields(2) = Cdbl(Trim(VarPrecioVenta))
si te fijas estas asignado fields(2) un par de veces.
luego te recomiendo que no uses una variable string para coger los valores numericos
Estas haciendo CCur(Trim(VarPrecioVenta)),ves que estas hsciendo un Trim()?? Porque no usas VarPrecioVenta de tipo currency o double? Asi te evitarias problemas de esos,te quedaria asi
Dim VarPrecioVenta As Double
VarPrecioVenta = 92.0
Registros.Fields(2) = VarPrecioVenta
Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos
- Editado Sergio Parra domingo, 2 de junio de 2013 15:14
-
el valor lo estoy obteniendo de un textbox, al asignarselo a una variable de tipo double o currency me quita el punto decimal
dim miprecio as currency
miprecio=precio.text
(aqui es cuando pasa de ser 9.2 a 920)
si lo manejo con el textbox todo esta bien, lo debugeo con F8 y cuando llega al
Registros.Fields(2) = VarPrecioVenta
llega con 9.2, pues lo estoy debugenado y es el valor que contiene varprecioventa, no se por que el recorset no esta respetando ese valor
Jose Maria Bracamontes Almeraz
-
Te comento una cosa, en todo motor de base de datos nunca se guarda un valor numérico con comas como separador decimal eso ya lo sabes no? asi que el problema está en la conversion del dato de tipo texto a currency o double. Que idioma tienes configurado en tu equipo?
Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos
-
He estado probando en mi vb6 en español ahorita mismo y efectivamente si le pasas un 9.20 a CCur() o CDbl() te devuelve un 920... pero lo pruebo haciendo CDbl("9,20") y te devuelve 9,2...
Pruebas a pasarle separador decimal una coma ok??
Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos
- Marcado como respuesta jmba24 domingo, 2 de junio de 2013 19:05
-
curiosamente trato de ejecutar el siguiente codigo en una query de sql magnament studio y marca error
update productos set precioventa='9,2'
error al convertir el tipo de datos varchar a numeric.....
ahora lo que hice en vb fue pasarle los datos al recordset con coma.......
no entendo si sql no acepta la coma y vb no acepta el punto...... entonces donde esta el bug????
todo lo solucione de la siguiente manera:
registros.fields(2)=replace(varprecioventa,".",",")
registros.update
sustituyendo el punto por la coma y asignandoselo al recorset..... se supone que el recordset se lo envia a sql.... si sql no acepta la coma..... como esta esta situacion????
Jose Maria Bracamontes Almeraz
-
update productos set precioventa='9,2'
error al convertir el tipo de datos varchar a numeric.....
efectivamente te da ese error en el management studio porque le estas pasando a un campo decimal una cadena de caracteres. Si haces la consulta update productos set precioventa=9.2 te funciona seguro.
Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos
-
Visual Basic te está cogiendo la configuración regional del equipo sobre el que estas trabajando. Si cambias el idioma de Windows a ingles ya veras como le pasas 9,2 con coma y te sucede lo mismo. Pruébalo ya veras que es así. Sabiendo esto, debes trabajar si estas en español con coma coma separador decimal y automáticamente el recordset lo adecua al tipo de dato que entiende SQL...espero haberme explicado. Si no, házmelo saber
Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos
- Marcado como respuesta jmba24 domingo, 2 de junio de 2013 19:36