2016-10-31 3 views
-1

Der Code führt alles außer der DataReader.Read() - Schleife aus, und ich habe keine Ahnung warum. Es werden keine Fehler angezeigt, es werden die Daten mit dem Datenleser nicht gelesen. Vielen Dank für Ihre Hilfe.Während dataReader.Read() nicht ausgeführt wird

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

Bitte verwenden Sie nur die relevanten Tags. Hier sind vba und access-vba bedeutungslos – Steve

+2

[DataReader.Read] (https://msdn.microsoft.com/en-us/library/system.data.idatareader.read (v = vs.110) .aspx) gibt false zurück wenn keine Daten zu lesen sind. Sind Sie sicher, dass die Abfrage erfolgreich Zeilen zurückgegeben hat? –

+0

Der einzige Grund, die while-Schleife nicht auszuführen, ist, wenn Sie keine Übereinstimmung für Ihre Textvariable in der Datenbank haben. Übrigens sind Sie sicher, dass TeacherID ein Feld mit Text in Ihrer Datenbank ist? – Steve

Antwort

0

Wie in meinem Kommentar darauf, Sie nur

lstItems.Items.Add(dataReader(0)) 

den gleichen Wert 3 mal zu lesen und die gelesenen Wert in leer sein kann, versuchen Sie Ihre Leser verwenden, um alle Werte in empfangen zu lesen Der DataReader dachte eine Schleife und überprüft alle Werte.

for i = 0 to dataReader.FieldCount 
Verwandte Themen