Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Maestro Detalle con ClientDataset Filtrado (https://www.clubdelphi.com/foros/showthread.php?t=80333)

Joser 19-09-2012 05:40:50

Maestro Detalle con ClientDataset Filtrado
 
Hola gente, disculpen la molestia pero hay un temita que necesito resolver y no se como.
estoy realizando una aplicacion en delphi 7 con sql server 2005, en mi diseño de db, la tabla maestro la denomino tipomov(tipos de movimientos) con los sig. campos(id,nombre,accion) mientras que en la tabla detalle, denominada movimientos, entre todos los campos contiene el identificador de la tabla tipomov y la fecha de dicho movimiento. mi consulta es la siguiente, es posible realiza el maestro detalle filtrarlo con el campo fecha de la tabla detalle, el rango de la fecha lo obtendria por desicion del usuario.

desde ya muchas gracias.

Saludos!!!

Casimiro Notevi 19-09-2012 11:11:37

Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración :)

No se entiende bien lo que preguntas, pero si quieres filtrar por fecha, por supuesto que podrás hacerlo.

Código SQL [-]
select ...
from ...
where fecha between :fechainicio and :fechafinal

Joser 19-09-2012 17:55:07

Perdón si cometí un error... Vamos de nuevo.

Primeramente gracias por responder, en mi formulario tengo dos DBGrid, uno vinculado a la tabla tipodemovimiento y el otro a la tabla movimientos, lo que quiero es que mientras el usuario se mueva por la grilla de los tipos de movimientos, la otra grilla solo muestre los movimientos de ese tipo...hasta esta parte no tengo problemas, funciona correctamente...ahora en la tabla movimientos tengo un campo fecha, y quiero que cuando muestre los movimientos contemple ese campo para que solo me muestre los movimientos de una fecha determinada... esto lo quiero hacer a través de los ClientDataset con su propiedad MasterSouce pero no se como hacer para que contemple el campo fecha cuando hace el maestro detalle... espero que esta vez me haya podido expresar un poco mejor y si no es posible lo que estoy consultando por favor si me pueden decir una manera diferente y/o mas conveniente de hacerlo...

espero me sepan disculpar si no me se expresar, nuevamente gracias

Casimiro Notevi 19-09-2012 18:20:28

No sé cómo hacerlo con un clientdataset, no lo he usado nunca de esa forma.

En casos de maestro/detalle como el que comentas, siempre he usado un query para el detalle, ejemplo:
Tengo un querydetalle con la sentencia:
Código SQL [-]
select * from tabladetalle where codigomaestro= :codigo
Y cada vez que se cambia de registro en el maestro se ejecuta esa sentencia con el parámetro del código maestro, ejemplo:

Código Delphi [-]
querymaestroOnChange
begin
  querydetalle.close;
  querydetalle.parambyname('codigomaestro').asinteger := querymaestroCodigo.asinteger;
  querydetalle.open;
end;

De esa forma, añadir más parámetros es algo sencillo, por ejemplo la fechas que te interesa:
Código SQL [-]
select * from tabladetalle where codigomaestro= :codigo and fecha between :fechainicio and :fechafinal
Código Delphi [-]
querymaestroOnChange
begin
  querydetalle.close;
  querydetalle.parambyname('codigomaestro').asinteger := querymaestroCodigo.asinteger;
  querydetalle.parambyname('fechainicio').asdate := datetimepickerinicio.asdate;
  querydetalle.parambyname('fechafinal').asdate := datetimepickerfinal.asdate;
  querydetalle.open;
end;

De todas formas, seguramente puedes hacerlo con el clientdataset, sólo que yo prefiero querys para hacer eso.

roman 19-09-2012 18:25:24

No entiendo Casimiro. ¿Estas diciendo que en lugar de usar las relaciones maestro-detalle de los componentes, lo haces manualmente?

// Saludos

Casimiro Notevi 19-09-2012 18:31:26

Cita:

Empezado por roman (Mensaje 443623)
No entiendo Casimiro. ¿Estas diciendo que en lugar de usar las relaciones maestro-detalle de los componentes, lo haces manualmente?

Sí, soy así de... bruto :o

No sé, siempre lo hice así, me parece que tengo más control y como nunca he tenido problema con ello, pues sigo haciéndolo así.

Joser 19-09-2012 18:53:54

ok, gracias por tu respuesta, muy amable...

saludos y éxitos!!!


La franja horaria es GMT +2. Ahora son las 21:30:49.

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