Documente Academic
Documente Profesional
Documente Cultură
direitos
reservados.
Proibida a
reproduo, mesmo
parcial, por qualquer
processo mecnico,
eletrnico,
reprogrfico, etc.
ACTIVE SERVER
PAGES
A grande vantagem que voc fica independe do browser que o cliente utiliza, pois
o servidor que possui a exigncia de ter um sistema operacional Microsoft. Assim, o cliente
pode navegar num site construdo em ASP com qualquer browser (seja ele Internet Explorer ou
Netscape Navigator).
Entre os recursos que podem ser implementados via ASP, podemos citar:
Pg.: 1
TECNOLOGIAS INICIAIS
Desde a primeira verso do IIS (Internet Information Server) o contedo dinmico
pode ser adicionado ao site por: aplicaes CGI, extenses e filtros ISAPI, Internet Database
Connector (IDC). A partir da verso 3.0 o ASP foi includo nestas opes. Quais as vantagens do
ASP em relao a estas tecnologias? que ele reuniu o que tinha de melhor em todas elas.
Abaixo alistamos as principais vantagens do uso do ASP.
Pg.: 2
Servidor
IIS **
** Gera HTML
dinamicamente
Acesso
ao BD
Pginas
ASP *
HTML ***
*** Resultado
mostrado ao cliente
Browser
Cliente
Pg.: 3
Servio WWW.
Suporte para Activex Data Objects (ADO) e Remote Data Services (RDS).
Servio de FTP.
Pg.: 4
Certificate Server para a emisso de certificados que podem ser usados para
a garantia de sites da Web.
No h limites para usurios.
Pg.: 5
Clique sobre a pasta do site que voc criou com o boto direito do mouse e
selecione a opo Propriedades (Properties).
Pg.: 6
Deixe as opes marcadas como na tela acima, dessa forma voc poder acessar o
site diretamente de seu computador digitando o nome da sua mquina seguido do Local Path
definido nas propriedades. Voc tambm pode digitar http://localhost/o Local Path definido.
Pg.: 7
<html>
<title>Exemplo</title>
<p>Estou aprendendo ASP</p>
<%
' aspas simples significam comentrios dentro do cdigo
' a linha abaixo tem o mesmo efeito do cdigo HTML acima
response.write "<p> Estou aprendendo ASP </p>"
Rua dos Otoni, 881 - 9 Andar
Belo Horizonte - MG - 30150-270
www.zargon.com.br
(31) 3273-2822
Pg.: 8
Pg.: 9
<html>
<head><title>Como funciona o ASP?</title></head>
<body bgcolor="#FFFFFF">
<p><font face=Verdana,Arial><b>Ol Mundo!!!</font></b></p>
<%
response.write "<p><font face=Verdana,Arial><i>Ol
Mundo!!!</font></i></p>"
%>
<p><%= "Ol Mundo!!!" %></p>
</body></html>
Abaixo segue a simbologia e as convenes de uso da linguagem ASP:
<% incio do trecho de cdigo ASP
%> final do trecho de cdigo ASP
' (aspas simples) usada antes de comentrios dentro do cdigo. Quando
fazemos referncia a cdigo HTML dentro das tags ASP, e os valores das tags HTML precisem
estar entre aspas, devemos utilizar as aspas simples; como no exemplo anterior. Abaixo temos o
erro que gerado pelo servidor web (PWS ou IIS) quando cometemos o erro de trabalhar com
aspas duplas para HTML dentro do ASP.
Pg.:10
Response
Request
Session
Application
Server
OBJETO RESPONSE
o objeto responsvel pelos dados enviados do servidor para o cliente (informao
enviada do servidor para o browser do cliente). Este objeto tem os seguintes Mtodos e
Propriedades:
Mtodos
Propriedades e Colees
OBSERVAO:
Se voc no indicar quando o cookie ir expirar, o cookie apenas fica valendo
enquanto o browser do cliente estiver aberto, assim que fechar o cookie desaparece.
Pg.:11
OBJETO SERVER
o objeto responsvel por permitir acesso e configurao de algumas funes e
mtodos ligados ao servidor.
Pg.:12
Mtodo
Createobject cria uma instncia de um componente no servidor.
Exemplo:
set conexao = server.createobject("adodb.connection") // Cria
objeto de conexo
Componentes so bibliotecas de objetos que possuem finalidades diversas. Ex.: componentes
que operam servios de e-mail, que manipulam banco de dados, etc..
Mappath mapeia arquivos de acordo com o caminho fsico, a partir do caminho virtual.
Exemplo:
server.MapPath ("mdb\dblivraria")
OBJETO APPLICATION
o objeto responsvel por armazenar e compartilhar valores, estados e
propriedades de um grupo. Um exemplo seria armazenar o nmero total de clientes no site num
instante. tambm possvel controlar erros causados por tentativas de alteraes simultneas de
variveis.
Aplicao todo o conjunto de pginas ASP e HTML que formam o programa (site)
como um todo. Com o objeto Application podemos criar variveis que esto disponveis em
qualquer momento no site.
Declarao de variveis Application:
Application(nomedavariavel) = conteudo
Mtodo
Lock trava o acesso s variveis Application.
Unlock destrava o acesso s variveis Application, disponibiliza as variveis novamente.
OBJETO SESSION
o objeto responsvel por armazenar valores ligados a cada visitante enquanto ele
utiliza uma aplicao. Uma session criada quando o cliente entra no site e destruda quando o
cliente sai do site (seja por logoff ou por tempo expirado, que por padro 20 minutos).
A declarao de variveis do tipo session possibilita que as mesmas estejam
disponveis durante toda a permanncia do cliente no site. So teis quando desejamos
identificar caractersticas do cliente em qualquer ponto do site.
Declarao de variveis Session:
Session(nomedavariavel) = conteudo
Exemplo de utilizao: quando o cliente se logar, podemos guardar numa session
seu nome, e-mail e login e ainda contar seu tempo de permanncia no site, se fizermos isso em
conjunto com uma varivel Application.
Rua dos Otoni, 881 - 9 Andar
Belo Horizonte - MG - 30150-270
www.zargon.com.br
(31) 3273-2822
Pg.:13
Mtodos
Abandon encerra a session.
Propriedades e Colees
TimeOut determina qual o tempo mximo,
em minutos, de inatividade do visitante at que
a session seja considerada abandonada.
Cada um desses objetos ser utilizado em testes que faremos juntamente com os
comandos de VBScript.
Pg.:14
Pense que voc precisa desenvolver uma aplicao que cadastre os clientes de sua
empresa pela Internet. Os dados devem ser armazenados em um banco de dados e vrias
validaes dos dados digitados pelos usurios devem ser feitas.
A linguagem VBScript possibilitar, por meio do ASP, a criao da aplicao validando as
informaes e armazenando-as no banco de dados. O ASP executar as solicitaes do VBScript
junto com seus objetos e devolver uma resposta ao cliente no formato HTML. Assim, o VBScript
executado no servidor.
DIM var
var = Algum texto var recebeu um valor string
var = 20 var recebeu um valor inteiro
Pg.:15
TIPOS DE DADOS
Os principais tipos de dados que o VBScript trabalha, so:
Tipo
Descrio
Empty
Varivel que contm 0 para valores numricos e "" (string vazia) para strings.
Null
Boolean
Byte
Integer
Long
Single
Nmeros com ponto flutuante de preciso simples na faixa de -3.402823E38 a 1.401298E-45 para nmeros negativos e 1.401298E-45 a 3.402823E38 para
nmeros positivos.
Double
Nmeros com ponto flutuante de dupla preciso na faixa de 1.79769313486232E308 a -4.94065645841247E-324 para nmeros negativos e
4.94065645841247E-324 a 1.79769313486232E308 para nmeros positivos.
Date (Time)
String
OPERADORES
Os operadores so utilizados para fazer clculos, comparaes e junes, tanto no
cdigo VBScript, quanto no cdigo ASP.
OPERADORES ARITMTICOS
+
Adio
Subtrao
Multiplicao
Diviso
Mod
Potenciao
Pg.:16
Concatenao de strings
OPERADORES RELACIONAIS
=
Igual a
<
Menor que
<=
>
Maior que
>=
<>
Diferente de
OPERADORES LGICOS
And
Or
Ou
Not
No
Eqv
Equivalncia
Imp
Implicao lgica
Xor
Ou exclusivo
OR
Expresso 1
Expresso 2
Resultado
Expresso 1
Expresso 2
Resultado
EQV
IMP
Expresso 1
Expresso 2
Resultado
Expresso 1
Expresso 2
Resultado
Pg.:17
NOT
Expresso 1
Expresso 2
Resultado
Expresso
Resultado
IF condio THEN
Comandos
ELSE
Comandos
END IF
SELECT CASE
Sintaxe:
Pg.:18
FUNES
As funes no VBScript servem para que os tipos de dados no sejam interpretados
de maneira incorreta e gerem erros nos cdigos. Isso muito importante levando em
considerao que a Internet est disponvel em vrios pases e cada tem uma maneira de
visualizar valores, por exemplo.
Imagine que est recebendo um valor de um formulrio para ser inserido em um
banco de dados. Este valor deve ser numrico para no gerar nenhum erro de tipo de dado no
banco de dados. Os dados digitados em um formulrio HTML so passados como texto (string),
ento ser necessrio converter este texto em nmero. Conseguiremos isso por meio das funes
de converso.
Tambm ser necessrio fazermos validao de dados, testarmos se uma data,
um nmero, etc.. As funes de verificao nos auxiliaro.
Pg.:19
Descrio
Sintaxe
IsArray
IsDate
IsEmpty
IsNull
IsNumeric
Descrio
CBool
CByte
CDate
CDbl
CInt
CLng
CStr
CSng
Sintaxe
Pg.:20
Descrio
Sintaxe
Abs
Fix
Int
Sqr
Fix (nmero)
Descrio
Day
retorna o dia do
determinada data.
Month
Year
Weekday
Hour
Minute
Second
Now
Time
Date
Sintaxe
ms
de
Pg.:21
Descrio
Asc
Chr
InStr
retorna
a
posio
da
primeira InStr (posio inicial, string, string de
ocorrncia de uma string dentro da comparao)
outra, possvel delimitar a partir de
qual caractere ser feita tal procura.
LCase
UCase
Left
Len
Mid
Right
Ltrim
Rtrim
Trim
Sintaxe
Pg.:22
<HTML>
<TITLE>Teste de VBSCRIPT</TITLE>
<BODY bgcolor = #FFFFFF>
<font face = verdana size = 2>
<% ' Teste do Comando IF
Dim I ' Declara a varivel I
I = 9 Inicializa a varivel
IF I >= 10 THEN
Usamos o comando condicional para testar o valor da varivel %>
<p> O valor de I maior ou igual a 10. </p>
<p> O valor de I <% = I %> e seu quadrado <% = I * I %></p>
<% ELSE %>
<p> O valor de I menor que 10. </p>
<p>O valor de I <% = I %> e seu cubo <% = I * I * I %></p>
<% END IF %>
</BODY></HTML>
Voc pde observar que como a condio do comando IF foi falsa, os comandos
executados foram os do comando ELSE. Para testarmos a condio verdadeira do IF altere o valor
inicial de I para 15. Lembre-se de salvar o cdigo no servidor Web para que voc consiga efetuar
todos os testes.
<HTML>
<TITLE>Teste de VBSCRIPT</TITLE>
<BODY bgcolor = #FFFFFF>
<font face = verdana size = 2>
<% ' Teste do comando SELECT CASE
SELECT CASE Minute(Now)
CASE 0,1,2,3,4,5,6,7,8,9,10 %>
<p> Passam at 10 minutos da hora atual. </p>
<%
CASE 11,12,13,14,15,16,17,18,19,20 %>
<p> Passam at 20 minutos da hora atual. </p>
<%
CASE 21,22,23,24,25,26,27,28,29,30 %>
Rua dos Otoni, 881 - 9 Andar
Belo Horizonte - MG - 30150-270
www.zargon.com.br
(31) 3273-2822
Pg.:23
</BODY></HTML>
ESTRUTURA DE REPETIO FOR
Gostaria de saber o segundo da hora atual at que o valor de uma varivel chegue
at 10. Digite o cdigo abaixo no bloco de notas:
<HTML>
<TITLE>Teste de VBSCRIPT</TITLE>
<BODY bgcolor = #FFFFFF>
<font face = verdana size = 2>
<% ' Teste do comando FOR
DIM Segundo
Declara a varivel
Segundo =""
Inicia a varivel
FOR I = 1 TO 10
O contador comea com 1. O loop feito at o mesmo atingir 10.
Segundo = Second(Now)
Funo utilizada para buscar o segundo da hora atual
%>
<br><font face = "Verdana" Size = 2>O segundo da hora atual : <% =
Segundo %>
</font>
<% NEXT %>
</BODY></HTML>
<HTML>
<TITLE>Teste de VBSCRIPT</TITLE>
<BODY bgcolor = #FFFFFF>
<font face = verdana size = 2>
Rua dos Otoni, 881 - 9 Andar
Belo Horizonte - MG - 30150-270
www.zargon.com.br
(31) 3273-2822
Pg.:24
Pg.:25
AS ROTINAS
As rotinas em uma linguagem de programao servem para agrupar cdigos que
funcionaro vrias vezes em vrios programas diferentes, ou dentro de um mesmo programa o
cdigo deve ser acessado em vrios momentos.
Muitos dos bancos de dados utilizados nos sites esto armazenados em servidores
com padro de data americano. Ao mostrar as datas armazenadas no banco para o usurio do
site, esta deve estar no padro que ele reconhece, levando em conta que iremos trabalhar com
usurios brasileiros; a data deve ser mostrada no formato dia, ms e ano.
Ser necessrio converter a data que est armazenada no banco de dados para o
padro brasileiro em vrios pontos do mesmo programa e do site, ento criamos uma rotina para
armazenar o cdigo que faz esta transformao e a mesma poder ser acessada apenas usando
uma chamada pelo nome dado rotina.
Existem dois tipos de rotinas: funes (rotinas que retornam valor) e
procedimentos (rotinas que no retornam valor, simplesmente executam alguma ao). O
exemplo mencionado acima deve ser criado uma rotina que retorna valor, uma funo. Mas
quando vamos, por exemplo, fazer a conexo com um banco de dados, o cdigo deve ser
repetido em todas as pginas que acessem o banco, mas no necessrio retornar nenhum
valor, ento usamos um procedimento.
Pg.:26
Pg.:27
MTODO WRITE
Este mtodo ns j estamos utilizando desde o nosso primeiro exemplo. Ele envia
texto ao browser do cliente.
Sintaxe:
MTODO END
Sempre que quisermos encerrar o carregamento da pgina em um determinado
ponto do cdigo, utilizaremos o mtodo End do ASP.
Sintaxe:
MTODO REDIRECT
Em determinados momentos da execuo de um programa necessrio desviar a
execuo para um outro programa. Por exemplo, se o usurio j estiver cadastrado no site ele
deve ser direcionado para a pgina de usurios cadastrados, se no estiver cadastrado ele deve
ser direcionado para a pgina de cadastro. Para conseguirmos redirecionar um usurio para uma
outra pgina do site utilizamos o mtodo Redirect, com a seguinte sintaxe:
Pg.:28
Onde a URL pode ser substituda por um endereo http ou o nome de um arquivo
Pg.:29
PROPRIEDADE BUFFER
Este comando deve ser o primeiro da pgina, antes de qualquer outro cdigo, quer
seja HTML, VBScript, etc.. Ele avisar ao browser que s aps todo o cdigo ter sido carregado no
cliente que o contedo da pgina poder ser mostrado.
Por padro o valor deste comando FALSE, ou seja, a pgina vai sendo mostrada
medida que o cdigo enviado ao browser. Para ativa-lo utilize a sintaxe abaixo:
COLEO COOKIE
Com os cookies podemos armazenar informaes em formato texto no micro do
cliente. Informaes como a hora do acesso, a data, ou qualquer outra informao que voc
possa recuperar a qualquer momento no site.
Existem dois tipos de cookies: os de sesso e os permanentes. Os cookies de
sesso s existem enquanto o browser do cliente est aberto. Os cookies permanentes ns
controlamos at quando eles permanecero no disco rgido do cliente.
Lembre-se que o usurio pode travar a mquina para no receber cookies, ou
apaga-los a qualquer momento.
Os cookies devem ser utilizados principalmente quando voc for personalizar a
entrado do site, ou buscar a data da ltima visita do cliente ao site, etc.. Muitos tm medo dos
cookies, pensam que os mesmos podem estar trazendo vrus. Mas, os cookies so apenas
arquivos de texto que armazenam as informaes que voc solicitou e algumas informaes
sobre o site. Nunca utilize cookies para armazenar informaes confidenciais do usurio, porque
ele no tem segurana.
Para gravar um cookie utilize a seguinte sintaxe:
Pg.:30
Pg.:31
<%
Session("DataConexao") = Date
Session("HoraConexao") = Time
Armazena qual o nmero equivalente ao dia da semana da data armazenada anteriormente
Session("DiadaSemana") = Weekday(session("DataConexao"))
%>
<HTML>
<HEAD>
<TITLE>Utilizando o objeto SESSION</TITLE>
</HEAD>
<BODY bgcolor = #99CC99>
<font face = arial size = 4 color = Black > As variveis de Sesso foram
armazenadas!
</font>
</BODY>
</HTML>
O cdigo abaixo recuperar as informaes, e como a funo Weekday retorna o
nmero do dia da semana, vamos testar qual esse nmero e mostrar o dia da semana por
extenso.
<HTML>
<HEAD>
<TITLE>Utilizando o objeto SESSION</TITLE>
</HEAD>
<BODY bgcolor = #99CC99>
<H2 ALIGN=CENTER> Recuperando as variveis de Sesso </h2>
<font face = arial size = 2 color = Black >
<p> Data da Conexo = <% = Session("DataConexao")%></p>
<p> Hora da Conexo = <% = Session("HoraConexao")%></p>
<p> Dia da Semana =
<% Select Case Session("DiadaSemana")
Case 1
response.write "Domingo"
Case 2
response.write "Segunda-Feira"
Case 3
response.write "Tera-Feira"
Case 4
response.write "Quarta-Feira"
Case 5
Rua dos Otoni, 881 - 9 Andar
Belo Horizonte - MG - 30150-270
www.zargon.com.br
(31) 3273-2822
Pg.:32
RECUPERANDO COOKIES
No programa feito anteriormente gravamos alguns cookies, abaixo emos um
exemplo de um programa para recuperar os cookies gravados. .
No programa citado foram armazenadas dentro do cookie teste as variveis:
DataAtual, HoraAtual e Site. O cdigo abaixo recupera as variveis armazenadas no cookie:
<HTML>
<HEAD>
<TITLE>Objeto REQUEST - Recuperando Cookies</TITLE>
</HEAD>
<BODY bgcolor = #99CC99>
<font face = arial size = 2 color = Black >
<p><B>Buscando os cookies armazenados:</b></p>
<p>Data do ltimo acesso:
<% = request.cookies("Teste")("DataAtual")%></p>
<p>Hora do ltimo acesso:
<% = request.cookies("Teste")("HoraAtual")%></p>
<p>Site: <% = request.cookies("Teste")("Site")%></p>
</font>
</BODY>
</HTML>
Rua dos Otoni, 881 - 9 Andar
Belo Horizonte - MG - 30150-270
www.zargon.com.br
(31) 3273-2822
Pg.:33
Utilize os cookies para buscar informaes que sero teis em uma outra visita do
Pg.:34
Pg.:35
Pg.:36
<HTML>
<HEAD>
<TITLE>Objeto Request - Propriedade QueryString</TITLE>
</HEAD>
<BODY BGCOLOR=#ffffff>
<FONT FACE=verdana SIZE=2 COLOR=#003333>
<p>Escolha uma opo:</p>
<!--Este teste vai chamar uma pgina passando parmetros pela URL-->
<a href=TesteASP7.asp?acao=opcao>Opo de Lingua </a><br>
<a href=TesteASP7.asp?acao=nivel>Nivel de aprendizado </a>
</Font>
</BODY>
</HTML>
Precisamos testar qual foi o valor passado pela string de pesquisa da URL para que
o arquivo monte o formulrio correto. O cdigo da pgina chamada o seguinte:
<HTML>
<HEAD>
<TITLE>Formulrios</TITLE>
</HEAD>
<BODY BGCOLOR=#FFFFFF>
<FONT FACE=verdana SIZE=2 COLOR=#003333>
<% 'Avalia a string de pesquisa passada na URL a opcao
if Request.QueryString("acao")="opcao" then %>
<Form method=post action=TesteASP8.asp>
Digite seu nome e escolha a opo de lingua de sua preferncia:
<br><br>
Nome: <input type=text name=nome size=30> <br> <br>
Opo de Lngua: <br>
<input type=radio name=Lingua value=Ingls> Ingls
<input type=radio name=Lingua value=Espanhol> Espanhol
<input type=radio name=Lingua value=Frances> Francs
<br> <br>
<input type=submit value=Enviar>
</form>
Rua dos Otoni, 881 - 9 Andar
Belo Horizonte - MG - 30150-270
www.zargon.com.br
(31) 3273-2822
Pg.:37
Pg.:38
Agora precisamos criar um outro arquivo para que o action dos formulrios acima
Pg.:39
<HTML>
<HEAD>
<TITLE>Objeto Request - Busca de informaes de outro formulrio</TITLE>
</HEAD>
<BODY BGCOLOR=#FFFFFF>
<FONT FACE=verdana SIZE=2S COLOR=#003333>
<%
If Request.Form("Formulario")= "A" then
Response.Write "Informaes enviadas: <br><br>"
Response.Write "Seu Nome: <b>" & Ucase (Request.Form("Nome")) &
"</b></br>"
Response.Write
"Opo
de
Lingua:
"
&
Ucase
(Request.Form("Lingua")) & "<br>"
Elseif Request.Form ("Formulario")="B" then
Response.Write "Informaes enviadas: <br><br>"
Response.Write "Seu nome:<b> :" & Ucase (Request.Form ("Nome"))
&"</b><br>"
If Request.Form ("Leitura")="Ok" then
Response.write "Leitura <br>"
End if
If Request.Form ("Escrita")="Ok" then
Response.Write "Escrita <br>"
End if
If Request.Form ("Conversa")="Ok" then
Response.Write "Conversao <br>"
End if
End if%>
<center><a href=testeASP6.asp> Voltar </a>
</center>
</Font>
</BODY>
</HTML>
Pg.:40
Application(nomedavariavel) = conteudo
Para entendermos melhor a funo deste objeto, vamos pensar no controle do
nmero de usurios em um determinado momento no site e no nmero de usurios que j
acessaram o site, e quando chegar ao acesso 500 direcionar o usurio para a pgina user500.asp
. Poderamos at utilizar um banco de dados para guardar essas informaes, mas isso geraria
um fluxo muito grande de processamento no servidor, porque a cada usurio que acesse o site
ele deveria abrir o banco de dados, gravar as informaes e fecha-lo novamente.
As variveis Application ficam disponveis durante todo o funcionamento do site,
independente de qual usurio est conectado. Em qualquer momento e qualquer programa pode
acessar as informaes gravadas nestas variveis. Elas s so perdidas caso o servidor que
armazena a aplicao (site) for desligado.
Portanto, as variveis que vo contar o nmero total de usurios e os usurios em
um determinado momento devem ser iniciadas quando o primeiro usurio acessar o site. E caso
seja necessrio reiniciar o servidor Web, as informaes armazenadas nas variveis devem ser
gravadas para serem recuperadas depois.
E a cada usurio que acessar uma pgina do site, um acesso deve ser contabilizado
e quando sair deve ser retirado dos usurios atuais.
Para conseguirmos tal funcionamento das variveis precisamos utilizar um arquivo
especial do ASP, o arquivo global.asa. Este arquivo deve ser armazenado na raiz do site (no
caso do PWS, s existir um global.asa ativo, mesmo que existam subpastas), ele executado
automaticamente, como um autoexec do DOS. Em seu contedo temos apenas quatro rotinas,
que s podem ser utilizadas dentro do global.asa, que so mostradas a seguir:
Pg.:41
Pg.:42
Esse arquivo deve estar dentro da pasta do site no servidor web, com o nome
Abaixo um cdigo para podermos visualizar o contedo das variveis Application.
<HTML>
Rua dos Otoni, 881 - 9 Andar
Belo Horizonte - MG - 30150-270
www.zargon.com.br
(31) 3273-2822
Pg.:43
Pg.:44
O MTODO MAPPATH
Este mtodo recupera, a partir do caminho virtual da aplicao, o caminho fsico do
arquivo especficado. Mas, no podem existir arquivos homnimos no mesmo domnio para que o
mtodo retorne corretamente o caminho fsico.
Gostaria de saber o caminho fsico do arquivo global.asa que criamos no recurso anterior.
<HTML>
<HEAD>
<TITLE> Objeto SERVER - Mapeando o caminho dos arquivos</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" text="#000000">
<font face = "Verdana" Size =2>
<p> Caminho fsico do arquivo global.asa:
<%= server.Mappath("global.asa")%></p>
</BODY>
</HTML>
Este mtodo muito til quando estamos criando uma aplicao em uma mquina
e depois ser transportada para outra, assim evitamos o problema de nomes fsicos diferentes
nas mquinas gerarem erros em nosso programa.
Pg.:45
Server.CreateObject(ProgId)
Onde o ProgId como o objeto conhecido dentro do servidor Web. Durante o
nosso curso conheceremos alguns.
Para exemplificar como escreveramos este cdigo dentro do VBScript, vamos citar
o objeto Dicitionary. Este objeto uma maneira poderosa de armazenarmos informaes
associadas a uma chave que identifica o valor. Ao declararmos um objeto Dictionary em uma
instncia o comando seria o seguinte:
<HTML>
<HEAD>
<TITLE> Objeto SERVER - Criando um dicionrio</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" text="#000000">
<font face = "Verdana" Size =2>
<form method="post" action="testeServer1.asp">
<!-- O comando abaixo cria uma varivel oculta que identifica que o
formulrio foi enviado-->
<input type="hidden" name="Enviando" value="Sim">
<p> Digite a sua mensagem: <input type="text" name="txtMensagem"
size="50"> </p>
<p> <input type="submit" value="Armazenar">
</form>
<%
Dim varMensagem
'Declarao de Varivel
'Testa se o formulrio foi enviado.
Rua dos Otoni, 881 - 9 Andar
Belo Horizonte - MG - 30150-270
www.zargon.com.br
(31) 3273-2822
Pg.:46
Pg.:47
<HTML>
<HEAD>
<TITLE> Objeto SERVER - Lendo um dicionrio</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" text="#000000">
<font face = "Verdana" Size =2>
<%
'Verifica se o dicionrio j foi criado
If IsEmpty(Session("DicionarioUsuario")) then
'Se a varivel for Empty, significa que ela no existe e precisamos
informar ao visitante que nenhuma mensagem foi gravada
response.write "Nenhuma mensagem encontrada"
else
Dim MeuDicionario, aMensagens 'Declarao de Varivel
'Define uma varivel para receber o dicionrio
set MeuDicionario = Session("DicionarioUsuario")
Rua dos Otoni, 881 - 9 Andar
Belo Horizonte - MG - 30150-270
www.zargon.com.br
(31) 3273-2822
Pg.:48
Pg.:49
Pg.:50
Pg.:51
Aps criar cada uma das tabelas necessrio fazermos os relacionamentos entre
elas, a figura a seguir mostra como devero ser estes relacionamentos:
Pg.:52
O MAPA DO SITE
Agora que j temos o banco de dados precisamos conhecer o funcionamento das
pginas do site. Observe o esquema abaixo:
LIVRARIA CLARALUZ
VALIDALOG.ASP
DEFAULT.ASP
DEFAULTON.ASP
CADASTRO.ASP
LOGOUT.ASP
DOWNLOAD.ASP
PESQUISA.ASP
COMPRA.ASP
COMPRADOS.ASP
LOGIN.ASP
TOPO.ASP
RODAPE.ASP
FINALIZA.ASP
CONECTA.ASP
RESTRITO.ASP
Pg.:53
Pg.:54
Pg.:55
Onde ext a extenso do arquivo que ser inserido, que pode ser asp, htm, js,
Para montarmos qualquer pgina do nosso site sero utilizados quatro arquivos:
topo, login, o contedo e o rodap. Onde o contedo (miolo) vai depender de cada pgina, ou
seja, varivel.
A pgina default.asp o miolo ou o contedo principal desta pgina. Mas na parte
superior precisamos que aparea a logo da livraria, o banner e a barra de navegao. esquerda
do miolo aparecer o login para o visitante entrar no site e efetuar suas compras e abaixo de
tudo est o rodap. Observe o esquema a seguir:
Pg.:56
Topo.asp
Login.asp
Default.asp
Rodape.asp
Para melhor visualizao de cada um dos cdigos destes arquivos melhor
criarmos uma tabela para que cada parte fique colocada corretamente.
Como o arquivo topo o primeiro a aparecer vamos comear a tabela neste
arquivo. Abra o arquivo topo.asp e acrescente as linhas abaixo no final do cdigo html. Lembrese que este o primeiro cdigo que ser inserido na pgina, ento os comandos </html> e
</body> devem ser apagados, se existirem.
<!--#include file="topo.asp"-->
A partir deste ponto temos a segunda linha do esquema anterior, onde na coluna
da esquerda ser includo o arquivo login.asp e a direita o contedo do arquivo default. Logo
depois da primeira linha do arquivo default.asp, que o cdigo acima, insira as seguintes linhas:
</td></tr>
<!--#include file=rodape.asp-->
Salve o arquivo default.asp.
Pg.:57
Pg.:58
Pg.:59
OLE DB
ODBC
Banco de Dados
Quando utilizamos a conexo OLE DB estamos fazendo uma conexo direta com o
banco de dados. No necessrio fazer nenhum tipo de configurao no Painel de Controle e
nem altera-lo quando trocar o aplicativo de computador. A principal vantagem que temos que a
conexo por ser direta muito mais rpida. Para cada banco de dados a string de conexo OLE
DB varia um pouco, por se tratar de modelos de banco de dados diferentes. O esquema abaixo
ilustra como funciona a conexo OLE DB.
ADO
OLE DB
Banco de Dados
2.
Criar um recordset que fornece acesso aos campos de dados de cada registro.
Pg.:60
dados.
3.
4.
<%
'Procedimentos utilizados no Site Livraria
'Variveis
Dim StrCon
'String de conexo OLE DB
Dim Conexao
'Objeto de conexo
Set Conexao = Server.CreateObject("ADODB.CONNECTION")
conStr
=DRIVER={Microsoft
Access
Driver
(*.mdb)};
server.MapPath("bdLivrariaASP")
Sub AbreConexao()
Conexao.Open StrCon
End sub
Sub FechaConexao()
Conexao.close
end sub
%>
DBQ="
&
Primeiro criamos duas variveis uma para receber a string de conexo e uma outra
que seria a instncia do objeto Connection do ADO, que o representante da conexo com o
banco.
Depois a instncia do objeto Connection armazenada na varivel Conexao.
O script estabelece uma conexo fsica com o banco de dados, para isso precisamos
definir essa conexo. Essas definies fsicas da conexo so chamadas de String de conexo.
Esta foi armazenada na varivel StrCon. O valor da string, que deve vir entre aspas, por no ser
um cdigo ASP. Est a string para Microsoft Access 2000.
Nesta string encontramos o tipo de banco, no nosso caso Access. O DBQ arquivo
mdb que estamos procurando. Aqui poderamos digitar o caminho fsico do banco de dados, por
exemplo: p:\livrariaclaraluz\bdlivrariaASP. Mas encontraramos o problema de migrar o aplicativo
para outra mquina e qualquer mudana na unidade de disco teramos que abrir este arquivo e
alterar o caminho fsico do banco. Usando o objeto Server com o mtodo Mappath estamos
pegando o caminho fsico do site atravs do caminho virtual, independente de qual unidade o
aplicativo esteja ele buscar o caminho correto.
Pg.:61
Pg.:62
"DRIVER={Microsoft
Access
Driver
(*.mdb)};
server.MapPath("bdLivraria") & "; uid=sa; pwd=;"
DBQ="
&
"Provider=SQLOLEDB.1;Data
Source=Curso;User
Catalog=Livraria; Connect Timeout=10"
Id=sa;Password=;Initial
Onde Data Source o nome do servidor SQL Server 7, User ID o usurio de acesso
ao banco de dados, Password a senha do usurio utilizado, Initial Catalog o nome do banco a ser
acessado no servidor SQL Server e o Connect Timeout o tempo que uma conexo com o banco
pode ficar ociosa.
Depois criamos uma sub (procedimento) chamada AbreConexao que abre a
instncia do objeto Connection com as definies da string.
Uma outra sub foi criada para fechar a conexo com o banco de dados.
Pg.:63
inseri-lo na tabela de
assim por diante, se
registro, todas essas
universal de banco de
Selecionar (SELECT).
Inserir (INSERT).
Atualizar (UPDATE).
Apagar (DELETE).
O COMANDO SELECT
Este o comando utilizado para selecionar os dados de uma tabela. Tambm
conhecido como comando de leitura. A sintaxe do comando SELECT :
Pg.:64
<!--#include file="conecta.asp"-->
<HTML>
<HEAD>
<TITLE> Categorias</TITLE></HEAD>
<BODY BGCOLOR="#FFFFFF" text="#000000">
<center> <table border="1" width= "80%" cellpadding="0" cellspacing="0">
<tr align = "center">
<td colspan =2><font face="Verdana" Size="2"> Lista de Categorias
</font></td>
</tr> <% 'Declarao de Variveis
Dim ComandoSQL, rsCategorias
Executa o procedimento que est no arquivo conecta.asp
AbreConexao
'Comando SQL para buscar os campos da tabela categorias
ComandoSQL = "SELECT CodCategoria, NomeCategoria FROM Categorias"
'Execuo do comando SQL para gerar um recordset
Set rsCategorias = conexao.execute(ComandoSQL)
'Mostrar todas as categorias at o fim do recordset
While not rsCategorias.EOF%>
<tr><td><font face="Verdana" Size="2">
<%=rsCategorias("CodCategoria")%> </font></td>
<td><font face="Verdana" Size="2">
<%=rsCategorias("NomeCategoria")%> </font></td></tr>
<%
rsCategorias.MoveNext
Wend
rsCategorias.close
FechaConexao
'Liberando espao de memria
Set rsCategorias = nothing %>
</BODY>
</HTML>
Na linha ComandoSQL = "SELECT CodCategoria, NomeCategoria FROM Categorias"
armazenamos a instruo SQL para ser executada no banco.
Depois criamos a instncia do recordset que recebeu o resultado do comando SQL
executado no banco de dados, como a linha abaixo mostra:
Set rsCategorias = conexao.execute(ComandoSQL)
O comando Execute faz parte do objeto ADO de acesso a banco de dados, ele
executa o comando que estiver entre os parnteses. Como este comando retorna dados
Rua dos Otoni, 881 - 9 Andar
Belo Horizonte - MG - 30150-270
www.zargon.com.br
(31) 3273-2822
Pg.:65
Pg.:66
Incluso do arquivo conecta para que a conexo com o banco de dados seja
possvel.
2.
3.
4.
5.
6.
7.
Pg.:67
Pg.:68
Por exemplo, preciso selecionar os produtos que comeam com uma determinada
<!--#include file="conecta.asp"-->
<HTML>
<HEAD>
<TITLE> Produtos</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" text="#000000">
<center>
<table border="1" width= "80%" cellpadding="0" cellspacing="0">
<tr align = "center">
<td colspan =3><font face="Verdana" Size="2"> Lista de Produtos
</font></td></tr>
<tr>
<td><font face="Verdana" Size="2">Nome do Produto</font></td>
<td><font face="Verdana" Size="2">Estoque</font></td>
<td><font face="Verdana" Size="2">Preco</font></td></tr>
<% 'Declarao de Variveis
Dim ComandoSQL, rsProdutos
AbreConexao
'Comando SQL para buscar os campos da tabela Produtos
ComandoSQL = "SELECT Nomeproduto, Estoque, preco FROM Produtos
ComandoSQL = ComandoSQL & WHERE NomeProduto LIKE 'M%' "
'Execuo do comando SQL para gerar um recordset
Set rsProdutos = conexao.execute(ComandoSQL)
'Mostrar todas as produtos at o fim do recordset
While not rsProdutos.EOF%>
<tr>
<td><font face="Verdana" Size="2">
<%=rsProdutos("NomeProduto")%> </font></td>
<td><font face="Verdana" Size="2">
<%=rsProdutos("Estoque")%> </font></td>
<td><font face="Verdana" Size="2">
<%=rsProdutos("Preco")%> </font></td></tr>
<%
rsProdutos.MoveNext
Wend
rsProdutos.close
FechaConexao
'Liberando espao de memria
Set rsProdutos = nothing %>
</BODY>
</HTML>
Rua dos Otoni, 881 - 9 Andar
Belo Horizonte - MG - 30150-270
www.zargon.com.br
(31) 3273-2822
Pg.:69
Pg.:70
ORDENANDO OS DADOS
Voc pode notar que os produtos foram alistados fora da ordem alfabtica. Para
uma melhor leitura dos dados pelo visitante e conseqentemente melhor satisfao podemos
estar ordenando os dados. Basta acrescentar a clusula ORDER BY. A sintaxe a seguinte:
SELECT campo, campo FROM tabela WHERE critrio ORDER BY campo DESC
Pg.:71
Vamos fazer um programa que encontra o preo mais caro do nosso estoque.
<!--#include file="conecta.asp"-->
<HTML>
<HEAD>
<TITLE> Produtos</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" text="#000000">
<center>
<table border="1" width= "80%" cellpadding="0" cellspacing="0">
<tr align = "center">
<td
colspan
=3><font
face="Verdana"
Size="2">
Produto
mais
caro</font></td>
</tr>
<% 'Declarao de Variveis
Dim ComandoSQL, rsProdutos
AbreConexao
'Comando SQL para buscar o maior preo da tabela Produtos
ComandoSQL = "SELECT MAX(preco) AS MaiorPreco FROM Produtos"
'Execuo do comando SQL para gerar um recordset
Set rsProdutos = conexao.execute(ComandoSQL)
'Mostrar o maior preo at o fim do recordset
While not rsProdutos.EOF%>
<tr>
<td align="center"><font face="Verdana" Size="2">
<%= formatnumber(rsProdutos("Maiorpreco"),2)%> </font>
Rua dos Otoni, 881 - 9 Andar
Belo Horizonte - MG - 30150-270
www.zargon.com.br
(31) 3273-2822
Pg.:72
Pg.:73
que pode ser referenciado na hora de mostrarmos o contedo do campo calculado. Este recurso
pode ser utilizado para qualquer tipo de campo.
Formatnumber(valor,casas decimais)
AGRUPANDO VALORES
Quando precisamos calcular totais em grupos utilizamos a clusula GROUP BY da
linguagem SQL.
Vamos criar um programa que calcule o total de produtos por categoria. Digite o
cdigo abaixo no bloco de notas:
<!--#include file="conecta.asp"-->
<HTML>
<HEAD><TITLE> Produtos</TITLE></HEAD>
<BODY BGCOLOR="#FFFFFF" text="#000000">
<center>
<table border="1" width= "80%" cellpadding="0" cellspacing="0">
<tr align = "center">
<td colspan =2><font face="Verdana" Size="2">
Total de Produtos por Categoria</font></td></tr>
<tr align="center">
<td><font face="Verdana" Size="2"> Categoria</font></td>
<td><font
face="Verdana"
Size="2">
Quantidade
Total
em
Estoque
</font></td>
</tr>
<% 'Declarao de Variveis
Dim ComandoSQL, rsProdutos
AbreConexao
'Comando SQL para buscar os campos da tabela Categorias e calcular o
Rua dos Otoni, 881 - 9 Andar
Belo Horizonte - MG - 30150-270
www.zargon.com.br
(31) 3273-2822
Pg.:74
Pg.:75
O COMANDO INSERT
Este o comando utilizado para inserir dados em uma tabela. Tambm conhecido
como comando de gravao. A sintaxe do comando INSERT :
INSERT
valores)
INTO
tabela
(campo,
campo,
campo)
VALUES
(valores,valores,
Para testarmos vamos criar um programa que insere uma nova categoria na tabela
de categorias e depois mostra todos os valores armazenados nesta tabela. A seguir o exemplo de
um cdigo para insero em uma tabela:
Pg.:76
Pg.:77
O COMANDO DELETE
Este o comando utilizado para excluir dados em uma tabela. Tambm conhecido
como comando de excluso. A sintaxe do comando DELETE :
Utilizaremos este comando quando for preciso excluir um dos registros de uma
Pg.:78
<!--#include file="conecta.asp"-->
Rua dos Otoni, 881 - 9 Andar
Belo Horizonte - MG - 30150-270
www.zargon.com.br
(31) 3273-2822
Pg.:79
Function validaEmail(email)
Dim totCaracteres,Caractere
totCaracteres = Len(email)
for I = 1 to totCaracteres
Caractere = Mid(email,I,1)
if Caractere = "@" then
validaEmail = "Verdadeiro"
exit for
else
validaEmail = "Falso"
end if
next
end function
Esta funo recebe o e-mail, conta o nmero de caracteres neste e-mail para que
possamos passar caractere por caractere para testar se o @ foi digitado. Em um loop usando for
at o total de caracteres, usamos a funo MID para pegar cada caractere na posio indicada
pelo ndice do FOR, depois testamos se este caractere o @. Se o teste for verdadeiro a funo
retornar Verdadeiro e sair do FOR, ou seja, no mais necessrio testar. Se o teste for falso a
funo retornar Falso.
No programa do cadastro criaremos uma varivel para receber o resultado da
funo e testaremos se a mesma falsa para gravarmos a mensagem de erro.
Pg.:80
Pg.:81
Pg.:82
Pg.:83
Pg.:84
Pg.:85
Abaixo o cdigo com as alteraes, o que est em negrito deve ser acrescentado ao
<%end if%>
<%end if%>
<%end if%>
<%end if%>
<%end if%>
<%end if%>
Pg.:86
Pg.:87
<%end if%>
<%end if%>
<%end if%>
<%end if%>
<%end if%>
<%end if%>
<%end if%>
<%end if%>
<%end if%>
O campo sexo tambm precisa voltar com o valor selecionado pelo cliente antes do
erro. Precisamos testar se aquele foi o valor selecionado, se for verdadeiro o teste ento vamos
colocar o campo como selecionado.
cdigo:
Abaixo o cdigo com as alteraes, o que est em negrito deve ser acrescentado ao
Pg.:88
Pg.:89
if Dicionario.Count<>0 then
Response.Write "<center><font face=verdana size=1 color=red>"
Response.Write "O(s) seguintes dado(s) est(o) incorreto(s)<br>"
for i = 0 to Dicionario.Count - 1
Response.Write vet(i) & "<br>"
next
Response.Write "</font></center>"
else
'caso no encontrou erro
AbreConexao
ComandoSql = "INSERT INTO Clientes(nomecliente, login, email, senha,
ComandoSql = ComandoSql & lembrete, endercliente, cidade, estado,
ComandoSql = ComandoSql & dtcadastro) "
ComandoSql = ComandoSql & "VALUES('" & Request.Form("nome") & "','"
ComandoSql = ComandoSql & Request.Form("login") & "','"
ComandoSql = ComandoSql & Request.Form("email") &"','"
ComandoSql = ComandoSql & Request.Form("senha") &"','"
ComandoSql = ComandoSql & Request.Form("lembrete") &"','"
ComandoSql = ComandoSql & Request.Form("endereco") &"','"
ComandoSql = ComandoSql & Request.Form("cidade") &"','"
ComandoSql = ComandoSql & Request.Form("estado") &"','" & now() &"')"
conexao.execute(comandoSql)
end if
Se fossemos escrever o comando SQL em uma nica linha ele ficaria assim
ComandoSql = "INSERT INTO Clientes(nomecliente, login, email, senha, lembrete,
endercliente, cidade, estado, dtcadastro) VALUES('" & Request.Form("nome") & "','"
Request.Form("login") &"','" &Request.Form("email")&"','" & Request.Form("senha")
& "','" & Request.Form("lembrete") &"','" & Request.Form("endereco") &"','" &
Request.Form("cidade") &"','" & Request.Form("estado") &"','" & now() &"')"
A princpio este comando parece confuso por causa de tantas aspas duplas e
simples. Vamos tentar relembrar algumas regras de ASP e SQL.
Pg.:90
Dim Cadastrado
Cadastrado = False
Depois de inserir os dados na tabela a conexo fechada, ento o valor de
Cadastrado deve ser modificado para True. Acrescente o seguinte cdigo depois do comando
FechaConexao encontrado aps o comando INSERT.
Cadastrado = True
Agora temos que testar o contedo desta varivel para mostrarmos o formulrio ou
a mensagem de cadastrado com sucesso. Logo aps o segundo ENF IF que est depois do
cadastrado = true acrescente o seguinte cdigo, s o que est em negrito deve ser acrescentado:
Cadastrado = True
end if
end if
if Cadastrado = False then
%>
No final do arquivo devemos acrescentar o ELSE que receber o cdigo a ser
visualizado pelo cliente quando o cadastro for efetuado com sucesso. Logo depois do comando
</FORM> no final do arquivo acrescente o seguinte cdigo:
</form>
<% else
'significa que Efetuado=true %>
<center> <br><br>
<font face=verdana size=2><b>
<% =Request.Form("nome")%> </b>, seu cadastro foi efetuado com sucesso!
</center></font>
<% end if %>
Rua dos Otoni, 881 - 9 Andar
Belo Horizonte - MG - 30150-270
www.zargon.com.br
(31) 3273-2822
Pg.:91
<!--#include file="conecta.asp"-->
<%
AbreConexao
Dim Sql
'Comando SQL
Dim RS
'Recordset para receber o resultado do select
Sql = "Select * FROM Clientes WHERE login = '" & Request.Form("login")
Sql = Sql & "' AND senha='" & Request.Form("senha") & "' "
set Rs = conexao.execute(Sql)
if not rs.eof then
'encontrou o registro procurado
session("CodCliente") = RS("CodCliente")
Session("NomeCliente")
= RS("nomeCliente")
Session("Email")
= RS("email")
Response.Redirect("defaulton.asp")
else
Response.Redirect("default.asp")
end if
FechaConexao
%>
Ao logar-se o usurio ser direcionado para a pgina defaulton.asp, mas nada
modificou-se na pgina login. O login e a senha continuam sendo solicitados, o certo seria ao
Pg.:92
Pg.:93
Pg.:94
O ARQUIVO LOGOUT.ASP
Mas se voc clicar no boto Encerrar Seo o Internet Explorer retornar o erro que
no foi possvel encontrar o arquivo. Ento vamos criar o arquivo para encerrar a sesso que em
nosso exemplo se chamar logout.asp.
Este arquivo finalizar a seo e o usurio ser direcionado para a pgina principal
do site. O cdigo a seguir deve ser digitado em um arquivo novo do bloco de notas:
<%
session.Abandon
Response.Redirect("default.asp") %>
Teste digitando o login de um cliente que voc cadastrou e a senha, se tiver dvida
consulte o banco de dados. Depois que voc for direcionado para a pgina defaulton.asp clique no
boto Encerrar seo e note que voc ser solicitado a digitar login e senha na tela inicial do site.
O ARQUIVO DEFAULTON.ASP
Quando logamos com um cliente cadastrado estamos sendo direcionados para a
pgina defaulton.asp, nesta temos um Ol, onde depois dele deveria se mostrado o nome do
cliente. Para isso vamos utilizar a varivel de sesso NomeCliente.
Ol <%= Session("NomeCliente")%>,
Ao digitar o login de um cliente que voc cadastrou e a senha, voc ser
direcionado para a pgina defaulton.asp observe que o nome do cliente est sendo mostrado.
Pg.:95
<!--#include file="restrito.asp"-->
Pg.:96
Como o nosso cdigo dever funcionar? Temos que avaliar quais as situaes que
podem ocorrer neste formulrio para que possamos escrever o cdigo. A primeira o cliente
digitar uma parte do nome ou o nome todo do produto e no selecionar a categoria. A segunda
o cliente digitar uma parte do nome ou o nome todo do produto e selecionar a categoria. A
terceira o cliente selecionar apenas a categoria e a quarta situao o cliente no digitar nada
e no selecionar a categoria e depois de qualquer uma dessas situaes clicar no boto
pesquisar.
Como sabemos que o cliente clicou no boto pesquisar? Criando um campo do tipo
hidden (oculto) que enviado junto com os outros campos do formulrio.
seguir:
Crie um campo do tipo hidden logo aps o comando <FORM>, conforme a linha a
Pg.:97
<%
AbreConexao
ComandoSQL = "SELECT * FROM Categorias"
Set rsCategorias = conexao.execute(ComandoSQL)
while not RsCategorias.EOF %>
<option value="<%=RsCategorias("codCategoria")%>">
<%=RsCategorias("nomeCategoria")%> </option>
<% rsCategorias.MoveNext
wend
FechaConexao%>
Teste digitando o login de um cliente que voc cadastrou e a senha, se tiver dvida
consulte o banco de dados. Clique no link Pesquisa/Compra e clique na seta da categoria. Note
que as categorias que voc cadastrou no banco de dados esto sendo visualizadas.
Para testar, abra o banco de dados, acrescente uma nova categoria e feche o
banco. Volte ao Internet Explorer e atualize a pgina, abra novamente a seta das categorias e a
nova categoria digitada no banco de dados j est visvel para o cliente.
Pronto! Agora podemos procurar no banco de dados os produtos.
CRIANDO A PESQUISA
Ns j sabemos que o cliente est pesquisando se o campo Pesquisando do
formulrio for Sim. E tambm sabemos quais as situaes que podem ocorrer, vamos relembrar:
Pg.:98
Na programao do comando SQL estas quatro hipteses podem ser escritas com
um IF simples. O cdigo abaixo mostra como ficar a instruo SQL. E quando os dados forem
encontrados montar uma tabela com o resultado da pesquisa.
Nessa tabela ser mostrado o nome, a categoria, o estoque e o preo do produto. O
nome do produto ser um link com a chamada para o arquivo compra.asp enviando uma string
de pesquisa com o cdigo do produto.
O produto tem dois preos: o preo normal e o preo com desconto. Quando o
preo com desconto existir ele deve ser mostrado, se no existir temos que mostrar o preo
normal do produto.
pesquisa.
Acrescente este cdigo antes da frase de instrues de como deve ser feita a
<%
if Request.Form("Pesquisando") = "Sim" then
Dim Sql, RS
AbreConexao
if Request.Form("categoria") = 0 then
Sql = "SELECT * FROM Produtos, Categorias
Sql = Sql & WHERE Produtos.CodCategoria =
Sql = Sql & Categorias.CodCategoria"
Sql = Sql & " AND nomeProduto LIKE '%" & Request.Form("produto")
Sql = Sql & "%' ORDER BY nomeProduto"
set Rs = conexao.execute(sql)
else
Sql = "SELECT * FROM Produtos, Categorias
Sql = Sql & WHERE nomeProduto LIKE '%"
Sql = Sql & Request.Form("produto")&"%' "
Sql = Sql & " AND Produtos.CodCategoria = Categorias.CodCategoria
Sql = Sql & AND Produtos.codCategoria = "
Sql = Sql & Request.Form("categoria")
Sql = Sql & " ORDER BY nomeProduto"
set Rs = conexao.execute(sql)
end if
if not Rs.Eof then
%>
<font face=verdana size=2>
Pg.:99
registro(s)
foi(ram)
Pg.:
100
Pg.:
101
Pg.:
102
Pg.:
103
Pg.:
104
Mas o boto comprar por enquanto no est fazendo nada. Mas o que ele efetuar
Pg.:
105
Pg.:
106
Pg.:
107
Pg.:
108
Pg.:
109
Pg.:
110
Pg.:
111
Pg.:
112
Pg.:
113
Num = Num + 1
Nessa linha estamos criando um contador que ser incrementado a cada registro
que for sendo mostrado para o cliente. Com esse contador podemos tambm identificar qual o
checkbox foi marcado pelo cliente, porque, como sabemos, um campo de formulrio do tipo
checkbox s passa a existir se estiver marcado.
Ento no name do input type=checkbox faa a seguinte alterao:
name="C<%=Num%>"
Nesse caso cada checkbox receber o nome C seguido do contedo da varivel
Num. Salve o arquivo.
Tambm precisamos criar um formulrio que indica que aquele campo pode ser
utilizado na programao. Logo depois dos comandos
Pg.:
114
Pg.:
115
2.
3.
4.
5.
6.
7.
8.
9.
<%
AbreConexao
dim Sql, Rs, CodProduto, CodCliente, Quantidade, Preco, dia, mes, ano,
hora, minuto, segundos
'Busca o cdigo do cliente
Rua dos Otoni, 881 - 9 Andar
Belo Horizonte - MG - 30150-270
www.zargon.com.br
(31) 3273-2822
Pg.:
116
Pg.:
117
<%
Dim
ComandoSQL
ComandoSQL
ComandoSQL
ComandoSQL
ComandoSQL
ComandoSQL
ComandoSQL
ComandoSQL
total,totalGeral,Num
= "SELECT P.nomeProduto, C.nomecategoria, PP.quantidade ,
= ComandoSQL & PP.Preco, PE.CodPedido
= ComandoSQL & " FROM Produtos P, Pedidos Pe,Categorias C,
= ComandoSQL & " ProdutosPedidos PP, Clientes CL
= ComandoSQL & WHERE Pe.CodCliente = " & codCliente
= ComandoSQL & " AND Pe.codPedido = PP.CodPedido "
= ComandoSQL & " AND PP.CodProduto = P.CodProduto
= ComandoSQL & AND P.CodCategoria = C.CodCategoria "
Pg.:
118
<tr>
<td><font face=verdana size=2><%=RSPedidos("CodPedido")%> </font></td>
<td><font face=verdana size=2><%=RSPedidos("nomeProduto")%>
</font></td>
<td align=right><font face=verdana size=2>
<%=RSPedidos("nomeCategoria")%> </font></td>
<td align=right><font face=verdana size=2><%=RSPedidos("quantidade")%>
</font></td>
<td align=right><font face=verdana size=2>R$
<% = FormatNumber(RsPedidos("preco"),2)%></font></td>
<% total = RsPedidos("quantidade") * RsPedidos("Preco")%>
<td align=right><font face=verdana size=2>R$
<%= FormatNumber(total,2)%> </font></td></tr>
<%totalGeral = totalGeral + total
if not rsPedidos.eof then
RsPedidos.MoveNext
end if
wend
%>
<tr>
<td colspan=5 align=right><font face=verdana size=2>Total Geral
</font></td>
<td align=right><font face=verdana size=2>R$
<%= FormatNumber(totalGeral,2)%> </font></td>
</table>
<%
fechaConexao %>
Salve o arquivo. Mas no corpo da mensagem precisamos mostrar tambm algumas
informaes que foram selecionadas sobre o cliente. No final do arquivo temos o texto que ser
mostrado para o cliente. O que estiver de negrito altere em seu arquivo.
Pg.:
119
Pg.:
120
Pg.:
121
From define quem est enviando o e-mail, ser o DE quando o cliente receber o eFromName define o nome que ser mostrado no campo DE da mensagem.
IsHTML define o formato da mensagem para o padro HTML.
Pg.:
122
Atenciosamente,
Diretoria de Treinamento
Zargon Tecnologia em Informtica
Pg.:
123