InvalidCastException从字符串转换#34;"输入' Double'无效

时间:2014-08-20 05:23:51

标签: vb.net visual-studio-2008 .net

我正在开发一个系统,显示学生从数据库中支付的总金额。对于只有少量交易的学生,下面的函数会给出错误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

2 个答案:

答案 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行,我不知道在你写出问题的时候是否错过了。