【问题标题】:how to solve error: conversion from type 'dbnull' to type 'string' is not valid如何解决错误:从“dbnull”类型到“string”类型的转换无效
【发布时间】:2014-02-03 07:55:52
【问题描述】:

我正在使用 i 代码,但出现错误:从类型“dbnull”到类型“字符串”的转换无效

公共函数 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")))

【问题讨论】:

  • 错误指向哪一行?

标签: vb.net type-conversion


【解决方案1】:

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

如果结束

【讨论】:

    【解决方案2】:

    试试这个:

    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"))))
    

    【讨论】:

      【解决方案3】:

      您可以在 VB.NET 代码中检查 Taluk 是否为 IsDbNull,或者从查询中返回一个空字符串可能更合适(就像您已经在查询中使用 ISNULL 所做的那样):

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

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

      【讨论】:

        猜你喜欢
        • 2023-03-07
        • 2014-06-10
        • 1970-01-01
        • 1970-01-01
        • 2016-09-16
        • 1970-01-01
        • 2012-08-03
        • 2015-06-07
        • 1970-01-01
        相关资源
        最近更新 更多