ASP - Básico : Exibindo o conteúdo de suas tabelas na Internet

Então , você quer exibir informações na Web ? Achou o artigo certo ! Vou mostrar, usando um exemplo bem simples, como podemos exibir dados armazenados em banco de dados em páginas dinâmicas usando ASP.  Criarei um arquivo ASP chamado mostrar.asp para exibir o conteúdo de uma tabela usando o acesso a banco de dados via ADO - ActiveX Data Object.

Nota: O símbolo & que você verá usado no código deste artigo é o E comercial.  Você pode usar qualquer editor de sua escolha , até o Bloco de notas.

Nossa aplicação consiste de um único arquivo:
1-) Mostrar.asp - Acessa um banco de dados e exibe os registros de uma tabela.

Vamos exibir o conteúdo da tabela Authors do banco de dados Biblio.mdb.( Este banco de dados vem junto com o Access; para o caso deste exemplo meu banco de dados Biblio.mdb esta localizado na pasta c:\asp_db)

 O código do arquivo mostrar.asp vem a seguir

<html><head>
<TITLE>mostrar.asp</TITLE>
</head>
<body bgcolor="#00FFFF">
<%
 
'Para acesso sem um DSN fazemos e usando um driver ODBC
set conntemp=server.createobject("adodb.connection")
conntemp.open "DBQ=C:\asp_db\biblio.mdb;DRIVER={Microsoft Access Driver (*.mdb)}"
 
'Vamos selecionar somente os primeiros registros da tabela
'Para isto criaremos uma instrução SQL que selecione somente os autores com Au_id menor que 12
aspSQL="select * from authors where Au_id <12 "
set rstemp=conntemp.execute(aspSQL)
 
contador=0
 
' verifica se há dados no recordset
If rstemp.eof then
response.write "Não há dados a exibir<br>"
response.write aspSQL & "<br>Não retorna informação alguma..."
connection.close
set connection=nothing
response.end
end if
' Vamos usar código HTML para criar uma tabela e exibir nossos dados
%>
<p><font color="#004080" size="5"><strong>Exibindo dados da tabela - Authors </strong></font></p>
<font color="#004080" size="3"><strong>(Códigos menores que 12)</strong></font></p>
<hr>
<table border=2 bgcolor="#FFFFFF">
<%
' Vamos dar nome aos cabeçalhos dos campos
response.write "<tr>"
'Percorremos os campos
for each item in rstemp.fields
response.write "<td><B>" & item.name & "</B></TD>"
next
response.write "</tr>"
 
' Agora iremos exibir os dados do Recordset gerado pela consulta SQL
' Vamos percorrer o recordset até chegar no final do arquivo
 
DO UNTIL rstemp.eof
'atribuindo os valores dos campos as variáveis
Codigo=rstemp("Au_ID")
Nome=rstemp("Author")
Nascimento=rstemp("Year born")
 
' escrevendo os campos em uma tabela para exibição via um Browser
response.write "<tr>"
response.write "<td>" & Codigo & "</td>"
response.write "<td>" & Nome & "</td>"
response.write "<td>" & Nascimento & "</td>"
response.write "</tr>"
'move-se para próximo registro do recordset
rstemp.movenext
contador=contador+1
LOOP
%>
</table>
<%
' Fechamos o recordset e liberamos a memória usada
rstemp.close
set rstemp=nothing
conntemp.close
set conntemp=nothing
%>
Esta tabela possui <% =contador %> registros
</body>
</html>

A página gerada pelo processamento do código acima deve ser a seguinte:

OBS: Os arquivos ASP são executados sobre o HTTP, desta forma , você vai precisar abrir o seu navegador e digitar uma URL : http://nomedocomputador/nomedoarquivoasp.asp. Como o diretório padrão é X:\Inetpub\wwwroot , qualquer diretório criado abaixo dele pode ser acessado informando o nome do diretório na URL. Se você criar um diretório chamado teste (abaixo de Intepub\wwwroot), a URL fica assim: http://nomedocomputador/teste/nomedoarquivoasp.asp.
 
Tomando como base o código mostrado acima podemos extrair quaisquer informações de qualquer tabela. Vamos mostrar como fazer uma consulta genérica onde o usuário fornece os parâmetros para montar a consulta SQL que seleciona os dados.
 
Criando uma consulta com opções do usuário
 
A SQL é muito flexível e fácil de trabalhar , com poucas declarações conseguimos fazer coisas que seriam necessário muitas linhas de código.
 
Vamos incrementar nossa página ASP criando ,com auxílio de formulários , opções de consulta que o usuário poderá fazer.
 
Vamos dar a opção ao usuário de selecionar os autores por data de nascimento e ordená-los por código ou por nome em ordem ascendente ou descendente.
 
Os formulários servem para coletar as informações que serão processadas pelas páginas ASP. Nosso exemplo usará dois arquivos :
1-) consulta.htm – arquivo com código html que irá gerar um formulário onde o usuário fará as opções de consulta
2-) consulta.asp - arquivo de script ASP que irá processar a consulta selecionada pelo usuário. A aparência do formulário gerado por consulta.htm em execução será a seguinte:
 
Tela gerada pelo arquivo consulta.htm – com opções para o usuário montar a sua consulta
O código do formulário consulta.htm é puro código HTML e é mostrado a seguir
<html>
<head>
<title>Formulário para pesquisa</title>
</head>
<body bgcolor="#00FFFF">
<FORM ACTION="consulta.asp" METHOD="GET">
Data de Nascimento:
<INPUT TYPE="radio" NAME="opcao1" VALUE="OP1" CHECKED>Menor que</INPUT>
<INPUT TYPE="radio" NAME="opcao1" VALUE="OP2" CHECKED>Maior que</INPUT>
<INPUT TYPE="text" NAME="ano" VALUE="" SIZE=10></INPUT>
<BR>
Ordernar por:
<SELECT NAME="criterio">
<OPTION VALUE="Au_ID">Au_ID
<OPTION VALUE="Author">Author
<OPTION VALUE="Year Born">Year Born
</SELECT>
<SELECT NAME="ordem">
<OPTION VALUE="">Crescente
<OPTION VALUE=" DESC">Decrescente
</SELECT>
<BR>
<INPUT TYPE="submit" VALUE="Executar Consulta" </INPUT>
</FORM>
</body>

</html>

Observe que:

As tags <FORM>...</FORM> delimitam os elementos contidos no formulário

A ação que o formulário irá executar quando o usuário pressionar o botão

Executar Consulta – será chamar o arquivo consulta.asp passando a ele os valores fornecidos nos elementos do formulário.

Nome e valores dos elementos que compõem o formulário:

Botões de Rádio – nome: opcao1 , valores: OP1 e OP2

Caixa de Texto – nome: ano , valor: "" vazio ( voce pode indicar um valor inicial)

Lista de Seleção – nome: criterio , valores: Au_ID, Author e Year Born

Lista de Seleção para ordenação – nome : ordem , valores: crescente e decrescente

O código do arquivo consulta.asp vem a seguir:

<%
'Declarando as variáveis que serao usadas
Dim DbConn , cmdDB , rsDB
Dim nItem
Dim nCampos , nLaco
Dim strOpcao, nAno, strCriterio , strOrdem
Dim Sql
 
'verificando a seleção do usuário para montar a instrução SQL
stropcao = Request.Querystring("opcao1")
Select Case stropcao
Case "OP1"
strOpcao = "<"
Case "OP2"
strOpcao = ">"
Case Else
strOpcao = "<>"
End Select
 
nAno = Request.Querystring("ano")
if isNumeric(nAno) then
nAno = Clng(nAno)
Else
nAno = 1900
End If
 
strCriterio = Request.Querystring("criterio")
if strCriterio = "" then strCriterio = "Au_ID"
if strCriterio = "Year Born" then strCriterio = "[Year Born]"
 
strOrdem = Request.QueryString("ordem")
 
'Vamos mostrar a conexão sem usar um DSN
set DBConn=server.createobject("adodb.connection")
DBconn.open "DBQ=C:\asp_db\biblio.mdb;DRIVER={Microsoft Access Driver (*.mdb)}"
 
'Criaremos um objeto Command vinculado ao objeto Connection
Set cmdDB = Server.CreateObject("ADODB.Command")
cmdDB.ActiveConnection = Dbconn
 
cmdDB.CommandText = "SELECT * FROM authors WHERE ([Year Born] " & stropcao & " " & nano & " )" & " _ ORDER BY " & strcriterio & strordem
 
cmdDB.CommandType = 1
 
'Agora vamos criar um recordset e via objeto command iremos retornar os valores da consulta.
Set rsDB = Server.CreateObject("ADODB.Recordset")
'O recordset será aberto como do tipo Forward-Only e no modo somente leitura - ready-only
rsDB.Open cmdDB ,,,1
%>
 
<B>O resultado da consulta <%= cmdDB.CommandText %></B></BR>
 
<BR>
<TABLE BORDER=1>
<THEAD>
<% For Each nItem in rsDB.Fields %>
<TH><%= nItem.Name %>
<% Next %>
</THEAD>
 
<%
'Percorrendo o recordset mostramos cada registro
If not rsDB.EOF Then rsDB.Movefirst
 
'Verificamos qual o total de campos no arquivo
nCampos = rsDB.Fields.Count – 1
 
'Percorrems o arquivo ate o final
Do While Not rsDB.EOF
%>
<TR>
<% For nLaco = 0 to nCampos %>
<TD><%= rsDB.Fields(nLaco) %></TD>
<% Next %>
</TR>
<%
rsDB.MoveNext
Loop
%>
</TABLE>
 
<%
 
rsDB.Close
Set rsDB = Nothing
Set cmdDB = Nothing
DBconn.close
set DBconn = Nothing
%>

No código acima destacamos:

1-)Recuperamos os valores dos campos – opcao1, ano , critério e ordem - definidos no formulário usando Request.QueryString(nome_do_campo) porque usamos o método GET no formulário para submeter os dados ao script mostrar2.asp, e armazenamos os valores nas variáveis definidas no script. Elas irão compor a instrução SQL.

2-)Utilizamos uma conexão usando um driver ODBC:

Nota: É recomendável usar um provedor OLE DB , use um driver ODBC somente se o seu servidor não suportar um provedor OLE DB. Veja abaixo a conexão ODBC e a conexão OLE DB:

Conexão ODBC    : DBconn.open "DBQ=C:\asp_db\biblio.mdb;DRIVER={Microsoft Access Driver (*.mdb)}"
Conexão OLE DB : DBconn.open  "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\asp_db\biblio.mdb"
3-)Montamos a instrução SQL e exibimos os registros selecionados.. A instrução SQL é a seguinte::
"SELECT * FROM authors WHERE ([Year Born] " & stropcao & " " & nano & " )" & " ORDER BY " & strcriterio & strordem
onde:
SELECT * FROM authors - seleciona todos os registros da tabela Authors

WHERE ([Year Born]" & stropcao & " " & nano & ")" - Onde a data de nascimento do autor (Year Born) – como o campo Year Born apresenta um espaço entre os nomes deve vir cercado por [Year Born] - for maior ( > ) ou menor (>) =stropcao – o usuário ira selecionar – que o ano ( nano ) – o usuário seleciona o ano.

ORDER BY " & strcriterio & strordem – Ordena por (ORDER BY) – o usuário seleciona o campo (Au_ID , Year Born , Author) para ordenação = strcriterio - em ordem (strordem) – decrescente ( DESC ) ou crescente . Se o campo selecionado para critério de ordenação for o campo Year Born , o colocamos entre [ ] :

if strCriterio = "Year Born" then strCriterio = "[Year Born]"

Para exibir os dados no código acima usamos a sintaxe <%=variavel %> , ela é equivalente a <% response.write variavel %>.

Simples e básico você acabou de ver como é fácil exibir dados em páginas ASP na Web. Aguarde a continuação da série ASP-Básico.


Copyright (c) - José Carlos Macoratti