Probleme mit DataGridView (VB.Net VisStudio2005)

Hallo, Ich arbeite mich grade in VB.Net ein und versuche auf eine Access-DB zuzugreifen.

Die Verbindung als solches funktioniert, nur wenn ich jetzt meine Form mit dem DataGridView öffne, werden mir dort keine Datensätze angezeigt nur eine Leere Zeile…
Über die Datenvorschau des OleDbDataAdapter bekomm ich alles angezeigt. Nach dem generieren des Datasets hab ich dann folgenden Code ins Form_load geschrieben:

 Private Sub frmKatalog\_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 Me.DataGridView1.DataSource = DataSet11.tbl\_Datei
 End Sub

Hab ich da noch was vergessen?

Danke für Euer bemühen…

lg Micha

Hallo!
Hast Du das DataSet11 (ein sinnvollerer Name könnte übrigens auch nicht schaden) denn überhaupt befüllt? Über das Zuweisen der DataSource weist Du das DataGrid nur an, die Daten in der DataSource darzustellen - bereitstellen musst Du die Daten dennoch selbst.

Gruß,
Martin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Martin,

sorry, war 2 Tage auf Dienstreise, deswegen nun erst die Antwort…
Nein, ich habe bisher nur den Assistenten genutzt und bin so vorgegangen, wie ich das aus der Hilfe rauslesen konnte…
http://home.arcor.de/msregenbogen/db.jpg

Hallo Michael,

in der Vorschau des Data Grid Views siehst Du alle Daten, weil sie ein DataAdapter anlegt und darüber die Tabellendaten in das DataSet lädt.
Für Dein Form musst Du den DataAdapter selbst füllen. Es ist möglich den automatisch erzeugten Adapter zu verwenden (heisst TableAdapter) oder einen neuen anzulegen. Wenn Du den bereits
existierenden Adapter benutzt, ist folgender Code in der Load-Ereignisprozedur Deines Forms nötig:
Me.TableAdapter.Fill(Me…)
Anschließend zeigt Dein Form alle Daten an und Du kannst diese editieren.
Allerdings werden Änderungen die Du vielleich anschließend im Data Grid machst, nicht automatisch in die Datenbank
übertragen. Dafür sind noch 2 Code-Zeilen nötig:
Me.TableAdapter.Update(Me…) 'Übertragung der Änderungen in die Datenbank
Me…AcceptChanges() 'Alle Änderungen werden auch in der Tabelle als gespeichert markiert

Wenn alle Änderungen verworfen werden sollen…
Dim dt as DataTable = Me…GetChanges(); 'Schreibt alle Änderungen in ein DataTable-Objekt
if (not dt is Nothing)
Me…RejectChanges(); 'Alle Änderungen (der DataSet-Tabelle) werden zurückgesetzt

Viele Grüße

Ute

Hallo Ute…

Vielen Dank für die ausführliche Erklärung…
Kann ich zur Laufzeit den tableadapter auch mit einem anderen SQL-Statement füllen und somit eine andere zusammensetzung der Daten in das DataGridView laden?

Hallo Michael,

eigentlich müsste es so gehen:

Dim cmd as OleDbCommand
Set cmd = New OleDbCommand()
Set Me.TableAdapter.SelectCommand = cmd
Me.TableAdapter.Fill(Me…)…

Habe den Code nicht getestet - keine Zeit und eventuell stimmt die Syntax nicht, da ich normalerweise nur C# spreche :wink:)

Viele Grüße
Ute