如何解决错误:从类型'dbnull'到类型'string'的转换无效

时间:2014-02-03 07:55:52

标签: vb.net type-conversion

我正在使用i代码,但我遇到错误:从'dbnull'类型转换为'string'类型无效

公共职能Get_Talukwise_Details()

        Dim table1 As New DataTable
        table1.Columns.Add("Taluk", GetType(String))
        table1.Columns.Add("EmpScheme", GetType(String))

        iStr1 = Split(Trim(cmbCompCode.Text), "|")
        iStr2 = Split(Trim(cmbLocCode.Text), "|")

        Dim Add_Where_Cont As String
        Add_Where_Cont = ""
        Add_Where_Cont &= " Where CompCode='" & Trim(iStr1(0)) & "'"
        Add_Where_Cont &= " and LocCode='" & Trim(iStr2(0)) & "'"

        SSQL = ""
        SSQL &= "select Taluk, "
        SSQL &= "isnull(SUM(CASE EmpScheme WHEN 'left' THEN 1 ELSE 0 END),'') as Emp_left,"
        SSQL &= "isnull(SUM(CASE EmpScheme WHEN 'complete' THEN 1 ELSE 0 END),'') as Emp_scheme,"
        SSQL &= "isnull( SUM(CASE EmpScheme WHEN 'non-scheme' THEN 1 ELSE 0 END),'') as Emp_Non_Scheme"
        SSQL &= " from employee_mst"
        SSQL &= " " & Add_Where_Cont
        SSQL = SSQL & "group by Taluk"

        mDataSet = ReturnMultipleValue(SSQL)

        For iRow = 0 To mDataSet.Tables(0).Rows.Count - 1
            table1.Rows.Add( _
                            Trim(mDataSet.Tables(0).Rows(iRow)("Taluk")), _
                            Trim(mDataSet.Tables(0).Rows(iRow)("EmpScheme")))

        Next
        Return table1
    End Function

请任何人都可以帮助我...

错误消息:从“dbnull”类型转换为“string”类型无效

错误行:

  table1.Rows.Add( _
                                Trim(mDataSet.Tables(0).Rows(iRow)("Taluk")), _
                                Trim(mDataSet.Tables(0).Rows(iRow)("EmpScheme")))

3 个答案:

答案 0 :(得分:0)

您正在将空值转换为字符串。首先看看你的查询是否给出了正确的结果。检查条件为 如果不是isdbnull(“Taluk”)=真则那么 。 。 。 你的代码 。

如果

结束

答案 1 :(得分:0)

试试这个:

table1.Rows.Add( _
                            Trim(iif(isdbnull(mDataSet.Tables(0).Rows(iRow)("Taluk")), "", mDataSet.Tables(0).Rows(iRow)("Taluk"))), _
                            Trim(iif(isdbnull(mDataSet.Tables(0).Rows(iRow)("EmpScheme")), "", mDataSet.Tables(0).Rows(iRow)("EmpScheme"))))

答案 2 :(得分:0)

您可以在VB.NET代码中检查TalukIsDbNull,还是从查询中返回空字符串更合适(正如您对ISNULL所做的那样在查询已经):

SSQL &= "SELECT COALESCE(Taluk, ''), "
' ....
SSQL = SSQL & "group by COALESCE(Taluk, '')"

也许NULL Taluk是数据库中的恶意值。