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

horas y horas y no anda por queee

Estas en el tema de horas y horas y no anda por queee en el foro de ASP Clásico en Foros del Web. El problema es el siguiente cuando existe el registro buscado funciona 10 punto encuentra y trae la informacion , cuando no la encuentra es el ...
  #1 (permalink)  
Antiguo 27/03/2004, 18:17
(Desactivado)
 
Fecha de Ingreso: agosto-2002
Mensajes: 1.458
Antigüedad: 22 años, 9 meses
Puntos: 0
horas y horas y no anda por queee

El problema es el siguiente cuando existe el registro buscado funciona 10 punto encuentra y trae la informacion , cuando no la encuentra es el problema me pone :

ADODB.Recordset error '800a0bb9'

Argumentos incorrectos, fuera del intervalo permitido o en conflicto con otros.

/disco/busquedaequi/resultado5.asp, line 64


LA LINEA 64 ES ESTA : if RSBusqueda.bof=false and RSBusqueda.eof=false then




form name="form1" method="post" action="resultado5.asp">
<p>
<input type="text" name="textfield">
<input type="submit" name="Submit" value="Buscar">
</p>
<p align="left">&nbsp;</p>
</form>



</center>
</body>
</html>



<%
buscar = Request.Form("textfield")

if buscar <> "" then

TamPagina = 10

if Request.Querystring("pagina") = "" then
PaginaActual = 1
else
PaginaActual = CInt(Request.Querystring("pagina"))
end if

set oConn = Server.CreateObject("ADODB.Connection")
set RSBusqueda = Server.CreateObject("ADODB.Recordset")

oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=" & Server.MapPath("equivalencias.mdb") & ";"

sSQL = "SELECT ORIGINAL, MARCA, FAMEL FROM Equivalencias WHERE ORIGINAL LIKE '%"&buscar&"%'"

RSBusqueda.PageSize=TamPagina
RSBusqueda.CacheSize=TamPagina

RSBusqueda.Open sSQL, oConn, 1, 2

PaginasTotales = RSBusqueda.PageCount
Total = RSBusqueda.recordcount

if PaginaActual < 1 then
PaginaActual = 1
end if

if PaginaActual > PaginasTotales then
PaginaActual = PaginasTotales
end if

Tot = 0
RSBusqueda.AbsolutePage = PaginaActual
if RSBusqueda.bof=false and RSBusqueda.eof=false then
%>
<p><font face="Tahoma" size="2">No se ha encontrado nada en la Base de Datos</font></p>

<table width="100%" align="center" border="0" cellspacing="2" cellpadding="2">
<div align="center"><center>
<table border="1" cellpadding="0" cellspacing="0" width="100%" height="74" bordercolor="#C0C0C0">
<tr>
<td width="26%" height="19"> <p align="center"><strong><font face="Tahoma" size="2">Número
original</font></strong> </td>
<td width="41%" height="19"> <p align="center"><strong><font face="Tahoma" size="2">MARCA</font></strong></p></td>
<td width="33%" height="19"> <p align="center"><strong><font face="Tahoma" size="2">Número
en FAMEL</font></strong> </td>
</tr>
<%
while not RSBusqueda.eof and Tot < TamPagina
%>
<tr>
<td width="26%" bgcolor="#FFCC00" height="51"> <p align="center"><font face="Tahoma" size="2"> <%=(RSBusqueda("original"))%></font></td>
<td width="41%" bgcolor="#FFCC00" height="51"> <p align="center"><font face="Tahoma" size="2"> <%=(RSBusqueda("marca"))%></font></td>
<td width="33%" bgcolor="#FFCC00" height="51"> <p align="center"><font face="Tahoma" size="2"> <%=(RSBusqueda("famel"))%></font></td>
</tr>

<%
Tot = Tot + 1
RSBusqueda.movenext
wend
%>
</table>
<%
end if
%>

<br>

<table width="100%" border="0" cellspacing="2" cellpadding="2">
<tr>
<td>
<%
If PaginaActual > 1 Then
response.Write("<a href=""resultado.asp&pagina=" & PaginaActual - 1 & """>[&lt;&lt; Ant.]</a> ")
End If

For J = 1 To PaginasTotales
If J = PaginaActual Then
response.Write("<font Color=red><B> " & J & " </B></font>")
Else
response.Write("<a href=""resultado.asp&pagina=" & PaginaActual - 1 & """>" & J & "</a> ")
End If
Next

If PaginaActual < PaginasTotales Then
response.Write("<a href=""resultado.asp&pagina=" & PaginaActual - 1 & """>[Sig. &gt;&gt;]</a>")
End If
%>
</td>
</tr>
</table>

<%
else
response.Write("<center>Por favor, especifique su búsqueda.<br><br>")
end if
%>

</body>
</html>



gracias a quien me tire una mano por ahi es una pavada pero estoy trabajando con 4 codigos de distintas aplicaciones y ya no veo nada . muchas gracias
  #2 (permalink)  
Antiguo 27/03/2004, 18:22
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98

Trataste cambiando la expresión para evaluar el estátus del rs?

Tu te refieres a si viene vacio el recordset?

If rsBusqueda.EOF Then
'Algo aqui porque viene vacio!
End If

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 27/03/2004, 18:33
(Desactivado)
 
Fecha de Ingreso: agosto-2002
Mensajes: 1.458
Antigüedad: 22 años, 9 meses
Puntos: 0
Perdoname me puedes explicar mejor por que no entendi , si me refiero a cuando viene vacio el recorset es decir que en la base el dato no exista, que debría cambiar en este codigo para que funcione bien he hechos varios cambios pero no encontre la solucion todavia.
  #4 (permalink)  
Antiguo 27/03/2004, 18:43
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Si Hugo, tienes que cambiar por algo así

Sabes que es EOF y BOF?
Si no, un poco de explicación antes, perdóname si ya lo sabes, solo para aclarar un poco las cosas aquí y condicionarlo correctamente:

El recordset es un objeto por si mismo, el cual tiene propiedades como EOF y BOF

EOF -> End Of File (Fin de archivo)
BOF -> Begin Of File (Principio de archivo)

Ok, entonces que tenemos que hacer para preguntar que venga vacio? muchos lo hacen como tu lo quieres hacer y creo que es más correcto, pero a mi me da flojera y siempre pregunto nada más si es fin de archivo, esto por supuesto si no has desplazado el cursor del rs previamente, bien, si no es así, basta con que preguntes si es fin de archivo:

If rsBusqueda.EOF Then
'Viene vacio
Else
'No viene vacio
End If

Espero haberme explicado un poco mejor.

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 27/03/2004, 19:01
(Desactivado)
 
Fecha de Ingreso: agosto-2002
Mensajes: 1.458
Antigüedad: 22 años, 9 meses
Puntos: 0
Yo entiendo todo eso pero mira aca esta la evaluacion si el recorset viene vacio

if RSBusqueda.bof=false and RSBusqueda.eof=false then

en la famosa linea 64 , si es false quiere decir que no es true
entonces then y que me ponga la leyenda " no se encontro nada" ok , entonces por que me da el error ? he cambiado tambien esta setencia por otra y no cambia nada y vos fijate que cuando el elemento que busca existe entonces funciona bien, no se mira yo ya estoy mareado, encima estoy aprendiendo asp que se me mezcla con lo que estudio de visual y en total tengo un despiole en la cabesa que se me parte .

Fijate si tenes una idea como solucionar este problema . Igual y de todos modos gracias por tomarte la molestia de explicarme y leer este post .-
  #6 (permalink)  
Antiguo 27/03/2004, 19:05
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Si, pero sucede que a lo mejor no está evaluando tu expresión, es decir que no la estés empleando correctamente...

Nunca he tratado con evaluarla como = false/true, simplemente el resultado de la expresión te devuelve un boolean (si/no), es como cuando evaluas una variable de tipo booleana

variable = true
If variable Then
'Es verdadera
Else
'Es Falsa
End If

If rsBusqueda.EOF AND rsBusqueda.BOF Then
'Viene vacia
Else
'OK
End If

Otra forma:
If NOT rsBusqueda.EOF AND NOT rsBusqueda.BOF Then
'OK
Else
'Viene vacia
End If

A ver si te sirve

Salu2,

Ahora si está correcta
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway

Última edición por u_goldman; 27/03/2004 a las 19:11
  #7 (permalink)  
Antiguo 27/03/2004, 19:19
(Desactivado)
 
Fecha de Ingreso: agosto-2002
Mensajes: 1.458
Antigüedad: 22 años, 9 meses
Puntos: 0
ADODB.Recordset error '800a0bb9'

Argumentos incorrectos, fuera del intervalo permitido o en conflicto con otros.

/disco/busquedaequi/resultado5.asp, line 64

fijate el cambio que hice :

Tot = 0
RSBusqueda.AbsolutePage = PaginaActual
If RSBusqueda.BOF And RSBusqueda.EOF Then
%>

<p><font face="Tahoma" size="2">No se ha encontrado nada con <strong><%=Request("palabra")%></strong> en la Base de Datos</font></p>


<%
Else
%>
  #8 (permalink)  
Antiguo 27/03/2004, 19:29
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Ok, lo curioso aquí es que te deja hacer todos los procesos hasta que condicionas que no venga vacio cierto?

Si imprimes antes el recordcount y luego detienes la secuencia de ejecución de comandos que te manda?

Total = RSBusqueda.recordcount
Response.Write Total
Response.End

A lo mejor el tipo de cerrojo y de cursor?
cámbialos por 3,3 y veamos que puede ser...
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #9 (permalink)  
Antiguo 27/03/2004, 19:39
(Desactivado)
 
Fecha de Ingreso: agosto-2002
Mensajes: 1.458
Antigüedad: 22 años, 9 meses
Puntos: 0
te hice caso lo que da es lo siguiente

con el dato que no se encuentra las 3 veces que probe una me dio un numero 2 y las dos siguientes 0

con el dato que existe me dio un 4

cambie el cerrojo a 3,3 , nada sin ningun resultado

Por ahi vos sabes leer mejor estos numeros
  #10 (permalink)  
Antiguo 27/03/2004, 20:10
(Desactivado)
 
Fecha de Ingreso: agosto-2002
Mensajes: 1.458
Antigüedad: 22 años, 9 meses
Puntos: 0
si alguien mas puede ayudar agradecido me voy a dormir aca en Buenos Aires 23:30 de la noche. cualquier colaboracion agradecido .
  #11 (permalink)  
Antiguo 28/03/2004, 09:54
(Desactivado)
 
Fecha de Ingreso: agosto-2002
Mensajes: 1.458
Antigüedad: 22 años, 9 meses
Puntos: 0
Alguien que me ayude con este tema por favor gracias
  #12 (permalink)  
Antiguo 28/03/2004, 14:19
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 22 años
Puntos: 0
Lo he probado, la paginacion no funciona porque se pierde el valor de la busqueda y porque siempre se dirige a l a pagina 0.
Incluso encuentre los resultados muestra No se ha encontrado nada en la Base de Datos
  #13 (permalink)  
Antiguo 28/03/2004, 15:06
 
Fecha de Ingreso: junio-2002
Ubicación: Monterrey, Nuevo Leon
Mensajes: 29
Antigüedad: 22 años, 10 meses
Puntos: 0
Puede ser que...

Hola, mira, pues como te decian en algunos post anteriores, cuando pones un if, por default valora la condicion como verdadera, asi que me parece que si tu le dices:
Fin de archivo = false and Inicio de archivo = falso, esto te va a regresar verdadero, por lo mismo, va a pasar por lo que tengas en el Else.

Mi recomendacion es que cambies el codigo (creo que ya te lo dijeron antes) a algo asi:
If rs.Eof and rs.Bof then
-- vacias los datos
Else
--mensaje de no encontrado
End if

tambien me parece que no tenias la clausula Else dentro de tu script.
__________________
Saludos desde Monterrey, Mexico
Ignacio Velazquez
  #14 (permalink)  
Antiguo 28/03/2004, 15:16
Avatar de meru-kun  
Fecha de Ingreso: noviembre-2002
Ubicación: Madrid
Mensajes: 854
Antigüedad: 22 años, 5 meses
Puntos: 0
If not rsBusqueda.eof or rsBusqueda.BOF then
' no vuelve vacio
else
' si vuelve vacio
end if

Yo siempre lo hago así, y parece que funciona ... igual ya probaste eso ...
__________________
Tu portal de manga y anime.
  #15 (permalink)  
Antiguo 28/03/2004, 18:49
(Desactivado)
 
Fecha de Ingreso: agosto-2002
Mensajes: 1.458
Antigüedad: 22 años, 9 meses
Puntos: 0
Ya esta solucionado gracias a u_goldman Eternamente agradecido maestro
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 22:20.