La división por cero en la fórmula tabla de referencias cruzadas
-
13-10-2019 - |
Pregunta
I tiene una tabla de referencias cruzadas con un campo de fórmula. La consulta devuelve algo así como
CategoryID Company MarketValue PaymentMode
1 ABC 1000 H
1 xyz 2000 H
3 efg 9800 H
Modo de Pago se media anual indica mediante 'H' Hice un campo de fórmula para evaluar el modo de pago por
WhileReadingRecords;
numberVar mode;
if({PaymentMode}='H') then mode:=2 else mode:=12
Entonces hizo otro campo de fórmula
WhileReadingRecords;
numberVar mode;
numberVar result:={MarketValue}/mod;
result
Sin embargo devuelve error de división por cero. ¿Por qué es mi fórmula para el pago de modo no evaluar adecuadamente. He intentado la colocación de la fórmula modo de pago en la cabeza y el informe de tabla de referencias cruzadas es el 2 de cabecera pero todavía arroja el mismo error.
Solución
Dos problemas.
En primer error de sintaxis - o mejor dicho error tipográfico aquí, la última 'e' no se encuentra:)
numberVar result:={MarketValue}/mode;
En segundo lugar - es necesario evaluar formuals con el fin especificado. Digamos que su primera fórmula tiene el nombre 'calc_mode', entonces segundo debe empezar con el siguiente comunicado:
EvaluateAfter({@calc_mode});
Otros consejos
Me alegro de que ya ha encontrado la respuesta de Arvo, pero tengo algunas sugerencias para simplificar el código:
-
Modo es un buit-en función de Cristal (ver archivos de ayuda de Crystal). Así que cuando te vi usar esa palabra como el nombre de una variable personalizada, mi cerebro hizo una voltereta hacia atrás. ¿Qué tal que calificó de "numPayPeriods" en su lugar?
-
Debido a que su fórmula de ejemplo incluye los valores de campo, implementos de cristal WhileReadingRecords de forma predeterminada (de nuevo, consulte los archivos de ayuda de Crystal). Por lo que añadir que es redundante en este caso. Puede tener que salir por completo.
-
No hay necesidad de 2 fórmulas separadas en su ejemplo. Además, su Resultados variable es innecesario en la sintaxis Crystal. Se puede simplificar todo el asunto a sólo 1 fórmula:
if({PaymentMode}='H') then
{MarketValue}/2
else
{MarketValue}/12;