Fehler beim Auslesen eines OleDbDataReader's

24/02/2009 - 09:39 von Andreas Ahrens | Report spam
Hi NG,

wieso wird beim unteren Listing nur der erste Eintrag ausgewertet, und nicht
auch der zweite, dritte, etc.?

'Es wird nur der erste Name in der Liste ausgewertet,
'der zweite schon nicht mehr

Private Sub TreeView1_AfterSelect(ByVal sender As Object, ByVal e As
System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
Const SQL As String = "SELECT * FROM Kunden"
Dim conn As New
OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source­O-Test.mdb")
Dim cmd As New OleDbCommand(SQL, conn)
conn.Open()
Dim dr As OleDbDataReader = cmd.ExecuteReader()
dr.Read()
If e.Node.Text <> "Kunden" Then
If dr("NName") = e.Node.Text Then
MsgBox(dr("VName").ToString)
dr.NextResult()
End If

End If
dr.Close()
conn.Close()
End Sub

Gruß
Andy
 

Lesen sie die antworten

#1 Peter Götz
24/02/2009 - 10:31 | Warnen spam
Hallo Andreas,
wieso wird beim unteren Listing nur der erste Eintrag
ausgewertet, und nicht
auch der zweite, dritte, etc.?



Weil Du mit Deinem DataReader.Read nur einen
einzigen Datensatz liest.

Schau Dir mal das nachfolgende Beispiel an.

Dim DBFile as string = "H:\Verzeichnis\DB.mdb"
Dim strCnn as String
Dim strSQL as String

strCnn = "Provider = Microsoft.Jet.OLEDB.4.0; " & _
"Data Source = " & DBFile

strSQL = "Select * From Tabelle"

Dim CNN as New OleDbConnection(strCnn)
CNN.Open

Dim Cmd as New OleDbCommand(strSQL, Cnn)
Dim DR as OleDbDataReader = Cmd.ExecuteReader

Do While DR.Read
Console.WriteLine (DR.item(0).ToString)
Loop

DR.Close
CNN.Close

Die Schleife (Do...Loop) liest einen Datensatz nach
dem anderen, solange bis der DataReader den
letzten Datensatz gelesen hat und dann DR.Read
ein False zurückliefert.

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen