Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Filtrar (https://www.clubdelphi.com/foros/showthread.php?t=10181)

pepelu1975 12-05-2004 12:09:26

Filtrar
 
Me gustaria saber como puedo filtrar una tabla paradox por un dato en concreto :mad:

Nuria 12-05-2004 12:22:24

Hola Pepelu!

Cambia las propiedades del TTable ---> Filtered = true y en Filter pon la condición que deben cumplir los registros para mostrarse.

Espero que te sirva.

Saludos!

pepelu1975 12-05-2004 12:52:24

Muchas gracias, voy a intentar explicarlo un poco mejor, porque me he quedado a medias.

Tengo un programa en Paradox donde doy de alta cuadros y cadacuadro tiene un codigo perteneciente a la exposicion a la que pertenece, me gustaria saber como puedo hacer para que en un form me pregunte que codigo de exposicion quiero listar en un Qreport y que me liste todas las obras con ese codigo, me habian dicho que es mediante un filtro.

Chas gracias

__cadetill 12-05-2004 13:11:12

Pues es precisamente lo que te ha respondido Nuria

Selecciona el TTable y verás que tiene las propiedades que te indica (Filter y Filtered)

Eso si, recomiendo que sigas este orden

Código Delphi [-]
Table1.Filtered := false;
Table1.Filter := condicion;
Table1.Filtered := true;

pepelu1975 12-05-2004 13:22:24

Debo de estar hoy muy espeso orque no entiendo nada, gracias por vuestra ayuda a ver si me concentro un poco y lo saco.

marcoszorrilla 12-05-2004 15:20:11

Con lo que te han dicho Nuria y Cadetill sería más que suficiente, pero dado el espesor matutino que confiesas te amplio un poco más, pon un Tedit, escribe el código o dato a filtrar y en un botón pon el código siguiente:


Código Delphi [-]
Table1.Filter := 'Codigo = '+QuotedStr(Edit1.Text);
Table1.Filtered := true;

Ya puestos pones una rejilla que visualice los datos desde el principio así verás como al poner el filtro éste funciona.

Ahora lanzas quickreport y solamente te mostrará los elementos que pasen el filtro.

Un Saludo.

pepelu1975 12-05-2004 17:36:19

Gracias a todos los que ayudan a encontrar la fluidez en dias de espesor.

pepelu1975 12-05-2004 17:59:31

Se me ha vuelto a apagar la bombilla, la primear busqueda me la hace perfecta, pero el problema aparece cuando intento hacer una segunda busqueda, porque en el QReport me aparecen los datos de la primera y de la segunda y asi sucesivamente, existe algun comando que limpie de datos el Qreport.

Gracias

__cadetill 12-05-2004 18:15:14

y cómo lo haces? Pon algo de código a ver si damos con la solución ;)

PD: acuerdate de usar la etiqueta [ code ] o [ delphi ]

pepelu1975 12-05-2004 18:25:57

El codigo de Busqueda es:

TObras.Filter := 'cod_expo = ' + QuotedStr(Edit1.Text);
TObras .Filtered := True;
FListadoObras.QuickRep1.Preview;

Entonces no se si existe la opcion Refresh, y si existiera la debo de poner tanto en el campo Edit1 para que me quite el valor introducido antes y ademas ponerlo en el QuickRep1?

__cadetill 12-05-2004 18:59:22

Pues esto debería de funcionarte

Código Delphi [-]
TObras.Filtered := False;
TObras.Filter := 'cod_expo = ' + QuotedStr(Edit1.Text);
TObras.Filtered := True;
FListadoObras.QuickRep1.Preview;

pepelu1975 12-05-2004 19:07:53

si que me funciona, el problema es que si lo cierro y vuelvo a hacer una consulta en el QuickReport me sale la consulta nueva mas la anterior

__cadetill 12-05-2004 19:11:57

mira de debuggear a ver que valores estás poniendo en el filtro. No tiene mucho sentido lo que comentas :confused:

pepelu1975 12-05-2004 19:26:21

Me da la impresion que el problema no es del filtro sino del QuickReport que he creado, voy a ver que consigo sacar por ese lado.
Gracias por todo

marcoszorrilla 12-05-2004 21:20:52

Código Delphi [-]
TObras.Filtered := False;
TObras.Filter := 'cod_expo = ' + QuotedStr(Edit1.Text);
TObras.Filtered := True;
ShowMessage(Tobras.Filter); //Para ver el contenido del filtro
FListadoObras.QuickRep1.PreviewModal;
FListadoObras.Close;

En el OnClose del Formulario que contiene QuickReport
Código Delphi [-]
Application.ProcessMessages;
FreeAndNil(QuickRep1);
Action:=CaFree;

Un Saludo.

pepelu1975 13-05-2004 12:31:10

Me he fijado y la cuestion es que siempre que le pulso al boton de filtrar en el Qreport me aparecen todas las obras, tengan el codigo de exposicion que tengan

__cadetill 13-05-2004 13:23:17

cod_expo es un valor numérico o de cadena? si es numérico, sobraría en QuotedStr

Por otro lado, has mirado de debuggear a ver que es lo que hace exactamente?

pepelu1975 13-05-2004 13:34:59

el valor cod_expo es string (letras y numeros), no consigo encontrar el debugbear

marcoszorrilla 13-05-2004 14:30:21

Esto tiene que funcionar pues es el ABC.

Solamente me queda de pensar, que tengas 2 Ttable conectados a la misma tabla y filtres uno y sin embargo el Quickreport lo conectes al otro?

En cuanto a "debugear", lo que te quiere decir Cadetill, es que uses el depurador de Delphi para ver que valor tienen las variables en cada momento y así detectar en donde está el error.



Un Saludo.

pepelu1975 13-05-2004 17:02:19

Creo que he encontrado el problema, pero necesito vuestra ayuda a ver si puede ser esto, la cuestion es que cuando yo plso sobre la opcion de listado obras, me aparece una pantalla pequeña en la que me pide el codigo de la exposicion, en esta pantalla es donde yo pongo el filtro y el boton de filtrar que me manda directamente al Quickrep1.preview, y este quickrep1.preview lo enlazo directamente cvon la tabla obras, mis dudas son:

Deberia enlazarlo al filtro?
Como puedo enlazarlo al filtro si estoy en otro form diferente.

Gracias a todos, cuando lo consiga os debo una cervecita a todos.


La franja horaria es GMT +2. Ahora son las 06:30:15.

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