2008-10-02 5 views
7

J'essaie de créer un champ de formule Crystal Reports (pour calculer la variation en pourcentage d'un prix) qui renverra "N/A" si un champ de rapport particulier est null , mais retourne un nombre à deux décimales en utilisant le format de comptabilité (nombres négatifs entourés de parenthèses) si ce n'est pas le cas.Mise en forme d'un champ à l'aide de ToText dans un champ de formule Crystal Reports

Le plus proche que je suis en mesure de gérer est la suivante:

If IsNull({ValuationReport.YestPrice}) Then 
    'N/A' 
Else 
    ToText({@Price}/{ValuationReport.YestPrice}*100-100, '###.00', 2) 

Cependant, cela représente des nombres négatifs en utilisant un signe négatif, pas de parenthèses.

J'ai essayé des chaînes de format comme '###. 00; (###. 00)' et '(###. 00)' mais celles-ci ont été rejetées comme non valides. Comment puis-je atteindre mon objectif?

Répondre

8

Je pense que vous cherchez ToText(CCur(@Price}/{ValuationReport.YestPrice}*100-100))

Vous pouvez utiliser CCur pour convertir des nombres ou la chaîne aux formats curency. CCur(number) ou CCur(string)


Je pense que cela peut être ce que vous cherchez,

Replace (ToText(CCur({field})),"$" , "") qui donnera les parenthèses pour les nombres négatifs

Il est un peu hacky, mais je ne suis pas sûr CR est très gentil dans les moyens de mise en forme

0
if(isnull({uspRptMonthlyGasRevenueByGas;1.YearTotal})) = true then 
    "nd" 
else 
    totext({uspRptMonthlyGasRevenueByGas;1.YearTotal},'###.00') 

La logique ci-dessus devrait être ce que vous cherchez.