Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-03-2007
Avatar de Wonni
Wonni Wonni is offline
Miembro
 
Registrado: abr 2006
Posts: 261
Poder: 19
Wonni Va por buen camino
Busquedas por cualquier criterio, sin especificar ninguno

Hola;

Vereis, es que estaba pensando como poder hacer busquedas al estilo de Windows Media 11. Si buscas en la biblioteca de medios, en un campo escribes algo, y conforme escribes va filtrando. Pero esque va super-rapido.

Esto lo haria en el evento OnChange, si, pero ¿como hacer para buscar por cualquier criterio, sin especificar dicho crieterio?

En un programa Tpv que tengo en unas tiendas de ropa, ya hice algo parecido, pero no se si se podra hacer de otra forma. En el Tpv tengo un Edit en el cual el usuario puede introducir directamente Ean, Referencia o Codigo propio sin especificar nada. El programa hace una busqueda en una tabla que cree para ello donde se almacenan 2 datos: El string para la busqueda (ean, ref o id) y el id del articulo. Pero, no se como hacer para que por ejemplo en el caso de tratarse de libros, que buscara editorial. Y es que las editoriales ( los nombres ) no estan en la tabla de libros, si no el codigo.

La busqueda en Windows Media 11, me gusta mucho. Escribes por ejemplo: "Bad" y te muestra las canciones que contengan la palabra Bad, pero ademas si un album se llama asi, muestra tambien el album entero. Si escribes una fecha muestra los albumes con dicha fecha y si algun titulo de album o cancion contiene ese numero, pues tambien. Y si escribo "Bad smoth criminal" muestra el tema smoth criminal que esta dentro del disco Bad.

Esque si utilizo la misma formula que tengo en el T.p.v. para los libros, me da que seria demasiado. Se crearia una tabla inmensa. Por que por ejemplo para los titulos de los libros, cada palabra deberia de almacenarla y referenciarla al id del libro. Y lo pero que veo es el tema de campos que son codigos, como la editorial.

Alguna idea. ¿Alguien utiliza una tabla de esta manera para busquedas?
Responder Con Cita
  #2  
Antiguo 08-03-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 20
basti Va por buen camino
Se me ocurre algo así:

Código SQL [-]
  select * from Libros 
  left outer join Editoriales on (Libros.Editorial = Editoriales.Codigo) 
  where Libros.Titulo like :Busqueda or Editoriales.Nombre like :Busqueda

luego en delphi:
Código Delphi [-]
  Query.ParamByName('Busqueda').AsString := Edit1.Text + '%';
  Query.Open;
Responder Con Cita
  #3  
Antiguo 08-03-2007
Avatar de Wonni
Wonni Wonni is offline
Miembro
 
Registrado: abr 2006
Posts: 261
Poder: 19
Wonni Va por buen camino
Gracias basti;

Pero me da el siguiente error:

"Type mismatch in expression"

Las tablas son dBase. Perdon, he debido decirlo antes.
Responder Con Cita
  #4  
Antiguo 08-03-2007
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Cuando te dá ese error es proque estas tratando de involucrar dos tipos de datos distintos. Asegurate que si un campo es de tipo Varchar, String, Integer, Numeric,...etc, estos coincidad el valor que le enviaras por medio del Parametro (AsString, AsInteger, AsFloat,...)

Saludo
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #5  
Antiguo 08-03-2007
Avatar de Wonni
Wonni Wonni is offline
Miembro
 
Registrado: abr 2006
Posts: 261
Poder: 19
Wonni Va por buen camino
Gracias vtdeleon;

Efectivamente ese era el error.

Ahora funciona, pero me pregunto yo si sera posible hacer lo siguiente:

Dados estos 3 titulos, por ejemplo:

DELPHI MOLA ! ( EDIT: ANAYA )
MOLA DELPHI ! ( EDIT: ANAYA )
BIBLIA DE DELPHI ( EDIT: EVEREST ).

Si escribo en el edit de busqueda: "ANAYA" muesta los 3. Si escribo EVEREST, muestra el ultimo. Pero si escribo: "DELPHI MOLA", aparace solamente el primero. Y yo lo que quisiera conseguir es que mostrara DELPHI MOLA Y MOLA DELPHI.
Y otro caso es si escribo: "ANAYA DELPHI", que me mostrara los dos de ANAYA en cuyo titulo aparece la palabra DELPHI.

Volviendo al Windows Media y las busquedas en la biblioteca:

Hay 3 Albumes donde hay canciones que tienen la palabra "Bad". 2 son de Scorpions y 1 de Michael Jackson. Pues bien, en el campo de busqueda, yo escribo "bad" y muestra:
El disco de Michael que se llama Bad ( este lo muestra completo ) y las 2 canciones de los 2 discos de Scorpions ( solo cada cancion, no el disco. puesto que el disco no se llama Bad).
Si sigo escribiendo: "bad smooth criminal" entonces, muestra la cancion smooth criminal del disco bad.
Fijaros, que no hay ningun disco que se llame "bad smooth criminal" ni ninguna cancion que se llame a si. Osea, que busca por palabras separadas, no la cadena.

Si escribo "Anaya Delphi", claro, no sale nada. No existe ninguna editorial llamada "Anaya Delphi" ni ningun titulo.

Con el codigo de Basti, funciona, pero toda la cadena. Le he añadido '%' antes del Edit para buscar la cadena en cualquier posicion.

No se si me he expliado bien con tanto Bad y Smooth pero para entenderlo mejor, podeis mirar aqui
Responder Con Cita
  #6  
Antiguo 08-03-2007
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

Una vez hice una chorrada de código para hacer búsquedas parecidas a como lo hace Winamp con los mp3. Mira a ver si te funciona, aunque te advierto que no está muy optimizado ni nada, y que creo que se podría mejorar, pero ahí tienes un avance.

http://www.clubdelphi.com/foros/show...ghlight=winamp
http://www.clubdelphi.com/foros/show...ghlight=winamp
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #7  
Antiguo 13-03-2007
Avatar de Wonni
Wonni Wonni is offline
Miembro
 
Registrado: abr 2006
Posts: 261
Poder: 19
Wonni Va por buen camino
Cita:
Empezado por Wonni
Las tablas son dBase. Perdon, he debido decirlo antes.
Esque el programa donde me interesa implementar esta busqueda lo tengo hecho con dBase.

Hoy ya no me da tiempo, pero mañana lo pruebo con interbase.
Responder Con Cita
  #8  
Antiguo 14-03-2007
Avatar de Wonni
Wonni Wonni is offline
Miembro
 
Registrado: abr 2006
Posts: 261
Poder: 19
Wonni Va por buen camino
Lo estoy probando con Interbase y al escribir en el Edit me da este error:

List index out of bounds(2)
Responder Con Cita
  #9  
Antiguo 14-03-2007
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Vaya, como había dicho antes "es una chorrada de codigo".

El error viene del TStringList. Pero la idea que tenia en ese momento era usar containing para la búsqueda, en vez de Like.

Delimitar el Stringlist por espacio, asi la cadena dada por el edit estará separada por palabra. Entonces por cada palabra que haya, agregar una linea de búsqueda.
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Una jábega de cantamañanas se pasa por el forro, cuando le conviene, el criterio.. marcoszorrilla La Taberna 4 02-01-2007 11:15:25
Especificar donde guardar archivo generado. Coco_jac PHP 1 25-08-2006 15:58:03
PageControl,TabControl,TabSheet ¿ninguno actualiza en tiempo de diseño? gambitero Varios 2 05-07-2006 11:53:32
Especificar el índice en SQL como un parámetro Tio SQL 4 19-06-2003 01:36:02
Como especificar la ruta de red? Argaron Conexión con bases de datos 3 21-05-2003 23:26:24


La franja horaria es GMT +2. Ahora son las 03:53:27.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi