1

こんにちは、「指定されたキャストは無効です。」というInvalidCastExceptionが発生しました。どこに問題があるのか​​わかりません。コードにエラーがありますか?

これは私のコードです:

 Private Sub Form5_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\patientinfo.accdb"
    Conn.Open()

    '====retrieve values in database=============
    Dim statement As String = " SELECT patient_name,patient_age,date_confinement,type_sickness, type_fluid, bottle_used, drop_rate FROM tblPatientInfo WHERE 1 ORDER BY ID "
    RetrieveInfos(statement)

End Sub
Public Sub RetrieveInfos(ByRef statement As String)
    Dim cmd As OleDbCommand = New OleDbCommand
    With cmd
        .CommandText = statement
        .CommandType = CommandType.Text
        .Connection = Conn
        .ExecuteNonQuery()


        '--read records in access database----------------
        Dim reader As OleDbDataReader = cmd.ExecuteReader


        If reader.Read Then

            lblName.Text = reader.GetString(0)
            lblAge.Text = reader.GetString(1)
            lblDate.Text = reader.GetString(2)
            lblSickness.Text = reader.GetString(3)
            lblFluid.Text = reader.GetString(4)
            lblBottle.Text = reader.GetString(5)
            lbldrops.Text = reader.GetString(6)

            reader.Close()
        End If
    End With
End Sub

どんな助けでもいただければ幸いです。ありがとう!:3

4

3 に答える 3

0

値が null かどうかを確認してみてください。

If TypeOf reader(1) Is DBNull Then
    lblAge.Text = reader.GetString(1)
End If

ただし、それは文字列の場合にのみ機能します。文字列でない場合、これはどのデータ型でも機能するはずです。

If TypeOf reader(1) Is DBNull Then
    lblAge.Text = reader(1).ToString()
End If
于 2012-09-11T18:34:59.450 に答える
0

質問に対するあなたのコメントに基づいて、変更することをお勧めします

lblAge.Text = reader.GetString(1)

lblAge.Text = reader.GetInt32(1).ToString

Getまた、各列に適切な を使用していることを確認してください。日付には を使用する必要がありますGetDateTime()の MSDN へのリンクは次のとおりですOleDbDataReader。左側には、参照用に使用できるすべてのメソッドのリストがあります。

于 2012-09-11T18:33:54.757 に答える