Dos preguntas de ASP, Urgente!!!

15/06/2005 - 17:28 por Luis | Informe spam
Hola, realizo una busqueda dentro de una db de access con el siguiente
codigo

Set ConexionBD = Server.CreateObject("ADOdb.Connection")
ConexionBD.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & "DBQ=" &
Server.Mappath("\fpdb\datos.mdb")
Set RS = ConexionBD.Execute("Select * from datos where descrip like'%" &
Request("buscar") & "%'")

pero el problema es que solo puedo poner una palabra o frase en el campo de
busqueda ya que me tira resultados segun la frase exacta que ingresé.
Podrian decirme como hacer para buscar dos o mas palabras contenidas en un
registro?? onda que me muestre todos los registros que tengan las palabras
"Windows" y "XP" como lo hace yahoo o google???

Y la otra es, si quiero guardar registros con texto, access solo me permite
guardar hasta 255 caracteres, como puedo hacer para que me de mas espacio
para almacenar? o conocen alguna otra forma? para que me busque en txt y me
los muestre o algo asi???

Muchas gracias

Preguntas similare

Leer las respuestas

#1 Gabriel South
15/06/2005 - 20:02 | Informe spam
1)

Deberias construir tu consulta con varios OR por cada palabra detectada en
la consulta

tipo:

where descript like '%pal1%' or descript like '%pal2%' etc.etc

Existe tambien (en Sql server) la intruccion DIFFERENCE que es una especie
de busqueda por similiridad (como SOUNDEX)... no se si esta soportada en
Access..

2) Probaste con un campo MEMO? (aunque no se si cualquier version de BD
access permite hacer busquedas LIKE dentro de campos memo)

Saludos, Gabriel


"Luis" wrote in message
news:
Hola, realizo una busqueda dentro de una db de access con el siguiente
codigo

Set ConexionBD = Server.CreateObject("ADOdb.Connection")
ConexionBD.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & "DBQ=" &
Server.Mappath("\fpdb\datos.mdb")
Set RS = ConexionBD.Execute("Select * from datos where descrip like'%" &
Request("buscar") & "%'")

pero el problema es que solo puedo poner una palabra o frase en el campo


de
busqueda ya que me tira resultados segun la frase exacta que ingresé.
Podrian decirme como hacer para buscar dos o mas palabras contenidas en un
registro?? onda que me muestre todos los registros que tengan las palabras
"Windows" y "XP" como lo hace yahoo o google???

Y la otra es, si quiero guardar registros con texto, access solo me


permite
guardar hasta 255 caracteres, como puedo hacer para que me de mas espacio
para almacenar? o conocen alguna otra forma? para que me busque en txt y


me
los muestre o algo asi???

Muchas gracias


Respuesta Responder a este mensaje
#2 Lorena
08/08/2005 - 21:13 | Informe spam
Luis:

Lo que vos queres hacer requiere de que tengas creado en la DB:
- Si tu server trabaja con SQLServer: Catalogos de texto
- Si tu server trabaja en MySQL: Los campos en donde debes buscar, tengan
indices fulltext

Te explico rapidamente como funciona esto:
Los catalogos de texto son indexaciones que se hacen del contenido de los
campos en donde vas a buscar la/s palabra/a desde tu web, es lo mismo que
hace Windows en tu PC para las busquedas, crear los Catalogos.
En el caso de MySQL se simplifica, creando en la tabla donde haya campos en
los que deban realizarse busquedas, un indice fulltext con dichos campos.

Habiendo creado esto, dependiendo de que utilice tu servidor, luego desde el
.ASP o .PHP, con una simple query SQL obtenes el resultado, ya sea de una,
dos, o mas palabras.

Suponiendo que:
Tenes un textfield que llamaremos "q" donde se va a introducir la/s
palabra/s a buscar:

- Si utilizas SQLServer el query SQL seria:
$busqueda=mssql_query("select * from <tabla donde vas a buscar la/s
palabra/s> where FREETEXT(*,'$_POST[q]')",$conexion);
Luego con un fetch_array vas mostrando los resultados.
Por supuesto antes de hacer la query tenes que fijarte que "q" no este
vacio, etc. Supongo que ya imaginaras.

- Si utilizas MySQL el query SQL seria:
$busqueda=mysql_query("select * from <tabla> where MATCH (<campo
1>,<campo2>,etc) AGAINST ('$_POST[q]' IN BOOLEAN MODE)",$conexion);
Luego con un fetch_array mostras los resultados de la consulta.
Donde dice <campo1>, etc etc, se refiere a los campos de la tabla en los
que vas a buscar, que por supuesto, son los incluidos en el indice fulltext.

En ambos casos, ya sea con MySQL o con SQLServer, esta busqueda va a tirar
como resultado todo lo que encuentre que contenta una, dos, o todas las
palabras que ingresaste, es decir, si introdujiste "Windows XP" va a tirarte
los resultados que contengan "Windows" y/o "XP" y/o "Windows XP"

Bueno no te doy mas detalles sino se hace eterno, pero si necesitas mas
datos precisos, estoy a tu disposicion.

Saludos

Lorena Sinner
- LKT
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida