none
Analisis de trasa RRS feed

  • Pregunta

  • Hola.

    Tengo estas capturas de pantallas que muestran la ejecución de dos instrucciones sql desde mi código vb.net. 

    No comprendo mucho de las trazas, soy nuevo en esto, pero me inquieta las N que veo puestas a discreción.

    Me pueden indicar qué significan?

    Gracias.

    domingo, 28 de octubre de 2018 14:43

Respuestas

  • Hola Formulaz5:

    Pero eso solo lo sabes tu y SQL server.

    Tu código, lo único que hace es enviar, valores.

    El sql server con lo que le llega, que es lo que tu ves, lo que hace es una conversión implícita, pasa de nvarchar a varchar o el tipo de dato que le corresponde.

    Si no lo quieres ver, puedes probar con esto.

    Agregar.Parameters.Add("@factura", System.Data.SqlDbType.VarChar).Value = @factura;

    donde se le declara explícitamente los tipos de parámetros, y su concordancia con los tipos SQL.
    lunes, 29 de octubre de 2018 6:14

Todas las respuestas

  • Hola Formulaz5:

    Las N que indicas, son porque contienen un tipo de dato definido como NVarchar.

    Tipos de datos

    https://docs.microsoft.com/es-es/sql/t-sql/data-types/data-types-transact-sql?view=sql-server-2017

    Diferencias entra char-varchar y nvarchar

    http://chancrovsky.blogspot.com/2014/04/otro-post-sobre-char-varchar-nchar.html


    domingo, 28 de octubre de 2018 17:05
  • Gracias Javi.

    El caso es, que conozco lo tipos de datos pero no he declarado ningún nvarchar ni en mi tabla ni en mi codigo. Incluso, al principio de la instruccion Insert aparece esa N. También en algunos campos que obviamente declare numericos(18-2), se muestran como N'1223' los datos para los mismos, aun haya tomado en cuenta el tipo de datos en los textboxs.

    Fijate en la estructura de la tabla mas pequeña.

    Como podras ver, estos estan de una forma y llegan de otra.

    Ahora te muestro el codigo que graba.

      Using connection As New SqlConnection(Conex)
                    Dim Agregar As SqlCommand = New SqlCommand("INSERT INTO DetallePed (codigo, factura, cantidad, precio, monto, itbis, costo)
     VALUES (@codigo, @factura, @cantidad, @precio, @monto, @itbis, @costo)", connection)
                    connection.Open()
      Agregar.Parameters.AddWithValue("@codigo", Convert.ToString(row.Cells(0).Value))
                        Agregar.Parameters.AddWithValue("@factura", TexNumero.EditValue)
                        Agregar.Parameters.AddWithValue("@cantidad", row.Cells(5).Value)
                        Agregar.Parameters.AddWithValue("@precio", row.Cells(3).Value)
                        Agregar.Parameters.AddWithValue("@itbis", row.Cells(4).Value)
                        Agregar.Parameters.AddWithValue("@monto", row.Cells(6).Value)
                        Agregar.Parameters.AddWithValue("@costo", ItemFactura.cos)
    
                        Agregar.ExecuteNonQuery()
    
                    Next
    
                End Using

    Lo saqué de un bucle For donde creo la variable row para acceder a los datos de la cuadricula.

    Uso controles devexpress 15.1

    vb.net

    vs2015

    sqlserver2012


    • Editado Formulaz5 lunes, 29 de octubre de 2018 1:07
    lunes, 29 de octubre de 2018 1:03
  • Hola Formulaz5:

    Pero eso solo lo sabes tu y SQL server.

    Tu código, lo único que hace es enviar, valores.

    El sql server con lo que le llega, que es lo que tu ves, lo que hace es una conversión implícita, pasa de nvarchar a varchar o el tipo de dato que le corresponde.

    Si no lo quieres ver, puedes probar con esto.

    Agregar.Parameters.Add("@factura", System.Data.SqlDbType.VarChar).Value = @factura;

    donde se le declara explícitamente los tipos de parámetros, y su concordancia con los tipos SQL.
    lunes, 29 de octubre de 2018 6:14
  • O sea, que no afecta. Si es así, no lo sabia.

    Muchas gracias Javi.

    lunes, 29 de octubre de 2018 20:50
  • De nada
    lunes, 29 de octubre de 2018 21:12