Hola Luis.
Ya quedó claro en ese hilo que VReport no ordena, ni lo hace vReport ni ningún motor de Informes que yo haya usado.
Simplemente tenemos que alimentar al informe con una Lista ya agrupada y ordenada. El motor de VReport recorrerá la Lista de inicio a fin secuencialmente, creando las cabeceras/pies de los agrupamientos e imprimiendo los Detalles.
Agrupar y ordenar cualquier lista en Velneo es muy fácil, ¡como debe de ser!.
Para ilustrar el caso que he comentado anteriormente, pongo un ejemplo para ver que a veces no sirve con Cargar lista -> Ordenar campos -> Imprimir.
Supongamos una tabla con 3 tipos de operaciones Ventas-V, Gastos-G e Ingresos-I (TIPO_OPE). Dentro de cada operación habrá diferentes Conceptos de Ventas (Ventas en caja, Ventas en máquinas, …), Gastos (Gastos documentados, Personal, Anticipos, …) e Ingresos (Efectivo, Visa, AmericanExpress, …) (TIPO_CON).
Queremos sacar un Informe con todas las Operaciones agrupadas por Ventas, Gastos e Ingresos y dentro de cada agrupación a su vez agrupadas por Conceptos.
Los requisitos son que el Usuario decidirá el Orden en que aparecen los tipos de Operaciones, es decir, puede querer la secuencia Ventas-Ingresos-Gastos o Ingresos-Ventas-Gastos.
Por lo tanto tenemos 2 campos de ordenación TIPO_OPE y TIPO_CON. La pega es que el campo TIPO_OPE tiene ordenación arbitraria, decidida por el usuario y por esta razón no podemos usar Cargar lista -> Ordenar campos -> Imprimir.
Así que no nos queda más remedio que:
- El Usuario decide la secuencia Ingresos-I , Ventas-V, Gastos-G.
Cesta crear cesInforme
Cargar TIPO_OPE = “I”
Ordenar por TIPO_CON
Recorrer lista solo lectura (¡¡OJO!! no funciona Cesta: Añadir lista, se pierde el Orden)
– Cesta: Añadir ficha
Cargar TIPO_OPE = “V”
Ordenar por TIPO_CON
Recorrer lista solo lectura
– Cesta: Añadir ficha
Cargar TIPO_OPE = “G”
Ordenar por TIPO_CON
Recorrer lista solo lectura
– Cesta: Añadir ficha
Cesta: Procesar cesInforme
Imprimir informe personalizado
Necesitamos una Cesta obligatoriamente para ir volcando los tres TIPO_OPE (I,V,G) en el orden decidido por el Usuario.
Por supuesto podemos automatizar el proceso con un Array que rellena el Usuario:
Array: Insert item (ATIPO_OPE, “I”)
Array: Insert item (ATIPO_OPE, “V”)
Array: Insert item (ATIPO_OPE, “G”)
For (N, 0, N<3, 1)
– Cargar TIPO_OPE = ATIPO_OPE[N]
– Ordenar por TIPO_CON
– Recorrer lista solo lectura (¡¡OJO!! no funciona Cesta: Añadir lista, se pierde el Orden)
---- Cesta: Añadir ficha
Tened en cuenta que las operaciones entre Listas y Cestas son muy rápidas, se ejecutan en primer plano en memoria y solo se copian los punteros de tabla. Por lo tanto no hay problema de montar un Informe con varios niveles de agrupamiento cuyo orden sea arbitrario como en este caso.
Saludos
Paco Satué