Foros del Web » Programando para Internet » ASP Clásico »

recuperar un valor despues de un update

Estas en el tema de recuperar un valor despues de un update en el foro de ASP Clásico en Foros del Web. hola a to2, no sé si estoy realizando de forma corecta la recuperación de un valor, vereis primero inserto en la bd de la siguiente ...
  #1 (permalink)  
Antiguo 20/06/2005, 04:57
 
Fecha de Ingreso: septiembre-2003
Mensajes: 341
Antigüedad: 21 años, 7 meses
Puntos: 0
recuperar un valor despues de un update

hola a to2,
no sé si estoy realizando de forma corecta la recuperación de un valor,
vereis primero inserto en la bd de la siguiente manera:
Código:
 SQL = "select * from Eval "
 RS.open SQL, conn, adOpenDynamic, adCmdTable
  RS.AddNew
   RS("eval_descrip") = Descrip
   RS("eval_fechainicial") = MostrarFechaDB(FInicio)
   RS("eval_fechaFinal")= MostrarFechaDB(FFin)   
  RS.Update
una vez insertado quiero recuperar el id del nuevo registro (que es un autonumerico),

lo que no estoy seguro es que si lo puedo recuperar sin volver a realizar otra consulta.
es decir de esta forma
Código:
 idEval = RS("IdEVal")
es correcto ¿?¿
__________________
---Nuestra recompensa se encuentra en el esfuerzo y no en el resultado. Un esfuerzo total es una victoria completa.-- GHANDI
  #2 (permalink)  
Antiguo 20/06/2005, 06:12
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 8 meses
Puntos: 18
con access? sql server?....

en sql server:
Código:
sql="INSERT INTO tabla...."
	conncarro.execute sql
	Set rsId = conncarro.Execute("SELECT @@IDENTITY") 
	nuevoId = rsId(0)

en access no sé si funciona, pruébalo...
  #3 (permalink)  
Antiguo 20/06/2005, 10:38
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 20 años, 1 mes
Puntos: 2
Hola

No estoy seguro, pero...

Intenta esto:

SQL = "select * from Eval "
RS.open SQL, conn, adOpenDynamic, adCmdTable
RS.AddNew

//Tal vez, como es autonumerico, ya se genero su DI y este campo ya existe.
newID = RS("ID_Campo")

RS("eval_descrip") = Descrip
RS("eval_fechainicial") = MostrarFechaDB(FInicio)
RS("eval_fechaFinal")= MostrarFechaDB(FFin)
RS.Update

Bueno, eso sería un método seguro de obtener ese dato, pero solo si es posible, lo cual nunca he probado.

Por otra parte, debes tener cuidado con lo que propone traguskabi, el problema es que está lanzando dos consultas separadas, lo cual da tiempo a que el insert se realize varias veces antes de hacer el select @@identity, lo cual puede provocar que te regrese un ID falso.

Para eso necesitas rutinas especiales como Store Procedures, o simplmente algun mecanismo que bloquee la tabla para que nadie pueda escribir antes de que tu hagas el select, como:

look table
inset into table
select @@identity
unlook table

Eso es más complicado, pero en SQL Server lo puedes hacer facil usando un Store Procedure y Trans, lo cual sería lo más seguro.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
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 08:09.