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
%>
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
%>
Miguel Angel Alvarez
Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...