Recorrido genérico por un recordset con ASP

  • Por
Script ASP que realiza un recorrido por un conjunto de registros o recordset (RS), mostrando todos los registros y todos los campos de cada registro.
En este taller de ASP vamos a realizar una consulta a una tabla de una base de datos para sacar un conjunto de registros. Luego vamos a hacer un recorrido por ese conjunto de registros genérico, sin importar los nombres de los campos y el número de registros o de campos, mostrando todos los datos extraídos en el recordset. La consulta que realicemos sobre la tabla es indiferente, es decir, el script está preparado para realizar el recorrido sea cual sea el conjunto de registros resultante y los nombres de los campos.

El objetivo es mostrar todos los datos del recordset en una tabla. En la primera fila de la tabla colocaremos los nombres de los campos que tiene cada registro y en las siguientes filas, los valores de los campos de cada registro obtenido en la consulta.

Recordemos que las explicaciones sobre conectar y trabajar con una base de datos están en nuestro manual de ASP.

El primer trozo de código es una conexión con la base de datos por medio de DSN y la ejecución de una sentencia SQL.

'conecto BBDD y genero RS
set conn = server.createobject("adodb.connection")
conn.open "miDSN"
sSQL="select * from tabla"
set rs=conn.execute(sSQL)


Una vez creado el recordset en la variable "rs", tenemos que escribir la cabecera de la tabla con los nombres de los campos que tiene cada registro recibido.

'nombres de los campos como cabecera de la tabla
response.write "<table border='1'><tr>"
for i = 0 to rs.fields.Count - 1
   response.write "<th align='center' bgcolor='#eeeeee'>"
   response.write rs.fields(i).name
    response.write "</th>"
next
response.write "</tr>"

En el código anterior se ha realizado un recorrido a cada uno de los campos del primer registro del recordset y para cada uno de ellos se ha escrito su nombre, almacenado en rs.fields(i).name, la propiedad name del campo. Así mostraremos una celda por cada nombre de los campos del registro.

El paso siguiente será mostrar el contenido de cada uno de los registros, realizando un recorrido genérico por todo el recordset.

'ahora, para cada registro
while not rs.EOF
    response.write "<tr>"
   'muestro todos los campos que tiene
    for i = 0 to rs.fields.Count - 1
       response.write "<td>" & rs.fields(i) & "</td>"
    next
    response.write "</tr>"
    rs.movenext
wend
response.write "</table>"

El bucle "while not rs.EOF" es para recorrer cada registro. Para cada registro se crea una fila. Luego se anida otro bucle "for i = 0 to rs.fields.Count" para recorrer cada campo del registro. Para cada campo se escribe el valor en una columna. Para terminar, se cierra la tabla.

El script ya ha terminado. Sólo nos queda cerrar las conexiones con la base de datos.

'cierro la bbdd y el recordset
rs.close
conn.Close


Podemos ver el código fuente completo a continuación:

<%
'conecto BBDD y genero RS
set conn = server.createobject("adodb.connection")
conn.open "miDSN"
sSQL="select * from tabla"
set rs=conn.execute(sSQL)

'nombres de los campos como cabecera de la tabla
response.write "<table border='1'><tr>"
for i = 0 to rs.fields.Count - 1
   response.write "<th align='center' bgcolor='#eeeeee'>"
    response.write rs.fields(i).name
    response.write "</th>"
next
response.write "</tr>"
'ahora, para cada registro
while not rs.EOF
    response.write "<tr>"
   'muestro todos los campos que tiene
    for i = 0 to rs.fields.Count - 1
    response.write "<td>" & rs.fields(i) & "</td>"
    next
    response.write "</tr>"
    rs.movenext
wend
response.write "</table>"

'cierro la bbdd y el recordset
rs.close
conn.Close
%>

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

Folken

03/11/2006
Es posible, que no se muestre el campo name, y mostrar todo los campos de datos sin que se pierda el primero??

Jesus Rivas

04/2/2009
Muy buen apunte, para hacer mi administrador ya que administro varias bases de datos de diferentes servers.

Muchas gracias

Sabo

14/4/2009
campo name
solo debes introducir en el select de la consulta todas las columnas menos la de name

papurri

21/11/2009
muy bueno
que buen tutorial.... muy bien explicados

gracias

Emiliano

16/2/2010
Me has salvado la vida!
Muy buen post!!!, de verdad que me ha salvado la vida, soy novatillo en el asp y la verdad es que no me enteraba de nada, además tengo que entregar una practica dentro de poco, y me ha venido al pelo...

Muchas gracias!!!