Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Ordenar relacion Master/Detail por otro campo!! (https://www.clubdelphi.com/foros/showthread.php?t=22679)

arieliten 23-06-2005 06:57:50

Ordenar relacion Master/Detail por otro campo!!
 
Hola, estoy usando Delpgi 6 e Interbase 6 para mi aplicación y me he encontrado con el siguiente problema. Tengo 3 Tablas (IBTable) definidas como sigue:
1) Tabla Marcas (Id_Marca, Nombre, PideEnvase)
2) Tabla Productos (Id_Producto, Marca, Descripcion)
3) Tabla Productos_Detalle (Producto, Envase, Pr_Ctdo, Pr_CtaCte)
Con colores les marco que esas tablas estan vinculadas con un Foreign Key en esos campos.
Bueno, este diseño de tablas es para los productos de una pintureria donde almacenamos por ejemplo las distintas marcas de pinturas, luego los distintos productos y finalmente los precios de esos productos para cada envase en el que viene (1 lt, 4 lts, 10 lts, etc).
El problema es que quiero hacer un reporte (usando QReport) usando el método de relación Master/Detail y no logro que los productos me salgan ordenados por el envase.
Es decir, he logrado obtener un reporte agrupado por marcas primero y luego por articulos de esa marca con los distintos envases y precios en los que se encuentra ese articulo. Pero éste ultimo no aparece ordenado sino que aparece por ejemplo:

Colorama

Azul Metalizado
Envase Pr.Ctdo Pr.Cta.Cte
10 11,50 12,75
4 10,00 10,50
1 8,00 8,99
20 14,95 16,00
0,50 5,10 5,90


Como
vemos aquí, puedo hacer que me aparezcan todos los productos de la marca Colorama por ejemplo, el "azul metalizado", pero a la hora de ordenarlos, quisiera que aparecieran ordenados por el tipo de envase desde el más pequeño al más grande y no en forma aleatoria como aparecen.
¿Es posible hacer algo así?
Creo que el problema está en que el indice activo para la tabla "Productos_Detalle" es el de Producto (ya que lo vincula a la tabla de ese nombre por su relacion Master/Detail) entonces no puedo activar otro indice (por ejemplo, envase) para que se ordenen.
Quise tratar de hacer esta relacion master detail pero más a mano y usando IBQuerys para filtrar y mostrar lo que yo quisiera pero me he encontrado que no puedo hacer relaciones Master/Detail con los Querys ya que no tengo la propiedad "Master Source" en ellos.

Bueno espero que hayan entendido un poco mi problema y que me puedan ayudar. Saludos.

Lepe 23-06-2005 11:23:07

Con tablas planas si he conseguido hacerlo, con IB no lo he probado, pero intentalo:

Qryproductos:
Código SQL [-]
select * from productos
order by idproducto
Añade un Datasource para esta consulta y llámale DTSqryProductos

QryProductos_Detalle:
En el object Inspector QryProductos_Detalle.Datasource := DTSqryProductos
Con esto cogerá los datos desde qryProductos.


Código SQL [-]
select * from productos_detalle
where producto = :idproducto
order by Envase Asc;

En principio, como el parámetro que tiene qryProductos_Detalle tiene el mismo nombre que el campo de QryProductos, las 2 consultas quedan en relación Maestro-Detalle.

Repito, no sé si va a funcionar, pero menos dan las piedras.

Un saludo y suerte.

jachguate 23-06-2005 17:11:43

Podes basarte en la propiedad IndexFieldNames, con al cadena 'Producto;Envase'.

Para que la relación maestro/detalle se mantenga es necesario que el orden inicie por producto, luego podes añadir tantos campos como te interese ordenar en el reporte.

Hasta luego.

;)

arieliten 24-06-2005 14:54:21

Listo
 
Ok :D, muchas gracias por la ayuda muchachos!! :cool:


La franja horaria es GMT +2. Ahora son las 20:27:29.

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