Pregunta

Estoy intentando escribir un Informe Crystal que tenga totales agrupados de forma diferente al informe principal.La única forma en que he podido hacer esto hasta ahora es usar un subinforme para los totales, pero eso significa tener que acceder a la fuente de datos nuevamente para recuperar los mismos datos, lo que parece una tontería.Aquí hay un ejemplo simplificado:

       date   name   earnings   source          location
-----------------------------------------------------------
12-AUG-2008   Tom      $50.00   washing cars    uptown
12-AUG-2008   Dick    $100.00   washing cars    downtown     { main report }
12-AUG-2008   Harry    $75.00   mowing lawns    around town

                    total earnings for washing cars: $150.00 { subreport }
                    total earnings for mowing lawns:  $75.00

       date   name   earnings   source          location
-----------------------------------------------------------
13-AUG-2008   John     $95.00   dog walking     downtown
13-AUG-2008   Jane    $105.00   washing cars    around town  { main report }
13-AUG-2008   Dave     $65.00   mowing lawns    around town

                    total earnings for dog walking:   $95.00
                    total earnings for washing cars: $105.00 { subreport }
                    total earnings for mowing lawns:  $65.00

En este ejemplo, el informe principal está agrupado por "fecha", pero los totales se agrupan adicionalmente por "fuente".He buscado ejemplos del uso de totales acumulados, pero realmente no hacen lo que necesito.¿No hay alguna forma de almacenar el conjunto de resultados y hacer que tanto el informe principal como el subinforme hagan referencia a los mismos datos?

¿Fue útil?

Solución

Mmm...Tan bueno como es llamar al proceso almacenado desde el informe y tenerlo todo contenido en una ubicación, sin embargo, descubrimos (como usted) que eventualmente llega a un punto en el que no puede conseguir que el cristal haga lo que quiere, incluso aunque el los datos están ahí.

Terminamos introduciendo una capa empresarial que se encuentra debajo del informe y, en lugar de "extraer" datos del informe, "enviamos" los conjuntos de datos y vinculamos los datos al informe.La ventaja es que puede manipular los datos en código en conjuntos de datos u objetos antes de que lleguen al informe y luego simplemente vincular los datos al informe.

Este artículo tiene una buena introducción sobre cómo configurar el envío de datos a los informes.Entiendo que es posible que sus limitaciones de tiempo/negocio no le permitan hacer esto, pero si es posible, lo recomiendo encarecidamente, ya que significa que podemos eliminar toda la "codificación" de nuestros informes y convertirla en código administrado, que siempre es una cosa buena.

Otros consejos

La única forma en que se me ocurre hacer esto sin una segunda revisión de los datos sería creando algunas fórmulas para hacer totales acumulados por grupo.El problema que supongo que se está encontrando con los totales acumulados existentes es que están destinados a seguir a cada uno de los grupos que están totalizando.Dado que parece querer que los subtotales sigan después de todos los datos "sin procesar", esto no funcionará.

Si crea sus propias fórmulas para cada grupo que simplemente suma el total de las filas que coinciden con el grupo, debería poder colocarlas al final del informe.La desventaja de este enfoque es que los subtotales resultantes no serán dinámicos en relación con los grupos.En otras palabras, si tuviera una nueva 'fuente', no aparecería en los subtotales hasta que la agregara o si no tuviera datos sobre 'pasear perros', aún tendría un subtotal para ella.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top