1

私は高低を無駄に検索しました。これは私のプロジェクトを完了する前の最後のステップなので、助けてください! 前もって感謝します!

ユーザーがグリッドビューでエントリを選択すると、選択した行のデータが取り込まれたフォームにリダイレクトされます (したがって、グリッドビューはよりユーザーフレンドリーな方法で編集可能になります)。DB は Null 値を受け入れます。対応するテキスト ボックスに Null 日付値を空白 (または " ") として表示したいと思います。代わりに、次のエラーが表示されます。

タイプ 'DBNull' からタイプ 'Date' への変換は無効です。

これが私のコードです:

'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
4

2 に答える 2

2

すべての日付でリーダーから値を読み取るときにこれを試してください。これは最初に日付が dbnull であるかどうかをテストし、そうである場合は何も値を割り当てず、目的の空のセルを取得する必要があります。そうでない場合は表示されます日付:

ucistart = IIf(reader3("UCIStartDate") Is DBNull.Value, Nothing, reader3("UCIStartDate"))
于 2011-06-24T05:13:17.203 に答える
0

Convert.IsDBNull関数を使用してみましたか?

ここに公式ドキュメントがあります。

于 2011-06-24T05:10:34.047 に答える