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.

¿Fue útil?

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:

  1. 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?

  2. 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.

  3. 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;

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