我正在开发一个系统,显示学生从数据库中支付的总金额。对于只有少量交易的学生,下面的函数会给出错误Conversion from string "" to type double...
,但如果学生没有任何数据输入或者值为零对多,则下面的代码会遇到错误。我该怎么办?我需要调整代码吗?请帮忙。
我这里有一个获取总项目的函数。
Function Totalpaid() As Double
Dim i As Integer
For i = 0 To ((tbl_receipt.Items.Count) - 1)
Totalpaid = (Totalpaid + tbl_receipt.Items(i).SubItems(3).Text)
Next
End Function
答案 0 :(得分:0)
您正在尝试添加两个数字,但其中一个操作数不是数字。您假设子项目的Text
将被转换为数字并添加到运行总计中。至少有一个子项目是空白的。也许你认为这代表零,但事实并非如此。它根本不代表任何数字,因此操作失败。
您应该做的是自己验证和转换子项内容,然后为系统提供两个Double
值。如果没有值,则忽略该子项或显式使用零。 Option Strict On
至少会强制您执行转换,但如果数据无法生效,仍然需要提供验证。
答案 1 :(得分:0)
对我而言,这看起来像是您的数据问题而不是代码直接问题。我建议在尝试在计算中使用它之前对数据进行消毒,即:
Function Totalpaid() As Double
Dim i As Integer
Dim val as Double
For i = 0 To ((tbl_receipt.Items.Count) - 1)
If Double.TryParse(tbl_receipt.Items(i).SubItems(3).Text, val) Then
Totalpaid = (Totalpaid + val)
End If
Next
Return Totalpaid
End Function
消息Conversion from string "" to type double...
表示您正在尝试将空字符串转换为无效的Double
。
作为旁注,在测试代码时,我确实必须包含第Return Totalpaid
行,我不知道在你写出问题的时候是否错过了。