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

error con elemento de la colección

Estas en el tema de error con elemento de la colección en el foro de ASP Clásico en Foros del Web. Bueno, os cuento. El objetivo que tengo es obtener el valor máximo de la columna id, y este, incrementrale 1, para a la hora de ...
  #1 (permalink)  
Antiguo 08/06/2010, 11:54
 
Fecha de Ingreso: mayo-2010
Mensajes: 8
Antigüedad: 14 años
Puntos: 0
error con elemento de la colección

Bueno, os cuento. El objetivo que tengo es obtener el valor máximo de la columna id, y este, incrementrale 1, para a la hora de insertar en la BD, se realice como si fuera autonumerico.
Es decir si en la ultima inserción la id era 20, en la que haga, la id tendrá que ser 21.

Para esto hago lo siguiente: (es la consultaSQL2, rs2 y valor)

Código:
<body>
<%
   Set Conexion = Server.CreateObject("ADODB.Connection")
   Conexion.ConnectionString = "Data Source=xxxxxx; USER=xxxxxx; PASSWORD=xxxxx"
   Conexion.Mode = 3
   Conexion.Open   
   set vuelo = Request.QueryString("vuelo")
   ConsultaSQL = "select * from LISTA_VUELOS_PRECIO where Idvuelo=" & vuelo
   ConsultaSQL2= "SELECT MAX(IDRESERVA) AS ultimo FROM RESERVA"
   rs = Conexion.Execute(ConsultaSQL)
   rs2 = Conexion.Execute(ConsultaSQL)
   valor = rs2("ultimo") +1

%>
.
El problema es que intento realizarlo, pero me da el siguiente fallo:

Cita:
Tipo de error:
ADODB.Fields (0x800A0CC1)
No se encontró el elemento en la colección que corresponde con el nombre o el ordinal pedido.
/Aplicaciones/datosreserva.asp, línea 30
la liena 30 coincide con la que pone
valor = rs2("ultimo") +1

luego el valor lo pongo en un imput:

Código:
<input name="reserva2" type="text" value=<%=valor%>   size="3" maxlength="3" readonly="true" />
que no estoy seguro de si muestro correctamente dicha variable ("valor").

Alguien podria decirme en que estoy fallando?, o como se puede solucionar dicho problema? gracias

PD: por si sirve de algo, IDRESERVA es de tipo INTEGER, por lo que "creo! no habria problema a la hora de sumar valores del recordset y valores numéricos no?
  #2 (permalink)  
Antiguo 08/06/2010, 13:03
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: error con elemento de la colección

Hola

Asegúrate de que existe el campo ultimo en la 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;" />
  #3 (permalink)  
Antiguo 08/06/2010, 13:51
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Respuesta: error con elemento de la colección

Cita:
ConsultaSQL2= "SELECT MAX(IDRESERVA) AS ultimo FROM RESERVA"
rs = Conexion.Execute(ConsultaSQL)
rs2 = Conexion.Execute(ConsultaSQL)
Mas bien yo creo que querías en realidad ejecutar ConsultaSQL2 en lugar de ConsultaSQL en el recordSet2
  #4 (permalink)  
Antiguo 08/06/2010, 14:07
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: error con elemento de la colección

Cita:
Iniciado por Myakire Ver Mensaje
Mas bien yo creo que querías en realidad ejecutar ConsultaSQL2 en lugar de ConsultaSQL en el recordSet2
__________________
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;" />
  #5 (permalink)  
Antiguo 09/06/2010, 10:45
 
Fecha de Ingreso: mayo-2010
Mensajes: 8
Antigüedad: 14 años
Puntos: 0
Respuesta: error con elemento de la colección

Cita:
Mas bien yo creo que querías en realidad ejecutar ConsultaSQL2 en lugar de ConsultaSQL en el recordSet2
Pues si, ese era el fallo que tenia.. :P

hay que ver que fallo mas tonto.. es lo que tiene ir haciendo copypasteo para ahorrar

Muchas gracias!!
  #6 (permalink)  
Antiguo 10/06/2010, 03:38
 
Fecha de Ingreso: mayo-2010
Mensajes: 8
Antigüedad: 14 años
Puntos: 0
Respuesta: error con elemento de la colección

Seguimos con la batalla friends!!.

Alguien sabría indicarme que hacer, para que cuando hago la consulta (SQL2) del código anterior, si todavía no hay ningún dato en esa tabla, que me ponga un 1?
Actualmente si hay algún dato, añade 1 al máximo, pero si no hay ninguno, solo me deja basura.

Por lo que en el imput donde muestra el registro que se va a insertar, me muestra "basura", en este caso size="3". Y claro, no deja seguir porque evidentemente no se puede insertar eso..

Un saludo y gracias
  #7 (permalink)  
Antiguo 10/06/2010, 04:36
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: error con elemento de la colección

Hola

A ese campo ponle como valor predeterminado "0"

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;" />
  #8 (permalink)  
Antiguo 10/06/2010, 07:29
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Respuesta: error con elemento de la colección

Eso sirve para los valores nuevos, pero no actualiza los registros ya existentes

Casi todas las bases de datos tienen instrucciones para condicionar los valores nulos, si usas SQL Server, usa isNull.

Cita:
SELECT IsNull(MAX(IDRESERVA),0) AS ultimo FROM RESERVA
Incluso podrías sumarle el uno directamente en la consulta

Saludos
  #9 (permalink)  
Antiguo 10/06/2010, 08:14
 
Fecha de Ingreso: mayo-2010
Mensajes: 8
Antigüedad: 14 años
Puntos: 0
Respuesta: error con elemento de la colección

Gracias por las respuestas.

Cita:
Cita:
SELECT IsNull(MAX(IDRESERVA),0) AS ultimo FROM RESERVA
Uso EMS interbase junto al FireBird, y no me reconoce el ISNULL como instrucción correcta
Hay alguna "traducción" para este sistema? u otro modo de obtener el mismo resultado?

Gracias!!
  #10 (permalink)  
Antiguo 10/06/2010, 08:49
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Respuesta: error con elemento de la colección

para firebird tienes de forma nativa COALESCE (checa la documentación), pero igual si gustas puedes buscar un pack de UDF's libres que tiene la función NULLIF
  #11 (permalink)  
Antiguo 10/06/2010, 14:48
 
Fecha de Ingreso: mayo-2010
Mensajes: 8
Antigüedad: 14 años
Puntos: 0
Respuesta: error con elemento de la colección

Cita:
Iniciado por Myakire Ver Mensaje
para firebird tienes de forma nativa COALESCE (checa la documentación), pero igual si gustas puedes buscar un pack de UDF's libres que tiene la función NULLIF

Gracias, he probado esta funcion de coalesce

ConsultaSQL2= "SELECT coalesce(MAX(IDRESERVA),0) AS ultimo FROM RESERVA"
pero me da error y en el explorardor me devuelve esto (igual que con el isnull).

Cita:
Dynamic SQL Error SQL error code = -804 Function unknown COALESCE
Pues sigo, voy a seguir intentando.. a ver si alguien me ayuda a dar con al clave.

saludos
  #12 (permalink)  
Antiguo 10/06/2010, 15:23
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Respuesta: error con elemento de la colección

Entonces no estas usando firebird o estas usando una versión anterior a la 1.5, la cual es bastante vieja.

Si usas la versión 1.0, instala las UDF *NVL que están en la librería fbudf (debes de tenerla en el directorio de firebird)
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 19:22.