Principales respuestas
Analisis de trasa

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.
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.
donde se le declara explícitamente los tipos de parámetros, y su concordancia con los tipos SQL.Agregar.Parameters.Add("@factura", System.Data.SqlDbType.VarChar).Value = @factura;
- Marcado como respuesta Miguel Egea GómezMVP, Moderator martes, 11 de diciembre de 2018 7:55
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
- Editado Javi Fernández F domingo, 28 de octubre de 2018 17:06 Añadir link
-
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
-
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.
donde se le declara explícitamente los tipos de parámetros, y su concordancia con los tipos SQL.Agregar.Parameters.Add("@factura", System.Data.SqlDbType.VarChar).Value = @factura;
- Marcado como respuesta Miguel Egea GómezMVP, Moderator martes, 11 de diciembre de 2018 7:55
-
-