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)
-   -   Maestro Detalle desde cero (https://www.clubdelphi.com/foros/showthread.php?t=45650)

K-ba 10-07-2007 17:00:28

Maestro Detalle desde cero
 
Necesito algun tutorial donde me explique maestro detalle desde cero(relaciones entre componentes y demas detalles a tener en cuenta), estoy trabajando con delphi 7, interbase-firebird, DbExpress y Rave.

Necesito generar un informe donde poder listar Articulos por los distintos Rubros existentes.


Lei varios hilos del foro pero realizan consultas avanzadas sobre Maestro Detalle y no como aprender a realizar este tipo de relacion.

Se agradece cualquier orientacion. Muchas gracias

BlueSteel 10-07-2007 18:56:02

Tengo un ejemplo de lo que quieres.. te lo puedo explicar por paso.. el único problema es que lo realice con el QReport que viene con el Delphi 7

Bueno lo que tengo es lo siguiente:

- Un boton de imprimir el informe
- Un informe en QReport
- 2 consultas Query
- 2 bandas (1 Detail y 1 SubDetail)

trabajo de la siguiente forma

cuando presiono el boton Imprimir_Informe ejecuto una sentencia para filtrar todos los registros que necesito

pro eje... las ordenes realizadas entre 2 fechas

Código Delphi [-]
     IBQ_Select.SQL.Clear;
     IBQ_Select.SQL.Add('Select * From "Orden","Proveedor"');
     IBQ_Select.SQL.Add('Where "Orden"."Pro_Rut"="Proveedor"."Pro_Rut"');
     IBQ_Select.SQL.Add('And "Orden"."Ord_Fecha" Between :Var1 And :Var2');
     IBQ_Select.SQL.Add('Order By "Ord_Numero"');
     IBQ_Select.Params[0].AsDate := vDes.Date;
     IBQ_Select.Params[1].AsDate := vHas.Date;
     IBQ_Select.Open;

en la banda Detail, tienes que poner todos los campos que necesitas imprimir

en la propiedad AfterPrint de la banda detail tiene que hacer el filtro para la segunda consulta.. .y asignas los campos que necesitas imprimir...

eso por lo pronto

BlueSteel 10-07-2007 20:58:24

continuando con lo anterior

en el evento AfterPrinter de la Banda Detail puse lo sgte sentecia y lo que hace es filtrar todos los cargos que posee la orden impresa...

Código Delphi [-]
     IBQ_Detalle.Close;
     IBQ_Detalle.SQL.Clear;
     IBQ_Detalle.SQL.Add('Select * From "Costos","Area"');
     IBQ_Detalle.SQL.Add('Where "Costos"."Are_Codigo"="Area"."Are_Codigo"');
     IBQ_Detalle.SQL.Add('And "Costos"."Ord_Numero"=:Var1');
     IBQ_Detalle.SQL.Add('Order By "Costos"."Are_Codigo"');
     IBQ_Detalle.Params[0].AsString := IBQ_Select['Ord_Numero'];
     IBQ_Detalle.Open;

espero que te sirva, pero como te dije esto lo realice en el QReport... creo que existen otras formas, pero al menos esta es la k utilizo yo.. y me funciona super...

K-ba 10-07-2007 21:22:21

Gracias
 
Apuntare los detalles que me envias y vere como aplicarlo con DBExpress y Rave.
Muchisimas Gracias, saludos y suerte!!!


La franja horaria es GMT +2. Ahora son las 12:56: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