FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
¿como usar OnFilterRecord? (para un filtro x nombre)
Que tal Gente.
Hace tiempo he posteado preguntando como filtrar o hacer locate sobre campos calculados (lookup) (en este caso nombres de clientes en una tabla con sus codigos y en otra tabla, en la que deseo filtrar numeros de cliente y otros datos de servicios que tiene ese cliente) Habia solucionado todo trabajando con los ClientDataSet pero a medida que los registros crecen se hace sumamente lento (corriendo en un P4 2.4 512mb) Si aplico un filtro sobre la tabla serviciosyclientes, en el campo cliente que es un String lookup tomado de la tabla cliente con su codigo me acusa error. Lo mismo si hago un locate en el mismo campo. Asi que buscando en el foro encontre que para busquedas avanzadas se usa OnFilterRecord pero no he logrado lo que quiero, mas bien no se usarlo. Lo que yo necesito es filtrar la tabla serviciosyclientes (que esta conectada a un DBgrid )y mostrar allí solo los resultados del filtro. Criterio de busqueda --> POR NOMBRE en un Edit y la idea es que en cada OnChange del Edit vaya actualizando el filtro. para lo cual en onchange puse FILTER:= false; y luego lo paso a true. Pero no me muestra nada en la Grilla. Abajo adjunto el codigo que en mi ignorancia armé.
Les agradecería su ayuda, comentarios o cualquier orientacion que me puedan dar. Cualquier forma de filtrar un lookup sera bien recibida Gracias Amadís ------------------------------------- NO A LAS FABRICAS DE CELULOSA |
#3
|
||||
|
||||
Hola amadis,
El OnFilterRecord, no tiene que deactivar el Filtred y volverlo activar por lo hace solo. El porque tarda tanto cuando cambias o borras algo, por que tiene que volver a filtrar de nuevo toda la base de datos desde el principio del DBGRID, si tiene un DBGRID de 30 registros tiene que entrar 30 veces en OnFilterRecord para que cada registro que filtra cumpla con lo que le has filtrado. Un Saludo. |
#4
|
|||
|
|||
Cita:
|
#5
|
||||
|
||||
Hola proba con este codigo a mi me funciona como filtro, espero que a vos tambien saludos.
clientes.Filter:= 'country ='+ Quotedstr(combo.Text);{Utiliso un combobox para poner las opciones pero seguramente con otros componentes debe funcionar} clientes.Filtered:=true Bueno espero tu repuesta para ver si te ayudo. Saludos |
#6
|
|||
|
|||
no funciona
Probé agregandole el parentesis pero no funciona.
Al filtrar no muestra nada o sea no obtiene resultados. Recuerden que ese campo cliente es un String calculado Ya comienzo a creer que esto no tiene solucion. Hace tiempo habia tenido los mismos problemas intentando un Locate sobre ese campo y no pude solucionarlo. Gracias! |
#7
|
||||
|
||||
Los filtros se aplican del lado del cliente, así que siempre consumirá mas recursos que una consulta al servidor.
Es más fácil y rápido hacer una consulta al servidor, pero no en el evento OnChange, sino cuando el usuario pulse la tecla Enter en el Edit (que no cuesta tanto ). Es muy bonito cuando vas pulsando teclas y ves como cambian los datos, pero tecleando rápido.... da igual que sea un AMD 3500 Mhz, con 5000 registros se vé lo lento que es el sistema, por el filtro, y por la "comodidad" de ver los datos cambiar. Yo veo más eficiente y rápido que el usuario escriba con libertad y al pulsar intro, se lance la consulta, haga un inner join de las tablas y se aplique las restricciones con un "WHERE".
Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#8
|
|||
|
|||
Mas alla del OnChange o el Enter en el Edit
Por lo que veo o no se puede filtrar sobre un lookup o es muy complejo. La razon por la que me rehuso a usar sql es porque mientras tengo la tabla filtrada yo uso las funciones, de la tabla edit, post, next, prior, first, last. etc. para seguir con el alta y baja de datos inclusive estando la tabla filtrada. Pero con SQL eso ya es complicarme mas la vida creo. |
#9
|
||||
|
||||
Pues no.
Asociando un dbnavigator a una consulta te mueves exactamente igual que hasta ahora. Para hacer los Edit etc, si solo rescatas datos de una tabla, tambien se puede hacer con la misma facilidad que hasta ahora. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Como obtener el Nombre de usuario sin usar GetUserName | menfis | API de Windows | 8 | 06-05-2007 22:44:52 |
Filtro para TShellListView | soul6301 | Varios | 1 | 06-06-2004 08:27:15 |
que usar o como para poder imprimir? | mrmanuel | Impresión | 4 | 30-03-2004 09:20:31 |
Saludo para todos, como puedo usar 2 tablas | edwin1 | Impresión | 0 | 10-09-2003 16:59:53 |
|