2016-10-31 33 views
-1

コードはWhile dataReader.Read()ループ以外のすべてを実行しますが、理由はわかりません。エラーは起こりません。実際にはデータリーダーで実際にデータを読み取ることはできません。助けをいただきありがとうございました。while dataReader.Read()は実行されません

Private Sub BtnFind_Click(sender As Object, e As EventArgs) Handles BtnFind.Click 
    Dim cmd As OleDbCommand 
    Dim myConnection As OleDbConnection 
    Dim text As String = txtTeacherID.Text 
    Dim dataReader As OleDbDataReader 

    Try 
     'selects the information from the row where the column has the teacher ID 
     myConnection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\My Documents\database.accdb") 
     myConnection.Open() 

     cmd = New OleDbCommand("SELECT * FROM [TMessages] WHERE TeacherID = '" & text & "'", myConnection) 

     dataReader = cmd.ExecuteReader 

     While dataReader.Read() 
      lstItems.Items.Add(dataReader(0)) 
      lstItems.Items.Add(dataReader(0)) 
      lstItems.Items.Add(dataReader(0)) 
      MsgBox("reading") 
     End While 
    Catch 
     MsgBox("Error occured") 
    End Try 
    dataReader.Close() 
    myConnection.Close() 
End Sub 
+0

関連タグのみを使用してください。ここでvbaとaccess-vbaは無意味です – Steve

+2

[DataReader.Read](https://msdn.microsoft.com/en-us/library/system.data.idatareader.read(v = vs.110).aspx)はfalseを返します読み込むデータがない場合クエリで正常に行が返されましたか? –

+0

whileループを実行しない唯一の理由は、データベース内のテキスト変数に一致するものがない場合です。ところで、あなたはTeacherIDがあなたのデータベースのテキストのフィールドであると確信していますか? – Steve

答えて

0

私のコメントで指摘したように、あなただけの同じ値を3回

lstItems.Items.Add(dataReader(0)) 

を読んでいると、読み取り値が空白であってもよく、中に受け取ったすべての値を読み取るために、あなたの読者を使用してみてくださいdataReaderはループを考え、すべての値をチェックします。

関連する問題