Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Maestro Detalle (https://www.clubdelphi.com/foros/showthread.php?t=95711)

kainchu3102 07-06-2022 04:54:13

Maestro Detalle
 
Buenas noches gente, tengo dos tablas llamadas 1_productos y 2_detalle_productos, mi problema es el siguiente cuando quiera que me muestre los productos con sus respetivos detalles solo me muestran los productos que tienen asignados los detalles, yo necesitaria que me haga una muestra general
las consulta las hago desde dos FDquery. y llamados

FDQProductos, y FDQDet_Productos.

En el FDQDet_productos en Master source = DataSource_productos
Master Fiel = id_productos
indexFielName = id_productos_detalle
asi como fue que las enlace

P/D Mir problema es que como selecciono una fecha desde hasta solo me muestra los productos que tiene detalles asignados de la tabla y yo necesito que me muestro todos los productos tengan o no detalle.

espero haberme hecho entender :(

kuan-yiu 07-06-2022 10:02:35

¿Cómo obtienes los datos? ¿Cuales son las consultas? Si no lo explicas en detalle no podemos ser concretos con las respuestas.

Lo que se muestra en el maestro depende de la consulta, o el filtrado, que tengas establecido.
Que los detalles de los productos se seleccionen por fecha no implica que deba aplicarse esa selección también a los productos.
Yo estas estructuras maestro-detalle siempre las hago usando tQuerys y no hay problemas en mostrar maestros sin lineas de detalle.

kainchu3102 07-06-2022 19:35:53

respuesta
 
Muchas gracias por responder, Los datos los obtengo con las consulta Select y Betwen fecha desde hasta tanto para FDQproductos y FdqDetalle aparentemente lo estoy haciendo mal podrias pasarme algunos links o algun codigo para poder ver. porfa

Casimiro Noteví 07-06-2022 21:02:15

Pero pon la consulta sql que estás usando, así se te podrá ayudar.

kainchu3102 08-06-2022 05:21:57

Respuesta a Casimiro
 
Código Delphi [-]
      with DataModule1.FDQTURNOS2 Do
      begin
       SQL.Clear;
       SQL.Add ('SELECT * FROM turnos WHERE fec_tur BETWEEN :FECHADESDE AND :FECHAHASTA ORDER BY fec_tur, hor_tur ASC');
       params.ParamByName('FECHADESDE').AsDate := DateTimePicker1.Date;
       params.ParamByName('FECHAHASTA').AsDate := DateTimePicker2.Date;
  
       Open();
     end;
     ////////////////////////////////////////////////////////////

    with DataModule1.FDQPAGOS2 Do
    begin
     SQL.Clear;
     SQL.Add ('SELECT * FROM pagos WHERE fec_pag BETWEEN :FECHADESDE AND :FECHAHASTA ORDER BY fec_pag, hor_pag ASC');

     params.ParamByName('FECHADESDE').AsDate := DateTimePicker1.Date;
     params.ParamByName('FECHAHASTA').AsDate := DateTimePicker2.Date;
     Open();
      end;

  DataModule1.FRXREPORT_PAGOS.ShowReport();



Este seria el codigo desde un Boton en Delphi.

kainchu3102 08-06-2022 05:29:46

Intente de esta dos maneras pero tambien sólo muestra datos si existen registros en ambas tablas relacionados. Si no hay detalle para un determinado producto, ese producto no aparecen.

por ejemplo en turno si no tengo ningun pago no aparece.

SELECT T.*, P.* FROM turnos T
RIGHT JOIN pagos P ON P.id_tur_pag = id_tur
y

SELECT T.*, P.* FROM turnos T
LEFT JOIN pagos P ON P.id_tur_pag = id_tur

Casimiro Noteví 08-06-2022 08:31:10

Solo una sql, algo como:

Código SQL [-]
select tablamaestro.*, tabladetalle.*
from tablamaestro
left join tabladetalles on (id.tablamaestro=id.tabladetalle)
... resto de condiciones de fechas y orden ...

kuan-yiu 08-06-2022 08:58:21

Yo en primer lugar comprobaría que la consulta principal muestre lo deseado. Pruébala directamente sobre tu BD, ¿obtienes todos los resultados incluidos los que no tienen lineas de detalle?

A mi este artículo en su momento me ayudó mucho con todo lo relacionado con Maestro-Detalle:
https://edn.embarcadero.com/article/30330


La franja horaria es GMT +2. Ahora son las 11:19:59.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi