2014-01-22 56 views
0

如何Decimal.TryParse在下面的代碼行,如果值爲null或空的話,應該在聯編碼爲0在VB.NET你的建議十進制嘗試解析

<input type="checkbox" name="ticket" id="ticket<%=y%>" title="<%=(CDec(Decimal.TryParse(late_fee)) + CDec(rs("ticket_amount")) + CDec(rs("nsf_fee")))-(CDec(rsp("TICKET_PAYMENTS")) + CDec(rsp("LATEFEE_PAYMENTS")) + CDec(rsp("NSFFEE_PAYMENTS")))%>" value="<%=rs("ticket_id")%>" checked="checked" onclick="doMath();"/> 

謝謝

+2

由於您需要首先聲明將從「TryParse」方法返回的變量,因此不能內聯'TryParse'方法。您必須使用多行或創建一個返回它的方法。 –

+0

你可以請我提供任何我可以使用的例子,我更新我的問題 – Abhishek

+0

用這樣的大公式。我會把這段代碼放在一個函數中,或者在數據庫端執行。 –

回答

0

根據轉換是否成功,TryParse返回true或false。

嘗試:

double number; 
Double.TryParse(late_fee, out number); 

號:「此方法返回時,包含雙精度浮點數相當於late_fee參數,如果轉換成功,或零,如果轉換失敗」

使用「數字」

(CDec(number) + CDec(rs("ticket_amount")) + CDec(rs("nsf_fee")))-(CDec(rsp("TICKET_PAYMENTS")) + CDec(rsp("LATEFEE_PAYMENTS")) + CDec(rsp("NSFFEE_PAYMENTS"))) 
0

您不能內聯TryParse方法,因爲你需要聲明的變量首先將返回˚F從TryParse - 方法。您必須使用多行或創建一個返回它的方法。

我會推薦使用變量,因爲這會讓您的代碼更具可讀性,並且這是最重要的。

然而,對於它的價值,你可以把它返回小數或默認值的擴展:

Module StringExtensions 

    <Runtime.CompilerServices.Extension()> 
    Public Function ParseDecimal(ByVal aString As String, defValue As Decimal, Optional culture As Globalization.CultureInfo = Nothing) As Decimal 
     Dim retVal As Decimal = defValue 
     If culture Is Nothing Then culture = Globalization.CultureInfo.CurrentCulture 
     Decimal.TryParse(aString, Globalization.NumberStyles.Any, culture, retVal) 
     Return retVal 
    End Function 

End Module 

然後,你可以內嵌即使我仍然會用多行和變量,以提高計算可讀性。

Dim lateFee As Decimal = late_fee.ParseDecimal(0) ' and the other variables ....