2016-10-10 73 views
0

下面的代碼計算出我的數據的百分比。所有的工作都很好,除了100%應該是紅色的(#B20000),但實際上是綠色的(#32CD32)。我添加了一個特別指100%的選項,但即使這樣也沒有效果。有任何想法嗎?由於經典ASP FormatPercent忽略100%?

R = FormatPercent(objRsStat("active_beds")/objRsStat("total_beds"), 2) 
'R = objRsStat("percent_remaining") 
If R =< "60%" Then 
    CL = "#32CD32" 
ElseIf R => "61%" And R =< "79%" Then 
    CL = "#FF8000" 
ElseIf R => "80%" Then 
    CL = "#B20000" 
ELSEIF R = "100%" Then 
    CL = "#B20000" 
END IF 

更新的代碼(有誤差):

If R <= 0.6 Then 
    CL = "#32CD32" 
ELSEIF R => 0.61 AND R <= 0.79 THEN 
    CL = "#FF8000" 
ELSEIF R => 0.80 THEN 
    CL = "#B20000" 
END IF 
+0

你不能比較的字符串值,並期望它表現得像數值。測試原始百分比*('R =>「61%」並不意味着你的想法)*'objRsStat(「active_beds」)/ objRsStat(「total_beds」)'。 – Lankymart

+0

它目前的工作原理 - 當從字符串更改爲數字它引發了一個很好的錯誤。這只是它掙扎的100%的數字。 99%是好的,所以我猜它在某處變得困惑,並沒有把100%視爲100% - 就像100%實際上被認爲是0%類型場景 –

+0

不要做出假設,請參閱@dai [answer below](http: //stackoverflow.com/a/39960810/692942)。 – Lankymart

回答

1

您使用了錯誤的語法。 <= "60%"將比較數字R字符串「60%」。 VBScript不會抱怨這一點,因爲它是寬鬆的設計,但這也會導致無聲的問題 - 就像你正在經歷的那樣。

您還正在使用不正確的代碼,甚至無法運行:「小於或等於」運算符爲<=而不是=<)。

試試這個:

If R <= 0.6 Then 
    CL = "#32CD32" 

(你還需要刪除FormatPercent函數調用,否則你會得到一個類型不匹配的錯誤。)

+0

感謝您的回答。我已經嘗試使用您的建議,以改變這一點,但我得到類型不匹配 - [R 當前的代碼: 若R <= 0.6然後 CL = 「#32CD32」 ELSEIF R => 0.61和R <= 0.79 THEN CL =「#FF8000」 ELSEIF R => 0.80 THEN CL =「#B20000」 END IF –

+1

刪除FormatPercent函數調用。 – Dai

+0

啊,謝謝。這現在正在工作(標記爲已回答)。 –