como buscar palabras en una base de datos access?

Iniciado por jorkaes, 30 Agosto 2008, 18:18 PM

0 Miembros y 1 Visitante están viendo este tema.

jorkaes

hola, tengo un problema he diseñado un programa paa guardar recistros de un archivo de mi empresa, pero solo puedo buscar los caracteres iniciales de cada registro. por ejemplo si busco polizas de seguro, escribiria pol (enter) y asi me muestra polizas de seguro, polizas vencidas, etc. todo lo que comience con pol, eso es muy sencillo pero que tal si necesito buscar seguro, al escribir segu no me mostraria poliza de seguro, alguien me podria ayudar....

byway

para que te muestre todos los terminos de buskeda ... ummm en este caso deberias de trabajar con los campos ..  lo mejor y recomendable seria que uses una base de datos creada en access ..

pero si kieres que te ayuden en tu problema pon parte de tu codigo para que lo vean y que puedes modificar o añadir para lo que buscas... pues como sabras hay muchas formas de hacer lo que pides pero si no se parece en nada a lo que hisiste estaras mas perdido ....

salu2.

BlackZeroX

#2
SI utilisas ADO

Antes que nada deberas Aprender SQL de igual forma je zP, pero este dilema se soluciona de esta forma:

Código (vb) [Seleccionar]

rs.Find "[id] like '" & txt_busca(0).Text & "'"


Ya despues lo devuelves con txt_Salida=rs!id

Donde [id] es la columna donde buscara y like lo aproximado a llo que escribias en el textbox llamado txt_busca(0).text

ya sea que tengas estas palabras digamos:

Hola
Miguel
Juegos
Algebra
Lapiz
Babosos
Sillas
Gatos
Perror

y busques todas las palabras que contengan digamos la vocal "a"

entonces esta linea que puse arriba deberas situarla en la primera posicion con
RS.movefirst
despues usas:
rs.find "[Palabras] like a]"  (imaginando que se llama la columna "Palabras"de nuestra bdd actualmente y despues proseguimos con devolver la pabra con:

txt_salida=rs!palabras

despues:

rs.MoveNext 'para ir a la siguiente linea y seguir buscando mas despues repetimos desde:

despues volveriamos a usar:

rs.find rs.find "[Palabras] like a]"

pero sin volver al principio esto para que no repitamos asi hasta que ya no aiga mas resultados (es como ir de fila en fila de la columna) con un bucle pratcamente seria con un bucle

aca un ejemplo sencillo
Código (vb) [Seleccionar]

on error resume next ' esta linea se puede reemplazar verificando que rs.movenext no produsca un error al moverse a la siguiente fila de la bdd actual es decir verificando que aun ahyga mas filas y no nos movamos a una fila que o existe
for i = 0 to 2
  i=0'esto es para hacer un bucle infinito solo se sale cuando se produce un error jajaja es meor asi que un do que consume muchos recursos a mi experiencia.
  rs.movefirst
  rs.find rs.find "[Palabras] like a"
  txt_salida=rs!palabras
  rs.movenext' si se produce un error al movermos a una fila que no existe en la bdd actual producira un error
next i


hay dos formas para evitarlo una con "On error ..." y otra verificando si todavía hay filas es decir con "if then" la ultima no recuerdo como era ja. xP
The Dark Shadow is my passion.

Angeldj27

#3
Aki te va un ejemplo sencillo esta con Sql server pero la consulta Sql funciona igual en Access

SQLStrin = "%" & txtTel1.Text & "%"
    AdoLlamadas.RecordSource = "SELECT * From Llamadas WHERE Telefono_Rec like '" & Trim(SQLStrin) & "' "
    AdoLlamadas.Refresh


Asi te busca en este ejemplo un numero cualquiera en ese campo donde quiera que este y con cualquier combinacion tambien se aplica a las letras.

PS: No olvide los simbolos de porciento sin si solo le pones el primero solo lo busca en el inicio de la cadena tienes que ponerselo los dos.

Saludos....


"Que vamos a hacer Mañana?..... Lo mismo que hacemos todos los dias Pinky tratar de Conquistar el Mundoooo!!!!!

fofolbich

#4
ok. Gracias

esto fue lo que hice

rsconsulta.Open "Select * From " & Tabla & " where " & opt & " like '%" & UCase(Text1) & "%'" & " ORDER BY CODIGO", conexion

y listo viejo gracias ya funca como deberia ser.

les agradezco su colaboracion