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- 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")%>  </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")%>  </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:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
Compreendendo Models, Views e Controllers - MVC - Macoratti.net