Criando um rotina de busca em uma página da web com ASP e SQL.


Neste breve artigo vou mostrar como criar um rotina de busca em uma página da Web com ASP e SQL. Você vai poder testar a rotina on-line e vê-la funcionando em tempo real.

Vou publicar as páginas e os scripts ASP no servidor Brinkster.  (Nota este servidor não atende mais verifique essa alternativa :https://somee.com/default.aspx)

Se você quiser saber como criar uma conta de acesso ao Brinkster para poder criar seu site de testes leia o artigo :  ASP e ADO - Fórum Visual Basic - Parte I

Você pode também testar o funcionamento do código em sua máquina local usando um servidor como o PWS , IIS , etc.. Basta ele estar configurado.

Para configurar o PWS leia o artigo : Como configurar o Personal Web Server. 

Vou  usar um banco de dados Access versão 2000 como o nome de Vistantes.mdb com uma tabela chamada Visitas com a seguinte estrutura:

Você pode criar esta tabela usando código SQL , assim:

CREATE TABLE Visitas ( Codigo char(5) not null, Nome varchar(50), Email varchar(150), mensagem varchar(255) ,  primary key(codigo)); 

E tive a liberdade de inserir alguns depoimentos recebidos sobre o site na tabela Visitas . Não coloquei o email nem o nome completo pois não tinha autorização para isto. 

O objetivo é criar uma rotina que realize buscas na tabela Visitas pelo Nome , Email , ou Mensagem.

Nosso projeto será composto basicamente pelos seguintes arquivos de código:

  1. Buscar.htm  - A página html que exibe o formulário com as opções de busca.
  2. Busca.asp - Script ASP que realiza a busca no banco de dados Visitantes.mdb

1- Criando a página HTML com o FrontPage Express

Nossa página será muito simples ; abra o FrontPage Express e cria a página conforme o layout abaixo:

Você não precisa colocar as imagens ; pode também colocar outros campos de formulário.

Esta será a página inicial do site , e você deve informar por qual campo deseja procurar e informar o critério para a busca.

Eu acho que o código deste arquivo não precisa ser comentado , em todo caso se você não sabe como funciona um formulário preste atenção...

No formulário Busca.htm acima o usuário irá informar os dados para a busca e clicar no botão - Procurar. Isto irá chamar o arquivo Buscar.asp , a linha responsável por esta façanha é a seguinte:

<form action="buscar.asp" method="POST" name="busca">

Esta etapa esta encerrada , falta somente agora criar o arquivo Busca.asp . Na verdade ele é a peça principal do nosso projeto . Você pode acessar o site em : www/macoratti.net/busca/busca.htm

Nesta etapa somente a página busca.htm estará publicada , portanto nada vai estar funcionando ainda. Se você clicar no botão - Procurar - vai receber uma mensagem de erro. Portanto aguarde a segunda parte do artigo...

2- Criando o arquivo de script ASP para acessar o banco de dados usando SQL e ADO

O arquivo Buscar.asp será invocado toda a vez que o usuário clicar no botão - Procurar . Vamos então analisar o que faz o arquivo Buscar.asp.

O código completo do arquivo Buscar.asp  é:

<%@ LANGUAGE="VBSCRIPT" %>

<html>

<head>

<title>Pesquisa dinâmica com ASP e SQL !</title>

</head>

<body>

<%

Dim Sql

Set BdWeb = Server.CreateObject("ADODB.Connection")

 

BdWeb.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\macoratti\db\visitantes.mdb")

 

Sql = "SELECT * FROM Visitas"

 

   If Request.Form("Campo") = "Nome" Then

      Sql = Sql & " WHERE Nome LIKE '%" & Request.Form("Criterio") & "%'"

   End If

   If Request.Form("Campo") = "Email" Then

      Sql = Sql & " WHERE Email LIKE '%" & Request.Form("Criterio") & "%'"

   End If

   If Request.Form("Campo") = "Mensagem" Then

     Sql = Sql & " WHERE Mensagem LIKE '%" & Request.Form("Criterio") & "%'"

   End If

 

   Set RsWeb = Server.CreateObject("ADODB.Recordset")

   RsWeb.Open Sql, BdWeb, 3

%>

<%

   If RsWeb.BOF and RsWeb.EOF Then%>

      <h2 align="center">Nenhuma informação localizada ! </h2>

      <hr>

     <center><a href="busca.htm">Retorna</a></center>

<%Else%>

    <%If Not RsWeb.BOF Then%>

    <h2>Resultado da Busca:</h2>

    <hr>

    <table BORDER="0" width="100%" cellpadding="3">

    <%

    Do While Not RsWeb.EOF

    %>

    <td>

    <tr><b>Nome :</b>

    <%=RsWeb("Nome")%>&#32

    </tr><tr><b>Email :</b>

    <%=RsWeb("Email")%>

    </tr><tr><b>Mensagem:</b> <br>

    <%=RsWeb("Mensagem")%>

    </tr>

    <hr>

    <tr><a href="mailto:<%=RsWeb("Email")%>"><%=RsWeb("Email")%></a>

    </td>

    <p>

    <%RsWeb.MoveNext

    Loop%>

   <center><a href="busca.htm">Retorna</a></center>

   </table>

<%End If%>

<%End If%>

<%

RsWeb.Close

BdWeb.Close

%>

</body>

</html>

Como Funciona: Passo a passo o código comentado.

<%@ LANGUAGE="VBSCRIPT" %>

<html>

<head>

<title>Pesquisa dinâmica com ASP e SQL !</title>

</head>

<body>

Código HTML que indica a linguagem de scripts usada e que monta o cabeçalho da página HTML 

Dim Sql

Declara a variável SQL que irá conter a string para a instrução sql
Set BdWeb = Server.CreateObject("ADODB.Connection") Cria uma conexão ADO e associa a variável objeto BdWeb
BdWeb.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\macoratti\db\visitantes.mdb") Abre o banco de dados visitantes.mdb usando um driver ODBC. Seria melhor usar um provedor OLEDB mas nem todos os servidores suportam os provedores OLEDB. ATENÇÃO ! Cuidado com a localização do banco de dados. Eu estou usando Server.MapPath , então o banco de dados esta no diretório fisico c:\inetpub\wwwroot\macoratti\db . Onde c:\inetpub\wwwroot\ é a localização da pasta base ou seja o diretorio raiz do meu servidor.
Sql = "SELECT * FROM Visitas" Define a instrução SQL para selecionar todos os registros da tabela Visitas

If Request.Form("Campo") = "Nome" Then

      Sql = Sql & " WHERE Nome LIKE '%" & Request.Form("Criterio") & "%'"

   End If

   If Request.Form("Campo") = "Email" Then

      Sql = Sql & " WHERE Email LIKE '%" & Request.Form("Criterio") & "%'"

   End If

   If Request.Form("Campo") = "Mensagem" Then

     Sql = Sql & " WHERE Mensagem LIKE '%" & Request.Form("Criterio") & "%'"

   End If

Redefine a instrução SQL conforme o campo e o critério informados pelo usuário no formulário Busca.htm.  Observe que o coringa (%) usado é o equivalente ao (*).

Assim  where nome LIKE '%" & request.form("criterio") 

irá procurar todos os nomes que contenham o seu criterio.

Set RsWeb = Server.CreateObject("ADODB.Recordset") Cria o objeto Recordset ADO RsWeb

 RsWeb.Open Sql, BdWeb, 3

Abre o recordset definido pela instrução SQL da conexão BdWeb . 

If RsWeb.BOF and RsWeb.EOF Then%>

      <h2 align="center">Nenhuma informação localizada ! </h2>

      <hr>

     <center><a href="busca.htm">Retorna</a></center>

Se nada foi retornado , ou seja , o recordset gerado esta vazio, então exibe  a mensagem 'Nenhuma Informação localizada'. 

<%Else%>

    <%If Not RsWeb.BOF Then%>

    <h2>Resultado da Busca:</h2>

    <hr>

    <table BORDER="0" width="100%" cellpadding="3">

    <%

    Do While Not RsWeb.EOF

    %>

    <td>

    <tr><b>Nome :</b>

    <%=RsWeb("Nome")%>&#32

    </tr><tr><b>Email :</b>

    <%=RsWeb("Email")%>

    </tr><tr><b>Mensagem:</b> <br>

    <%=RsWeb("Mensagem")%>

    </tr>

    <hr>

    <tr><a href="mailto:<%=RsWeb("Email")%>"><%=RsWeb("Email")%></a>

    </td>

    <p>

    <%RsWeb.MoveNext

    Loop%>

Se o recordset gerado não for vazio , então percorre o recordset e exibe os dados : nome , email e mensagem em uma tabela. Lembre-se que para exibir um campo de um banco de dados , uma das formas é : <%=rs("campo")%> , assim temos:

<%=RsWeb("Mensagem")%>

 

RsWeb.Close

BdWeb.Close

%>

</body>

</html>

Fecha a conexão e o recordset ADO e encerra o código HTML.

Agora você pode ver o formulário e a busca funcionando em : www.macoratti.net/busca/busca.htm 

O resultado para uma busca pelo campo nome e pelo critério : macoratti , irá retornar:

Este é um exemplo muito simples que procura mostrar o básico para você criar suas consultas dinâmicas usando ASP , ADO e SQL.

Agora é estudar e incrementar o código ...

Até mais...

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Referências:


José Carlos Macoratti