2015-10-23 77 views
0

如果你有一個目標數和實際數,簡單的方法來計算的差距很簡單:如何計算Crystal Reports中兩個數字之間的差距?

{goal} - {actual} 

但是,如果你超過你的目標,那麼這個數字將在報告爲負數顯示。我的老闆想要使用的會議是在號碼前加一個「+」號,以表明我們已經超出了目標。

我試着寫,如果結果返回負即乘以-1的結果的公式:

shared numbervar gap; 
gap := {goal} - {actual} 
if gap < 0 then gap := gap * -1 
gap; 

但它不工作。

我的第一個問題是我做錯了什麼?

我的第二個問題是,有沒有更好的方法來做到這一點?我稱之爲水晶報告中的其他東西是什麼?

+0

你正在計算的是_absolute差異_(我應該說,這就是你用兩個分號正確地終止第2行和第3行的計算結果)。但那不是你想要的,因爲那麼你的'差距'變量將會失去它所需要的符號。你只想保留'gap:= {goal} - {actual}',但只要在報告中以'+'作爲負號(而不是' - ')顯示。 – Ryan

+1

爲什麼不只是顛倒順序:'{actual} - {goal}'? – craig

+0

@craig因爲什麼是有道理的,你的老闆想要什麼並不總是一回事。 – ShemSeger

回答

1

當您乘以-1並不意味着它顯示爲+ ...它不顯示任何負號表示它是一個正數。

通常在數學上,如果沒有跡象數之前它被認爲是正數,沒有必要明確提到爲+

現在來你的問題..你已經正確地做了一切,但因爲你需要看到+籤然後追加它如下

shared numbervar gap; 
Shared Numbervar display; 

gap := {goal} - {actual}; 

if (gap < 0) 
then display := "+"&ToText(gap * -1) 
else display := gap; 
display 
+0

線路仍未正確終止,因此這不是有效的公式。另外,如果{{goal}> = {actual}'?你沒有考慮到這種可能性,只是在所有事情上加上'+'。 – Ryan

+1

@Ryan是錯過了語法部分壞.....更新瞭解決方案。 – Siva

+0

我在ToText()函數中得到了一個「預計會出現一個數字」錯誤。 – ShemSeger

0

我能夠做到這一點使用下面的公式:

shared numbervar gap; 

gap := {goal} - {actual}; 

If gap < 0 then 

"+" + totext(gap * -1, 0, "") 

Else if gap = 0 then 
totext(gap, 0, "") 
else 

totext(gap, 0, "") 
相關問題