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

problemas recuperar autonumerico despues de insert

Estas en el tema de problemas recuperar autonumerico despues de insert en el foro de ASP Clásico en Foros del Web. hola de nuevo, realizo un insert corrrectamente en una tabla de la siguiente manera SQL = "insert tinto tabla (nombre,valor) values ('pe',12)" conn.execute SQL ahora ...
  #1 (permalink)  
Antiguo 11/08/2005, 04:56
 
Fecha de Ingreso: septiembre-2003
Mensajes: 341
Antigüedad: 20 años, 8 meses
Puntos: 0
problemas recuperar autonumerico despues de insert

hola de nuevo,
realizo un insert corrrectamente en una tabla de la siguiente manera
SQL = "insert tinto tabla (nombre,valor) values ('pe',12)"
conn.execute SQL

ahora quiero obtener el id autonumerico del campo que acabo de insertar para ello realizo lo siguiente
Set rsId = conn.Execute("SELECT @@IDENTITY")
response.write "identity-->"&rsId(0)&"<--<br>"
en teoria me deberia divolver el nuevo id , en cambio no me devulve nada
que estoy haciendo mal?
__________________
---Nuestra recompensa se encuentra en el esfuerzo y no en el resultado. Un esfuerzo total es una victoria completa.-- GHANDI
  #2 (permalink)  
Antiguo 11/08/2005, 05:06
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
en teoría si lo que estás usando es SQL Server...
  #3 (permalink)  
Antiguo 11/08/2005, 05:10
 
Fecha de Ingreso: septiembre-2003
Mensajes: 341
Antigüedad: 20 años, 8 meses
Puntos: 0
si estoy utilizando sql 7
antes de realizar el insert tengo otro insert donde obtengo el id automunerico.
es decir, antes de lo que he escrito tengo lo siguiente

SQL ="insert into tabla0 (usuario, curso) values ('pepe',3)"
conn.execute SQL
'obtengo el id de forma correcta
Set rsId1 = conn.Execute("SELECT @@IDENTITY")

luego ya realizo la SQL que he escrito anteriormente y es cuando no me devuleve nada......
__________________
---Nuestra recompensa se encuentra en el esfuerzo y no en el resultado. Un esfuerzo total es una victoria completa.-- GHANDI
  #4 (permalink)  
Antiguo 11/08/2005, 05:13
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
no entiendo. dices que haces dos SELECT @@IDENTITY? Si es eso , para qué?
  #5 (permalink)  
Antiguo 11/08/2005, 05:17
 
Fecha de Ingreso: septiembre-2003
Mensajes: 341
Antigüedad: 20 años, 8 meses
Puntos: 0
veras
primero inserto en una tabla : Tabla0
de esa tabla obtengo el identificador que acabo de insertar. Id0
luego realizo un bulce e inserto en otra tabla Tabla1 , uno de los valores de un campo es el Id0
de esta tabla necesito obtener el/los Id1..Id2.. etc que acabo de insertar
ummm.. no sé si me he explicado ahora mejor...
__________________
---Nuestra recompensa se encuentra en el esfuerzo y no en el resultado. Un esfuerzo total es una victoria completa.-- GHANDI
  #6 (permalink)  
Antiguo 11/08/2005, 08:15
Avatar de Mickel  
Fecha de Ingreso: mayo-2002
Ubicación: Lima, Peru
Mensajes: 4.619
Antigüedad: 22 años, 1 mes
Puntos: 7
por que no haces un Select MAX() del campo identity mejor?
__________________
No tengo firma ahora... :(
  #7 (permalink)  
Antiguo 11/08/2005, 08:41
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
entendido (creo)
algo asi como
INSERT....
IDENTITY...
FOR I=1 TO LOQUESEA
insert....
identity..
NEXT
Y donde no te recupera es dentro del bucle.

pues debería funcionar

la respuesta de mickel es otra opción
  #8 (permalink)  
Antiguo 12/08/2005, 00:49
 
Fecha de Ingreso: septiembre-2003
Mensajes: 341
Antigüedad: 20 años, 8 meses
Puntos: 0
Hola trasgukabi,
si , efectivamente tengo el esquema que indicas y es dentro del bucle donde no me devuelve el valor autonumerico..., me devuelve null..
he puesto dentro del bucle la solución que MIckel ha dicho pero tampoco me funciona...
Set rsId1 = conn.Execute("SELECT Max(@@IDENTITY)")

:(

Alguna idea de pq no me funciona correctamente?, tedré que ejecutar la sentencia con algun parametro especial en la base de datos?¿
__________________
---Nuestra recompensa se encuentra en el esfuerzo y no en el resultado. Un esfuerzo total es una victoria completa.-- GHANDI
  #9 (permalink)  
Antiguo 12/08/2005, 01:12
 
Fecha de Ingreso: septiembre-2003
Mensajes: 341
Antigüedad: 20 años, 8 meses
Puntos: 0
Hola, de nuevo yo,,,
he cambiado para que en lugar de realizar un insert de forma directa realizarlo a traves de un recordset.. es decir
SQL2 = "select ......"
RS2.open SQL2, conn, adOpenDynamic, AdLockOptimistic
rs2.AddNew
rs2("campo1")="lo que sea"
rs2("campo2")="lo que sea"
rs2.update
response.write rs2("id_Autonumerico")

En teoría deberia devolverme el valor automumerico del campo que acabo de insertar ...
pero no me lo devuelve...
:(
__________________
---Nuestra recompensa se encuentra en el esfuerzo y no en el resultado. Un esfuerzo total es una victoria completa.-- GHANDI
  #10 (permalink)  
Antiguo 12/08/2005, 10:32
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Trata esto:

Código:
<%
Set rs = conn.Execute("insert tinto tabla (nombre,valor) values ('pe',12); SELECT @@IDENTITY as nuevo_id")
response.write(rs("nuevo_id"))
%>
Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
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 23:43.