Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Combinaciones de filtros elegidas por el usuario. Tablas Paradox (https://www.clubdelphi.com/foros/showthread.php?t=6681)

jealousy 18-01-2004 19:15:43

Combinaciones de filtros elegidas por el usuario. Tablas Paradox
 
Hola :)

No se como resolver este problemilla. Resulta que tengo una tabla ventas en la cual entre otros campos estan: PROVEEDOR, TALLA, COLOR, FECHA. Pues bien, necesito(bueno, yo no, mi clienta) hacer consultas combinando esos cuatro campos. Hasta ahora podia elejir uno de ellos con un valor y filtrar, pero ahora lo que quiero hacer es poder crear combinaciones. No se si me explico bien. Antes tenia un RadioButton para cada uno y hacia un filtro y ya está. Pero ahora lo que quiero es poner un CheckButton y que se puedan elejir los que quiera. Osea, Pues Tal proveedor de tal talla o Tal proveedor de tal talla y tal color o Tal proveedor entre esta fecha y esta. ¿Como puedo hacer el filtro solamente de los que esten marcados?

Utilizo tablas paradox.

Gracias y un saludo a todo el ClubDelphi;)

__cadetill 18-01-2004 19:54:55

Pues lo único que has de hacer es unir las condiciones del filtro con un AND

Tabla.Filter = 'condicion1 and condicion2 and condicion3 and......';

Espero te sirva

jealousy 18-01-2004 20:17:43

Gracias Cadetill :)

El hacer filtros por mas de un campo ya lo he hecho, pero mi problemas es que yo no se cuales va a elegir el cliente. Hay cuatro checkboxs. Entonces son varias combinaciones que el cliente puede hacer. ¿Como implemento eso?

marcoszorrilla 18-01-2004 20:26:41

Como lo que vas a construir es una cadena, es fácil, recorres los checkboxes:

Por ejemplo:
Código:

var
cadSql:String;
nCont:Integer;
begin
nCont:=0;
if CheckBox1.Checked then
begin
CadSql:='MiCampo1 ='+QuotedStr(Edit1.Text);
nCont:=nCont + 1;
end

if CheckBox2.Checked then
  if nCont > 0 then
  CadSql:=+CadSql+' And ';
CadSql:=+CadSql+'MiCampo1 ='+QuotedStr(Edit2.Text);
nCont:=nCont + 1;
end
.....
cadSql:=CadSql +'From MiTabla';
MiTabla.Filter:=CadSql;
MiTabla.Filtered:=True;
end;

Bueno, esto es la idea básica creo que te cueste poco desarrollarla.
Un Saludo.

jealousy 19-01-2004 09:11:43

Muchisimas gracias :) Me va estupendo. A veces lo mas sencillo no lo ve uno, je je. Ya lo tengo implementado, aunque voy a ver si consigo hacerlo con un Query en lugar de un Table por el tema de las fechas. Supongo que la cadena Sql tendre q pasarla a la propiedad SQL. Es que no se como hacer lo de filtrar un rango de fechas con el Table. Con el Query usare between fecha1 fecha2. ¿Existe alguna manera de hacerlo con el Table?

Gracias otra vez, no se que haria sin vosotros ;)

__cadetill 19-01-2004 10:57:07

Cita:

Empezado por jealousy
¿Existe alguna manera de hacerlo con el Table?

Pues sí. Sólo has de poner la cadena correcta en el filtro. Algo así como

Tabla.Filter := 'Fecha >= ' + QuotedStr(FormatDateTime('mm/dd/yyyy', FechaIni)) +
' and Fecha <= ' + QuotedStr(FormatDateTime('mm/dd/yyyy', FechaFin))

jealousy 19-01-2004 22:44:34

Mil Gracias ;)


La franja horaria es GMT +2. Ahora son las 04:11:39.

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