Преобразование пустой строки в дату - PullRequest
1 голос
/ 24 июня 2011

Я искал максимум и минимум безрезультатно, и это последний шаг перед завершением моего проекта, поэтому, пожалуйста, помогите!Заранее спасибо!

Пользователь выберет запись в виде сетки, которая затем перенаправит их в форму, заполненную данными из выбранной строки (таким образом, делая вид сетки редактируемым более удобным для пользователя способом),Нулевые значения принимаются БД, и я хотел бы показывать пустые значения даты как пустые (или "") в соответствующих текстовых полях.Вместо этого я получаю ошибку:

Преобразование из типа '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 to string, но адаптировать ее к типу данных «дата» не так просто

Function myCStr(ByVal test As Object) As String
    If isdbnull(test) Then
        Return ("")
    Else
        Return CStr(test)
    End If
End Function

Ответы [ 2 ]

2 голосов
/ 24 июня 2011

попробуйте это, когда вы читаете значения из считывателя со всеми вашими датами, это сначала проверит, чтобы увидеть, является ли дата dbnull, если это так, тогда ей будет присвоено значение none, и вы должны получить желаемую пустую ячейку, в противном случаеон покажет дату:

ucistart = IIf(reader3("UCIStartDate") Is DBNull.Value, Nothing, reader3("UCIStartDate"))
0 голосов
/ 24 июня 2011

Вы пытались использовать функцию Convert.IsDBNull ?

Здесь является официальной документацией.

...