Datagridview zeigt nichts an - Access ("Jet") - Datenbank, Version Microsoft.ACE.OLEDB.12.0 (Access 2019)

  • VB.NET
  • .NET (FX) 4.0

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Datagridview zeigt nichts an - Access ("Jet") - Datenbank, Version Microsoft.ACE.OLEDB.12.0 (Access 2019)

    Hallo Zusammen,


    ich benötige Hilfe zum DataGridView im Visual Basic 2010.

    Ich bin bei den .NET - Versionen bei Datenbank-Programmierung ein ziemlicher Neuling (jedoch hier sehr viel Erfahrung mit dem 6.0er), und hätte folgende Frage:

    Ich habe sehr viel rumprobiert und diverse Listings im Internet getestet, alles ohne Erfolg.

    Ich habe folgendes Listing:

    VB.NET-Quellcode

    1. Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    2. 'Create a connection object
    3. Dim ConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=B:\Dokumente\Tandem\Flüge.accdb"
    4. Dim SQL As String = "SELECT * FROM Flüge"
    5. Dim conn As OleDbConnection = New OleDbConnection(ConnectionString)
    6. ' open the connection
    7. conn.Open()
    8. ' Create an OleDbDataAdapter object
    9. Dim adapter As OleDbDataAdapter = New OleDbDataAdapter()
    10. adapter.SelectCommand = New OleDbCommand(SQL, conn)
    11. ' Create Data Set object
    12. Dim ds As DataSet = New DataSet("Flüge")
    13. ' Call DataAdapter's Fill method to fill data from the
    14. ' DataAdapter to the DataSet
    15. adapter.Fill(ds)
    16. ' Bind dataset to a DataGrid control
    17. Me.DataGridView1.DataSource = ds.DefaultViewManager
    18. Me.DataGridView1.Refresh()
    19. End Sub

    Das Grid füllt ich nicht, sondern bleibt grau. Das Projekt lässt sich einwandfrei kompilieren, und es kommen keine Fehlermeldungen. Die connection ist aktiv (habe ich anderwärtig getestet und db-Abfragen und Update-Abfragen sind möglich.

    Nur mit dem Grid klappts nicht so recht. Vielleicht kann mir ja jehmand einen entscheidenden Tipp geben.

    Vielen Dank schonmal!

    PS: man muss ja im Dataset eine Table angeben, wie kann man eine Abfrage über mehrere Tabellen machen und im Grid anzeigen? Kann man für das "Dataset" auch eine "Abfrage" angeben, welche in der Access-DB erstellt wurde, oder eine "View"?

    CodeTags gesetzt ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    probierma

    VB.NET-Quellcode

    1. dim tb as DataTable = ds.Tables("Flüge")
    2. Me.DataGridView1.DataSource = tb


    Zu deinen anderen Fragen: Lerne erstmal Databinding an typisiertes Dataset, bevor du anfängst, auf eine Datenbank zuzugreifen.
    Man kann das alles machen, was dir vorschwebt, nur führt das in Teufels Küche.

    Schau dir vier Views-Videos an.
    Und folge auch allen möglichen Links, die von dort verlinkt sind.

    Die Möglichkeiten hier sind extrem vielfältig, für mein erstes projekt möchte ich jetzt nicht so tief einsteigen (wohl aber für die weiteren).

    Aktuell suche ich nur eine EINFACHE Möglichkeit, abfragen dieser Art:

    select Flüge.flugnr, Flüge.datum, Flüge.gebiet, Flüge.dauer_min, Flüge.bemerkung, Geräte.Bezeichnung from Flüge, Geräte
    where Geräte.ID = Flüge.GeräteID

    im DatagridView darzustellen.


    Der Source-SQL wird je nach benötigter Abfrage zur Laufzeit angepasst.

    Es muss über das Grid am Datenbestand nihts geändert werden, dafür habe ich entsprechende Forms mit entsprechenden Update-Befehlen, welche ebenfalls zur Laufzeit erstellt werden.

    Gibt es nicht eine enfache Möglichkeit, einfach obengenannte Abfrage im Grid darzustellen, ohne den Umweg über Typisierte Datasets etc. zu gehen?
    Ok das geht also auch über 2 (und wohl mehr) Tabellen.

    Hat mich irritiert, da ich nur das Datatable Objekt "Flüge" angegeben habe, aber die Afrage kann dann offenichtlich beliebig auch andere Tabellen enthalten.

    Das hat mir geholfen, vielen Dank!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „thomasr“ ()

    thomasr schrieb:

    Das habe ich probiert, und ja, das geht auch. Damit bekomme ich aber nur Daten aus einer Tabelle.
    An mir solls nicht liegen - sondern es liegt hauptsächlich am Sql. Wenn das nur eine Tabelle abfragt, bekommst du natürlich nur eine Tabelle.
    Achtung - pseudoCode - weil ich weiss ja nicht den Namen der zweiten Tabelle, und ob es da eine Relation gibt

    VB.NET-Quellcode

    1. Dim SQL As String = "SELECT * FROM Flüge inner join Table2 on Table2.FlügeID = Flüge.ID"
    2. '...
    3. dim tb as DataTable = ds.Tables(0) ' jetzt nehmen wir einfach die erste und einzige Tabelle, die im Dataset drinne ist
    4. Me.DataGridView1.DataSource = tb