Mi trovo meglio con una pagina web.
Il codice di sotto crea un vecchio recordset ado di una tabella access; crea un oggetto DataGrid, lo mette nella pagina e fa vedere i dati.

Naturalmente, come giustamente avete detto voi, non è assolutamente da usarsi oggi.
La interoperabilità è stata pensata per tutte quelle cose "non ancora consentite in ado.net" (2003 credo)

comunque, ESEMPIO DI CODICE DA NON USARE

codice:
Option Strict On


Partial Class prove_a
    Inherits System.Web.UI.Page

    Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
        Dim db As ADODB.Connection = Nothing
        Dim rs As ADODB.Recordset = Nothing

        Try
            db = New ADODB.Connection()
            db.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\dati\test\test.mdb;Persist Security Info=False")
            rs = New ADODB.Recordset()
            rs.Open(ActiveConnection:=db, CursorType:=ADODB.CursorTypeEnum.adOpenForwardOnly, Source:="select * from regioni order by nome_regione")

            Dim regioni As New List(Of regione)
            Do While Not rs.EOF
                regioni.Add(New regione With {.codice_istat_regione = rs(0).Value.ToString,
                                              .nome_regione = rs("nome_regione").Value.ToString})
                rs.MoveNext()
            Loop
            Dim g As New GridView()
            g.DataSource = regioni
            g.DataBind()

            Me.Form.Controls.Add(New LiteralControl("

"))
            Me.Form.Controls.Add(g)


        Finally
            If rs IsNot Nothing Then rs.Close()
            If db IsNot Nothing Then db.Close()

        End Try


    End Sub


    Private Class regione
        Public Property codice_istat_regione As String
        Public Property nome_regione As String
    End Class

End Class