Foros del Web » Programando para Internet » ASP Clásico »

Decimales con punto a coma

Estas en el tema de Decimales con punto a coma en el foro de ASP Clásico en Foros del Web. Hola Saludos a todos. Queria saber si hay alguna forma de convertir los numero decimales con punto a numero decimales con comas. 4.3 transformalo a ...
  #1 (permalink)  
Antiguo 28/09/2010, 02:37
Avatar de Batan  
Fecha de Ingreso: septiembre-2010
Ubicación: Madrid
Mensajes: 408
Antigüedad: 13 años, 7 meses
Puntos: 63
Decimales con punto a coma

Hola Saludos a todos.
Queria saber si hay alguna forma de convertir los numero decimales con punto a numero decimales con comas.

4.3 transformalo a 4,3

Gracias por su tiempo.
  #2 (permalink)  
Antiguo 28/09/2010, 04:50
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Decimales con punto a coma

Hola

Usa Replace

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 28/09/2010, 05:33
Avatar de Batan  
Fecha de Ingreso: septiembre-2010
Ubicación: Madrid
Mensajes: 408
Antigüedad: 13 años, 7 meses
Puntos: 63
Respuesta: Decimales con punto a coma

Si yo tambien opte por esa opcion y ya lo habia echo.

Código ASP:
Ver original
  1. <&#37;option explicit
  2. 'defino las variables
  3. '<---
  4. Dim nota_cambio
  5. Dim nom
  6. Dim sql
  7. Dim BD
  8. Dim ruta_fichero
  9. Dim nombre
  10. Dim num_cambiado
  11. '--->
  12.  
  13. nom=request.Querystring("matri")
  14. nota_cambio=request.form("nota_cambio")
  15. ruta_fichero=server.mappath("Calificaciones.mdb")
  16. Set BD=Server.createobject("ADODB.connection")
  17. BD.Open"provider=Microsoft.jet.OLEDB.4.0;Data Source="&ruta_fichero
  18.  
  19. num_cambiado=replace(nota_cambio, ".", ",")
  20.  
  21.     sql="update Alumnos set Nota="&num_cambiado&" where Matricula="&nom&""
  22.  
  23. BD.execute(sql)
  24. BD.close
  25. Set BD=Nothing
  26. Response.Redirect("alumno_registrado.asp")
  27. %>

Mi base de datos es access y el campo que intento cambiar es numero, doble.

Gracias por responder
  #4 (permalink)  
Antiguo 28/09/2010, 07:32
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Decimales con punto a coma

Hola

A ver si funciona esto
Cita:
nota_cambio=request.form("nota_cambio")
reem = replace(nota_cambio, ".", ",")
num_cambiado = CDbl(reem)
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #5 (permalink)  
Antiguo 28/09/2010, 07:50
Avatar de Batan  
Fecha de Ingreso: septiembre-2010
Ubicación: Madrid
Mensajes: 408
Antigüedad: 13 años, 7 meses
Puntos: 63
Respuesta: Decimales con punto a coma

Aun no sale sigue dando error.

Código ASP:
Ver original
  1. <%reem = replace(nota_cambio, ".", ",")
  2. num_cambiado = CDbl(reem)
  3.  
  4.     sql="update Alumnos set Nota="&num_cambiado&" where Matricula="&nom&""%>

Gracias por responder igual.
  #6 (permalink)  
Antiguo 28/09/2010, 08:14
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Decimales con punto a coma

Hola

El error puede que esté aquí
Cita:
Nota="&num_cambiado&"
tratalo como una cadena
Cita:
Nota='"&num_cambiado&"'
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #7 (permalink)  
Antiguo 28/09/2010, 08:19
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Respuesta: Decimales con punto a coma

ejem!, ejem!

¿no es mucho más sencillo simplemente cambiar el LCID a uno donde se utilice la coma como separador de decimales?

O si el problema es con la base de datos se cambia el parámetro del collate referente al separador
  #8 (permalink)  
Antiguo 28/09/2010, 09:11
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 19 años, 7 meses
Puntos: 2
Respuesta: Decimales con punto a coma

Cita:
Iniciado por Myakire Ver Mensaje
ejem!, ejem!

¿no es mucho más sencillo simplemente cambiar el LCID a uno donde se utilice la coma como separador de decimales?

O si el problema es con la base de datos se cambia el parámetro del collate referente al separador

Hola!
Myakire, la solución que propones es válida y obviamente viable, pero en mi experiencia me han tocado clientes que cambiaron el servidor. Sea la versión del Sistema Operativo o el equipo completo. También sucedió que instalaran un producto de otro fabricante que necesitaba una configuración regional distinta a la mía y zas! Al cuerno con mis configuraciones regionales y arreglos en el código.


Hasta donde yo se, para el problema aquí planteado, bastaría con un replace (para el caso que leyera una coma).
Luego, al enviar a la db, si el formato del campo es numérico, puede ocurrir un overflow si intentan pasarle una cadena... No recuerdo quien puso que el error podía ser Nota="&variable&" y corregir a Nota='"&variable&"'
Esta solución me ha dado muchos dolores de cabeza.

Lo que si, no se por qué vuelven a convertir el número a un formato numérico (double). Creo que es ahí donde vuelve a cambiar el punto por la coma, y sigue enviando una coma a la db.

Mi solución implicaría solo al replace y de ahí derecho a la db. Si da error nuevamente, estaría bueno que colocaras específicamente cuál es el error, copiando la línea de código donde se indica que falla. Como para que nos quede a todos más claro cuál es el proceso que está generando la falla.


Saludos y espero haber sido util.
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #9 (permalink)  
Antiguo 28/09/2010, 10:53
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Respuesta: Decimales con punto a coma

Cita:
Iniciado por verinchi Ver Mensaje
Hola!
Myakire, la solución que propones es válida y obviamente viable, pero en mi experiencia me han tocado clientes que cambiaron el servidor. Sea la versión del Sistema Operativo o el equipo completo. También sucedió que instalaran un producto de otro fabricante que necesitaba una configuración regional distinta a la mía y zas! Al cuerno con mis configuraciones regionales y arreglos en el código.
De acuerdo al 100% contigo, pero cierto es también que cualquier cambio en el servidor debe hacerse con la salvedad de hacer adecuaciones en los sistemas, normalmente las constantes de configuración están en un include o en propiedades de solo lectura, por lo que es rápido el actualizarlas.

Si se quiere hacer cambios "transparentes" para las aplicaciones se puede caer en lo que tu misma mencionas, que la aplicación mande un caracter como separador decimal (el que sea) y la BD's este esperando otro, igual no se salva uno de asegurar que los dos ambientes hablen el mismo "idioma".

Aquí siempre teníamos problemas al actualizar la versión del sql server con la intercalación, así que ya le metí la definición de la intercalación directa en el join y ya me olvidó de cambiarla cada cambio de server.

Saludos
  #10 (permalink)  
Antiguo 28/09/2010, 13:21
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Decimales con punto a coma

Yo recordaba haber tenido algún problema con LCID y por eso lo de Replace. Con convertirlo en double pues no es necesario pero si que hay que enviarlo como string. A raíz de vuestros comentarios he hecho algunas pruebas y a ver si os ocurre lo mismo que a mí
Código ASP:
Ver original
  1. <% Session.LCID=1034%>
  2. <html>
  3. <body>
  4. <a href="lcid.asp?valor=350.12">enviar</a><br /><br />
  5. <%
  6. response.write("Query : " & FormatCurrency(Request.QueryString("valor"))) & "<br />"
  7. response.write("Query : " & CDbl(Request.QueryString("valor"))) & "<br /><br />"
  8. response.write("No Query : " & FormatCurrency(350.12)) & "<br />"
  9. response.write("No Query : " & CDbl(350.12))
  10. %>
  11. </body>
  12. </html>
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #11 (permalink)  
Antiguo 30/09/2010, 09:02
Avatar de Batan  
Fecha de Ingreso: septiembre-2010
Ubicación: Madrid
Mensajes: 408
Antigüedad: 13 años, 7 meses
Puntos: 63
Respuesta: Decimales con punto a coma

Perdonen por no contestar pero estaba un poco ocupado.

Veran me pasa una cosa muy rara.

En lo de Nota='"&num_cambiado&"' me da el problema de que el tipo de dato de los campos no son iguales. Y es cierto por que num_cambiado no recoge datos de ninguna otra pagina, por lo cual no los debe llevar. Pero me da el mismo error al ponerselo en Matricula="&nom&"" y este si recoge datos de otra pagina

Cita:
Código ASP:
Ver original
  1. <%option explicit
  2. 'defino las variables
  3. '<---
  4. Dim nota_cambio
  5. Dim nom
  6. Dim sql
  7. Dim BD
  8. Dim ruta_fichero
  9. Dim nombre
  10. Dim num_cambiado 'no recoge datos de otra pagina
  11. '--->
  12.  
  13. nom=request.Querystring("matri")
  14. nota_cambio=request.form("nota_cambio")
  15. ruta_fichero=server.mappath("Calificaciones.mdb")
  16. Set BD=Server.createobject("ADODB.connection")
  17. BD.Open"provider=Microsoft.jet.OLEDB.4.0;Data Source="&ruta_fichero
  18.  
  19. num_cambiado=replace(nota_cambio, ".", ".") 'guarda los de datos que recoge nota_cambio
  20.  
  21.         sql="update Alumnos set Nota="&num_cambiado&" where Matricula="&nom&""
Lo segundo es que el codigo que me pusieron para cambiar de punto a coma no me funciono pero estuve probando mas cosas y en una de ellas por casualidad lo puse de esta manera:
Cita:
Código ASP:
Ver original
  1. num_cambiado=replace(nota_cambio, ".", ".") 'guarda los de datos que recoge nota_cambio
  2.  
  3.         sql="update Alumnos set Nota="&num_cambiado&" where Matricula="&nom&""
Aqui me pasa algo raro, al guardar un dato como 4.4 obviamente no lo cambia debido que lo cambio por otro punto... Pero en la base de datos si lo cambia por una coma. me podrian explicar que podria pasar por favor? No puse el CDbl debido a que me daba el mismo error de que no coincidean en el tipo de base de datos.

Gracias por todo y saludos.
  #12 (permalink)  
Antiguo 04/10/2010, 11:37
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 19 años, 7 meses
Puntos: 2
Respuesta: Decimales con punto a coma

Cita:
Iniciado por Batan Ver Mensaje
Perdonen por no contestar pero estaba un poco ocupado.

Aqui me pasa algo raro, al guardar un dato como 4.4 obviamente no lo cambia debido que lo cambio por otro punto... Pero en la base de datos si lo cambia por una coma. me podrian explicar que podria pasar por favor? No puse el CDbl debido a que me daba el mismo error de que no coincidean en el tipo de base de datos.

Gracias por todo y saludos.

Lo que se me ocurre así por tirar una idea, es que si para la db el separador decimal es , cuando le pases el valor con punto lo va a transformar automáticamente. Tiene que ver con la configuración regional.

Esto de cambiar las comas por punto es indicado porque al armar el string que debe ejecutar el SQL, en caso de encontrar una coma en un campo numérico (que no lleva literales como para interpretarlo como texto) considera que son dos valores distintos, y te va a decir que hay más valores que campos declarados en la consulta.

Entonces, al cambiarlo por puntos, el valor pasa completo al campo que debe recibirlo y el SQL realiza la conversión sin problemas, de punto al separador decimal que tiene definido, en este caso, una coma.

Si no querés que pase esto, o bien cambiás la configuración en la máquina que tiene el SQL para que el separador decimal sea un punto, o lo cambiás (no recuerdo la opción) directamente desde el sql server, o la que más me gusta a mi... realizas la conversión de coma a punto cada vez que muestres ese dato en pantalla y Voilà!

Saludos!
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #13 (permalink)  
Antiguo 04/10/2010, 11:50
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 22 años, 4 meses
Puntos: 16
Respuesta: Decimales con punto a coma

pon Session.LCID = 11274

y luego pones valor=Formatcurrency(valor,2)
  #14 (permalink)  
Antiguo 04/10/2010, 11:52
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 22 años, 4 meses
Puntos: 16
Respuesta: Decimales con punto a coma

aqui el por que de lo anterior
http://www.w3api.com/wiki/ASP:Session.LCID
  #15 (permalink)  
Antiguo 04/10/2010, 11:55
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 19 años, 7 meses
Puntos: 2
Respuesta: Decimales con punto a coma

Cita:
Iniciado por sjam7 Ver Mensaje
aqui el por que de lo anterior
http://www.w3api.com/wiki/ASP:Session.LCID
Buenísimo!
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #16 (permalink)  
Antiguo 05/10/2010, 03:25
Avatar de Batan  
Fecha de Ingreso: septiembre-2010
Ubicación: Madrid
Mensajes: 408
Antigüedad: 13 años, 7 meses
Puntos: 63
Respuesta: Decimales con punto a coma

óle muchas gracias.
Me funciono bien y vaya funcion mas buena.

Etiquetas: coma, punto
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 06:06.