vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

ADO.NET / Datenbanken
Zeilen einer Datebank durchlaufen 
Autor: IIIIIChrisIIIII
Datum: 05.05.07 09:08

Hallo!

Ich stelle über folgenden Quelltext eine Verbindung zu einer lokalen Access Datenbank her:

Dim DBConnection As Data.OleDb.OleDbConnection
Dim Reader As OleDb.OleDbDataReader
Dim CurrentRow As Row
 
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
  System.EventArgs) Handles MyBase.Load
        DBConnection = New System.Data.OleDb.OleDbConnection( _
            "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=data.mdb")
        DBConnection.Open()
End Sub
Das funktioniert auch ganz gut. Nun möchte ich ein DataGridView just in time laden. Also im VirtualMode. Das geht ja bekanntlich über das Event CellValueNeeded.
Bisher hatte ich das so gemacht:

Private Sub DataGridView1_CellValueNeeded(ByVal sender As Object, ByVal e As _
  System.Windows.Forms.DataGridViewCellValueEventArgs) Handles _
  Lst.CellValueNeeded
        RowFetch2(e)
End Sub
 
Private Sub RowFetch2(ByVal e As _
  System.Windows.Forms.DataGridViewCellValueEventArgs)
        If CInt(CurrentRow.ID) <> e.RowIndex + 1 Then
            Dim StrCmd As String = String.Format("SELECT * FROM `DataTable`" & _
              "WHERE `ID`={0};", e.RowIndex + 1)
            Dim Cmd As New Data.OleDb.OleDbCommand(StrCmd, DBConnection)
            Reader = Cmd.ExecuteReader
            Cmd.Dispose()
            Cmd = Nothing
            Reader.Read()
            CurrentRow = Row.Create(Reader)
            Reader.Close()
 
        End If
 
        If e.ColumnIndex = 0 Then
            e.Value = CurrentRow.ID
        Else
            e.Value = CurrentRow.Text
        End If
    End Sub
Das Funktioniert auch ziemlich gut. Die gelesene Datenbank enthält zu Testzwecken 2 Spalten (ID und Text) mit 100000 Einträgen. Das Scrollen durch das DataGridView verläuft absolut flüssig. Trotzdem kann ich mir nicht vorstellen, dass das die eleganteste Lösung sein soll. Soweit ich das verstehe hat der DataReader einen Zeiger auf den letzten gelesenen Datensatz und mit dem Read Befehl wird der Zeiger auf den nächsten Datensatz verschoben. Gibt es keine Möglichkeit den Zeiger auch um eine Zeile zurück zu verschieben? Das wäre meiner Meinung nach effizienter, als jedes Mal einen neuen Select Befehl zu schicken, oder?

Vielen Dank schon mal im Voraus!
Gruß,
Chris
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Zeilen einer Datebank durchlaufen1.688IIIIIChrisIIIII05.05.07 09:08
Re: Zeilen einer Datebank durchlaufen1.125Zero-G.05.05.07 10:24
Re: Zeilen einer Datebank durchlaufen1.141IIIIIChrisIIIII05.05.07 11:08
Re: Zeilen einer Datebank durchlaufen1.117ModeratorFZelle05.05.07 11:15
Re: Zeilen einer Datebank durchlaufen1.100IIIIIChrisIIIII05.05.07 11:36
Re: Zeilen einer Datebank durchlaufen1.072ModeratorFZelle05.05.07 13:25
Re: Zeilen einer Datebank durchlaufen1.167Zero-G.05.05.07 11:20
Re: Zeilen einer Datebank durchlaufen1.115IIIIIChrisIIIII05.05.07 11:41
Re: Zeilen einer Datebank durchlaufen1.109Zero-G.05.05.07 11:51

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel