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

Búsqueda en toda la web

Estas en el tema de Búsqueda en toda la web en el foro de ASP Clásico en Foros del Web. Hola a todos, a ver, estoy haciendo una web en ASP/Access y necesito saber como puedo hacer una consulta a la base de datos en ...
  #1 (permalink)  
Antiguo 23/05/2007, 10:49
 
Fecha de Ingreso: octubre-2005
Mensajes: 15
Antigüedad: 18 años, 7 meses
Puntos: 0
Búsqueda en toda la web

Hola a todos,

a ver, estoy haciendo una web en ASP/Access y necesito saber como puedo hacer una consulta a la base de datos en la que pueda buscar una cadena (la que sea) en todos los campos de todas las tablas y si coincide pues que me muestre los resultados.

Tengo entendido que debe de haber algun parametro en la consulta que haga (las hago en SQL) poniendo un % o algo asi?

o si existe ya algun post en este foro q me pueda ayudar tambien me sirve, he estado buscando pero no encintre nada... = no buské bien ;)

gracias a todos
  #2 (permalink)  
Antiguo 23/05/2007, 15:09
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: Búsqueda en toda la web

has intentado esta LECTURA, que es para que veas como se hace el procedimiento, ya una ves comprendido te pasas a ESTA OTRA, que ocupa de la primera lectura para desarrollarla

en cualquier duda.... ya sabes donde estamos
suerte
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #3 (permalink)  
Antiguo 23/05/2007, 15:27
Avatar de soorellana  
Fecha de Ingreso: mayo-2007
Mensajes: 9
Antigüedad: 17 años
Puntos: 0
Re: Búsqueda en toda la web

Te voy a dar una idea que talvés te sirva, a lo mejor no sea la más adecuada en cuanto a rendimiento ni a rapidez, pero por lo menos me ha servido a mí.

La idea básica consiste en crear vistas (o consultas almacenadas) dentro de la base de datos de forma tal que te devuelvan todas igual número de campos para luego unirlas todas en una sola consulta adonde puedas realizar la búsqueda.

Si por ejemplo tienes una tabla llamada Nosotros en la cual almacenas un texto descriptivo acerca de la empresa la consulta te podría quedar así:

Código:
SELECT 1 AS id, nosotros.titulo, trim(nosotros.contenido) AS texto, 
99 AS dia, 999 AS mes, 9999 AS anio, 1 AS activo, "nosotros.asp" AS vinculo
FROM nosotros;
Llamenos esta consulta Consulta_Nosotros

Si observas bien, la idea es que todo el texto me quede en el campo texto para luego utlizarlo para realizar la búsqueda.

Ahora por ejemplo puedes tener una tabla con noticias la consulta puede quedarte así:

Código:
SELECT Noticia.id, Noticia.titulo, trim(Noticia.resumen) & 
trim(Noticia.contenido) AS texto, 
day(Noticia.fecha) AS dia, month(Noticia.fecha) AS mes, 
year(Noticia.fecha) AS anio, 
Noticia.activa AS activo, "vnoticias.asp" AS vinculo
FROM Noticia;
Pongámosle de nombre a esta consulta: Consulta_Noticias

Sucesivamente deberás ir concatenando los campos que necesites dentro del campo texto y obviamente la estructura de todas las consultas debe ser la misma. Al final solamente deberás unir todas las consultas en una sola así:

Código:
SELECT * 
FROM Consulta_Nosotros
UNION ALL SELECT *
FROM Consulta_Nosotros_Valores
UNION ALL SELECT *
FROM Consulta_Noticias
UNION ALL SELECT *
FROM Consulta_Publicaciones
UNION ALL SELECT *
FROM Consulta_Agenda
Le pondremos a esta consulta: Buscar_en_Database

Recuerda que todo esto lo haces dentro de Access.
ahora bien, en tu página web solamente deberás ejecutar una consulta contra la "Tabla" Buscar_en_Database y listo. Si observas yo he incluido un campo llamado vinculo el cual me servira para saber en que pagina de mi sitio voy a visualizar cada registro devuelto.

El codigo del formulario seria algo asi:
Código:
	<form name="buscar" method="post" action="busqueda.asp" 
enctype="application/x-www-form-urlencoded">
	<fieldset>
		<label for="criterio">Buscar:</label>
		<input class="criterio" name="criterio" size="20" type="text"
          value="<%=Server.HTMLEncode(trim(request.form("criterio")))%>" />>
		<input type="submit" value="Buscar" />
	</fieldset>
	</form>
Y el codigo de busqueda en ASP seria algo como esto:
Código:
<%
 criterio=TRIM(Request.Form("criterio"))

        Set cRS = Server.CreateObject("ADODB.Recordset")
	cRS.ActiveConnection = Conexion_a_tu_DB
	cRS.Source = buscar(criterio,year(now()))
	cRS.CursorType = 1
	cRS.CursorLocation = 2
	cRS.LockType = 1
	cRS.Open()	 


Public Function buscar(TxtCriterios,anio)
	Dim criterio
        TxtCriterios = Replace(TxtCriterios,"'","")
        TxtCriterios = Replace(TxtCriterios,"""","")	   
	
	buscar = "SELECT * FROM Buscar_en_Database WHERE "
	
	For Each criterio In Split(TxtCriterios, " ")
		If Len(Trim(criterio)) > 0 Then buscar = buscar & " texto LIKE '%" & trim(criterio) & "%' AND "
	Next
		
	buscar = buscar & " 1 = 1 "
End Function

%>
Espero que te sirva.
  #4 (permalink)  
Antiguo 24/05/2007, 03:13
 
Fecha de Ingreso: octubre-2005
Mensajes: 15
Antigüedad: 18 años, 7 meses
Puntos: 0
Re: Búsqueda en toda la web

OK, probaré las dos opciones que me dais y os comento ;)

muchas gracias por todo
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 12:35.