Foros del Web » Programando para Internet » ASPX (.net) »

Recuperar id insertada en base de datos

Estas en el tema de Recuperar id insertada en base de datos en el foro de ASPX (.net) en Foros del Web. Buenos dias, Tengo la siguiente sentencia SQL en code behind: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código ASP: Ver original Dim cmd As New SqlCommand ( "INSERT INTO [Etapas] ...
  #1 (permalink)  
Antiguo 27/01/2010, 04:48
 
Fecha de Ingreso: marzo-2009
Mensajes: 76
Antigüedad: 15 años, 1 mes
Puntos: 0
Recuperar id insertada en base de datos

Buenos dias,

Tengo la siguiente sentencia SQL en code behind:

Código ASP:
Ver original
  1. Dim cmd As New SqlCommand("INSERT INTO [Etapas] ([proyecto], [descripcion], [finalizado]) VALUES (@proyecto, @descripcion, @finalizado); SELECT @claveEtapa = @@IDENTITY", cnn)
  2.                 cnn.Open()
  3.                
  4.                 Dim idEtapa As String = ""
  5.                 With cmd
  6.                     .Parameters.AddWithValue("@proyecto", CType(proyecto, Integer))
  7.                     .Parameters.AddWithValue("@descripcion", descripcion)
  8.                     .Parameters.AddWithValue("@finalizado", 0)
  9.                     .ExecuteNonQuery()
  10.                 End With

Como podeis ver, quiero recuperar el id de la etapa nada más crearla. He probado
Código ASP:
Ver original
  1. idEtapa = .ExecuteNonQuery()

Pero me dice que tengo que declarar la variable antes de ejecutar el insert, sino devuelve error.

Lo hago en otros casos con datasources en la propia vista .aspx, pero esta vez necesito recuperarlo únicamente en code behind.

Como deberia hacerse?

Muchas gracias.
Saludos.
  #2 (permalink)  
Antiguo 27/01/2010, 06:30
 
Fecha de Ingreso: febrero-2009
Mensajes: 472
Antigüedad: 15 años, 2 meses
Puntos: 14
Respuesta: Recuperar id insertada en base de datos

Podrias hacer un procedimiento almacenado en la base de datos y que hagas esta consulta que tu dices mas una consulta de seleccion "SELECT", de tal modo que si haces un select top 1 (por ejemplo) cogerias el primer elemento que hay en la tabla de la base de datos, es decir el ultimo insertado. Se que es una solucion un poco chapucera.... pero es la unica que se me ocurre.

Un saludo
Pinty
  #3 (permalink)  
Antiguo 28/01/2010, 14:07
 
Fecha de Ingreso: enero-2006
Mensajes: 293
Antigüedad: 18 años, 3 meses
Puntos: 4
Sonrisa Respuesta: Recuperar id insertada en base de datos

Para empezar, cambia tu query:

Dim cmd As New SqlCommand("INSERT INTO [Etapas] ([proyecto], [descripcion], [finalizado]) VALUES (@proyecto, @descripcion, @finalizado); SELECT @@IDENTITY", cnn)

No es necesario que pases el valor @@IDENTITY a una variable... y menos si la variable no fue declarada

Despues, cuando lo ejecutes no usese ExecuteNonQuery()...

Este método, ejecuta la sentencia, sin regresar valor.. (o creo que regresa el numero de registros afectados o algo asi)..

En su lugar, usa ExecuteScalar()

Con este método ejecutas tu query, y regresa la primer columna del primer registro del SELECT que estes ejecutando. En tu caso "Select @@IDENTITY".. te regresara el valor del ID insertado.
  #4 (permalink)  
Antiguo 28/01/2010, 18:06
 
Fecha de Ingreso: febrero-2009
Mensajes: 472
Antigüedad: 15 años, 2 meses
Puntos: 14
Respuesta: Recuperar id insertada en base de datos

Pido disculpas a los dos. No me habia fijado bien en el codigo y no me habia dado cuenta del problema con la cadena. Me centre en la duda en si y no me fije muy bien en el resto. Pido disculpas.

Un saludo
Pinty

Etiquetas: recuperar, aspx
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




La zona horaria es GMT -6. Ahora son las 20:35.