Question

J'ai un tableau croisé avec un champ de formule. La requête retourne quelque chose comme

 CategoryID   Company       MarketValue   PaymentMode
  1            ABC             1000         H
  1            xyz             2000         H
  3            efg             9800         H

Mode de paiement est indiquée par moitié chaque année « H » J'ai fait un champ de formule pour évaluer le mode de paiement par

WhileReadingRecords;
numberVar mode;  
         if({PaymentMode}='H') then mode:=2 else mode:=12

Alors je fait un autre champ de formule

WhileReadingRecords;
numberVar mode;
numberVar result:={MarketValue}/mod;
result

Cependant, il retourne division par zéro erreur. Pourquoi ma formule pour le mode de paiement ne pas évaluer correctement. J'ai essayé de placer les mode de paiement formule dans la tête de rapport et onglet croix est 2ème tête mais il jette toujours la même erreur.

Était-ce utile?

La solution

Deux problèmes.

Première erreur de syntaxe - ou plutôt faute de frappe ici, dernière 'e' est manquante:)

numberVar result:={MarketValue}/mode;

Deuxième - vous devez évaluer formuals dans l'ordre indiqué. Supposons que votre première formule a le nom « calc_mode », puis la deuxième devrait commencer par déclaration suivante:

EvaluateAfter({@calc_mode});

Autres conseils

Je suis heureux que vous ayez déjà trouvé la réponse de Arvo, mais j'ai quelques suggestions pour simplifier votre code:

  1. mode est un buit en fonction de cristal (voir les fichiers d'aide de cristal). Alors, quand je vous ai vu utiliser ce mot comme nom pour une variable personnalisée, mon cerveau a fait un saut périlleux arrière. Que diriez-vous l'appeler "numPayPeriods" à la place?

  2. Étant donné que votre formule échantillon comprend des valeurs de champ, des outils de cristal WhileReadingRecords par défaut (encore une fois, voir les fichiers d'aide de cristal). Donc, en ajoutant qu'il est superflu dans ce cas. Vous pouvez prendre cette complètement.

  3. Il n'y a pas besoin de 2 formules distinctes dans votre exemple. En outre, Résultat variable est inutile dans la syntaxe Crystal. Vous pouvez simplifier le tout à seulement 1 formule:

    if({PaymentMode}='H') then
    {MarketValue}/2
    else
    {MarketValue}/12;

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top