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

error 800a0009

Estas en el tema de error 800a0009 en el foro de ASP Clásico en Foros del Web. Hola a todos, estoy haciendo un buscador con pagnacion de 10 registros por pagina, la primera pagina me muestra todo bien pero cuando hago click ...
  #1 (permalink)  
Antiguo 21/04/2003, 06:39
 
Fecha de Ingreso: enero-2002
Mensajes: 349
Antigüedad: 22 años, 5 meses
Puntos: 1
error 800a0009

Hola a todos, estoy haciendo un buscador con pagnacion de 10 registros por pagina, la primera pagina me muestra todo bien pero cuando hago click para la segunda pagina, me salta este ERROR

Microsoft VBScript runtime error '800a0009'

Subscript out of range: '[number: 0]'

/test/mur/buscar.asp, line 33


linea 33
SQL="SELECT * FROM datos WHERE INSTR(nombre,'"&Buscar(0)&"') or INSTR(descripcion,'"&Buscar(0)&"') or INSTR(url,'"&Buscar(0)&"') or INSTR(pclaves,'"&Buscar(0)&"')"
  #2 (permalink)  
Antiguo 21/04/2003, 23:24
Avatar de ElAprendiz  
Fecha de Ingreso: enero-2002
Ubicación: Maipu, Chile
Mensajes: 3.706
Antigüedad: 22 años, 4 meses
Puntos: 2
pon el codigo completo
__________________
Manual de ASP Avanzado ;-)
  #3 (permalink)  
Antiguo 22/04/2003, 08:14
 
Fecha de Ingreso: enero-2002
Mensajes: 349
Antigüedad: 22 años, 5 meses
Puntos: 1
Ok ahi va, voy a poner lo mas importante del codigo asi elimino lineas

<%
Dim buscar
buscar= Trim(Request("buscar") )
buscar=Replace(Request("buscar"),"'", "''")
strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/test/mur/bd/clientes.mdb") & ";Persist Security Info=False"
set cnn = CreateObject("ADODB.Connection")
cnn.Open strconn
'*****************************
buscar=Split(Replace(Request.Form("buscar"),"'","' '"))
SQL="SELECT * FROM datos WHERE ((INSTR(nombre,'"&Buscar(0)&"') or INSTR(descripcion,'"&Buscar(0)&"') or INSTR(url,'"&Buscar(0)&"') or INSTR(pclaves,'"&Buscar(0)&"')) AND (grupo='clientes'))"
For i=1 to Ubound(Buscar)
SQL=SQL&" OR ((INSTR(nombre,'"&Buscar(I)&"') or INSTR(descripcion,'"&Buscar(I)&"') or INSTR(url,'"&Buscar(I)&"') or INSTR(pclaves,'"&Buscar(I)&"')) AND (grupo='clientes'))"
Next
'*****************************
'Abrimos el recordset con tipo de cursor 3 para poder
'utilizar bookmarks y saber el nº total de registros
rs.Open SQL, cnn, 3, 1
total_registros = rs.RecordCount
'con esta bandera sabremos si tenemos algún registro o no
banerror = 0
If total_registros > 0 then
'Nos movemos al registro inicial desde donde comenzaremos
'Ponemos una marca en esa posición y por último,
'Utilizamos Getrows para obtener la matriz con SOLO 10 registros
'a partir del registro inicial. Esto posee la ventaja de que no llevamos
'TODOS los registros a la matriz, solo llevamos los que vamos a mostrar
'optimizando de esa forma el uso de la memoria del Servidor
rs.Move p
inicio = rs.Bookmark
mitabla = rs.GetRows(10,inicio)
else
'No hay ningún registro
banerror = 1
end if
'Ya nos podemos librar del Recordset y de la conexión
'porque tenemos los datos en la matriz mitabla
'Por lo tanto limpiamos los objetos
rs.Close
set rs = Nothing
cnn.Close
set cnn = Nothing
'Utilizamos estas variables para hacer referencia a la posición
'de los elementos de la matriz sin tener que utilizar los números
'Es para hacerlo más gráfico simplemente
nombre = 1
descripcion = 2
url = 3
pclaves = 4
If banerror = 1 then
No se encontraron registros bla bla .......
else
............todo los campos bla bla..............
<%'Preguntamos si la cantidad de elementos de la matriz es menor
'que la cantidad TOTAL de registros de la tabla
If Ubound(mitabla,2)+1 < total_registros then
'En caso afirmativo calculamos el nº de páginas que tenemos
'y luego mostramos los links a las demás páginas
If (total_registros mod 10) = 0 then
nro_paginas = Int(total_registros / 10)
else
nro_paginas = Int(total_registros / 10) + 1
end if%>
<table border=0 width=80% cellspacing=0 cellpadding=1 align=center>
<tr>
<td align=left valign=middle style="font-family: Arial; font-size: 8 pt;">
<b><font color="#000099"><font size="1">
<%
'Acá mostramos los links de la forma: Página 1 | 2 | 3 | 4 ...%>
Page
<%For i=0 to nro_paginas-1%>
<%If p = i*10 then%>
<u><%=i+1%></u>
<%else%>
<a href="buscar.asp?ref=<%=i*10%>&buscar=<%=Request(" buscar")%>" class="e" title="See page <%=i+1%>"><%=i+1%></a>
<%end if%>
<%If i < nro_paginas-1 then
Response.Write(" | ")
end if
Next
End If
End If
%>

Gracias por adelantado
  #4 (permalink)  
Antiguo 22/04/2003, 15:31
 
Fecha de Ingreso: enero-2002
Mensajes: 349
Antigüedad: 22 años, 5 meses
Puntos: 1
Alguien me dar una mano con esto no hay forma que logre solucionarlo

Última edición por eduvivi; 23/04/2003 a las 07:29
  #5 (permalink)  
Antiguo 23/04/2003, 07:29
 
Fecha de Ingreso: enero-2002
Mensajes: 349
Antigüedad: 22 años, 5 meses
Puntos: 1
Nadie sabe porque este error??????????????

  #6 (permalink)  
Antiguo 23/04/2003, 07:52
 
Fecha de Ingreso: febrero-2002
Mensajes: 442
Antigüedad: 22 años, 3 meses
Puntos: 2
para que es esto???

For i=1 to Ubound(Buscar)
SQL=SQL&" OR ((INSTR(nombre,'"&Buscar(I)&"') or INSTR(descripcion,'"&Buscar(I)&"') or INSTR(url,'"&Buscar(I)&"') or INSTR(pclaves,'"&Buscar(I)&"')) AND (grupo='clientes'))"
Next

Otra cosa.... es necesario que uses inicio = rs.Bookmark y RecordCount ???
__________________
tech-nico.com
  #7 (permalink)  
Antiguo 23/04/2003, 08:17
 
Fecha de Ingreso: enero-2002
Mensajes: 349
Antigüedad: 22 años, 5 meses
Puntos: 1
Hola OXIGENO, en realidad esta paginación me la baje de un ejmplo y esto que me preguntas

For i=1 to Ubound(Buscar)
SQL=SQL&" OR ((INSTR(nombre,'"&Buscar(I)&"') or INSTR(descripcion,'"&Buscar(I)&"') or INSTR(url,'"&Buscar(I)&"') or INSTR(pclaves,'"&Buscar(I)&"')) AND (grupo='clientes'))"
Next

La verdad no se para que es, igualmente ya probe sacandolo y funciona la primera pagina pero lo curioso es que el error justo salta en la sentencia anterior y solo cuando voy a la segunda pagina

SQL="SELECT * FROM datos WHERE ((INSTR(nombre,'"&Buscar(0)&"') or INSTR(descripcion,'"&Buscar(0)&"') or INSTR(url,'"&Buscar(0)&"') or INSTR(pclaves,'"&Buscar(0)&"')) AND (grupo='clientes'))"

inicio = .............
y
RecordCount tambien los tengo que utilizar para que me cuente la cantidad de paginas a paginar
  #8 (permalink)  
Antiguo 23/04/2003, 08:43
 
Fecha de Ingreso: febrero-2002
Mensajes: 442
Antigüedad: 22 años, 3 meses
Puntos: 2
ok eduvivi....... y el Ubound(Buscar)... que tiene la variable buscar???

Lo del RecordCount esta muy bien..... pero... Claro... al estar utilizando getRows podrias calcularlo y liberas aun mas memoria del servidor... ademas... reduces en un margen mayor la posibilidad de errores.
__________________
tech-nico.com
  #9 (permalink)  
Antiguo 23/04/2003, 09:04
 
Fecha de Ingreso: enero-2002
Mensajes: 349
Antigüedad: 22 años, 5 meses
Puntos: 1
La variable buscar es lo que viene del formulario

Dim buscar
buscar= Trim(Request("buscar") )
buscar=Replace(Request("buscar"),"'", "''")
  #10 (permalink)  
Antiguo 23/04/2003, 11:59
 
Fecha de Ingreso: febrero-2002
Mensajes: 442
Antigüedad: 22 años, 3 meses
Puntos: 2
tendrias que analizar mejor esa parte.... creo que por ahi puede estar el problema.... no logro entender lo que hace ese Ubound(Buscar)... y tampoco se que quieres hacer con esa consulta sql.... tendrias que analizar esa parte no?
__________________
tech-nico.com
  #11 (permalink)  
Antiguo 23/04/2003, 12:11
Avatar de xlugo2002  
Fecha de Ingreso: noviembre-2002
Ubicación: Puebla, México
Mensajes: 474
Antigüedad: 21 años, 7 meses
Puntos: 0
A VER SI ES ESTO

prueba quitando la funcion InStr() de VBScript y usa

campo LIKE '%" & criteriobuscado & "%'

esto hace lo mismo que el InStr(), ademas esta funcion devuelve un numero y creo que no lo estan manejando.....
  #12 (permalink)  
Antiguo 23/04/2003, 15:15
 
Fecha de Ingreso: enero-2002
Mensajes: 349
Antigüedad: 22 años, 5 meses
Puntos: 1
Bueno SOLUCIOOOOOOON!!!!!!!!!!!!! , ahora cuando les diga lo que es no lo van a poder creer

El tema es asi cuando estoy haciendo paginación no puedo poner
Request.Form , si se fijan solo pongo el Request
Ej.
Buscar= Trim(Request("Buscar") )

Ahora bien el error si miran esta en el Split
Antes estaba asi

Buscar=Split(Replace(Request.Form("Buscar"),"'","' '"))

y lo correcto es que no tenga el .form

Asi:
Buscar=Split(Replace(Request("Buscar"),"'","''"))


Ah!! OXIGENO el Ubond(Buscar) esta asi ya que es para que busque en vezdeuna sola palabra haga una busqueda multiple

Bueno un millon de gracias a todos por la ayuda que me dieron
  #13 (permalink)  
Antiguo 23/04/2003, 21:28
 
Fecha de Ingreso: febrero-2002
Mensajes: 442
Antigüedad: 22 años, 3 meses
Puntos: 2
Lo solucionaste solito!!...! [;)]
__________________
tech-nico.com
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 23:14.