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

sacarl Id despues d einsertar un elemento

Estas en el tema de sacarl Id despues d einsertar un elemento en el foro de ASPX (.net) en Foros del Web. hola como estan, tengo una función en asp net que inserta una serie de elementos en una tabla, esta tabla tiene un id autonumerico, basicamente ...
  #1 (permalink)  
Antiguo 09/02/2006, 11:08
 
Fecha de Ingreso: enero-2004
Ubicación: Tierra
Mensajes: 47
Antigüedad: 20 años, 3 meses
Puntos: 0
sacarl Id despues d einsertar un elemento

hola como estan, tengo una función en asp net que inserta una serie de elementos en una tabla, esta tabla tiene un id autonumerico, basicamente uso lo siguiente
Dim conn As New SqlConnection(ConfigurationSettings.AppSettings("C onnectionString"))
Dim MyCommand As SqlCommand
Dim InsertCmd As String = "insert into " + Trim(ntabla("captura")) + " (division,nombre_exp, a_asesoria,mes,vmes,año, observaciones,id_actividad,id_registro) values (@division, @nombre_exp, @a_asesoria,@mes,@vmes,@año,@observaciones,@id_act ividad,@id_registro)"
Dim nom As String
nom = InsertCmd
MyCommand = New SqlCommand(InsertCmd, conn)
MyCommand.Parameters.Add(New SqlParameter("@division", SqlDbType.Int))
..
..
..
MyCommand.ExecuteNonQuery()
ahora.. como le hago para saber cual es el id correspondiente al elemento que aacabo de insretar, me dicen que es con @@identity, pero donde pongo la instrucción?????
o tengo que hacer nuevamente una consulta, anteriormemte ya lo habia hecho pero era con un procedimiento almacenado y slo le ponia que me devolviera el id, pero nunca lo he hecho con una inserción directa, no se como tomar el id que se le asignó.
alguien me puede hechar una mano???
Gracias
  #2 (permalink)  
Antiguo 09/02/2006, 11:20
 
Fecha de Ingreso: marzo-2003
Mensajes: 85
Antigüedad: 21 años, 1 mes
Puntos: 1
Hola cosmeoa,

lo único que tienes que hacer es después de ejecutar tú consulta de insercción, hacer una nueva consulta para saber el identity, de la siguiente forma:

MyCommand.ExecuteNonQuery()
MyCommand.CommandText = "Select @@Identity"
Dim NuevoID as int32
NuevoID = CType(sqlID.ExecuteScalar(), Int32)


Espero que te funcione, yo lo tengo usado así en montones de sitios.

Un saludo
  #3 (permalink)  
Antiguo 09/02/2006, 11:28
 
Fecha de Ingreso: enero-2004
Ubicación: Tierra
Mensajes: 47
Antigüedad: 20 años, 3 meses
Puntos: 0
gracias

muchas gracias, me funciono muy bien
Saludos
  #4 (permalink)  
Antiguo 10/02/2006, 05:20
 
Fecha de Ingreso: noviembre-2005
Mensajes: 129
Antigüedad: 18 años, 5 meses
Puntos: 0
Otra forma es que después de tu instrucción "INSERT INTO tabla ().....VALUES();" pongas RETURN @@IDENTITY; y lo agarres como parámetro de regreso en en tu CommandBuilder
  #5 (permalink)  
Antiguo 10/02/2006, 06:19
 
Fecha de Ingreso: noviembre-2004
Ubicación: Asuncion - Paraguay
Mensajes: 155
Antigüedad: 19 años, 5 meses
Puntos: 0
Una consulta si ocurren dos inserciones al mismo tiempo no puede ocurrir el caso de que se recupere el ID de otra insercion???
  #6 (permalink)  
Antiguo 10/02/2006, 06:35
 
Fecha de Ingreso: marzo-2003
Mensajes: 85
Antigüedad: 21 años, 1 mes
Puntos: 1
Pues, según creo, teóricamente sí que se podría dar ese caso (sobretodo haciéndolo como indicaba yo más arriba, creo que la opción de 9.jorge puede ser incluso mejor) pero estás hablando de tiempos de respuesta muy rápidos (de millonésimas de segundo), sobretodo en esa segunda opción, lo cual hace casi imposible que se puedan producir dos insercciones antes de que se devuelva el @@Identity.
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 21:04.