none
punto en lugar de coma decimal vb.net

    Question

  • Hola estoy desarrollando un sistema de stock. Bueno en el modulo de carga de productos al cargar el precio del producto el cual en la base de datos es tipo real... el usuario quiere utilizar el punto en lugar de la coma, pero resulta que esto me trae problemas ya que al punto no lo toma como una coma sino que si pongo 3.53 me toma el valor del textbox de 353 y claro si ponemos 3,53 con coma todo bien pero el usuario requiere ingresar mediante punto. que solucion me recomiendan que haga?

     

    gracias


    Dante Tagliavini
    Tuesday, July 20, 2010 10:44 PM

Answers

  • Vaya, te he puesto sólo para la moneda, ponlo tambien para los número normales:

    Dim r As New Globalization.CultureInfo("es-ES")
    r.NumberFormat.CurrencyDecimalSeparator = "."

    r.NumberFormat.NumberDecimalSeparator ="."

    System.Threading.Thread.CurrentThread.CurrentCulture = r

     


    Iván Noya Cendal
    http://www.seuvella.com

    Lleida - España

    Si la respuesta te ha ayudado, marcala.
    Wednesday, July 21, 2010 7:01 AM
  • Pues salvo que estés ejecutando la consulta con parámetros, la verdad es que no lo entiendo.

    La siguiente consulta NUNCA se llegará a ejecutar:

      ' utilizamos la coma para especificar un número
      '
      INSERT INTO Tabla1 (Precio) VALUES (123,34)

    En cambio, si especificamos un punto, se ejecutará como es de esperar:

      INSERT INTO Tabla1 (Precio) VALUES (123.34)

    Ten en cuenta que el lenguaje SQL se lo inventaron los americanos, por tanto, utilizan el punto como símbolo separador decimal.


    Enrique Martínez [MS MVP - VB]
    Wednesday, July 21, 2010 4:03 PM

All replies

  • Puedes cambiar la configuración de moneda para el programa directamente (sin que afecte al resto de programas, que sería si lo cambiaras desde panel de control).

    al inicio del programa pones algo asi: (Lo pongo sin comprobar, asi que, mira que esté todo bien...)

    Dim r As New Globalization.CultureInfo("es-ES")
    r.NumberFormat.CurrencyDecimalSeparator = "."
    System.Threading.Thread.CurrentThread.CurrentCulture = r


    Iván Noya Cendal
    http://www.seuvella.com

    Lleida - España

    Si la respuesta te ha ayudado, marcala.
    Wednesday, July 21, 2010 6:55 AM
  • Vaya, te he puesto sólo para la moneda, ponlo tambien para los número normales:

    Dim r As New Globalization.CultureInfo("es-ES")
    r.NumberFormat.CurrencyDecimalSeparator = "."

    r.NumberFormat.NumberDecimalSeparator ="."

    System.Threading.Thread.CurrentThread.CurrentCulture = r

     


    Iván Noya Cendal
    http://www.seuvella.com

    Lleida - España

    Si la respuesta te ha ayudado, marcala.
    Wednesday, July 21, 2010 7:01 AM
  • Hola, Dante:

    La verdad es que no lo entiendo. Sin ver el código que estás ejecutando, así como la sintaxis de la consulta SQL, no puedo pronunciarme al respecto, porque si el campo de la tabla de la base de datos está definido como Real, precisamente necesitas pasarle los números decimales con el punto en lugar de especificar la coma, es decir, tal y como los está especificando el usuario de tu aplicación, salvo que los valores los estés encerrando entre comillas simples. Pero insisto, que necesitaría ver la sintaxis de la consulta SQL que estás ejecutando.

    ¿Qué base de datos utilizas? ¿Estás usando consultas SQL con parámetros? ¿Podrías indicarnos la consulta SQL que estás ejecutando?

    Un saludo

     


    Enrique Martínez [MS MVP - VB]
    Wednesday, July 21, 2010 11:29 AM
  • hola ante todo gracias por responder y su tiempo. Mira es en la carga de productos sobre todo donde necesito.. es un textbox donde pones el precio de costo y te calcula el precio de venta. y bueno yo uso la coma por defecto pero mi cliente como quiere usar el teclado numerico directamente quiere usar el punto. en la base de datos esta el campo como real y la consulta sql que me preguntas es una insert como y corriente nada raro. El codigo que me puso Ivan me sirvio con eso pude solucionar el problema.

    saludos y muchas gracias


    Dante Tagliavini
    Wednesday, July 21, 2010 3:17 PM
  • "Creed55" escribió:

    > es un textbox donde pones el precio de costo y te calcula el precio de venta.
    > y bueno yo uso la coma por defecto pero mi cliente como quiere usar el
    > teclado numerico directamente quiere usar el punto. en la base de datos
    > esta el campo como real y la consulta sql que me preguntas es una insert
    > como y corriente nada raro.
    > El codigo que me puso Ivan me sirvio con eso pude solucionar el problema.

    Si has solucionado el problema, yo soy el primero en alegrarme, pero sigo sin entender cómo eres capaz de introducir un valor Real con la COMA como símbolo separador decimal.

    La solución que te ha comentado Iván es correcta, porque utiliza el PUNTO como separador decimal de los números y de la moneda, que es lo que esperan las bases de datos que yo conozco que se introduzca cuando se quiere especificar un valor Real. Pero lo que no comprendo es que utilizando una coma como separador decimal, puedas introducir el número sin obtener la siguiente excepción:

         El número de valores de consulta y el número de campos de destino son diferentes.

    Por eso te pedía que mostrases la sintaxis de la consulta SQL que ejecutas con la coma, no la consulta SQL que ejecutas con el punto, porque entiendo que es lo correcto: utilizar el punto como separador decimal de los números. :-)


    Enrique Martínez [MS MVP - VB]
    Wednesday, July 21, 2010 3:35 PM
  • hola mira si te entiendo pero no me dio ese error que me decis es mas utlizaba la coma como separador decimal y me guardaba bien...

    saludos


    Dante Tagliavini
    Wednesday, July 21, 2010 3:46 PM
  • ¿Qué tipo de base de datos estás usando? ¿Access, SQL Server, otra cualquiera?

     


    Enrique Martínez [MS MVP - VB]
    Wednesday, July 21, 2010 3:54 PM
  • estoy usando sql server 2005.

    saludos


    Dante Tagliavini
    Wednesday, July 21, 2010 3:55 PM
  • Pues salvo que estés ejecutando la consulta con parámetros, la verdad es que no lo entiendo.

    La siguiente consulta NUNCA se llegará a ejecutar:

      ' utilizamos la coma para especificar un número
      '
      INSERT INTO Tabla1 (Precio) VALUES (123,34)

    En cambio, si especificamos un punto, se ejecutará como es de esperar:

      INSERT INTO Tabla1 (Precio) VALUES (123.34)

    Ten en cuenta que el lenguaje SQL se lo inventaron los americanos, por tanto, utilizan el punto como símbolo separador decimal.


    Enrique Martínez [MS MVP - VB]
    Wednesday, July 21, 2010 4:03 PM
  • No es la primera vez me pasa algo parecido a mi tambien, y por eso me imaginé le podría funcionar, pero SoftJaen tiene razón que en teoría no debería poder realizar esa consulta.

    INSERT INTO Tabla1 (Precio) VALUES (123,34)

    Este ejemplo mismo que pone SoftJaen si lo intentas ejecutar lo más seguro es que te diga que estas poniendo un campo y dos valores (la coma es un separador de valores) y por eso fallará... Imagino que debía estar usando parámetros y estos se lo solucionarían automáticamente...

    De todas maneras, me alegro que ya te funcione. ;)


    Iván Noya Cendal
    http://www.seuvella.com

    Lleida - España

    Si la respuesta te ha ayudado, marcala.
    Thursday, July 22, 2010 6:50 AM
  • hola claro los entiendo... mira estoy utilizando linq por eso debe ser que me hace automaticamente la conversion como el dato es double no me preocupo por eso.

    saludos


    Dante Tagliavini
    Thursday, July 22, 2010 12:46 PM