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

Error al recuperar autonumerico recien insertado

Estas en el tema de Error al recuperar autonumerico recien insertado en el foro de ASP Clásico en Foros del Web. Recibo un error al intentar recuperar un autonumerico que acabo de insertar en al sentencia anterior. LEs posteo mi codigo Código: insertdestacada="INSERT INTO Empresas_destacadas(url, ruta_logo, ...
  #1 (permalink)  
Antiguo 24/10/2006, 05:30
yz!
Invitado
 
Mensajes: n/a
Puntos:
Error al recuperar autonumerico recien insertado

Recibo un error al intentar recuperar un autonumerico que acabo de insertar en al sentencia anterior. LEs posteo mi codigo

Código:
insertdestacada="INSERT INTO Empresas_destacadas(url, ruta_logo, principal, id_empresa) "&_
                    "VALUES('/microsites/index.asp', '/imagenes/minilogos/"& nombre &"', 1, "& id_empresa &");"&_
                    " SELECT @@identity FROM Empresas_destacadas AS autodestacada"
                rs.Open insertdestacada, cn
                
                id_destacada = rs("autodestacada")
Saltandome un error en esta última línea:

ADODB.Recordset error '800a0cc1'
No se encontró el elemento en la colección que corresponde con el nombre o el ordinal pedido.


Les doy más datos:


El recordset estaba cerrado antes de hacer el insert into si no, no me lo aceptaba. Estoy trabajndo sobre el desarrollo de otros, y no deberia cambiar la forma de trabajo en exceso.


¿Saben que puede estar pasando? Porque parece que la sentencia sql se ejecuta adecuadamente.
  #2 (permalink)  
Antiguo 24/10/2006, 06:24
Avatar de sagutxo  
Fecha de Ingreso: octubre-2006
Mensajes: 78
Antigüedad: 17 años, 8 meses
Puntos: 0
Salu2. Por el mensaje de error diría que no encuentra un campo de tabla.

No se encontró el elemento en la colección que corresponde con el nombre o el ordinal pedido.

Aunke supongo que ya lo has hecho le daría un repasito y contrastaría.

Suerte.
  #3 (permalink)  
Antiguo 24/10/2006, 07:43
yz!
Invitado
 
Mensajes: n/a
Puntos:
Autodestacada no es un campo que exista en mi base de datos. Pero si no me equivoco es una expresion que se le asigna al @@identity. Aunque no estoy muy seguro por que es la primera vez que lo utilizo.
  #4 (permalink)  
Antiguo 24/10/2006, 07:52
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 6 meses
Puntos: 144
Supongo que es por esta línea:
Código:
id_destacada = rs("autodestacada")
Prueba a ponerla antes de cerrar el recordset.
  #5 (permalink)  
Antiguo 24/10/2006, 07:56
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
ya probaste asi : ??

" SELECT @@identity AS autodestacada FROM Empresas_destacadas "
  #6 (permalink)  
Antiguo 24/10/2006, 08:16
yz!
Invitado
 
Mensajes: n/a
Puntos:
3 pies justo abro el recordset cuando hago la llamada sql:
rs.open insertdestacada, cn

Si probe orahro y nada de nada.

Les puedo dar más datos: el insert into funciona perfectamente.
  #7 (permalink)  
Antiguo 24/10/2006, 08:33
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
Aclarame una duda En realidad tienes un campo identidad en tu base de datos ??? este campo id_empresa tu no lo deberias de asignar o si ?

Última edición por orharo2003; 24/10/2006 a las 08:40
  #8 (permalink)  
Antiguo 24/10/2006, 08:48
yz!
Invitado
 
Mensajes: n/a
Puntos:
Tengo un campo ID_DESTACADA en la tabla Empresas_destacadas. Es un campo identidad (además de clave principal) a la que no tengo que ingresar ningun dato ya que lo rellena SQL Server, por si mismo.

id_empresa en esta tabla es un campo de tipo int y tamaño 4
  #9 (permalink)  
Antiguo 24/10/2006, 08:53
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
No me habia percatado de q lo estas ejecutando en una sola linea todo, por q no lo intentas asi :

insertdestacada=" SELECT @@identity AS autodestacada FROM Empresas_destacadas "

rs.Open insertdestacada, cn

o la otra sería usar NextRecordSet()

Última edición por orharo2003; 24/10/2006 a las 09:04
  #10 (permalink)  
Antiguo 24/10/2006, 09:17
yz!
Invitado
 
Mensajes: n/a
Puntos:
Ok. Ahora que lo separado continua la ejecución y no falla, me vuelve a dar un error, unas lineas mas adelante en el codigo, cuando intento utilizar el identificador recien insertado.

He hecho una prueba para ver que me devolvia ese id_destacada=rs("autodestacada") y viene vacio.

¿Alguna sugerencia?
  #11 (permalink)  
Antiguo 24/10/2006, 09:37
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
¿ que error te marca ? Cómo te quedo el código ?
  #12 (permalink)  
Antiguo 24/10/2006, 09:43
yz!
Invitado
 
Mensajes: n/a
Puntos:
Código:
dim insertdestacada
insertdestacada="INSERT INTO Empresas_destacadas(url, ruta_logo, principal, id_empresa) "&_
       "VALUES('/microsites/index.asp', '/imagenes/minilogos/minilogo_"& nombre &".gif', 1, "& id_empresa &")"
rs.Open insertdestacada, cn
rs.Open "SELECT @@identity AS autodestacada FROM Empresas_destacadas", cn
        
id_destacada = rs("autodestacada") %>

<script language="javascript">alert("<%=id_destacada%>");</script>

<% rs.close
        
     insertmicroweb="INSERT INTO Microwebs(Id_destacada, Tipo, NombreEmpresa, Id_empresa) "&_
         "VALUES("& id_destacada &", 1, '"& nombre &"', "& id_empresa &")"
     rs.Open insertmicroweb, cn
Saltandome en esta ultima linea el error:
Microsoft OLE DB Provider for SQL Server error '80040e14'
Línea 1: sintaxis incorrecta cerca de ','.
  #13 (permalink)  
Antiguo 24/10/2006, 10:42
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Varias cosas a considerar:

1. Base de datos
2. Tipo de conexion: @@identity solo puede ser utilizada con OLEDB si no me equivoco.
3. Puedes utilizar NextRecordset como ya te dijo orharo[Hola]

Si usas SQL puedes hacer todo esto en una misma expresion:

Código:
sql = "INSERT INTO tabla VALUES(1,2,3); DECLARE @ident int; " & _
"SET @ident = @@IDENTITY; INSERT INTO tabla2 VALUES(@ident, valor, valor);" & _
" SELECT @@IDENTITY as nuevo_id_tabla2;"


Set cmd = Server.CreateObject("ADODB.Command")
Set ObjConn = Server.CreateObject("ADODB.Connection")
ObjConn.Open strConnect 'el string de conexion
cmd.ActiveConnection = ObjConn
Set rs = cmd.Execute.NextRecordset()
Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #14 (permalink)  
Antiguo 25/10/2006, 02:10
yz!
Invitado
 
Mensajes: n/a
Puntos:
Ok. Me fue perfecto. Cambie un poco la sentencia sql como me dijiste y no hubo ninguna problema, incluso reduje las lineas de codigo que siempre se agradece.

Muchas gracias a todos por sus aportes. ¿Que haria yo sin ustedes? .
  #15 (permalink)  
Antiguo 26/04/2009, 09:07
 
Fecha de Ingreso: abril-2009
Mensajes: 10
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Error al recuperar autonumerico recien insertado

Hola!!! les comento que estoy realizando un sitio en asp de publicación de inmuebles y una vez que tengo publicado el inmueble al querer modificar los datos de pblicacion me sale el error "Título:
ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal.

/tesix2/includes/formCampoE.asp, line 30

En la línea 30 de ese archivo tengo el siguiente código:

<td width="456"><input name="titulo" type="text" id="titulo" style="width:300px;" value="<%= rs.fields("titulo")%>"/></td>.

Alguien podría ayudarme porque esa misma linea en otro formulario me funciona perfecto.
  #16 (permalink)  
Antiguo 26/04/2009, 12:40
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 9 meses
Puntos: 16
Respuesta: Error al recuperar autonumerico recien insertado

la aplicacion se te esta cayendo debido a que mandas a imprimir a pantalla un campo que no existe
  #17 (permalink)  
Antiguo 26/04/2009, 13:04
 
Fecha de Ingreso: abril-2009
Mensajes: 10
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Error al recuperar autonumerico recien insertado

Gracias por contestar!!! el tema que el campo existe, es mas en todos los formularios se llama de la misma forma, en uno de los formularios me funciona perfectamente. Que puede ser?
  #18 (permalink)  
Antiguo 26/04/2009, 13:21
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: Error al recuperar autonumerico recien insertado

Hola

Cita:
Iniciado por marcelorullan Ver Mensaje
Gracias por contestar!!! el tema que el campo existe, es mas en todos los formularios se llama de la misma forma, en uno de los formularios me funciona perfectamente. Que puede ser?
Arreglo a tu respuesta, no se si has entendido lo que te comentaba Muzztein, el campo al que mandas a llamar, en este caso titulo, no existe en tu tabla

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #19 (permalink)  
Antiguo 26/04/2009, 13:34
 
Fecha de Ingreso: abril-2009
Mensajes: 10
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Error al recuperar autonumerico recien insertado

Hola!!! gracias por aclarar, he entendido la respuesta pero existe ese campo en mi base de datos. Pasa que tengo varios formularios para la publicacion de inmuebles (casa, depto, local, etc) en donde el campo titulo por ejemplo en el formulario casa me funciona a la perfeccion, cuando coloco el mismo codigo en los otros me sale ese error. Prefieres que adjunte los archivos para que lo veas mejor?
Gracias.
  #20 (permalink)  
Antiguo 26/04/2009, 18:42
 
Fecha de Ingreso: abril-2009
Mensajes: 10
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Error al recuperar autonumerico recien insertado

ya solucione el tema, era porque en los archivos no abría la base para consultar por ese campo, que pelo............
Gracias por contestar.
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:57.