- 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