将空字符串转换为日期

时间:2011-06-24 04:50:05

标签: asp.net vb.net types type-conversion oledbdatareader

我搜索了高低无济于事,这是完成我的项目之前的最后一步所以请帮忙!提前谢谢!

用户将在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

2 个答案:

答案 0 :(得分:2)

当您从阅读器读取所有日期的值时尝试此操作,这将首先测试日期是否为dbnull,如果是,那么它将分配无值,您应该获得所需的空单元格,否则它会显示日期:

ucistart = IIf(reader3("UCIStartDate") Is DBNull.Value, Nothing, reader3("UCIStartDate"))

答案 1 :(得分:0)

您是否尝试过使用 Convert.IsDBNull 函数?

Here是官方文档。