Проблема здесь в том, что TotforMonth
или perfFee
не являются числовыми значениями, насколько это касается VBScript. При работе с числовыми полями для внешнего источника (плоский файл, rdbms и т. Д.) всегда лучше проверять их перед попыткой вычислений.
Например
<%
'These values are to be used in a calculation quickly make sure we are dealing with numeric values.
If Len(TotforMonth) > 0 And IsNumeric(TotforMonth) Then TotforMonth = CDbl(TotforMonth) Else TotforMonth = 0
If Len(perfFee) > 0 And IsNumeric(perfFee) Then perfFee = CDbl(perfFee) Else perfFee = 0
%>
Вы можете изменить CDbl()
на CLng()
или CInt()
в зависимости от того, с каким числовым типом вы хотите работать.
Очевидно, что если вы собираетесь использовать это часто, вы можете также создать функцию, которая сделает это за вас, что-то вроде:
<%
Function ConvertToNumeric(value, type, defaultValue)
If Len(value) > 0 And IsNumeric(value) Then
Select Case type
Case vbDouble
value = CDbl(value)
Case Else
'...
End Select
Else
value = defaultValue
End If
ConvertToNumeric = value
End Function
%>
Тогда используйте это так;
<%
TotforMonth = ConvertToNumeric(totforMonth, vbDouble, 0)
perfFee = ConvertToNumeric(perfFee, vbDouble, 0)
%>
Код предоставляется без проверки
Полезные ссылки