none
Formato Dudoso. RRS feed

  • Pregunta

  • Hola amigos del foro:

    Estoy intentando guardar el siguiente valor "-33.4229234" en una BD de sql Server por medio de un Procedimiento. el tema es que el valor se  formatea y lo guarda asi---> "-334229234". Que debo hacer?.


    Saludos desde Chile.

    martes, 24 de febrero de 2015 16:32

Respuestas

  • Has probado tambien en ejecutar tu código así?? Con AddWithValue?

    Dim Comando As New SqlClient.SqlCommand
    
    Comando.CommandText = "[ActualizaLongitud]"
    Comando.CommandType = CommandType.StoredProcedure
    
    Comando.Parameters.AddWithValue("@Cliente",  Nombre)
    Comando.Parameters.AddWithValue("@Latitud", latitud)
    Comando.Parameters.AddWithValue("@longitud", longitud)

    Porque tal vez hayas creado los parámetros mal, te faltaría indicar la longitud de cada parámetro

    With Parameter2
    
                    .ParameterName = "@Latitud"
                    .SqlDbType = SqlDbType.NVarChar
                    .Direction = ParameterDirection.Input
                    .Value = latitud
                     .Size = tamaño
                End With


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos


    • Editado Sergio Parra martes, 24 de febrero de 2015 17:25
    • Marcado como respuesta Aprendiz_Chile martes, 24 de febrero de 2015 17:59
    martes, 24 de febrero de 2015 17:23

Todas las respuestas

  • Cuál es el tipo y longitud de ese campo??


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    martes, 24 de febrero de 2015 16:36
  • Por los síntomas, parece que te está tomando el "." como punto de miles (que se desprecia en el formato) en lugar de punto decimal. Habría que ver cuál es el código que usas para enviar ese valor hacia el procedimiento almacenado, pues es ahí donde más probablemente se encuentre el problema de configuración de separadores de miles y de decimales.
    martes, 24 de febrero de 2015 16:41
  • amigo este seria el Codigo:

     Public Sub ActualizaDireccion(Nombre As String, latitud As String, longitud As String)
            Dim Conection As String
            Dim Parameter1 As New SqlClient.SqlParameter
            Dim Parameter2 As New SqlClient.SqlParameter
            Dim Parameter3 As New SqlClient.SqlParameter
            
    
    
    
    
            Try
    
    
                With Parameter1
    
                    .ParameterName = "@Cliente"
                    .SqlDbType = SqlDbType.NVarChar
                    .Direction = ParameterDirection.Input
                    .Value = Nombre
                End With
    
                With Parameter2
    
                    .ParameterName = "@Latitud"
                    .SqlDbType = SqlDbType.NVarChar
                    .Direction = ParameterDirection.Input
                    .Value = latitud
                End With
    
                With Parameter3
    
                    .ParameterName = "@longitud"
                    .SqlDbType = SqlDbType.NVarChar
                    .Direction = ParameterDirection.Input
                    .Value = longitud
                End With
    
    
    
                Dim Comando As New SqlClient.SqlCommand
    
                Comando.CommandText = "[ActualizaLongitud]"
                Comando.CommandType = CommandType.StoredProcedure
    
                Comando.Parameters.Add(Parameter1)
                Comando.Parameters.Add(Parameter2)
                Comando.Parameters.Add(Parameter3)
            
    
    
                Conection = "Server=192.168.1.5;Uid=xxx;XXXXXX;Database=Duro;"
    
                Dim oConn As New SqlClient.SqlConnection
                Comando.Connection = oConn
                oConn.ConnectionString = Conection
    
                Comando.Connection.Open()
    
    
                Comando.ExecuteNonQuery()
    
    
    
                Comando.Connection.Close()
            Catch ex As Exception
                MessageBox.Show(ex.Message)
    
            End Try
    
    
        End Sub

    Ahora ese valor es extraído de un XML como tipo string. pero el formato e pierde cuando lo paso a la base.


    Saludos desde Chile.

    martes, 24 de febrero de 2015 16:46
  • Hola,

    ¿Por qué utilizas el tipo SqlDbType.NVarChar? ¿Es así como tienes definido las columnas en tus tablas?¿No deberías tener un tipo de datos decimal o numeric?

    martes, 24 de febrero de 2015 16:50
  • Insisto en que es importante saber el tipo de dato del campo en tu tabla de la base de datos...

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    martes, 24 de febrero de 2015 16:50
  • Un par de cosas:

    - ¿Has probado a poner un punto de interrupción para comprobar que las variables latitud y longitud tienen el valor correcto?

    - ¿Los campos en los que almacenas los valores son de tipo nvarchar o son numéricos?

    - Habría que ver el código del procedimiento almacenado ActualizaLongitud para poder ver si se realiza algún tipo de conversión.

    (Bueno al final han sido más de un par... :))

    martes, 24 de febrero de 2015 16:53
  • el campo en mi tabla de SQL Server esta como Nvarhcar().

    cuando coloco el punto de interrupción hasta el parámetro @Latitud me muestra : "-33.4229234"

    ahora dejo imágenes de los detalles del valor :

    https://social.msdn.microsoft.com/Forums/getfile/615435

    https://social.msdn.microsoft.com/Forums/getfile/615437


    Saludos desde Chile.


    martes, 24 de febrero de 2015 17:14
  • Has probado a ejecutar el procedimiento almacenado desde el Management Studio con los mismos parámetros?

    Te ocurre lo mismo? Si es así como han comentado antes revisa el procedimiento por si hubiera alguna conversión a decimal o algo así...

    Puedes pasarnos el código del sp??


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    martes, 24 de febrero de 2015 17:20
  • Has probado tambien en ejecutar tu código así?? Con AddWithValue?

    Dim Comando As New SqlClient.SqlCommand
    
    Comando.CommandText = "[ActualizaLongitud]"
    Comando.CommandType = CommandType.StoredProcedure
    
    Comando.Parameters.AddWithValue("@Cliente",  Nombre)
    Comando.Parameters.AddWithValue("@Latitud", latitud)
    Comando.Parameters.AddWithValue("@longitud", longitud)

    Porque tal vez hayas creado los parámetros mal, te faltaría indicar la longitud de cada parámetro

    With Parameter2
    
                    .ParameterName = "@Latitud"
                    .SqlDbType = SqlDbType.NVarChar
                    .Direction = ParameterDirection.Input
                    .Value = latitud
                     .Size = tamaño
                End With


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos


    • Editado Sergio Parra martes, 24 de febrero de 2015 17:25
    • Marcado como respuesta Aprendiz_Chile martes, 24 de febrero de 2015 17:59
    martes, 24 de febrero de 2015 17:23
  • muchas gracias. esta a sido la solución.

    Dios los bendiga!.


    Saludos desde Chile.

    martes, 24 de febrero de 2015 18:00