抱歉,我错误地发布了代码,现在更改为正确的代码 我真的很困惑,我在做什么,空的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
这是我的代码的结果!,
我想要的是如果dr(" IN _")或dr(" OUT _")为空,数据将不在数据表中!请问任何想法?感谢
答案 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"