gpt4 book ai didi

asp-classic - ASP 经典 - 类型不匹配 : 'CInt' - Easy question

转载 作者:行者123 更新时间:2023-12-02 21:51:56 25 4
gpt4 key购买 nike

在 ASP classic 中遇到类型转换问题。

这是我的代码:

        Set trainingCost = Server.CreateObject("ADODB.Recordset")
strSQL3 = "SELECT cost1 FROM tblMain WHERE (Booked = 'Booked') AND (Paid IS NULL) AND (PaidDate BETWEEN '01/04/" & startyear & "' AND '31/03/" & endyear & "')"
trainingCost.Open strSQL3, Connection
trainingCost.movefirst
totalTrainCost = 0
do while not trainingCost.eof
trainCost = trainingCost("cost1")
If NOT isNull(trainCost) then
trainCostStr = CStr(trainCost)
trainCostStr = Replace(trainCostStr, "£", "")
trainCostStr = Replace(trainCostStr, ",", "")
totalTrainCost = totalTrainCost + CInt(trainCostStr)
end if
trainingCost.movenext
loop

trainingCost.close

当我运行此命令时,出现以下错误:

Microsoft VBScript 运行时 (0x800A000D)类型不匹配:'CInt'/systems/RFT/v1.2/Extract.asp,第 43 行

即“totalTrainCost =totalTrainCost + CInt(trainCostStr)”

我猜测问题在于 String 值无法转换为 Int,在这种情况下有什么方法可以捕获此错误吗?我没有太多使用过 asp classic,所以任何帮助都会有用

干杯

-编辑-

列 cost1 的类型是字符串,因为它可能包含数字或字符序列,例如 £10.00 或 TBC

最佳答案

您有几个选择。您可以通过使用 IsNumeric 函数提前检查该值是否为数字来主动:

 If IsNumeric(trainCostStr) Then
totalTrainCost = totalTrainCost + CInt(trainCostStr)
Else
' Do something appropriate
End If

...或者您可以通过使用错误捕获来使用react;在经典 ASP 中,定义函数并使用 On Error Resume Next 可能是最简单的:

Function ConvertToInt(val)
On Error Resume Next
ConvertToInt = CInt(val)
If Err.Number <> 0 Then
ConvertToInt = Empty
Err.Clear
End If
End Function

或者返回 0 或 Null 或任何适合您的内容,然后在您的 trainCost 代码中使用它。

请注意,CInt 需要一个整数,并且会在第一个非数字处停止,因此“123.45”返回为 123。查看其他转换,CDouble、CCur 等。

关于asp-classic - ASP 经典 - 类型不匹配 : 'CInt' - Easy question,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1287503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com