En la consulta de inserción
1)Insert1
1 2 3 4 5 |
INSERT INTO [dbo].[Provincia] ([Nombre], [idPais]) VALUES (@Nombre, @idPais); SELECT idProvincia, Nombre, idPais, iva, prefijoPostal FROM Provincia WHERE (idProvincia = SCOPE_IDENTITY()) |
2) O poner después de la consulta inserción este select ;SELECT SCOPE_IDENTITY()
1 2 3 4 |
INSERT INTO [dbo].[Provincia] ([Nombre], [idPais]) VALUES (@Nombre, @idPais); SELECT SCOPE_IDENTITY() |
Luego hay que modificar en las propiedades de la Consulta (Query) el modo de ejecución (ExecuteMode) cambiar NonQuery a Scalar
En modo NonQuery nos devolverá un entero, con el número de registros afectados, p.e, si hiciéramos un Update puede que nos resultase interesante saber cuantas filas han resultado afectadas.
En modo Scalar devuelve la primera columna de la primera fila del conjunto de resultados devuelto por la consulta. Las demás columnas o filas no se tienen en cuenta. En caso de fallar devuelve null. (En ambos casos devolverá la Primary Key de la tabla que es “idProvincia”);
El Código en C# para ejecutar la consulta y obtener la clave primaria es
1 2 3 4 5 |
var tablaProvincia= new DataSet1TableAdapters.ProvinciaTableAdapter(); var primary_Key = tablaProvincia.Insert1("Valencia", 70);//Devuelve 4451 var primary_Key2 = tablaProvincia.Insert2("Valencia", 70);//Devuelve 4452 |