我搜索了高低无济于事,这是完成我的项目之前的最后一步所以请帮忙!提前谢谢!
用户将在gridview中选择一个条目,然后将其重定向到使用所选行中的数据填充的表单(从而使gridview以更加用户友好的方式进行编辑)。 DB接受空值,并且我希望在相应的文本框中将空日期值显示为空白(或“”)。相反,我得到错误:
从“DBNull”类型转换为“日期”类型无效。
这是我的代码:
'preceded by connection code
Dim sqlcmd As String = "SELECT * from Master WHERE RecNum = @recnum"
'Dim sqlCmd As New OleDb.OleDbCommand("SELECT * from Master WHERE RecNum = @recnum", connection)
Dim FileCommand3 As New OleDb.OleDbCommand(sqlcmd, connection)
FileCommand3.Parameters.AddWithValue("@recnum", user)
Dim Reader3 As OleDb.OleDbDataReader = FileCommand3.ExecuteReader()
If Reader3.Read Then
stock = myCStr(Reader3("StockNum"))
make = myCStr(Reader3("Make"))
color = myCStr(Reader3("Color"))
stockin = myCStr(Reader3("Stockin"))
ucistart = myCStr(Reader3("UCIStartDate"))
repairs = Reader3("Repairs")
tires = Reader3("tiresneeded")
onlot = Reader3("onlot")
sold = Reader3("sold")
year = myCStr(Reader3("year"))
model = myCStr(Reader3("model"))
location = Reader3("location")
srvcRO = myCStr(Reader3("svcROnum"))
ucicompldate = myCStr(Reader3("uciestcompletedate"))
collRO = myCStr(Reader3("collisionROnum"))
other = myCStr(Reader3("other"))
offprop = Reader3("offProperty")
detail = (Reader3("detail")
End If
connection.Close()
SoldCheckBX.Checked = sold
DetailTXTbox.Text = detail
'etc, etc
End Sub
我使用函数mycstr将dbnull修复为字符串错误,但是对于“日期”数据类型来说似乎并不那么简单
Function myCStr(ByVal test As Object) As String
If isdbnull(test) Then
Return ("")
Else
Return CStr(test)
End If
End Function
答案 0 :(得分:2)
当您从阅读器读取所有日期的值时尝试此操作,这将首先测试日期是否为dbnull,如果是,那么它将分配无值,您应该获得所需的空单元格,否则它会显示日期:
ucistart = IIf(reader3("UCIStartDate") Is DBNull.Value, Nothing, reader3("UCIStartDate"))
答案 1 :(得分:0)
您是否尝试过使用 Convert.IsDBNull 函数?
Here是官方文档。