如果在插入DataTable vb.net时IsDbNull不起作用

时间:2015-02-25 21:11:29

标签: vb.net datagridview datatable

抱歉,我错误地发布了代码,现在更改为正确的代码 我真的很困惑,我在做什么,空的datareader将被添加到datatable并将显示在DataGridView!中,我的代码有什么问题?:

 constring2()
        con2.Close()
        Try
            Dim dt As New DataTable
            dt.Columns.Add("pno")
            dt.Columns.Add("date")
            dt.Columns.Add("atttime", GetType(String))
            con2.Open()
            Dim sq As String = "select * from OLDLOG"
            Dim cmd As New SqlCommand(sq, con2)
            Dim dr As SqlDataReader = cmd.ExecuteReader

            While dr.Read
                Dim ss As Date = dr("DATE")
                Dim xy3 As String
                xy3 = ss.ToString("yyyy/MM/dd")
                If Not IsDBNull(dr("IN_")) Then
                    dt.Rows.Add(dr("BADGENO"), xy3, dr("IN_"))
                End If
                If Not IsDBNull(dr("OUT_")) Then
                    dt.Rows.Add(dr("BADGENO"), xy3, dr("OUT_"))
                End If

            End While
            dr.Close()
            con.Close()
            DataGridView1.DataSource = dt
        Catch ex As Exception
            MsgBox(ex.Message)
        Finally
            con.Close()
        End Try   

这是我的代码的结果!,
enter image description here
 我想要的是如果dr(" IN _")或dr(" OUT _")为空,数据将不在数据表中!请问任何想法?感谢

2 个答案:

答案 0 :(得分:1)

您可以尝试一下,看看它是如何为您工作的...... IsDBNull函数指示表达式是否计算为System.DBNull类,而在您的情况下则不表示。另一方面,DBNull.Value表示不存在的值;例如:一行中的列可能是'Null'。

*如果值为ISNOT NULL并且只是空,它将通过这些条件。

 'Check if it's not NULL and it's not empty...
 If dr("IN_") IsNot DBNull.Value AndAlso CStr(dr("IN_")).Trim <> "" Then
   dt.Rows.Add(dr("BADGENO"), xy3, dr("IN_"))
 End If
 If dr("OUT_") IsNot DBNull.Value AndAlso CStr(dr("OUT_")).Trim <> "" Then
   dt.Rows.Add(dr("BADGENO"), xy3, dr("OUT_"))
 End If

答案 1 :(得分:0)

如何不从数据库中检索不需要的值?

Dim sq As String = "SELECT * FROM OLDLOG WHERE [IN_] IS NOT NULL AND [OUT_] IS NOT NULL"