Percorrido genérico por um recordset com ASP
Neste workshop de ASP vamos realizar uma consulta a uma tabela de um banco de dados para poder tirar um conjunto de registros. Logo, vamos fazer um percorrido por esse conjunto de registros genéricos, sem importar os nomes dos campos e o número de registros ou de campos, mostrando todos os dados extraídos no recordset. A consulta que realizarmos sobre a tabela será indiferente, ou seja, o script está preparado para realizar o percorrido seja qual for o conjunto de registros resultante e os nomes dos campos.
O objetivo é mostrar todos os dados do recordset em uma tabela. Na primeira fila da tabela colocaremos os nomes dos campos que tem cada registro e nas seguintes filas, os valores dos campos de cada registro obtido na consulta.
O primeiro pedaço de código é uma conexão com o banco de dados por meio de DSN e a execução de uma sentença SQL.
‘conecto BD e gero RS
set conn = server.createobject(“adodb.connection”)
conn.open “meuDSN”
sSQL=”select * from tabela”
set rs=conn.execute(sSQL)
Uma vez criado o recordset na variável “rs”, temos que escrever o cabeçalho da tabela com os nomes dos campos que tem cada registro recebido.
‘nomes dos campos como cabecalho da tabela
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>”
No código anterior se realizou um percorrido a cada um dos campos do primeiro registro do recordset e para cada um deles foi escrito seu nome, armazenando em rs.fields(i).name, a propriedade name do campo. Assim, mostraremos uma célula por cada nome dos campos do registro.
O passo seguinte será mostrar o conteúdo de cada um dos registros, realizando um percorrido genérico por todo o recordset.
‘agora, para cada registro
while not rs.EOF
response.write “<tr>”
‘mostro todos os campos que tem
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>”
O loop “while not rs.EOF” é para percorrer cada registro. Para cada registro cria-se uma fila. Logo, acrescenta-se outro loop “for i = 0 to rs.fields.Count” para percorrer cada campo do registro. Para cada campo escreve-se o valor em uma coluna. Para terminar, fecha-se a tabela.
O script já terminou. Só nos resta fechar as conexões com o banco de dados.
‘fecho o bd e o recordset
rs.close
conn.Close
Podemos ver o código fonte completo a seguir:
<%
‘conecto BD e gero RS
set conn = server.createobject(“adodb.connection”)
conn.open “meuDSN”
sSQL=”select * from tabela”
set rs=conn.execute(sSQL)
‘nomes dos campos como cabecalho da tabela
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>”
‘agora, para cada registro
while not rs.EOF
response.write “<tr>”
‘mostro todos os campos que tem
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>”
‘fecho o bd e o recordset
rs.close
conn.Close
%>