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

Más sobre el error '80020009'

Estas en el tema de Más sobre el error '80020009' en el foro de ASP Clásico en Foros del Web. Buenas a todos, estoy arreglando una página web, pasándola a ASP, y me he encontrado con un error que no me da ninguna explicación: error ...
  #1 (permalink)  
Antiguo 23/09/2003, 01:51
 
Fecha de Ingreso: septiembre-2003
Mensajes: 2
Antigüedad: 21 años, 7 meses
Puntos: 0
Más sobre el error '80020009'

Buenas a todos,
estoy arreglando una página web, pasándola a ASP, y me he encontrado con un error que no me da ninguna explicación: error '80020009'.
En el código lo que hago es leer de una base de datos el nombre de unos ficheros de imagenes, gifs o jpg, para mostrar estas imágenes en la página.
El caso es que entro en un bucle, y me lee bien al principio, pero al intentar salir del bucle me da ese fallo.

set rsima = Server.CreateObject("ADODB.Recordset")
rsima.open "select * from imagenes where Idioma = 'es' and Codigo_Seccion = 7 order by Pos_imagen DESC", conn
if not rsima.eof then
rsima.movefirst
if not rsima.eof then
>> while (rsima("Pos_imagen") = "Arriba" and not rsima.eof)
response.write "<img src='bd/" & rsima("fichero") & "'><br>"
rsima.movenext
wend
end if
end if

Me da el fallo en el while. Además que no hace bien la condición. Creo que no hago bien la condición, pero es que no le veo donde está el fallo.

Gracias
  #2 (permalink)  
Antiguo 23/09/2003, 02:01
Avatar de nazkatuta  
Fecha de Ingreso: julio-2002
Ubicación: EH - BCN
Mensajes: 222
Antigüedad: 22 años, 8 meses
Puntos: 0
Hola

yo diria que el error te viene de poner una lectura al recordset como condicion para el while...

quita rsima("Pos_imagen") = "Arriba" y mete la condicion dentro del bucle, ya que si no al llegar al final del recordset intentará seguir leyendo.

suerte.
__________________
Cita:
Gaur ere nahi nuke...
zure ondoan esnatu
  #3 (permalink)  
Antiguo 23/09/2003, 02:25
 
Fecha de Ingreso: septiembre-2003
Mensajes: 2
Antigüedad: 21 años, 7 meses
Puntos: 0
Tooooda la razón

Lo del título, que tenías razón, intentaba entrar en un campo cuando llegaba al final del recordset y petaba.
Mila ezker
  #4 (permalink)  
Antiguo 26/03/2007, 11:50
 
Fecha de Ingreso: marzo-2007
Mensajes: 8
Antigüedad: 18 años, 1 mes
Puntos: 0
Re: Más sobre el error '80020009'

Que tal

Agrege una nueva fila a una tabla ya existente, le agrege las variables necesarias y el registro del nuevo valor en la base de datos. Pero algo me falta por que me aparece el error '80020009' .

el error me aparece en la siguiente linea

if isnull(RS_24.fields("valor_tool")) or RS_24.fields("valor_tool")="" then

el codigo completo de la fila es el siguiente:

<%
SQL_24="select * from IPlanta_EWP where ID_tool='24' AND ID_EWP='"&idEWP&"'"
set RS_24 = con.Execute(SQL_24)
lcos1=request.Form("checkbox24")
' response.Write()
if lcos1<>"" AND lcos="" then
lcos="0"
else
if isnull(RS_24.fields("valor_tool")) or RS_24.fields("valor_tool")="" then
lcos=lcos
else
lcos=RS_24.fields("valor_tool")
end if
end if
%>
<select name="lcos" class="input" id="lcos" style="FONT-FAMILY: verdana; font-size:xx-small;" onchange="cambio('tabla.asp','lcos');">
<option><%=lcos%></option>
<option></option>
<option>0</option>
<option>50</option>
<option>100</option>
</select>
<strong> %</strong>
</div></td>
<td class="style4"><div align="center"></div></td>
<td class="style4"><div align="center"></div></td>
<td height="21"><div align="center"></div></td>
<td width="1%" bordercolor="#FFFFFF" bgcolor="#FFFFFF" class="style4"><div align="center"><strong>
<label>
<%
if lcos<>"" then
lcos=lcos
else
lcos=0
end if
%>
<input name="z" type="hidden" class="input" id="z" value="<%=lcos%>" size="4" readonly="true"/>
</label>
</strong></div></td>
<td class="style4"><div align="center">
<label>
<%
if isnull(rs_24.fields("valor_tool")) or rs_24.fields("valor_tool")="" then
%>
<input name="checkbox24" type="checkbox" class="input" value="<%=rs_24.fields("id_tool")%>" onclick="cambio('tabla.asp','checkbox24')"/>
<% else %>
<input name="checkbox24" type="checkbox" class="input" value="<%=rs_24.fields("id_tool")%>" checked="checked" />

<% end if %>
</label>
</div></td>
<td class="style4"><input name="R24 type="text" class="input" id="R24" value="<%=rs_24.fields("responsable")%>" onblur="cambio('tabla.asp','R24')"/></td>
</tr>

Gracias
  #5 (permalink)  
Antiguo 27/03/2007, 13:01
Avatar de CésarBalaguer  
Fecha de Ingreso: octubre-2006
Ubicación: en mi casa
Mensajes: 181
Antigüedad: 18 años, 6 meses
Puntos: 0
Re: Más sobre el error '80020009'

if isnull(RS_24.fields("valor_tool")) or RS_24.fields("valor_tool")="" then


el error puede deberse a tu condiciòn doble, es decir, preguntas si es null o si esta en blanco, cuando tu rutina llega a esa pregunta con un valor para RS_24.fields("valor_tool") de NULL la segunda condiciòn va a caer porque estas comparando un valor NULL con una cadena vacìa, el que hayas hecho una pregunta separada por el OR no indica que si una se cumple la otra no se evalùa, siempre se van a evaluar todas las condiciones, indistintamente como las enlaces (OR o AND)

Ahì tienes dos opciones para corregirlo.
La primera de ellas es incluyendo en tu WHERE la condicion que RS_24.fields("valor_tool") no sea NULL
La segunda haciendo dos if de pregunta, el primero como NULL y el segundo como cadena vacìa, pero por separado con un OR sino independiente una de otra (quizà la de cadena vacìa dentro del else del NULL)

particularmente yo me inclinarìa por la primera, incluir la condiciòn en el WHERE del query.


un dato adicional, no hagas "SELECT * FROM ", te recomiendo enumerar cada uno de los campos de la tabla que vas a utilizar, el motivo es porque estas afectando directamente al performance de tu programa, el motor de base de datos interpreta de una manera un SELECT * y de otra muy diferente cuando mencionas campo por campo y ùnicamente los que utilizaras, recuerda que el resultado lo lleva a memoria y ahi estas almacenando informaciòn de longitud "X" que no vas a utilizar, estas demandando recursos sin motivos y por ende hace mas lento tu aplicativo, ademàs que para el motor de base de datos es mas simple para un tema de estadìsticas de uso y aplicaciòn de indices.

espero haberte ayudado.
  #6 (permalink)  
Antiguo 27/03/2007, 13:11
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Re: Más sobre el error '80020009'

Cita:
el error puede deberse a tu condiciòn doble, es decir, preguntas si es null o si esta en blanco, cuando tu rutina llega a esa pregunta con un valor para RS_24.fields("valor_tool") de NULL la segunda condiciòn va a caer porque estas comparando un valor NULL con una cadena vacìa, el que hayas hecho una pregunta separada por el OR no indica que si una se cumple la otra no se evalùa, siempre se van a evaluar todas las condiciones, indistintamente como las enlaces (OR o AND)
Buen hallazgo en VB las condiciones no se ejecutan por corto circuito.

Otra alternativa es

if rs("campo") & "" = "" then
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #7 (permalink)  
Antiguo 28/03/2007, 12:28
 
Fecha de Ingreso: marzo-2007
Mensajes: 8
Antigüedad: 18 años, 1 mes
Puntos: 0
Sonrisa Re: Más sobre el error '80020009'

Gracias por su respuesta, si me funcionó, pero el problema es que estaba modificando una página ya existente, y agrege una nueva variable (el codigo que les mande. Pero antes de agregar esta nueva variable no marcaba estos errores y las filas anteriores tienen el mismo codigo con las condicionantes y los OR.

Como apenas estoy empezando por eso les preguntaba si a lo mejor no habia declarado algo, segun yo agrege lo necesario en BD. Si tienen alguna teoria avisenme.

Gracias por sus respuestas.
  #8 (permalink)  
Antiguo 28/03/2007, 16:51
Avatar de CésarBalaguer  
Fecha de Ingreso: octubre-2006
Ubicación: en mi casa
Mensajes: 181
Antigüedad: 18 años, 6 meses
Puntos: 0
Re: Más sobre el error '80020009'

para resoponder eso habrìa que saber si las consultas que ya habìan en ese ASP antes de tu modificaciòn son a las mismas tablas a las que tu estas consultando, y si las columnas de evaluaciòn son las mismas
pueda darse el caso que no haya habido un valor NULL en las columnas de evaluaciòn.
  #9 (permalink)  
Antiguo 04/04/2007, 16:03
 
Fecha de Ingreso: marzo-2007
Mensajes: 8
Antigüedad: 18 años, 1 mes
Puntos: 0
Re: Más sobre el error '80020009'

Cita:
Iniciado por CésarBalaguer Ver Mensaje
para resoponder eso habrìa que saber si las consultas que ya habìan en ese ASP antes de tu modificaciòn son a las mismas tablas a las que tu estas consultando, y si las columnas de evaluaciòn son las mismas
pueda darse el caso que no haya habido un valor NULL en las columnas de evaluaciòn.
Hola gracias por la respuesta:

Estuve analizando a donde se guardaban los datos, y el error me lo marca cuando se abre un registro ya existente, es decir buscando en la tabla no aparecen los datos de la nueva fila que agrege.

Si en la tabla agrego el registro de mi fila, ya no me marca el error, pero estar buscando todos los registros anteriores a mi modificación estaría muy loco.

Donde puedo colocar la condicion para evitar dicho error

Espero disculpen mi inexperiencia.

Gracias

Yanelli
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 06:37.