from your code block you are testing the connection state. if its open your closing it!
If con.State = Data.ConnectionState.Open Then con.Close()
Dim adapter As New OleDbDataAdapter(sql, con)
adapter.Fill(dt)
I would debug your code put in break points and make sure SQL is as expected, and connection object etc are valid and not closed
dbadapter MSDN further reading if required