FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
como filtro en un TQuery?
Hola a todos: Necesito una ayudita, tengo un TQuery (con una consulta obviamente) para mostrar mi lista de productos de una tabla de MySql. Le hice una busqueda que en realidad es un filtro, que a medida que se ingresan las letras se va filtrando el TQuery. Hasta ahi todo ok, pero me filtra solo por las letras de comienzo del nombre del producto, lo que necesito ahora que que me filtre los productos que contengan esos caracteres en cualquier posicion del nombre del producto. Utilizo Deplhi6. el codigo es mas o menos asi:
en el evento onchange del edit en el que ingreso el nombre del producto:
Como veran el flitro es buscar.text+'*'; lo que necesito es '*'+buscar.text+'*'; pero asi no funciona. Espero se entienda cual es mi problema y que me puedaqn ayudar. Gracias!! Última edición por vtdeleon fecha: 14-12-2005 a las 01:11:32. Razón: Etiqueta Delphi |
#2
|
||||
|
||||
No veo muy claro el asunto, pero si interpreto bien lo que quieres, yo utilizaría una Consulta con:
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#3
|
||||
|
||||
Gracias marcoszorrilla, es lo que necesito: Where MiCampo Like %Letras%
Pero no puedo hacerlo en sql porque tendria que desactivar y activar el TQuery cada vez que se presione una tecla y en mi tabla actual tengo 13000 registros. Te imaginaras lo que tarda cada vez que se presiona una tecla. Debe haber alguna forma de hacerlo, que yo no se, desde el filter del TQuery. |
#4
|
||||
|
||||
La solución es facil:
en el evento onkeypress, solo se realiza la busqueda si se ha presionado la tecla Enter. Y además pones un boton "solicitar consulta". saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#5
|
||||
|
||||
Cita:
Si bien el filtrado conforme se escribe da un efecto atractivo, por lo general resulta en una pérdida de tiempo e ineficiencia. Es más adecuado presentar al usuario una opción de búsqueda mediante la cuál pueda establecer uno o más criterios, y formar la consulta SQL acorde a los valores introducidos. Dicha opción de búsqueda puede ir desde algo tan sencillo como lo que propone Lepe hasta un formulario especializado que cuente con varios campos de búsqueda. Puedes entonces usar el evento OnFilterRecord del Query para un filtrado conforme se escribe pero sobre los resultados limitados de la consulta SQL. El evento trabajará rápido con pocos registros, lo que no sucedería con 13000. El cliente estará satisfecho porque le estás proporcionando (en el caso de un formulario de búsqueda) un método mucho más potente para encontrar datos que un simple filtrado sobre un campo, y porque el sistema será mucho más rápido. Si el cliente insiste, pones un botón de "Buscar todos" con la advertencia de "esto demorará algunos minutos...". Pronto se dará cuenta de que no desea ver todos los registros. // Saludos |
#6
|
||||
|
||||
Muchas gracias por las ideas, pero la verdad es que todo eso ya lo probe y comprobe que es mucho mas rapido y mas agil como lo estoy haciendo. Es en un punto critico del sistema que es cuando se ingresan los detalles a la factura. Lo unico que necesito ahora es poder hacer ese filtro. En SQL seria:
Where MiCampo Like %Letras% Ahora bien, necesito el equivalente en delphi, con la propiedad Filter del TQuery. Mi pregunta es: se puede hacer algo asi en Delphi? Como lo hago? Gracias!! |
#7
|
||||
|
||||
Ok.
Entonces usa el evento OnFilterRecord del Query. Este evento se genera por cada registro y tú decides si aparece o no ajustando el parámetro Accept. En tu caso, por ejemplo, sería algo como:
esto es, el registro se muestra si lo escrito en Edit1.Text está contenido en el valor de MiCampo del registro actual. // Saludos |
|
|
|