Crystal Report Suma total para cada fecha en el rango de fechas

este es mi primer intento de desbordamiento de pila, así que espero que todos puedan ayudarme. Estaría feliz de comenzar a contribuir aquí, ha sido una herramienta muy útil en el pasado.

Bien, entonces estoy tratando de escribir un informe que grafica el total de horas vencidas de una planta de fabricación. Lo que tengo es un conglomerado de tablas que enumeran cada orden de fabricación y dan una fecha de vencimiento y una fecha de finalización. La persona que ejecuta el informe ingresa un rango de fechas y quiero generar un gráfico con fechas a lo largo del eje x y la suma de las horas vencidas en el eje y. Tal vez me estoy perdiendo algo con una implementación del truco de tres fórmulas, pero no puedo hacer que esto funcione. Puedo agrupar por fecha de vencimiento, pero eso solo me da el total de pedidos que vencieron en una fecha determinada.

Lo que necesito es algo como lo siguiente, que es chartable:

    For each (date in DateRange) {
       If (Due Date < i) && (Comp Date > i) {
          Past Due Hours = Past Due Hours + manufacturing order Hours
       }
    }

Sé que no está en Crystal Syntax, solo estaba tratando de transmitir la imagen. ¿Alguna ayuda?

preguntado el 21 de mayo de 12 a las 18:05

1 Respuestas

Este tipo de pregunta surge regularmente, si lo he entendido correctamente. ¿Tienes algo como esto?

OrderNum DueDate  CompletedDate
1        01/01/01 01/02/01
2        01/01/01 01/01/01
3        01/02/01 01/03/01
4        01/02/01 01/02/01

Ahora, lo primero que debe hacer es obtener una tabla (existen otros enfoques similares) con todas las fechas y unirse a su conjunto de datos para terminar con:

OrderNum DueDate  CompletedDate Date
1        01/01/01 01/02/01      01/01/01
2        01/01/01 01/01/01      01/01/01
3        01/02/01 01/03/01      01/01/01
4        01/02/01 01/02/01      01/01/01
1        01/01/01 01/02/01      01/02/01
2        01/01/01 01/01/01      01/02/01
3        01/02/01 01/03/01      01/02/01
4        01/02/01 01/02/01      01/02/01
1        01/01/01 01/02/01      01/03/01
2        01/01/01 01/01/01      01/03/01
3        01/02/01 01/03/01      01/03/01
4        01/02/01 01/02/01      01/03/01

A continuación, debe agregar un campo que determine si el pedido es {@overdue}:

if {table.duedate} < {table.date} and {table.completeddate} > {table.date} then 
 1
else 
 0;

Asegúrese de seleccionar valores predeterminados para valores nulos para evitar anomalías).

Ahora puede crear un gráfico trazando sum({@overdue}) en contra {table.date}

L

contestado el 21 de mayo de 12 a las 19:05

Gracias Lee, ¿es este el único método? Parece ineficiente cuando estamos hablando de devolver varios cientos de filas, que se convertirían en miles de filas si se seleccionaran una vez para cada fecha en el intervalo de fechas. - Caleb Keller

Creo que sí. Los puntos de datos que está buscando simplemente no existen en el conjunto de datos actual. Dependiendo del tamaño de su rango de fechas, podría considerar codificar una fórmula para cada punto de datos, pero imagino que sería aún más doloroso. - Lee Boleto

Entonces, para completar los espacios en blanco, usé una declaración "CON" para crear el rango de fechas. Y luego un "CROSS JOIN" para agregarlo a mis datos. Obtuve exactamente lo que necesitaba gracias por su ayuda. - Caleb Keller

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.