Loading datagridview in VB.NET programmatically using dataset

user961627 picture user961627 · Nov 24, 2012 · Viewed 76.9k times · Source

I've created a datagridview, dataGridReport in the Designer view of VB 2010. I'm then using a query to fill a dataset, and I want this dataset to populate the datagridview... but it doesn't seem to work.

This is my code:

Dim con As New OleDb.OleDbConnection
con.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;
                         Data Source=C:\Users\Administrator\Documents\MenuDB.accdb"
con.Open()
Dim ds As DataSet = New DataSet
Dim adapter As New OleDb.OleDbDataAdapter
Dim sql As String

sql = @"SELECT OrderDate, MenuItem 
        FROM   MenuItems, Orders 
        WHERE  Orders.itemID = MenuItems.ID 
           AND Format(Orders.OrderDate,'mm/dd/yyyy') >= #" + fromDate + "# 
           AND Format(Orders.OrderDate,'mm/dd/yyyy') <= #" + toDate + "#"

adapter.SelectCommand = New OleDb.OleDbCommand(sql, con)
adapter.Fill(ds)
dataGridReport.DataSource = ds

I know something's missing now - I've looked around and most people seem to use something like dataGridReport.DataSource = ds.Tables('somereference')

But mine is a dynamically created dataset from a query joining two tables, it's not something stored among the project Data Sources. I also haven't bound the datagridview to any datasource via its properties. What am I missing?

(By the way, the sql query is correct, I've tested it and returns expected results).

Answer

Dennis Traub picture Dennis Traub · Nov 24, 2012

You can get the table from the data source via the index:

dataGridReport.DataSource = ds.Tables(0)