SOLUCIÓN: Agrupamientos en rejillas.


(ame) #1

Creo haber encontrado una manera alternativa de realizar agrupaciones en las rejillas mostrando a su vez cálculos agrupados.

Los objetos claves que entran en juego en esta solución son:

- La instrucción de multipartir lista y cortar.

- Variables del tipo array.

- Variables locales en la rejilla.

- Eventos en la rejilla.

- Dos procesos, uno carga la lista directamente, y el otro la carga multipartiendo por el campo de agrupación.

Os paso capturas que se entenderá mejor:

El formulario principal:

[attachment=10689,1024]

El proceso que alimenta la rejilla:

[attachment=10689,1025]

La rejilla:

[attachment=10689,1026]

El contenido del campo que muestra los totales de cada agrupamiento

es básicamente este:

TOT[#PAYMENT]

El evento de la rejilla que salta al inicializarse:

[attachment=10689,1029]

El proceso al que llama dicho evento:

[attachment=10689,1028]

 

La clave más importante está en usar la variable array. La idea es que cada posición del array, es un agrupamiento.

En el caso de este ejemplo, la dimensión del array es de 10 posiciones que corresponden a 10 tipos de pago: Efectivo, Tarjeta, Gratis, Cheque, etc. En cada posición se guarda el total de cada tipo de pago y se accede mediante el propio valor del campo #PAYMENT.

Es una emulación a lo que son los arrays asociativos o hash, que ya ví a alguien en otro post hablar de ello.

 

Saludos y espero vuestras críticas/errores/mejoras/etc.

 

 

 

 


(ame) #2

Si queremos mejorar la eficiencia en tiempo en detrimiento de la eficiencia en espacio (algo muy típico en la informática), podemos declarar la variable array que sea del tipo global. De esta forma, nos ahorramos el evento y el proceso que llama este evento, ya que podemos aprovechar el otro proceso (el que agrupa) para realizar también el cálculo de los totales, ya que la variable es global, y así evitamos recorrer varias veces la lista.

Un saludo.