Foros del Web » Programación para mayores de 30 ;) » .NET »

Problemas con decimales en datagrid

Estas en el tema de Problemas con decimales en datagrid en el foro de .NET en Foros del Web. Hola, estoy haciendo un programa en C# en VS2005 con una base de datos sql server 2005 y tengo una duda inquietante, no es nada ...
  #1 (permalink)  
Antiguo 13/02/2009, 05:51
 
Fecha de Ingreso: agosto-2008
Mensajes: 7
Antigüedad: 15 años, 8 meses
Puntos: 0
Problemas con decimales en datagrid

Hola, estoy haciendo un programa en C# en VS2005 con una base de datos sql server 2005 y tengo una duda inquietante, no es nada importante pero me mata la curiosidad.
En un datagrid que esta asociada a una tabla del servidor quiero introducir numeros decimales, el tipo de dato en sql server es money por lo que el tipo de dato en el datagrid lo toma como 'System.decimal'.
Ahora la cuestion es que para hacer un update o un insert en la BD necesito que el valor que introduzca el usuario sea por el estilo de '13,45' (con una coma separando la parte decimal) o un numero entero, pero claro en las sentencias sql necesito que sea '13.45' (en vez de la coma, un punto) con un simple Replace() soluciono este problema.
Hasta aca todo genial, pero claro, cuando el usuario esta introduciendo datos, el data grid interpreta numeros decimales separando la parte decimal con una coma, si el usuario introduce '13.45' automaticamente se cambia a '1345' eso es lo que me fastidia, es molesto para el usuario que tenga que estar utilizando el block numerico y cada vez que tenga que introducir un numero decimal tenga que pulsar la tecla de la coma en vez del punto del block numerico.
En fin quisiera saber si hay alguna forma de hacer que el cell del datagrid al introducir un punto lo tome como una coma.
Gracias por la paciencia
  #2 (permalink)  
Antiguo 03/03/2009, 16:34
 
Fecha de Ingreso: agosto-2005
Mensajes: 33
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: Problemas con decimales en datagrid

Hola, me pasaba exactamente lo mismo al querer guardar datos en una bd ms access, lo resolvi con esta funcion, solo la uso a la hora de hacer el INSERT o el UPDATE, para que en pantalla, todo sea transparente. espero te sea de utilidad, un saludo


Private Function ComaXpunto(ByVal StrCadena As String) As String

Dim x As Integer
ComaXpunto = ""
For x = 1 To Len(StrCadena)
If Mid(StrCadena, x, 1) = "," Then
ComaXpunto = ComaXpunto & "."
ElseIf Mid(StrCadena, x, 1) = "." Then
ComaXpunto = ComaXpunto & ""
Else
ComaXpunto = ComaXpunto & Mid(StrCadena, x, 1)
End If
Next

End Function
  #3 (permalink)  
Antiguo 04/03/2009, 07:46
 
Fecha de Ingreso: agosto-2008
Mensajes: 7
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Problemas con decimales en datagrid

Bueno, gracias por la respuesta, pero el problema no es al guardar en la BD si no en el campo decimal del datagrid, cuando el usuario teclea un numero decimal el datagrid solo interpreta el separador de numeros decimales como una coma ( , )pero yo quiero que lo interprete como un punto.
Ahora mismo el datagrid interpreta el punto ( . ) como separador de miles.
Tiene que haber una forma o alguna opcion que permita cambiar estas interpretaciones de los datagrids
  #4 (permalink)  
Antiguo 19/03/2009, 06:12
 
Fecha de Ingreso: agosto-2005
Mensajes: 33
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: Problemas con decimales en datagrid

Para eso, seria con esto

Código:
   Private Sub DGLineas_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles datagridview1.EditingControlShowing
        AddHandler e.Control.KeyPress, AddressOf Validar
    End Sub

    Sub Validar(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)

        If datagridview1.Columns(datagridview1.CurrentCellAddress.X).HeaderText = "Campo_Decimal" Then
            If e.KeyChar = "." Or e.KeyChar = "," Then
                e.KeyChar = ","
             ElseIf Not Char.IsNumber(e.KeyChar) Then
                e.Handled = True
                'MsgBox("Este campo no acepta letras ni simbolos", MsgBoxStyle.Information)
            End If
        End If


    End Sub
  #5 (permalink)  
Antiguo 10/08/2010, 09:51
 
Fecha de Ingreso: septiembre-2009
Ubicación: Cuenca
Mensajes: 57
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: Problemas con decimales en datagrid

Tuve exactamente el mismo problema, aún teniendo como español en mi Windows como idioma predeterminado.

La única forma de corregir esto, además para otras aplicaciones de este sistema operativo es accediendo a la 'Configuración regional y de idiomas'. En la sección 'Estándares y formatos' hay que presionar el botón 'Personalizar' donde permite cambiar el signo decimal por el que quieras. En nuestro caso, cambiar la coma por el punto.

Yo no sé a quién se le ocurrió que la coma es separador de decimales y los puntos separadores de miles....

Deberían actualizarse a los estándares científicos y no confundir a los usuarios. Coma es coma, y punto hahaha
  #6 (permalink)  
Antiguo 10/08/2010, 13:26
Avatar de xjuanch0x  
Fecha de Ingreso: septiembre-2009
Mensajes: 125
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Problemas con decimales en datagrid

Man esta haciendo una aplicación muy deficiente si cambias de esa manera el punto por la coma, debido a que si tu software corre en una sistema donde la cultura el (.) representa el separador de miles un 4.50 el sistema lo interpretaría de forma incorrecta, lo que deberías hacer es manejar los tipo de datos como Decimal
__________________
Juan David Torres Vasquez
[email protected]
Microsoft Certified Technology Specialist (MCTS)
DCE Platinum en Visual C# y VB.NET
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 22:32.