HOME      QUASI-BLOG        CONTATO         
 
 
 


Meu Primeiro Site ASP parte 2  retornar

Parte 1        Parte 2         Parte  3        Parte  4    Versão Impressa

 Nosso Objetivo :  Construir uma pequena aplicação ASP com acesso a uma base de dados Access

Vamos agora tentar implementar os nossos caso de uso, começando por  ListarEmpresas

Precisamos de um ListaAreas aonde ao clicar no nome de uma determinada área recuperemos a lista de empresas.

ListaAreas.asp

Observem com carinho, muito carinho mesmo os COMENTÀRIOS ao logo do código, eles tornam o programa auto-explicativo. 

Comentários são as linhas que se iniciam ou que contenham a aspas simples  ‘ . Da aspa simples em diante até o final da linha não é um comando é comentário e o interpretador ignora.

 

<HTML>

<HEAD>

<TITLE>graficas</TITLE>

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">

</HEAD>

<BODY BGCOLOR=#FFFFFF>

 <%

         'aqui começa ASP /VB

                 'cria objeto ASP de conexão

                 Set objConn = server.createobject("ADODB.Connection")

                'cria string de conexão específica para um determinado banco de dados

                 strConn = "DBQ=" & server.mappath("graficasonline.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}"

               'conecta ao banco de dados

                objConn.open strConn,3,3

               'cria o recordset para executar uma consulta e retornar com os dados obtidos

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

                ' texto do comando sql a ser executado  

                  sql = "SELECT AreaID, Area  FROM Areas ORDER BY Area"

                 ' executa a consulta

                  rs.Open empresas, strConn, 3, 3

                 'enquanto houver registros

                 do while not rs.eof

                         ' imprime no navegador

                         response.write rs("area") & "<br>"

                          ' procura o próximo

                           rs.movenext

                loop

'importante .. fechar conexao e destruir objetos               

set rs= nothing

objConn.close

set objConn = nothing

%>

</BODY>

</HTML>

 

 

Quando executamos o script no BabyWebServer, voilá a nossa lista de áreas.

O nosso problema, ou melhor nosso código começa a ficar mais sujo a medida que precisamos usar comandos da linguagem HTML para criar os links, impor o formato de uma tabela ou inserir figuras por exemplo.

Vou fazer isso em vários etapas correndo o risco de ser cansativo, mas acho melhor.

Vou começar colocando uma imagem no topo da página que será o nosso cabeçalho, em HTML imagens são incluídas com o TAG IMG

Vejam a pequena modificação apenas no início do arquivo

E o efeito no site

Legal não ?  e saiu barato.

Agora vou incluir um recurso dos mais utilizados em sites ASP, usar tabelas para ter mais controle sobre o visual das páginas.

Em tempo já cito que um controle de qualidade  profissional sobre o estilo e a aparências de páginas web é obtido com o uso de CSS, cascading styles sheets, pesquisem o assunto é de muito valia.

Mas vamos aqui percorrendo essa caminho mais tortuoso mas ainda muito usado, sem contar que desenvolvedores web irão ainda esbarrar por muitos e muitos anos com sistemas legados em ASP e na hora de migrar ou acoplar com sistemas existentes um bom contato com as técnicas das “antigas” vai ser de grande utilidade.

Tabelas em HTML são criadas com o TAG  <table> </table>

Cada linda da tabela é um ROW   <tr> </tr>

E as colunas são células criadas com o TAC <td> </td>

Assim uma tabela com 3 linhas e 3 colunas seria criada como

<table>

<tr>  <td> </td> <td> </td> <td> </td> </tr>

<tr>  <td> </td> <td> </td> <td> </td> </tr>

<tr>  <td> </td> <td> </td> <td> </td> </tr>

</table>

Ao tentar usar esses tags em nosso site asp temos 2 grandes opções, interromper as partes asp usando <% e %> e colocando o HTML fora dessas regiões ou usando o comando response.write para escrever todos os tags na página.  A segunda opção da uma melhor sensação de estarmo num único ambiente mas dá muito mais trabalho, a primeira produz um código mais confuso mas facilita a edição das tags em programas como o DreamWeaver e  é a preferida em ambientes aonde é necessária a integração entre webdesigners e webdevelopers e é nessa direção que eu vou.

<HTML>

<HEAD>

<TITLE>graficas</TITLE>

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">

</HEAD>

<BODY BGCOLOR=#FFFFFF>

<table border=1 align="center">

<tr><td>

<img src="images/graficaonline_01.gif">

</td>

</tr>

 <%

         'aqui começa ASP

           'cria objeto ASP de conexão

            Set objConn = server.createobject("ADODB.Connection")

             'cria string de conexão específica para um determinado banco de dados

               strConn = "DBQ=" & server.mappath("graficasonline.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}"

               'conecta ao banco de dados

               objConn.open strConn,3,3

               'cria o recordset para executar uma consulta e retornar com os dados obtidos

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

               ' texto do comando sql a ser executado  

               sql = "SELECT AreaID, Area  FROM Area ORDER BY Area"

               ' executa a consulta

                rs.Open sql, strConn, 3, 3                  

                'enquanto houver registros

                 do while not rs.eof                          

%>

                               <tr>

                               <td>

                               <!-- exibindo um valor do ambiente VBScripp/Asp dentro do HTML  -->

                               <%=  rs("area")  %>

                               </td>

                               </tr>

                               <%

                                 ' procura o próximo

                                 rs.movenext

                        loop

%>

                </table>

<%                          

'importante .. fechar conexao e destruir objetos                       

set rs= nothing

objConn.close

set objConn = nothing                                         

%>  

</BODY>

</HTML>

Que ao executar produz

 

Detalhes a observar :

  1. O uso do abre e fecha script   <%   %>    tudo que está entre esses símbolos está no escopo do VBScript/ASP,  o que esta fora é HTML/JavaScript/CSS etc, mas não é ASP.
  2. O uso do símbolo <%=   %> , vejam têm um sinal de = , para exibir valor que vem do ambiente ASP dentro de uma área HTML.
  1. Na linha <!-- exibindo um valor do ambiente VBScripp/Asp dentro do HTML  -->  ,o uso do abre e fecha COMENTÀRIO de HTML que é diferente do comentário VBScript  <!--   -- >

 

Agora para finalizar vamos incluir o link sobre o nome da área de modo que ao clicar sobre ele sejamos levados a listar as empresas daquela área.

E já adianto que vai ser uma misturada de comandos -)

Para fazer um link precisamos usar o TAG  <A> </A>

Que tem o seguinte formato

<A  HREF=” ENDERECO DO LINK ” > NOME QUE APARECE PARA SER CLICADO </A>

O que será exibido na página é NOME QUE APARECE PARA SER CLICADO mas o link para onde iremos estará definido em ” ENDERECO DO LINK

No nosso caso o que queremos é que seja mostrado o nome da ÁREA mas que ao clicar sejamos levados a página LISTAEMPRESAS.asp

O nosso comando deve então ficar algo como

<A  HREF=”ListaEmpresas.asp” >Agência de Publicidade</A>

Entrentanto o nosso sitema é dinâmico e nome das áreas são trazidas do banco pelo recordeser de no rs, no comando rs(“Area”)

Melhorando um pouco mais

<A  HREF=”ListaEmpresas.asp” > <%= rs(“Area”) %> </A>

 

Mas isso ainda não é o suficiente pois a página ListaEmpresas.asp terá que listar apenas as empresas que sejam da mesma área que rs(“Area”), mas aonde está armazenado o ID da área ?  em rs(“AreaID“)  que foi carregado junto da área via o SQL :

sql = "SELECT AreaID, Area  FROM Areas ORDER BY Area"

 

Então precisamos arrumar um mode de passer para a rotina ListaEmpresas.asp o AreaID da Área que for clicada. Faremos isso através de um recurso do HTML, a querystring.  A querystring é um parâmetro que podemos acrescentar ao nosso endereço, a nossa URL. Veja o exemplo

www.meusite.com.br/listaEmpresa.asp?area=15

tudo o que vem depois da interrogação faz parte da querystring, estamos passando a variavel area cujo valor é 15, depois verermos iremos recuperar esse valor

Então o nosso comando completo deverá ser

<A  HREF='ListaEmpresas.asp?area=<%=  rs("areaID") %>' > <%= rs("Area") %> </A>

                  

Feio? Não,  feio sou eu, é horroroso -), mas é assim mesmo, não adianta reclamar.

IMPORTANTE >>>> Observem que tivemos usar ASPAS SIMPLES no HREF para não misturar com as ASPAS DUPLAS do rs (“”) .

Criei uma listaAreas2.asp

<HTML>

<HEAD>

<TITLE>graficas</TITLE>

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">

</HEAD>

<BODY BGCOLOR=#FFFFFF>

<table border=1 align="center">

<tr><td>

<img src="images/graficaonline_01.gif">

</td>

</tr>

 <%

         'aqui começa ASP

                'cria objeto ASP de conexão

                Set objConn = server.createobject("ADODB.Connection")

                'cria string de conexão específica para um determinado banco de dados

                strConn = "DBQ=" & server.mappath("graficasonline.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}"

                'conecta ao banco de dados

                objConn.open strConn,3,3

                'cria o recordset para executar uma consulta e retornar com os dados obtidos

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

                ' texto do comando sql a ser executado  

                 sql = "SELECT AreaID, Area  FROM Area ORDER BY Area"

                 ' executa a consulta

                rs.Open sql, strConn, 3, 3

                'enquanto houver registros

                 do while not rs.eof                

%>

                               <tr>

                               <td>

                               <!-- exibindo um valor do ambiente VBScripp/Asp dentro do HTML  -->

                               <A  HREF='ListaEmpresas.asp?area=<%=  rs("areaID") %>' > <%= rs("Area") %> </A>

                               </td>

                               </tr>

                               <%

                                 ' procura o próximo

                                 rs.movenext

                        loop

%>

                </table>

<%                          

'importante .. fechar conexao e destruir objetos                       

set rs= nothing

objConn.close

set objConn = nothing

%>

</BODY>

</HTML>

O efeito é

Observem o que é exibido quando o mouse passa sobre o link.

Se clicarem, ocorrerá um erro, já que não fizemos o ListaEmpresas.asp ainda.

Com o todo o nosso know-how adquirido nos execícios anteriores ListaEmpresas.asp vai ser bem fácil de fazer é praticamente a mesma coisa com exceção de :

1.     Temos que saber como recuperar o valor da área passado pelo link no ListaArea.asp

 

2.     E temos que nos virar para usar esse valor no meio do SELECT que irá recuperar as empresas que são dessa área.

Para capturar o valor passado usaremos um objeto do ASP chamado REQUEST, especificamente o método Querystring desse objeto e formato é

Request.QueryString(“area”)

De forma prudente e para gerar menos chamadas ao objeto vamos logo desde o início armarzanar esse valor passado numa variavel que escolhi chamar areaid assim :

Areaid  = Request.QueryString(“area”)

Se e ListaEmpresa foi chamado no formato

www.meusite.com.br/listaEmpresa.asp?area=15

então é certo que em AreaID estará o valor 15,

como então recuperamos todas as empresas da área = 15 ?

basta construir um SQL com uma clásula WHERE que inclua esse valor passado pela querystring

Aqui está a primeira versão de ListaEmpresa.asp, estou retirand o cabeçalho inicial para tentar enquadrar o central é um única página.

<table border=1 align="center">

<tr><td>

<img src="images/graficaonline_01.gif">

</td>

</tr>

 <%         

               ' recupera o valor da areaID

               Areaid  = Cint(Request.QueryString("area"))

                'cria objeto ASP de conexão

               Set objConn = server.createobject("ADODB.Connection")

                'cria string de conexão específica para um determinado banco de dados

                strConn = "DBQ=" & server.mappath("graficasonline.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}"

                'conecta ao banco de dados

                objConn.open strConn,3,3

                'cria o recordset para executar uma consulta e retornar com os dados obtidos

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

                ' texto do comando sql a ser executado  

                 sql = "SELECT EmpresaID, Empresa,Estado FROM Empresa WHERE AreaID = " &_

                           AreaId & " ORDER BY Empresa"

                ' executa a consulta

                rs.Open sql, strConn, 3, 3

                'testa se foi ao final do arquivo sem encontrar nada e para

                if ( rs.eof ) then

                                %>

                                <tr>

                               <td>

                 Não existem empresas cadastradas nesse área! <p>

                                <a href="ListaAreas2.asp">retornar</a>

                               </td>

                               </tr>

                               </table>

                <%

                                response.end

                                end if

                               'enquanto houver registros

                do while not rs.eof

%>

                               <tr>

                               <td>

                               <!-- exibindo um valor do ambiente VBScripp/Asp dentro do HTML  -->

                               <%= rs("EmpresaID") %>   <%= rs("empresa") %>  <%= rs("estado") %>  </A>

                               </td>

                               </tr>

                               <%       

                                 ' procura o próximo

                rs.movenext 

            loop

%>

                </table>

<%                          

'importante .. fechar conexao e destruir objetos                       

set rs= nothing

objConn.close

set objConn = nothing

%>

O mais importante aqui é

 

sql = "SELECT EmpresaID, Empresa,Estado FROM Empresa WHERE AreaID = " & _

           AreaId & " ORDER BY Empresa"

E nessa linha duas coisas a destacar, primeiro o símbolo  “_” no final da linha, ele está lá para indicar que o comando que começa numa linha vai continuar na próxima.

Segundo o fato de que sql é uma string e uma string que é “concatenada” ou seja ela é união de 3 partes que se juntam para forma uma única string, a primeira parte é

"SELECT EmpresaID, Empresa,Estado FROM Empresa WHERE AreaID = "

 

Que é somada ao valor vindo de   AreaID

 

Que por fim se soma  a string  " ORDER BY Empresa"

 

O símbolo que garante essa concatenação é o  “&”.

 

Então supondo que na hora que você clica na página ListaArea em um link cujo AreaId = 15

 

Esse string sql se tornará

 

SELECT EmpresaID, Empresa,Estado FROM Empresa WHERE AreaID = 15 ORDER BY Empresa;

 

 

 

Nosso Objetivo :  Construir uma pequena aplicação ASP com acesso a uma base de dados Access

Parte 1        Parte 2         Parte  3        Parte  4