Que pasa si hago una consulta a una BD y quiero mostrar el resultado en una tabla HTML?
Este es un ejemplo en que partiendo de una tabla de 4 columnas
(vale, podria ser mas dinamica), se genera una tabla
tomando los nombres de columna del propio resultado.
Private Sub consultaDetalle()
        'Introducir aquí el código de usuario para inicializar la página
        Dim conexion As System.Data.OleDb.OleDbConnection
        Dim comando As System.Data.OleDb.OleDbCommand
        Dim datos As System.Data.OleDb.OleDbDataReader
        Dim tempRow As TableRow


        Dim itemTMP As ListItem


        Dim caso As String
        Dim conString As String
        Dim sentencia As String

        'establecemos la sentencia
        sentencia = "select * from ESTUDIANTES"

        Response.Write("Sentencia SQL: " & sentencia)


        'String de conexion para una bd access
        conString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & Server.MapPath("Colegio.mdb")


        'creamos el objeto conexion
        conexion = New OleDbConnection(conString)

        'todo lo hacemos en un bloque try-catch
        Try

            'establecemos conexion
            conexion.Open()
            Response.Write("OK conexion establecida <br>")

            'Creamos el objeto comando
            comando = New OleDbCommand(sentencia, conexion)

            Response.Write("OK comando creado <br>")

            'ejecucion de una consulta
            datos = comando.ExecuteReader()
            Response.Write("OK comando ejecutado <br>")

            Dim tmpItem As ListItem
            Dim lblTemp As Label

            'If datos.RecordsAffected > 0 Then
            Tabla.Visible = True
            lblTemp = New Label()
            lblTemp.Text = datos.GetName(0)

            Tabla.Rows(0).Cells(0).Controls().Add(lblTemp)
            lblTemp = New Label()
            lblTemp.Text = datos.GetName(1)
            Tabla.Rows(0).Cells(1).Controls().Add(lblTemp)
            lblTemp = New Label()
            lblTemp.Text = datos.GetName(2)
            Tabla.Rows(0).Cells(2).Controls().Add(lblTemp)
            lblTemp = New Label()
            lblTemp.Text = datos.GetName(3)
            Tabla.Rows(0).Cells(3).Controls().Add(lblTemp)
            'End If

            Dim linea As TableCellCollection()
            Dim celda As TableCell
            Dim i As Integer

            i = 0

            ' Recorremos el resultset y cargamos el combo
            Do While datos.Read()

                tempRow = New TableRow()

                For i = 0 To 3
                    lblTemp = New Label()
                    lblTemp.Text = datos.GetValue(i)
                    celda = New TableCell()
                    celda.Controls.Add(lblTemp)
                    tempRow.Controls.Add(celda)
                Next

                Tabla.Controls().Add(tempRow)

            Loop



            ' en caso de error.. capturamos y mostramos
        Catch ex As Exception
            Response.Write("Error al acceder a la BD<br>" & ex.Message)
        Finally
            'en cualquier caso hacemos esto (mal, sin comprobar)
            '        conexion.Close()
            conexion = Nothing
            comando = Nothing
        End Try


        'si la pagina ya se habia cargado antes aparecemos aqui
        'Else
        'Response.Write("OK, la pagina ya estaba cargada<br>")
        'End If

    End Sub