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

Que me sugieren?

Estas en el tema de Que me sugieren? en el foro de ASP Clásico en Foros del Web. Hola amigos. Necesito sacar el ID de un itm recien insertado a un BD, alguien me sugirio hacer una sesion y entonces extraer el Id ...
  #1 (permalink)  
Antiguo 27/04/2002, 15:22
 
Fecha de Ingreso: enero-2002
Ubicación: Perez Zeledon Costa Rica
Mensajes: 1.009
Antigüedad: 22 años, 5 meses
Puntos: 11
Que me sugieren?

Hola amigos.
Necesito sacar el ID de un itm recien insertado a un BD, alguien me sugirio hacer una sesion y entonces extraer el Id del Item diciendo
Session("id_imagen")=rs.Fields(ItemID)

y luego
ID=Session("id_imagen")

Pero prefiero no usar sesiones por que puede ser que algun cliente tenga las cooquies desactivadas, ademas me pregunto que pasa si un mismo cliente en una misma sesion inserta dos o mas items.
Entonces otro me sugirio hacer un
select max(ItemId) from auctions de modo que halo el item que tiene el mayor ID de todos, y es de esperar que el Item que este cliente inserte sea el de MAyor ID, de modo que parece que va a funionar, Qué les parece?
El problema ahora es que luego de insertar hago esto:
Call OpenDBConn

Set GobjConnect = server.createobject("ADODB.Connection")
GobjConnect.open gsConnect

FSQL = FSQL & "select max(ItemId) from auctions"
Set OBJJrs = GobjConnect.Execute(FSQL)
Response.Write objjRS.Fields("ItemID")

ObjjRS.close
set objjrs=nothing


Y me da este error:
ADODB.Fields error '800a0cc1'

ADO could not find the object in the collection corresponding to the name or ordinal reference requested by the application.

/ASP/RealState3/basura1.asp, line 34

y en la linea 34 lo que hay es:
Response.Write OBJJrs.Fields("ItemID")


Y el item existe y el campo
ItemID también existe.
Donde esta el problema? :( :(


  #2 (permalink)  
Antiguo 27/04/2002, 17:54
 
Fecha de Ingreso: abril-2002
Mensajes: 438
Antigüedad: 22 años, 1 mes
Puntos: 2
Re: Que me sugieren?

En principio el código parece OK, es decir, no veo donde está el error, pero hay una manera mucho más elegante de hacerlo en mi opinión y es trabajando con el motor de cursor de ADO y la propiedad del Recordset "update resync".
- Haces un select de la tabla con los campos que vayas a actualizar más el que es de autoincremento
- La propiedad "Update Resync" de la colección properties del Recordset la estableces a adResyncAutoIncrement. Es decir, nombre_recordset.Properties("Update Resync") = adResyncAutoIncrement
- Llamas a addNew: nombre_recordset.addNew
- Estableces los campos con los valores
- Haces el update del recordset
- Es de esperar que tras este proceso en el campo autoincremento del recordset tengas el valor autonumérico del registro que acabas de insertar.

Pruébalo e investiga un poquillo, pero el tema va por ahí, yo al menos así lo hago cuando alguna vez lo he tenido que hacer (si el proveedor me deja).

Un saludo.
  #3 (permalink)  
Antiguo 27/04/2002, 18:00
 
Fecha de Ingreso: abril-2002
Mensajes: 438
Antigüedad: 22 años, 1 mes
Puntos: 2
Re: Que me sugieren?

Se me olvidaba, asegúrate de abrir el recordset con un cursor de extremo cliente para poder usar el motor de ado, es decir:
nombre_recorset.cursorLocation=adUseClient
de otra manera no te rulará ya que por defecto lo establece a adUseServer.
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:33.