Sunteți pe pagina 1din 87

ACR Informtica

Pg - 1
ASP.......................................................................................................................................................... 3
Introduo ................................................................................................................................................ 3
O que ASP ? ......................................................................................................................................... 4
Vantagens no Uso do ASP....................................................................................................................... 4
O que necessrio para trabalhar com ASP ?........................................................................................ 4
Como funcionam as pginas em ASP ?................................................................................................... 5
A Hierarquia dos Objetos das Pginas ASP : .......................................................................................... 5
Usando o personal WEB Server (Windows 98, 98se e ME) e ou Internet Information Server ( Windows
NT) ........................................................................................................................................................... 6
Objetos ASP............................................................................................................................................. 6
Objeto Request..................................................................................................................................... 6
Exerccio 1 ............................................................................................................................................... 7
Exerccio 2 ............................................................................................................................................... 9
Exerccio 3 ............................................................................................................................................. 10
Exemplos de certificao: ...................................................................................................................... 12
Exerccio 4 ............................................................................................................................................. 13
Objeto response..................................................................................................................................... 14
A coleo cookies do objeto response................................................................................................... 14
Nome...................................................................................................................................................... 14
EXPIRES................................................................................................................................................ 14
DOMAIN................................................................................................................................................. 14
PATH...................................................................................................................................................... 14
SECURE ................................................................................................................................................ 14
HASKEYS .............................................................................................................................................. 14
Propriedades do Objeto response.......................................................................................................... 15
Mtodos do objeto response.................................................................................................................. 16
Addheader.............................................................................................................................................. 16
Addtolog................................................................................................................................................. 16
Clear....................................................................................................................................................... 16
End......................................................................................................................................................... 16
Flush ...................................................................................................................................................... 17
Redirect.................................................................................................................................................. 17
Write....................................................................................................................................................... 17
Objeto server.......................................................................................................................................... 17
Mtodos do ObjetoSever........................................................................................................................ 17
Objeto Application.................................................................................................................................. 18
Objeto Session....................................................................................................................................... 19
Exerccio com session............................................................................................................................ 19
Banco de Dados..................................................................................................................................... 20
O que banco de dados: ....................................................................................................................... 20
Onde usar Banco de dados:................................................................................................................... 20
Criando um banco de dados: ................................................................................................................. 20
Conectando Banco dados via ODBC : ................................................................................................... 21
Conectando Banco de dados via Dbq Driver: ........................................................................................ 24
Conectando Banco de dados via Microsoft JetOleDb: ........................................................................... 25
Mostrando os registros do banco de dados em tela:.............................................................................. 26
SQL........................................................................................................................................................ 28
Comando Select..................................................................................................................................... 28
Mtodos Like, Between e IN............................................................................................................... 30
Comando insert ...................................................................................................................................... 31
ACR Informtica

Pg - 2
Comando update.................................................................................................................................... 32
Comando delete..................................................................................................................................... 32
Inserido Registros no banco de Dados: ................................................................................................. 32
Inserindo registros na tabela via ADO:................................................................................................... 34
Atualizando os dados de uma tabela: .................................................................................................... 34
Excluindo os dados de uma tabela: .................................................................................................... 37
Contando registros: ................................................................................................................................ 39
Enviando um e-mail ao administrador do site: ....................................................................................... 40
Planejando uma loja virtual: ................................................................................................................... 41
Diagrama em blocos do funcionamento da loja virtual : ..................................................................... 41
Lay out da Tela da Loja Virtual............................................................................................................... 41
A pagina Menu.asp ................................................................................................................................ 42
Cdigo da pgina menu.htm: .......................................................................................................... 42
Pagina Busca.asp .................................................................................................................................. 43
Cdigo da pagina ASP : .................................................................................................................. 43
Do Until rstemp.eof OR registros >= maximoregistros........................................................................ 46
Pagina carrinho.asp ............................................................................................................................... 48
Cdigo da pagina ASP : .................................................................................................................. 48
Entra caixa.asp....................................................................................................................................... 56
Confirma.asp.......................................................................................................................................... 66
Trabalhando com arquivos de Texto. ..................................................................................................... 69
Chat........................................................................................................................................................ 70
Default.asp............................................................................................................................................. 70
entar.asp ................................................................................................................................................ 70
formulario.asp ........................................................................................................................................ 72
mensagem.asp....................................................................................................................................... 76
sair.asp................................................................................................................................................... 77
topo.asp ................................................................................................................................................. 78
Mailer - Envio de E-mails....................................................................................................................... 79
Index.htm ............................................................................................................................................... 79
Inserir.htm.............................................................................................................................................. 79
inserir.asp............................................................................................................................................... 80
Mailer.Htm.............................................................................................................................................. 80
mailer.asp............................................................................................................................................... 81
Propriedades de Disco: .......................................................................................................................... 81
Propriedades De um arquivo gravado no disco: .................................................................................... 82
Select em Mltiplas Tabelas: ................................................................................................................. 83
Gerenciador de Banco de dados:........................................................................................................... 84












ACR Informtica

Pg - 3

ASP

Introduo

A Internet veio chegando de mansinho e como uma bola de neve foi crescendo e envolvendo
tudo sua volta. Mudando comportamentos e atitudes, fez poderosos se curvarem ante a sua
passagem e passou a ser o centro das atenes, trazendo consigo novos conceitos e fazendo com que
o desenvolvimento de novas tecnologias surgisse a partir desses conceitos.
A Internet pode ser entendida como uma grande rede com milhes de usurios interagindo. Nela
temos milhes de computadores se comunicando entre si atravs de um protocolo comum e uma
linguagem especial que todos os computaores podem entender.
Basicamente temos dois elementos atuando na Internet: o cIiente que requisita uma srie de
informaes e o servidor que responde a estas requisies fornecendo as informaes solicitadas.
Quando um usurio se conecta Internet e acessa uma pgina ou envia um e-mail ele est solicitando
um servio um servio rede. O servidor recebe o seu pedido e providencia a resposta para sua
solicitao.
Para ser um servidor de rede, um computador necessita de um endereo (um numero de
identificao), com o qual vai ser localizado, e precisa compreender e processar os protocolos de
comunicao.
Para ser um cIiente o computador precisa estar conectado Internet e possuir um programa,
um Browser(navegador), para se comunicar com o servidor, recebendo e enviando dados.
interessante notar que o cliente no precisa saber nada sobre o computador que atua como
servidor e este por sua vez tambm no precisa saber nada sobre o computador que faz o papel de
cliente. O protocolo de comunicao o responsvel pela interao.
Os dois protocolos mais usados na Internet so o HTTP (hyper text transfer protocol ) e o FTP
(file transfer protocol). atravs destes protocolos que feita a ligao do cliente com o servidor na
grande WEB e que as pginas podem ser acessadas e alteradas pelos usurios.
No incio as pginas dos documentos amazenadas no servidores (recebem o nome de site)
eram estticas e com atualizaes de contedo acontecendo a cada semana ou ms. Mas com o
crescimento da popularidade da Internet e o aparecimento de novos Softwares de desenvolvimento
(Dreamweaver, FrontPage, Flash, Fireworks, etc) a necessidade de atualizao destes documentos
cresceu provocando atualizaes diarias e at mesmo em alguns casos instantnea.
Com o incremento do negocios na WEB, dados que necessitam ser alterados por um usurio
durante o acesso a uma pgina tornaram-se uma coisa comum e pginas que alteram seu contedo a
cada interao com o usurio tornaram-se mais frequentes. Chamamos isto de Pginas Dinmicas.
No incio a tecnologia usada para isso foi a Common Gateway Interface (CGI), onde programas
interagem com o servidor e respondem s solicitaes dos usurios com atualizaes dos dados e das
pginas dos sites.
Uma evoluo desta tecnologia para acesso e atualizao dinmicas propostas pela Microsoft
a ASP (Active Server Pages ou pginas de servidor ativas). Com ela podemos criar pginas
interativas rapidamente.





ACR Informtica

Pg - 4
O que ASP ?

ASP um ambiente para programao de pginas dinmicas e interativas que usam os
seguintes recursos :

1. HTML (Hyper Text Markup Language ou Linguagem de Marcadores de Hipertexto), a linguagem
com a qual escrevemos as pginas armazenadas nos servidores e que sero visualizadas pelos
usurios.
2. Linguagens Scripts como VBScript ou Java Script que atuam no servidor.
3. Acesso a Base de Dados que suportam ODBC (Open Data Base Connectivity) e ADO (Active
Data Objects).
Voc identifica um arquivo que contm cdigo ASP pela sua extenso (.ASP). Ele contm
basicamente cdigo HTML, e scripts que iro rodar no servidor, sendo o Vbscript a linguagem mais
utilizada. Podemos usar tambm JavaScript, CGI, Pearl, C, dentre outras. Ao utilizar ASP temos
diversas vantagens.

Vantagens no Uso do ASP

Independncia do Browser: Os scripts rodam no servidor e somente os resultados so enviados ao
usurio. Sendo assim qualquer navegador, independente de seu nome, marca ou verso capaz de
acessar pginas em ASP.

Acesso a Base de Dados: Contm um mecanismo fcil para visualizar, atualizar e adicionar
informaes base de dados que suportem ODBC e SQL.

Segurana do cdigo fonte: O cliente visualiza somente o resultado do processamento em cdigo
HTML. Os scripts executados em modo server no aparecem no cdigo fonte do site exibido em tela.

Administrao do Estado: Atravs de objetos internos da ASP podemos controlar o estado do
aplicativo com base no usurio, no aplicativo e no servidor.

SemeIhana com VisuaI Basic e VBA : Caso voc conhea uma destas linguagens, o seu
conhecimento ser imediatamente aproveitado. Podemos usar o Vbscript e ADO.

O que necessrio para trabaIhar com ASP ?

Para desenvolver pginas ASP, voc precisa ter um servidor Windows 95, Windows 98, Windows NT
ou Windows NT server.

Para Windows 95 ou 98 : Personal WEB server.

Para Windows NT server ou NT Workstation: Internet Information server 4.0 (options pack 4), service
pack 4 e Internet explorer 4.0.

ACR Informtica

Pg - 5
Para ambos os sistemas: Um driver de ODBC instalado e funcionando neste servidor para acessar o
banco de dados. Um diretrio para qualquer as pginas, diretrio este que deve possuir diretrio de
execuo ( /inetpub/wwwroot ).

Uma boa soIuo : Uma boa soluo para mquinas caseiras com Windows 98 instalar o Personal
WEB Server. Instalar e usar o Access com driver ODBC de banco de dados. Esta configurao permite
instalar ,desenvolver e testar sites em ASP com acesso a base de dados sem estar conectado a um
servidor e sem expor sua pginas na WEB antes de que o cdigo seja todo depurado.

Como funcionam as pginas em ASP ?

O usurio faz a requisio de um servio usando o navegador. Quando o usurio digita uma
URL (Uniform resourse location) de um site em seu navegador, este por sua vez inicia uma requisio.
Esta requisio enviada ao servidor atravs do protocolo HTTP. Quando o servidor recebe esta
requisio ele a intrerpreta, processa, localiza o arquivo em suas pastas, l este arquivo e devolve ao
navegador um cdigo HTML para que este interprete e exiba em tela o resultado final.
Quando o endereo solicitado pelo usurio ao servidor uma pgina ASP, o servidor verifica
qual a extenso do arquivo (se HTM, HTML, HTMLS ou ASP). Sendo ASP um programa especial no
servidor, interpreta o cdigo script contido neste arquivo e o executa interessando somente ao
navegador o resultado do processo deste programa no formato HTML padro.

A Hierarquia dos Objetos das Pginas ASP :

Analise o quadro abaixo :


























Usurio ( cliente )
Objeto
Response
Objeto
Request
Servidor
Objeto
AppIication
Objeto
Server
Objeto
Session
ACR Informtica

Pg - 6

O objeto request recebe informaes do cliente para o servidor, que processa estas
informaes. Os objetos AppIication e Session juntos, gerenciam o armazenamento a nvel de seo
e de aplicao. O nvel de aplicao o tempo que o servidor fica ativo e o nvel de seo o tempo
que o usurio acessa uma pgina. O objeto server usado para gerenciar e criar objetos, permitindo o
processamento de scripts e acesso a base de dados.

Usando o personaI WEB Server (Windows 98, 98se e ME) e ou Internet Information Server (
Windows NT)

Voc j sabe que o ASP uma linguagem script baseada no padro Client-Server e sabe
tambm que esta linguagem s capaz de interpretar e processar as instrues passadas pelo cliente
ao servidor. Ento se voc simplesmente criar uma pasta em disco rgido para armazenar os dados, as
pginas no funcionaro. Voc dever ter instalado na sua mquina um programa especial conhecido
como WEB Server que nada mais do que um emulador de servidor WEB. Este software capaz de
simular o estado On line do seu micro, criando um servidor virtual parar executar os scripts ASP.
Para instalar o personal WEB Server em sua mquina com sistema operacional Windows 98, 98
se e Me voc s precisa de um cd do Windows. Neste cd voc encontra a pasta add_ons, e dentro
desta pasta temos a pasta pws, onde dentre os arquivos contidos voc poder encontrar o arquivo
setup.exe. Basta execut-lo e pronto.
No Windows NT mais complicado um pouco. Voc precisa primeiramente atualizar seu
sistema para a verso 4 instalando o service pack 4. Depois precisa atualizar o seu Explorer para a
verso 4, e para concluir necessrio instalar o options pack 4.
Ao concluir a instalo em ambos os casos, voc ter em sua mquina uma pasta INETPUB,
dentro desta voc ter a pasta WWWROOT, onde voc dever criar uma pasta para quardar seus
arquivos ASP. Crie uma pasta com o seu nome e dentro desta crie uma pasta com o nome de AULA1
e a partir deste ponto salve todos os seus arquivos dentro desta pasta.
Para acessar e testar as paginas por voc criadas de nada adiantar voc tentar usar a opo
abrir do menu arquivo do explorer. Ser necessrio voc estar navegando na web virtual criada pelo
PersonaI web server. Veja abaixo um exemplo de como chamar um arquivo para teste:

http://nome da maquina/aIias/nome arquivo.asp


Objetos ASP
Objeto Request

Retorna os valores das requisies feitas pelo browser do cliente ao servidor durante uma requisio
HTTP.

Sintaxe : Request[.Collection](varivel)

Cada requisio pode ter diversos parmetros em diferentes categorias e, para tratar esta quantidade
de informao o objeto request utiliza colees que podem ser vistas como vetores contendo um
conjunto de informao.




ACR Informtica

Pg - 7




As colees dos objetos Request so :
QueryString
Form
ServerVariabIes
CIientCertificates
Cookies
Veja abaixo como usar o objeto Request com a coleo Querystring:
Antes de usar uma querystring necessrio voc saber que querystring so parmetros passados
de uma pgina a outra atravs do prprio endereo URL tendo a seguinte URL:
HTTP://www.acr-info.com.br?codigo=002712&nome=Marcos&data=30/10
Foi requisitado ao navegador o endereo de uma URL e junto com a requisio foram passados
parmetros como cdigo da matrcula, nome do aluno e data da matrcula. Veja abaixo como faramos
para recuperar estes dados via introdues do objeto Request com a coleo Querystring :
Request.querystring(codigo) recupera o cdigo.
Request.querystring(nome) recupera o nome.
Request.querystring(data) recupera a data.

Exerccio 1

Propsito do exerccio: passar atravs de um link do tipo HTML parametros querystring e atravs da
segunda pgina recuperar estes valores e escrever em tela :

Crie a pgina abaixo e salve com o nome primeira.html :

<HTML>
<head>
<title> Aprendendo a usar Querystring </title>
</head>
<body>
<a href=primeira.ASP?nome=seu nome&idade=sua idade>testar</a>
</body>
</HTML>





ACR Informtica

Pg - 8



Crie a pgina abaixo e salve com o nome primeira.asp:

<HTML>
<head>
<title> Aprendendo a recuperar dados em QueryString </title>
</head>
<body>
<%
set nome = Request.querystring("nome")
set idade = Request.querystring("idade")

response.write "seu nome " & nome & "<br>"
response.write "voc tem "& idade & "<br>"

%>

</body>
</HTML>

Voc deve ter notado a presena dos caracteres <% e %>. Esses caracteres so utilizados para indicar
ao navegador a presena de cdigo ASP, cdigo este que deve vir sempre entre esses caracteres.
Outro objeto ainda no conhecido por voc o objeto Response que ser explicado mais frente em
outro tpico desta apostila. Este objeto usado sempre que voc precisar escrever algo que ser
visivel ao usurio em tela. O caracter & est sendo usado como concatenador (elemento de ligao
entre variveis e strings) de strings (frases). Este & do cdigo que voc acaba de criar sever apenas
para unir o bloco de texto seu nome ao valor da varivel, tendo como resultado final a seguinte
frase: seu nome Marcos - por exemplo.

Veja abaixo como usar o objeto Request com a coleo Form:
Antes de usar um request do tipo form necessrio voc saber que os objetos tidos como tipo form
so nada mais nada menos que simples campos de formulrio HTML.
Tendo voc um campo de formulrio com a seguinte sintaxe :
<input type=text name=nome>
O cdigo ASP necessrio para recuperar o valor deste campo seria o cdigo que se encontra abaixo.
Este processo ocorreria quando este formulrio fosse enviado ao aquivo ASP que o dentre as suas
linhas de cdigo apresenta o seguinte script :
Sintaxe : request.form(nome) ou simplesmente request(nome)


ACR Informtica

Pg - 9

Exerccio 2

Propsito do exerccio: passar valores contidos em campos de formulrios atravs do mtodo submit e
exibir em tela:

............................................................. Crie o seguinte cdigo abaixo e salve com o nome de form.html:

<HTML>
<head>
<title> Aprendendo a usar Form </title>
</head>
<body>
<form action=resultado.ASP method=post>

Nome : <input type=text name=nome><br>
Idade:<input type=text name=idade><br>
Sexo:<input type=text name=sexo><p>

<input type=submit value=enviar>
<input type=reset name=limpar>

</form>
</body>
</HTML>

Crie a pgina abaixo e salve esta com o nome resultado.asp :

<HTML>
<head>
<title> Aprendendo a recuperar dados de form </title>
</head>
<body>
<%
set nome = Request.form ("nome")
set idade = Request.form ("idade")
set sexio = Request.form ("sexo")

response.write "seu nome " & nome & "<br>"
response.write "voc tem "& idade & "<br>"
response.write "voc do sexo :"& idade & "<br>"

%>

</body>
</HTML>



ACR Informtica

Pg - 10

Veja abaixo como usar o objeto Request com a coleo ServerVariabIes:

A coleo server variables contm toda a informao gerada no ato da requisio do servio pelo
navegador, em conjunto com todas as variveis de ambiente do servidor.

Sintaxe : request.servervariables(opo de varivel)

Opes de variveI :
PATH_INFO Informa o caminho da URL requisitada pelo navegador
QUERY_STRING Informa os parmetros passados por uma requisio
SERVER_NAME Informa o Nome do servidor
HTTP_UA_COLOR Informa o Nmero de cores do usurio (cliente)
HTTP_UA_PIXELS Informa o Resoluo de tela do usurio (cliente)
REMOTE_ADRR Informa o endereo IP do host que est solicitando um
servio.
REMOTE_HOST Informa o nome do host que esta solicitando o servio
LOGON_USER Informa a conta no Windows NT qual o usurio esta
logado.
HTTP_UA_OS Informa o nome e a verso do software que est
respondendo ao pedido de requisio
AUTH_TYPE Informa o mtodo de autenticao usado pelo servidor
SERVER_PORT Informa o nmero da porta que fez a requisio
SERVER_PROTOCOL O nome e a verso para protocolo de informao
SERVER_SOFTWARE O nome e a verso do software do servidor
SCRIPT_MAP Informa a base da URL
REQUEST_ADDR Informa o endereo IP do Host remoto que requisitou
REQUEST_METHOD Informa mtodo usado para fazer a requisio ( post,get)

Exerccio 3

Propsito do exerccio: recuperar do servidor os valores de resoluo de tela, nmero de cores
e caminho utilizados e escrever em tela.

......................................................................Crie o cdigo abaixo e salve com o nome de variaveis.asp:

<HTML>
<head>
<title> Aprendendo a usar Server Variables </title>
</head>
<body>
<%

response.write request.servervariabIes("Path_info")
response.write request.servervariabIes("HTTP_ua_coIor")
response.write request.servervariabIes("HTTP_ua_pixeIs")

%>
</body>
ACR Informtica

Pg - 11
</HTML>

Veja abaixo como usar o objeto Request com a coleo CIientCertificates:

A coleo clients certificates refere-se ao uso de certificados pelos usurios quando do acesso a um
site seguro como meio identificao.

Sintaxe: request.clientcertificates(chave[subcampo])

Se o nevegador estiver usando SSL (Secure Sockets Layer) para se conectar a um servidor e este
servidor solicitar uma certificao , uma srie de objetos do certificado do cliente dessa coleo conter
informaes sobre a identificao do cliente. A chave especifica o nome do campo a retornar. Os
campos da coleo so os seguintes :

SUBJECT Uma string que contm os valores dos subcampos os quais
contm informaes sobre o assunto do certificado
ISSUER Uma string que contm uma lista dos valores dos
subcampos contendo informao sobre o emissor do
certificado
VALIDFORM Uma data informando quando o certificado tornou-se vlido
VALIDUNTIL Uma data informando quando o certifcado expira
SERIALNUMBER Uma string que contm um nmero serial da certificao
representado em bits hexadecimais no formato ASCII e
separos por hifen ex : "04-67-F3-34".
CERTIFICATE Uma string que contm o cdigo binario completo do
certificado no formato ASN.1
FLAGS Um conjunto de sinalizadores que fornecem informaes
para adicionais sobre o certficado do cliente existente. Ex : o
flag ceCertPresent, indica que um certificado para o cliente
existe.

Os subcampos so parmetros adicionais que podemos usar para retornar um campo individual nas
chaves Subject e Issuer.
A tabela abaixo relaciona os valores para os subcampos mais comuns :

C Informa o nome do pas de origem
O Informa o nome da organizao
OU Informa o nome da unidade organizacional
CN Informa o nome do usurio
L Informa a localidade
S Informa o estado ou municipio ( provincia )
T Informa o titulo da organizao
GN Informa um nome cadastrado
I Informa um conjunto de iniciais.





ACR Informtica

Pg - 12

ExempIos de certificao:

1 O exemplo abaixo usa o modo subject para testar se o certificado do cliente foi apresentado :

<%

If Ien(request.cIientcertificate("subject") = 0 then
Response.write " o certificado no foi apresentado"

%>

2 A seguir um exemplo que retorna o nome da companhia que fornece o certificado do cliente:

<%=request.cIientcertificate("issuerCN")%>

3 A seguir um exemplo que retorna a data em que vai expirar o certificado do cliente:

<font size=4> A sua cerficao ir expirar em :</font>
<%=request.clientcertificate(validuntil)%>

OBS: uma coleo de certificate s poder ser usada quando o navegador estiver navegando em
pginas protegidas por uma pasta segura no servidor (SSL) e tendo o protocolo https:// ativo.

Veja abaixo como usar o objeto Request com a coleo Cookies:

A coleo cookies utilizada para gravar arquivos temporrios na mquina do usurio. Estes arquivos
so na maioria dos casos configuraes personalizadas que o o prprio usurio acaba criando no site,
podendo s vezes serem de mero carter informativo (por exemplo , para saber quantas vezes o
usurio j visitou sua pgina).

Sintaxe : response.cookies(nome do cookie) = varivel (para gravar)
Sintaxe : request.cookies(nome do cookie) = varivel (para recuperar dados)














ACR Informtica

Pg - 13
Exerccio 4

Propsito do exerccio: criar na mquina alguns cookies e recuperar os valores para exibir em
tela :

....................................................................Crie o cdigo abaixo e salve com o nome de cookies_a.asp:

<HTML>
<head>
<title> Aprendendo a usar cookies </title>
</head>
<body>
<form action=cookies_b.ASP method=post>

Nome : <input type=text name=nome><br>
Idade:<input type=text name=idade><br>
Sexo:<input type=text name=sexo><p>

<input type=submit value=enviar>
<input type=reset name=limpar>

</form>
</body>
</HTML>

Crie o arquivo abaixo e salve como cookies_b.asp (este arquivo dever gravar os cookies) :

Obs : o cdigo que gera um cookie deve vir sempre antes da tag <html>. Pois se for colocado aps a
tag ira resultar em um erro descrito como : os cabealhos html j foram gravados .... Isso ocorre por
que o cookie requisita a criao do cabealho html e se este j tiver sido gravado o objeto cookie acaba
no conseguindo criar e responde com o erro referido.

<%
response.cookies("aprendendocookie")("nome")=request("nome")
response.cookies("aprendendocookie")("idade")= request("idade")
response.cookies("aprendendocookie")("cookie")= request("sexo")
%>
<HTML>
<head>
<title> Aprendendo a usar cookies </title>
</head>
<body>
<a href=vercookies.asp> Ver os cookies </a>
</body>
</HTML>

Crie o arquivo abaixo e salve como vercookies.asp (este aqruivo dever resgatar os valores contidos
nos cookies e escrever na tela) :

<%
ACR Informtica

Pg - 14
nome=request.cookies("aprendendocookie")("nome") & "<br>"
idade=request.cookies("aprendendocookie")("idade") & "<br>"
sexo=request.cookies("aprendendocookie")("sexo") & "<br>"
%>
<HTML>
<head>
<title> Aprendendo a usar cookies </title>
</head>
<body>
<%
response.write "O seu nome :" & nome & "<br>"
response.write "Voc tem:" & idade & "anos de idade.<br>"
response.write "Voc do sexo:" & sexo & "<br>"
%>
</body>
</HTML>





Objeto response

O objeto response usado para enviar respostas a um cliente, e possui apenas uma coleo - a
coleo cookies.

A coIeo cookies do objeto response

Determina o valor de um cookie. Se o cookie especificado no existir ele ser criado neste exato
momentoe caso exista, o novo valor lhe ser atribudo.

Sintaxe : response.cookies(cookie)[(chave).atributo] = valor

Onde :

Cookie o nome do cookie
Chave opcional, se especificado cookie se torna dicionrio.
VaIor determina o valor atribudo ao atributo ou a chave.

O atributo especifica uma informao sobre o cookie. Podendo se ter os seguintes atributos:

Nome Descrio
EXPIRES A data em que o cookie expira
DOMAIN Se informado os cookies sero enviados somente quando as
requisies forem feitas por este domnio que vem descrito no cookie.
PATH Caminho para gravao do cookie
SECURE Informa se um cookie seguro
HASKEYS Informa se um cookie contem chaves

ExempIos :
ACR Informtica

Pg - 15

response.cookies(nome do cookie).expires = # 07/30/ 2001#
response.cookies(nome do cookie).domain = acr.com
response.cookies(nome do cookie).path=www/home
response.cookies(nome do cookie).secure= false

Propriedades do Objeto response

O objeto response possui diversas propriedades que afetam as propriedades devolvidas ao navegador.
As mais importantes so:

Expires - Representa o tempo antes do contedo da pgina expirar do cache do navegador. Ou seja,
se um usurio retornar a uma pgina dentro de um tempo definido ento o cache continuar a us-lo.
Caso contrrio a pgina ser solicitada de novo ao servidor. Isto garante que o usurio esteja
acessando as informaes mais atualizadas.

Sintaxe: response.expires= numero


Onde: O nmero o tempo em minutos antes da pgina expirar. Se for informado zero a pgina expira
imediatamente.

Expires absoIute - Igual propriedade anterior s que ao invs de atribuir um tempo em minutos
atribui uma data e uma hora especficos.

Sintaxe: response.expiresabsolute[=(data)(time)]

Onde: data e time especificam a data e hora na qual a pgina expirar.

Abaixo no exemplo foi solicitado que a pgina expirasse no dia 7 de setembro de 1990 aps as 13:30.

<% response.expiresabsolute=#september 7, 1999 13:30:30#%>

Content-type - Muda o cabealho HTTP da pgina para indicar que tipo de dados a pgina contm,
sendo o padro "Text/HTML"

Sintaxe: response.contenttype[=contentype]

Onde: Content type descreve o tipo de contedo no site.

ExempIos:

<% response.contenttype= text/HTML %>
<% response.contenttype= image/gif %>
<% response.contenttype= image/jpeg %>

Status - Permite definir o status da linha HTTP que devolvida ao navegador. Esta linha consiste em
um cdigo de status de 3 digitos.

Sintaxe: response.status = descrio dos status
ACR Informtica

Pg - 16

Onde: descrio dos status uma string um cdigo de status de 3 digitos

ExempIos:

<% response.staus= 404 page no found %>
<% response.staus= 401 unauthorized. %>

Buffer - Controla se o contedo gerado pelos scripts ASP ser remetido ao navegador aos poucos
durante a gerao, ou todo de uma vez quando do encerramento da execuo.

Sintaxe: response.buffer[=flag]

Onde: flag pode assumir os seguintes valores: True - 0 servidor no envia as mensagens ao cliente
enquanto o script no concluir o processamento e False - sem buffer, o navegador medida em que
processa vai enviando as informaes para o cliente.




Mtodos do objeto response

Os Mtodos mais comuns so: Addheader, appendtolog, clear, end, flush, redirect e write.

Addheader

Inclui um cabealho HTTP com o endereo especificado.

ExempIo :

<% response.addheader www.Authenticate, basic%>

AddtoIog

Inclui uma string ao fim do log do servidor para esta requisio.

ExempIo:

<% response.addtolog string%>

CIear

Esvazia o buffer.

ExempIo:

<% response.clear %>

End

ACR Informtica

Pg - 17
Encerra o processamento do script quando atingido este ponto e caso o buffer seja false, o contedo
gerado pelo script ser enviado ao navegador.

ExempIo :

<% response.end %>

FIush

Envia imediatamente ao navegador o contedo do buffer.

ExempIo :

<% response.flush %>






Redirect

Permite redirecionar o usurio para outra URL. Veja abaixo :

ExempIo :

<% Response.redirect HTTP://www.outrosite.com.br %>

Write

Escrever mensagens , retornar valor de variveis e imprimir na tela do browser cliente.


ExempIo :

<% response.write TESTE DE STRING %>

Objeto server

O objeto server fornece mtodos e propriedades que permitem interagir com o servidor WEB onde o
aplicativo esta sendo executado.

Sintaxe: Server.method(mtodo)


Mtodos do ObjetoSever

Os mtodos do objeto server so os seguintes: scripttimeout, createobject, htmlencode, mappath (path)
e urlencode.

ACR Informtica

Pg - 18
Scripttimeout = Determina quanto tempo o servidor ficar ativo.

Exemplo :

<% Server.scripttimeout = 30 %>

Createobejct = Cria um objeto para usar em um script, abrir banco dados, abrir recordsets (para
gravao de dados ser melhor explicado mais frente)

<% server.createobject(adodb.connection) %>

HtmIencode = Converte os caracteres especias que no podem ser escritos diretamente em pginas
HTML. Por exemplo o sinal de > ser escrito &gt;

<% server.htmlencode(7 > 5) %>

aparecer escrito em tela : 7 &agt; 5



Mappath = O caminho usado para requisitar uma pgina no sempre o mesmo que o caminho fsico
da localizao das pginas no servidor. Este mtodo converte o caminho requisitado para o caminho
fsico real presente no servidor.

<% server.mappath(d:\wwwroot\ASP_db\teste.ASP) %>

UrIencode = Converte os caracteres no suportados em URLs em caracteres permitidos - espaos,
backspace e etc...

<A href=teste.ASP?text=<% server.urlencode(teste de url encode) %>>teste</a>

<A href=teste.ASP?text=teste+de+url+encode>teste</a>

Objeto AppIication

O objeto pode ser usado para compartilhar informaes entre todos os usurios de um determinado
aplicativo. Este aplicativo composto por todos os arquivos .asp dentro do diretrio virtual e seus
subdiretrios. Este objeto possui dois mtodos, um deles o mtodo lock e o outro o mtodo unlock.

Mtodo Lock = No permite que outros clientes modifiquem as propriedades do objeto application.

Mtodo UnLock = Permite que outros clientes modifiquem as propriedades do objeto application.

ExempIo :

<%
application.lock
application(contador)=application(contador)+1
application.unlock
%>
ACR Informtica

Pg - 19

abre-se aplicao, adiciona-se um e fecha-se aplicao.

Os eventos do objeto application so: application_onstart, application_onend. Estes eventos so
declarados dentro de um arquivo global.asa. Um arquivo global.asa um arquivo que contm
declaraes gerais com escopo a nvel da aplicao. Pode-se ter apenas um arquivo global.asa por
aplicao. Veja abaixo um exemplo de arquivo global.asa.

<Script language=vbsrcipt runat=server>
...................................................................................................................................................................
........................................................................................................................ sub application onstart end
...................................................................................................................................................................
...................................................................................................................................................................
........................................................................................................................... application(data)=now()
...................................................................................................................................................................
...................................................................................................................................................................
..............................................................................application(aviso)=bem vindos a minha home page
...................................................................................................................................................................
...................................................................................................................................................... end sub
</script>



Objeto Session

O objeto session um tipo de varivel global que pode ser declarada por uma pgina e acessada por
todo o script de qualquer uma das outras pginas. Por exemplo voc declara um valor de subtotal na
pgina carrinho.asp, e a pgina frete.asp precisa importar o valor desta varivel para que possa
determinar o total geral atravs da soma do subtotal (dentro da session) + o valor do frete.

Exerccio com session

Dados.htm

<html>
<head><title>exerccio com session </title></head>
<body>
<form action=criasession.asp method=post>
<input type=text name=nome><br>
<input type=text name=idade><br>
<input type=submit value=criar><br>
</form>
</body>
</html>

criasession.asp

<html>
<head><title>exerccio com session </title></head>
<body>
ACR Informtica

Pg - 20
<%
session(nome)=request(nome)
session(idade)=request(idade)
%>
sessions criadas com sucesso ..!
<a href=mostrasession.asp>Ver sessions </title>
</body>
</html>



Mostrasession.asp

<html>
<head><title>exerccio com session </title></head>
<body>
<%

nome=session(nome)
idade=session(idade)

response.write seu nome :&nome&<Br>
response.write seu nome :&idade&<Br>

%>
</body>
</html>


Banco de Dados


O que banco de dados:

Banco de dados um modo de se guardar informaes de forma lgica e ordenada dentro de tabelas e
com organizao lgica por itens. Por exemplo: podemos ter uma coluna nomes onde seriam
colocados somente os nomes das pessoas as quais se quer guardar as informaes. Podemos
tambm ter diversas outras colunas. Ex: idade, sexo, endereo, e-mail, etc...

Onde usar Banco de dados:

Um banco de dados pode ser usado para diversas aplicaes em uma pgina WEB. Ppodemos us-lo
para cadastrar um usurio novo, para cadastrar uma compra de um usurio, podemos registrar uma
venda que o site efetuou, podemos gerar um livro de visitas, um banco de dados de nomes e senhas
para restringir o acesso a um site ou uma rea de um site, cadastrar produtos disponveis ao
usurio, etc ...

Criando um banco de dados:

ACR Informtica

Pg - 21
Podemos criar um banco de dados em diversos formatos e aplicativos. Podemos usar deste um
simples arquivo de texto at uma complexa estrutura em banco de dados Oracle (poderoso sistema de
gerenciamento de banco de dados). Vamos comear a criar um banco de dados em uma ferramenta
bem simples e fcil de ser usada: abra o Microsoft Access, clique em banco de dados vazio do
Microsoft Access, e clique em ok.
Em seguida, na tela que surge, voc dever especificar um nome e onde dever ser salvo este banco
de dados. V at a pasta inetpub, wwwroot. Crie dentro da sua pasta ao lado da pasta aula1 uma
pasta com o nome de dados e salve o banco de dados dentro desta com o nome de clientes. Agora
precisamos criar a estrutura do nosso banco dados. Clique em criar tabela no modo de estrutura. Na
tela que surge voc dever clicar na primeira linha com a primeira coluna, escreva Cdigo (no use
acentuao para prevenir erros). Na segunda coluna procure o item autonumerao. Veja abaixo os
outros campos:

Codigo AutoNumerao
Nome Texto
Endereco Texto
Idade Texto
Email Texto

Veja abaixo como ficou no Access :




Agora clique no X para fechar esta tabela e surgir uma tela solicitando um nome para esta tabela -
digite usurios. Voc ser avisado em seguida que no existe uma chave primaria definida. Ser
necessrio definir uma para impedir a duplicao de registros. Basta clicar em sim e pronto. Seu
banco de dados j est criado, agora clique duas vezes sobre o nome da tabela usurios. Ser aberta
uma tela onde voc, como teste, ir cadastrar o primeiro usurio.
Aps esta operao concluda voc poder fechar a tabela usurios e em conjunto com esta pode
fechar Access tambm.


Conectando Banco dados via ODBC :

Precisamos conectar o banco ao site para que possamos colher registros, gravar registros, atualizar
registros, dentre outras funes. Em primeiro lugar crie uma pgina HTML com a estrutura bsica e
salve-a em sua pasta dentro do diretrio wwwroot, na pasta inetpub :

Veja abaixo o cdigo que dever conter esta pgina :

<HTML>
<head>
<title>Untitled Document</title>
ACR Informtica

Pg - 22
<meta HTTP-equiv="Content-Type" content="text/HTML; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF">

</body>
</HTML>


Agora vamos criar a conexo via ODBC do Windows. Ser necessrio para isso relacionar o banco de
dados no ODBC do Windows.

Clique em meu computador, Painel de controle, Fonte de dados ODBC 32 bits e surgir a tela abaixo :




Clique na ala de seleo NFDSISTEMA e clique em adicionar, surgir a tela abaixo :

ACR Informtica

Pg - 23


Onde voc dever escolher a opo driver do Microsoft Access. Clique em Concluir, surgir a tela
abaixo :



Onde voc dever clicar na rea banco de dados boto selecionar. Indique onde est o banco de
dados e determine um nome. Clique em OK. Se tudo estiver correto voc ir retornar primeira tela,
onde ser possvel verificar que existe um novo banco relacionado (o seu banco de dados).

ACR Informtica

Pg - 24



Pronto agora j podemos conectar o banco de dados com o seguinte script :

1. <%
2. set cn=server.createobject("adodb.connection")
3. cn.open "dsn=clientes"
4. %>
5. <HTML>
6. <head>
7. <title>Untitled Document</title>
8. <meta HTTP-equiv="Content-Type" content="text/HTML; charset=iso-8859-1">
9. </head>

10. <body bgcolor="#FFFFFF">

11. </body>
12. </HTML>

Conectando Banco de dados via Dbq Driver:

1. <%
2. set cn=server.createobject("adodb.connection")
3. cnstring=driver={Microsoft Access Driver (*.mdb)};dbq=&server.mappath(clientes.mdb)&;
4. cn.open(cnstring)
5. %>
6. <HTML>
7. <head>
ACR Informtica

Pg - 25
8. <title>Untitled Document</title>
9. <meta HTTP-equiv="Content-Type" content="text/HTML; charset=iso-8859-1">
10. </head>

11. <body bgcolor="#FFFFFF">

12. </body>
13. </HTML>

sintaxe :

1 - abertura de script ASP
2 - criao de um objeto server tipo conexo
3 -criaao de uma Dbq (data base query,consulta de banco de dados).
4 - abertura do banco de dados usando uma data base query
5 12 - cdigo HTML comum

Conectando Banco de dados via Microsoft JetOIeDb:

Uma das maiores vantagens de se trabalhar com JetOledb o fato de no haver necessidade de se
relacionar o banco de dados em uso no ODBC do Windows, quando o site for hospedado no ser
necessrio ligar para o seu provedor e solicitar que este relacione o seu banco dados l. Veja abaixo o
cdigo para conectar o banco de dados via jetOledb :

1. <%
2. set cn=server.createobject("adodb.connection")
3. cn.provider="microsoft.jet.oIedb.4.0"
4. cn.connectionstring=server.mappath("cIientes.mdb")
5. cn.open
6. %>
7. <HTML>
8. <head>
9. <title>Untitled Document</title>
10. <meta HTTP-equiv="Content-Type" content="text/HTML; charset=iso-8859-1">
11. </head>

12. <body bgcolor="#FFFFFF">

13. </body>
14. </HTML>

sintaxe:

1 - abertura de script ASP
2 - criao de um objeto server tipo conexo
3 - indicao de tipo de acesso a dados
4 - endereo do banco de dados
5 - abertura do banco de dados
6 - fechamento do banco de dados
7 12 - cdigo HTML comum
ACR Informtica

Pg - 26

Mostrando os registros do banco de dados em teIa:

Vamos agora mostrar os registros do banco de dados em tela atravs de um comando SQL do tipo
select. No objeto request aplicado ao banco de dados usaremos um comando tipo loop, que serve
simplesmente para repetir um instruo at que uma condio seja satisfeita ou at que o loop seja
interrompido por algum mtodo. Veja o cdogo abaixo :

1. <%
2. set cn=server.createobject("adodb.connection")
3. cn.provider="microsoft.jet.oIedb.4.0"
4. cn.connectionstring="c:\inetpub\wwwroot\apostiIa\cIientes.mdb"
5. cn.open
6. %>
7. <HTML>
8. <head>
9. <title>Untitled Document</title>
10. <meta HTTP-equiv="Content-Type" content="text/HTML; charset=iso-8859-1">
11. </head>
12. <body bgcolor="#FFFFFF">
13. <%
14. set mostrar=server.createobject("adodb.recordset")
15. mostrar.open "seIect * from usurios",cn
16. %>
17. <table border=3>
18. <%do whiIe not mostrar.eof%>
19. <tr>
20. <td><%=mostrar("nome")%></td>
21. <td><%=mostrar("endereco")%></td>
22. <td><%=mostrar("idade")%></td>
23. <td><%=mostrar("emaiI")%></td>
24. </tr>
25. <%mostrar.movenext%>
26. <%Ioop%>
27. </table>
28. </body>
29. </HTML>




sintaxe:

1 6 - Conexo ao banco de dados via oledb ( poderia tambm ser via ODBC )
7 12 - cdigo HTML comum
13 - Abertura de script ASP
14 - criao de um objeto server tipo recordset (leitura e gravao)
15 -abertura do banco de dados em modo leitura e gravao selecionando todos os registros da tabela
usurios(tabela que voc criou dentro do banco de dados conectado pgina.
16 -Fechamento do cdigo ASP
ACR Informtica

Pg - 27
17 -Abertura da tabela para exibio em tela dos dados
18 - Comando loop vbscript (ser efetuado at atingir o final do arquivo aberto pelo comando SQL tipo
select mostrar, observe mostrar.eof (mostrar.end of file)
do while not mostar.eof ( repetir enquanto no atingir o final do arquivo).
19 -abertura de Iinha de tabeIa
20 - abrindo uma clula, recuperando o valor nome do banco de dados e fechando a clula.
21 - abrindo uma clula, recuperando o valor endereo do banco de dados e fechando a clula.
22 - abrindo uma clula, recuperando o valor idade do banco de dados e fechando a clula.
23 - abrindo uma clula, recuperando o valor email do banco de dados e fechando a clula.
24 - Passando para o prximo registro do banco de dados, observe : mostar.movenext (objeto
mostrar.mover para o prximo).
25 - Comando Loop, este comando faz com o programa retorne a linha do while not mostrar.eof para
verificar se a condio j foi satisfeita, caso esta j tenha sido satisfeita deve encerrar o loop e passar
para a prxima linha HTML logo aps o loop caso no tenha sido satisfeita ainda dever repetir o loop
de novo.
26 28 - cdigo HTML comum encerrando a pgina.

Veja abaixo o banco de dados em Acess :



Veja abaixo o banco de dados na tela do Nvegador :


Veja abaixo o cdigo HTML do arquivo:

ACR Informtica

Pg - 28



Observe no cdigo HTML acima os seguintes aspectos: o nome do seu arquivo foi trocado por um novo
nome. Antes o arquivo chamava-se inicial.asp e agora chama-se inicial[1].asp. Isso ocorreu porque a
pgina original foi processada no servidor e deu origem a esta segunda pgina que no traz em suas
linhas de cdigo o script ASP. Onde esto as linhas connection ?, select ?. Estas linhas esto no
servidor e no sero nunca enviadas ao browser do usurio.


SQL

A SQL Structured Query Language (linguagem de consulta estruturada), praticamente surgiu com a
terceira gerao de banco de dados, os RDBS - ReIationaI Data Bases (banco de dados relacionais).
Na verdade podemos dizer a SQL uma linguagem para definir e manipular uma base de dados
relacionais. Praticamente todas as estruturas de bancos de dados relacionais suportam SQL.
Usaremos as instrues do tipo sql para Microsoft access pois trabalharemos com access.




Comando SeIect

Retorna um conjunto de registros. Voc basicamente s precisa informar dois argumentos: quais
campos da tabela a pesquisar e o nome da tabela a pesquisar. Pode-se ainda passar uma condio
para consulta (quando se quer buscar valores no banco de dados).

ACR Informtica

Pg - 29

Comando seIect para seIecionar todos os registros:

<%
set mostrar=server.createobject("adodb.recordset")
mostrar.open "seIect * from usurios",cn
%>

objetivo: selecionar todas as colunas da tabela usurios.

Comando seIect para seIecionar todos os registros somente da coIuna idade:

<%
set mostrar=server.createobject("adodb.recordset")
mostrar.open "seIect idade from usurios",cn
%>

objetivo: selecionar todos os registros da coluna idade da tabela usurios.

Comando seIect para seIecionar todos os registros somente da coIuna idade onde a idade for
iguaI a 21:

<%
set mostrar=server.createobject("adodb.recordset")
mostrar.open "seIect idade from usurios where idade=21",cn
%>

objetivo: selecionar todos os registros da coluna idade onde a idade for igual a 21 anos

Comando seIect para seIecionar todos os registros somente da tabeIa usurios onde a idade for
maior que 20 anos :

<%
set mostrar=server.createobject("adodb.recordset")
mostrar.open "seIect * from usurios where idade > 20",cn
%>

objetivo: selecionar todos os registros da tabela usurios onde o usurio cadastrado tiver mais de 20
anos





Comando seIect para seIecionar todos os registros da tabeIa usurios onde a idade for maior
que 20 anos e o sexo for mascuIino :

<%
set mostrar=server.createobject("adodb.recordset")
mostrar.open "seIect * from usurios where idade > 20 and sexo=mascuIino", cn
ACR Informtica

Pg - 30
%>

objetivo: selecionar todos os registros da tabela usurios onde o usurio cadastrado tiver mais de 20
anos e for do sexo masculino

Mtodos Like, Between e IN

Metodo Like: Usado para selecionar registros de forma ampla. Por exemplo, quando voc solicitar que
sejam localizados todos os Paulos da sua tabela poder ocorrer de voc no saber o nome completo
do usurio e no conseguir encontrar um registro sequer. Trabalhando com o mtodo like voc
solicitaria uma busca pela palavra Paulo e seriam localizados todas as ocorrncias do nome no banco
de dados independente da posio e letra maiscula ou minscula.


Comando seIect para seIecionar todos os registros da tabeIa usurios onde o nome do usurio
for quaIquer paIavra Marcos ou Marcos quaIquer paIavra.

<%
set mostrar=server.createobject("adodb.recordset")
mostrar.open "seIect * from usurios where nome Iike ' "%marcos%" ' ", cn
%>

objetivo: encontrar todos os Marcos do banco de dados, independente de primeiro nome ou
sobrenome, sendo maisculos ou minsculos.

Ocorrncias para o like:


Tipo de ocorrncia Padro da consulta SQL Resultado
Mltiplos caracteres b*b Bb,bBb,bccccB
Caractere especial b[*]b B*b
Mltiplos caracteres Ab* Abcdefg....,abc
Caractere nico b?b Bbb, b3b, bcb,bzb, b2b
Dgito nico b#b b0b, b1b, b2b
Intervalo de caracteres [b-n] Cdefghijklm
No dgito [!0-9] A,a,%,p







Mtodo between: permite fazer consultas dentro de uma determinada faixa de valores. Se o objeto
encontrado pertence a um dos extremos da faixa de valores este ser includo no conjunto de registros
localizados.

ACR Informtica

Pg - 31
Comando seIect para seIecionar todos os registros da tabeIa usurios onde as idades estiverem
entre 18 e 20 anos

<%
set mostrar=server.createobject("adodb.recordset")
mostrar.open "seIect * from usurios where idade between 18 and 20", cn
%>

objetivo: encontrar todos os usurios que esto entre a faixa etria de 18 20 anos.

Mtodo In: permite fazer uma consulta onde o valor pesquisado coincida entre um dos valores do
mtodo IN:

Comando seIect para seIecionar todos os registros da tabeIa usurios onde os usurios tiverem
18,19 ou 21 anos

<%
set mostrar=server.createobject("adodb.recordset")
mostrar.open "seIect * from usurios where idade in (18,19,21) ", cn
%>

objetivo: encontrar todos os usurios que tiverem 18, 19 e 21 anos, desprezando os usurios que
tiverem idade inferior a 18 anos, desprezando os usurios que tiverem 20 anos e desprezando os
usurios que tiverem idade superior a 21 anos.

Comando insert

Comando usado para inserir registros em um banco de dados

mostrar.open "insert into usurios(idade) vaIues ("20")

Ser aberta a conexo mostrar e ser inserido na coluna idade logo aps o ultimo registro como novo
registro valor 20.

Outro mtodo insert: s vezes o comando insert into pode falhar. Temos um comando alternativo da
linguagem ADO que pode resolver este pequeno problema. Veja abaixo um exemplo :

<%
dim cn
dim mostra
const adOpenKeyset=1
const adLockOptmistic=3

set cn=server.createobject("adodb.connection")
cn.provider="microsoft.jet.oledb.4.0"
...................................................................cn.connectionstring="/inetpub/wwwroot/aposila/clientes.mdb"
...................................................................................................................................................... cn.open

set mostra=server.createobject("adodb.recordset")
mostra.open "select * from usurios where idade = 23",cn, adOpenKeyset, adLockOptmistic
ACR Informtica

Pg - 32

mostra.addnew
mostra("idade")=20
mostra.update
mostra.close
set mostra=nothing

Este cdigo acima, em primeira instncia, seleciona os registros com idade igual a 23 anos e em
seguida troca todos estes valores por 20 anos.

Comando update

Comando usado para atualizar registros de um banco de dados.

mostrar.open "update usurios set idade="20" where idade = 23"

Ser aberta a conexo mostrar e sero atualizados todos os registro onde a idade for igual a 23 anos ,
fazendo com que estes passem a ser iguais a 20.

Comando deIete

Comando usado para apagar registros de um banco de dados.

mostrar.open "deIete * form usurios where idade = 23"

Ser aberta a conexo mostrar e sero apagados todos os registros onde a idade for igual a 23 anos.

Inserido Registros no banco de Dados:

Vamos criar uma pgina ASP para inserir registros no banco de dados. Vamos precisar de um
formulrio endereo - a pgina insere.asp com os seguintes campos: nome, endereco, idade, e-mail :

Veja o cdigo do formulrio abaixo:

<HTML>
<head>
<title>Untitled Document</title>
<meta HTTP-equiv="Content-Type" content="text/HTML; charset=iso-8859-1">
</head>

<body bgcolor="#000000">
<div align="center">
<form action=insere.ASP method=post>
<p><font color="#CCFFCC">Preencha os dados abaixo :</font></p>
<table width="80%" border="0" cellspacing="1" cellpadding="1">
<tr>
<td width="31%"><font color="#CCFFCC">Nome :</font></td>
<td width="69%">
<input type="text" name="nome" size="30" maxlength="30">
</td>
ACR Informtica

Pg - 33
</tr>
<tr>
<td width="31%"><font color="#CCFFCC">endereco :</font></td>
<td width="69%">
<input type="text" name="endereco" size="30" maxlength="30">
</td>
</tr>
<tr>
<td width="31%"><font color="#CCFFCC">idade :</font></td>
<td width="69%">
<input type="text" name="idade" size="30" maxlength="30">
</td>
</tr>
<tr>
<td width="31%"><font color="#CCFFCC">E-mail :</font></td>
<td width="69%">
<input type="text" name="e-mail" size="30" maxlength="30">
</td>
</tr>
</table>
<p><br>
<input type="submit" value="Atualizar Banco de dados">
</p>
</form>

</div>
</body>
</HTML>

Veja abaixo o cdigo da pgina insere.asp :

<%
set cn=server.createobject("adodb.connection")
cn.provider="microsoft.jet.oledb.4.0"
...............................................................cn.connectionstring="c:\inetpub\wwwroot\apostila\clientes.mdb"
cn.open

set mostra=server.createobject("adodb.recordset")
mostra.open "insert into usurios(nome,endereco,idade,email) values
('"&request("nome")&","&request("endereco")&","&request("idade")&","&request("email")&")",cn

%>
<HTML>
<head>
<title>Untitled Document</title>
<meta HTTP-equiv="Content-Type" content="text/HTML; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF">
<h2>Os dados foram gravados com sucesso !!!!</h2>
ACR Informtica

Pg - 34
</body>
</HTML>

Inserindo registros na tabeIa via ADO:

<%
const adOpenKeyset=1
const adLockOptmistic=3

set cn=server.createobject("adodb.connection")
cn.provider="microsoft.jet.oledb.4.0"
.................................................................. cn.connectionstring="/inetpub/wwwroot/aposila/clientes.mdb"
...................................................................................................................................................... cn.open

set grava=server.createobject("adodb.recordset")
grava.open "select * from usurios",cn, adOpenKeyset, adLockOptmistic

grava.addnew
grava ("nome")=request(nome)
grava ("endereco")=request(endereco)
grava ("idade")=request(idade)
grava ("email")=request(email)
grava.update
grava.close
set grava=nothing
%>
<HTML>
<head>
<title>Untitled Document</title>
<meta HTTP-equiv="Content-Type" content="text/HTML; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF">
<h2>Os dados foram gravados com sucesso !!!!</h2>
</body>
</HTML>




AtuaIizando os dados de uma tabeIa:

Voc precisa criar, em primeiro lugar, uma forma do usurio ou cliente localizar dentro do banco de
dados o registro ou registros a serem alterados. Voc precisa criar um campo de texto, com o nome de
varivel nome e enviar o formulrio para a pgina edita.asp. Pgina esta que vai possuir o script para
atualizao do banco de dados:

Veja abaixo o cdigo da pgina que levar o valor a ser buscado para a pgina edita.asp.

ACR Informtica

Pg - 35
<HTML>
<head>
<title>Untitled Document</title>
<meta HTTP-equiv="Content-Type" content="text/HTML; charset=iso-8859-1">
</head>

<body bgcolor="#000000">
<div align="center">
<p><font color="#CCFFCC">Bem vindo ao site da nossa empresa, escreva no campo abaixo o nome
do usurio que ser atualizado no banco de dados :</font></p>

<form name="form1" action="edita.ASP" method="post" >
<p><i><font color="#FFFF99">Indique o nome: </font></i>
<input type="text" name="computador" size="30" maxlength="30">
</p>
<p>
<input type="submit" name="procura" value="Procurar">
</p>
</form>
<p>&nbsp;</p>
</div>
</body>
</HTML>

Veja agora abaixo a pgina que traz o resuItado da busca e um link que ativa pgina atualiza.asp.
Esta pgina abre a base de dados e traz o registro para edio. Junto com o link passado um
parmetro via querystring para que a prxima pgina consiga identificar qual o registro a ser editado.
O parmetro passado o cdigo, pois este o nico campo do banco de dados que exclusivo para
cada registro, ou seja, cada um dos registros possui um cdigo diferente tornando impossvel sua
duplicao e impedindo que as modificaes ocorram em mais de um registro por vez :

<%
set cn=server.createobject("adodb.connection")
cn.provider="microsoft.jet.oledb.4.0"
......................................................cn.connectionstring="/inetpub/wwwroot/apostila/dados/clientes.mdb "
...................................................................................................................................................... cn.open
%>
<HTML>
<head>
<title>Untitled Document</title>
<meta HTTP-equiv="Content-Type" content="text/HTML; charset=iso-8859-1">
</head>

<body bgcolor="#000000">
<p align="center"><img src="titulo.gif" width="400" height="100"><font color="#FFFFFF">
<%
set atualiza=server.createobject("adodb.recordset")
atualiza.open "select * from usurios where nome LIKE '%" & request("nome")&"%'",cn
%> <% do while not atualiza.eof %> </font> </p>
<table>
ACR Informtica

Pg - 36
<tr>
<td><font color="#FFFFFF">Nome: <%=atualiza("nome")%>, idade: <%=atualiza("idade")%> anos,
endereco: <%=atualiza("endereco")%>, E-mail : <%=atualiza("email")%>
<a href=atualiza.ASP?codigo<%=atualiza("codigo")%>>Editar Registro</a></center></td>
</tr>
</table>
<hr color=red>
<font color="#FFFFFF"><%atualiza.movenext%> <%loop%> </font>
</body>
</HTML>

Veja abaixo agora o cdigo da pgina atualiza.asp. Esta pgina trs o registro selecionado para ser
editado e encerra a atualizao ativando a pgina update.asp que quem atualiza o banco de dados:

<%
set cn=server.createobject("adodb.connection")
cn.provider="microsoft.jet.oledb.4.0"
.......................................................cn.connectionstring="/inetpub/wwwroot/apostila/dados/clientes.mdb"
...................................................................................................................................................... cn.open
%>
<HTML>
<head>
<title>Untitled Document</title>
<meta HTTP-equiv="Content-Type" content="text/HTML; charset=iso-8859-1">
</head>

<body bgcolor="#000000">
<p align="center"><img src="titulo.gif" width="400" height="100"><font color="#FFFFFF">
<%
set grava=server.createobject("adodb.recordset")
grava.open "select * from usurios where codigo="&request.querystring("codigo"),cn

%>
<form action=update.ASP method=post>
<center>
<font color=white><h2> Registro a ser editado: </h2></font>

<table width=50%>
<tr><td align=right><font color=white>Cdigo :</font></td><td align=center><input type=text
name=codigo value=<%=grava("codigo")%>></td></tr>
<tr><td align=right><font color=white>nome :</font></td><td align=center><input type=text
name=nome value=<%=grava("nome")%>></td></tr>
<tr><td align=right><font color=white>Idade :</font></td><td align=center><input type=text
name=idade value=<%=grava("idade")%>></td></tr>
<tr><td align=right><font color=white>Endereo :</font></td><td align=center><input type=text
name=endereco value=<%=grava("endereco")%>></td></tr>
<tr><td align=right><font color=white>email :</font></td><td align=center><input type=text
name=email value=<%=grava("email")%>></td></tr>
</table>
<p>
ACR Informtica

Pg - 37
<input type=submit value="Gravar...">
</center>
</form>
</body>
</HTML>

Veja agora o cdigo da pgina update.asp. Esta pgina grava no banco de dados os valores
modificados e encerra a atualizao com uma mensagem ao usurio:

<%
set cn=server.createobject("adodb.connection")
cn.provider="microsoft.jet.oledb.4.0"
cn.connectionstring="/inetpub/wwwroot/apostila/dados/clientes.mdb"
...................................................................................................................................................... cn.open
%>
<HTML>
<head>
<title>Untitled Document</title>
<meta HTTP-equiv="Content-Type" content="text/HTML; charset=iso-8859-1">
</head>

<body bgcolor="#000000">
<%
set cpu=server.createobject("adodb.recordset")
cpu.open "update usurios set
nome='"&request("nome")&",idade='"&request("idade")&"',endereco='"&request("endereco)&"',email='"
&request("email")&"' where codigo="&request("codigo"),cn
%>
<h2> Registro Atualizado com sucesso !!! </h2>
<p>
<hr color=red>
<a href=index.htm>Voltar</a>
</body>
</HTML>



ExcIuindo os dados de uma tabeIa:

Voc precisa primeiro localizar os registros a serem excludos. Voc deve fazer isso atravs de um
formulrio com um campo onde o usurio possa digitar o nome do usurio a ser excludo. Atravs do
formurio voc far uma busca no banco de dados que resultar em uma lista de registros para que se
possa escolher qual registro ser excludo.

Veja abaixo o cdigo da pgina que possui um formulrio para realizar essa busca. Este formulrio
ser endereado a uma pgina apaga.asp responsvel pela excluso do registro.

<HTML>
<head>
ACR Informtica

Pg - 38
<title>Untitled Document</title>
<meta HTTP-equiv="Content-Type" content="text/HTML; charset=iso-8859-1">
</head>

<body bgcolor="#000000">
<div align="center">
<p><font color="#CCFFCC">Bem vindo ao site da nossa empresa, escreva no campo abaixo o nome
do usurio que ser atualizado no banco de dados :</font></p>

<form name="form1" action="apaga.ASP" method="post" >
<p><i><font color="#FFFF99">Indique o nome: </font></i>
<input type="text" name="computador" size="30" maxlength="30">
</p>
<p>
<input type="submit" name="procura" value="Procurar">
</p>
</form>
<p>&nbsp;</p>
</div>
</body>
</HTML>

Veja agora abaixo a pgina que traz o resuItado da busca e que atravs de um link ativa a pgina
exclui.asp. A pgina exclui.asp localiza na base de dados o registro para deleo. Junto com o link
passado um parmetro via querystring para que a prxima pgina consiga identificar qual o registro a
ser excludo. O parmetro passado o cdigo pois o nico campo do banco de dados que
exclusivo para cada usurio, ou seja, cada um dos registros possui um cdigo diferente tornando
impossvel sua duplicao e impedindo que sejam apagados mais de um registro por vez:

<%
set cn=server.createobject("adodb.connection")
cn.provider="microsoft.jet.oledb.4.0"
......................................................cn.connectionstring="/inetpub/wwwroot/apostila/dados/clientes.mdb "
...................................................................................................................................................... cn.open
%>
<HTML>
<head>
<title>Untitled Document</title>
<meta HTTP-equiv="Content-Type" content="text/HTML; charset=iso-8859-1">
</head>

<body bgcolor="#000000">
<p align="center"><img src="titulo.gif" width="400" height="100"><font color="#FFFFFF">
<%
set apaga=server.createobject("adodb.recordset")
apaga.open "select * from usurios where nome LIKE '%" & request("nome")&"%'",cn
%> <% do while not atualiza.eof %> </font> </p>
<table>
<tr>
ACR Informtica

Pg - 39
<td><font color="#FFFFFF">Nome: <%=apaga("nome")%>, idade: <%=apaga("idade")%> anos,
endereco: <%=apaga("endereco")%>, E-mail : <%=apaga("email")%>
<a href=exclui.ASP?cdigo=<%=apaga("codigo")%>>Apagar Registro</a></center></td>
</tr>
</table>
<hr color=red>
<font color="#FFFFFF"><%atualiza.movenext%> <%loop%> </font>
</body>
</HTML>


Veja abaixo a pgina que apaga os registros do banco de dados :

<%
set cn=server.createobject("adodb.connection")
cn.provider="microsoft.jet.oledb.4.0"
.......................................................cn.connectionstring="/inetpub/wwwroot/apostila/dados/clientes.mdb"
...................................................................................................................................................... cn.open
%>
<HTML>
<head>
<title>Untitled Document</title>
<meta HTTP-equiv="Content-Type" content="text/HTML; charset=iso-8859-1">
</head>

<body bgcolor="#000000">
<font color="#FFFFFF">
<%
set apaga=server.createobject("adodb.recordset")
apaga.open .......................... " delete * from mquina where codigo="&request.querystring ("codigo") ,cn
response.write " <h2><font color=white> DADOS EXCLUIDOS COM SUCESSO </font></h2> "
%>
<a href=index.htm>Voltar</a>
</body>
</HTML>

Contando registros:

um mtodo de contagem de registros. Retorna a quantidade de itens dentro do banco de dados:

<%
dim cn,rs

const asopenkeyset = 1
set cn=server.createobject("adodb.connection")
cn.provider="microsoft.jet.oledb.4.0"
.......................................................cn.connectionstring="/inetpub/wwwroot/apostila/dados/clientes.mdb"
...................................................................................................................................................... cn.open

set rs=server.createobject(adodb.recordset)
ACR Informtica

Pg - 40
rs.open "select * from usurios",cn, adOpenKeyset

contador=rs.recordcount
%>
<body>

Este recordset possui <%=contador%> registros.

</body>
</HTML>

Enviando um e-maiI ao administrador do site:

Veja nas linhas abaixo como enviar um e-mail para o administrador do site.Este comando s funciona
em Windows NT, CDONTS ( colaborators data objects of Windows NT server).

<%
set email=server.createobject(cdonts.newMail)
email.from=de onde esta saindo o email@provedor.com
email.to=para onde vai o e-mail@provedor.com.br
email.subject=assunto do e -amil
email.body=texto da mensagem
set email=nothing
%>


























ACR Informtica

Pg - 41
Projeto Final

LOJA VIRTUAL
PIanejando uma Ioja virtuaI:

Ser necessrio planejar o sistema da loja virtual antes de comear a desenvolv-la. Comearemos
com a entrada do usurio na pgina. Aps a entrada existiro duas opes: acessar o banco de dados
ou iniciar a busca por algum produto disponvel. A manuteno do banco de dados s ser possvel
mediante uma senha de acesso.

A busca de produtos ser feita digitando-se o nome de algum produto. Aparecer ento uma pgina
com o resultado desta busca, onde pode-se escolher algum entre os produtos visveis em tela. A
escolha nos levar ao carrinho de compras de onde pode-se finalizar a compra e/ou retornar pgina
inicial. .Caso retornemos pgina inicial o processo se repete. Na concluso seremos levados a uma
ficha de cadastro onde faremos o preenchimento dos dados pessoais. Aps enviar a ficha receberemos
em tela uma confirmao de dados e produtos comprados. Na confirmao dos dados e produtos o
sistema enviar ao administrador do site um e-mail contendo os dados e produtos para que realizao
da cobrana e entrega dos produtos.
Diagrama em bIocos do funcionamento da Ioja virtuaI :







Lay out da TeIa da Loja VirtuaI

A loja virtual faz uso de um lay out simples e funcional temos uma pagina de menu, uma pagina de
titulo e uma pagina principal que posteriormente tera seu lugar ocupado pela a pagina busca.asp.
ACR Informtica

Pg - 42



A pagina Menu.asp

Esta uma das principais pginas da loja virtual. Esta pagina responsavel pela interatividade
do usurio com a loja, ou seja, atravs dela que o usurio poder:

Pesquisar um cd pelo seu titulo
Pesquisar um cd pelo seu status (promoo, top hits,lanamentos)
Pesquisar um cd dentro do acervo de cds disponivis venda (listagem por letra inicial)
Verificar suas compras no carrinho
Verificar sua ficha de pedido
Acessar o caixa
Efetuar cadastro
Atualizar e ou efetuar manuteno do banco de dados (restrito por login e senha)

Cdigo da pgina menu.htm:

<html>
<head>
<title>menu</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#CCCCFF">

At este ponto temos a simples estrutura bsica da pagina sendo criada ...

1.<form method="post" action="busca.asp" target="mainFrame">
2.<input type="text" name="busca" size="15"><br>
3.<select name="tipo">
4.<option value="CD">CD</option>
5.<option value="DVD">DVD</option>
6.<option value="VHS">VHS</option>
7.</select>
ACR Informtica

Pg - 43
8.<input type="submit" value="buscar">
9.</form>

Nas Linhas acima temos a linha 1 criando um formulrio que ser enviado a pagina busca.asp,
ao ser enviado passar os parametros busca= texto digitado pelo usuario dentro do campo busca na
linha 2 e tipo, opo escolhida pelo usuario no objeto select iniciado linha 3 e concluido a linha 7

10.<table border="0" cellspacing="1" cellpadding="0" width="100%" align="center">
11.<tr><td><a href="status.asp?tipo=CD&status=lancamento"
target="mainFrame">Lanamento</a></td></tr>
12.<tr><td><a href="status.asp?tipo=CD&status=promocao"
target="mainFrame">Promoo</a></td></tr>
13.<tr><td><a href="status.asp?tipo=CD&status=tophits" target="mainFrame">Top Hits</a></td></tr>
14.<tr><td><a href="acervo.asp?tipo=CD&busca=A" target="mainFrame">Acervo</a></td></tr>
15.<tr><td><a href="cadastro.htm" target="mainFrame">Cadastre-se</a></td></tr>
16.<tr><td><a href="carrinho.asp" target="mainFrame">Suas Compras</a></td></tr>
17.<tr><td><a href="entrarcaixa.htm" target="mainFrame">Concluir</a></td></tr>
18.<tr><td><a href="gerencia.htm" target="mainFrame">Administrao</a></td></tr>
19.</table>

Nas linhas 10 a 17 temos o menu de links onde :

linha 11 carrega a pagina status.asp no navegador passando os parametros status=lancamento e tipo
= cd
linha 12 carrega a pagina status.asp no navegador passando os parametros status=promocao e tipo =
cd
linha 13 carrega a pagina status.asp no navegador passando os parametros status=tophits e tipo = cd
linha 14 carrega a pagina acervo.asp no navegador passando os parametros busca e tipo = cd
linha 15 carrega a pagina carrinho.asp no navegador
linha 16 carrega a pagina entrarcaixa.htm no navegador = cd
linha 17 carrega a pagina gerencia.htm no navegador
linha 18 carrega a pagina status.asp no navegador passando os parametros satsus=lancamento e tipo
= cd

</body>
</html>

Pagina Busca.asp

Nesta pgina ser realizada uma busca no banco de dados atravs dos parmetros passados
pelos campos tipo e busca. Alguns recursos importantes da linguagem nativa sero utilizadas nesta
pgina como, por exemplo: busca sem uso de objeto connection e paginao de recordsets para
reduzir o consumo de recursos do servidor.


Cdigo da pagina ASP :

<html>
<head>
<title>Busca de Produtos</title>
ACR Informtica

Pg - 44
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF">

At este ponto temos a simples estrutura bsica da pagina sendo criada ...

<!--#include file="ADOVBS.INC" -->

Na linha acima foi carregada junto com o site uma biblioteca de variaveis declaradas

<%
SQLtemp = "select * from produtos where tipo = '" & request.form("tipo") &"' and titulo like '%" &
request.form("busca") & "%'"

Na linha acima foi criada uma variavel chamada sqltemp que terea quardade dentro de si um
comando sql que ira realizar a busca em funo dos parametros passados pela pagina menu.htm

pagina = request("qualpagina")

Nesta linha acima o cdigo vai procurar o conteudo de uma variavel que ainda no foi criada.
Ser criada a partir do momento que os links tenham sido criados no final deste cdigo tendo um valor
real armazenado quando o usuario clicar em algum link (o usuario teria que estar no site) se o usuario
acabou de entrar no site vindo da pagina busca.asp o conteudo da variavel sera nulo (vazio).


1. if pagina = "" then
2. pagina = 1
3. end if

As trs linhas acima estao checando o contedo da varivel pgina. Temos duas possveis
situaes aqui, uma : o usurio acaba de entrar na pagina e no clicou ainda em nenhum dos links no
final da pagina. Outra : o usuario j estava na pagina e clicou em algum dos links no final da pagina. Na
primeira situao temos uma variavel qualpagina nula e com conteudo igual a vazio. Na segunda
situaco temos uma variavel pagina valida e com conteudo diferente de vazio. Esta variavel muito
importante pois ser atraves dela que o navegador sabera em qual pagina exibir na tela. O teste logico
If acima verifica se o conteudo da variavel pagina vazio e se for vazio armazena o numero 1 dentro
desta variavel (para que o navegador possa exibir o conteudo do banco de dados no navegador a partir
da pagina 1.

tamanhopagina = request("pagesize")

if tamanhopagina = "" then
tamanhopagina = 10
end if
SQL = request("SQLquery")
if SQL = "" then
SQL = SQLtemp
end if

ACR Informtica

Pg - 45
A situao anterior se repete com as variaveis tamanhopagina e sqlquery. Neste momento o
navegador possui conteudo suficiente para efetuar a busca e montar a tela. Caso usuario tenha agora
no site a bsuca ser efetuada com base no comando sqltemp criado por vc, exibira 10 registros e
iniciar na pgina 1. Caso tenha sido clicado algum link a tela ser montada em fno do link clicado.

1. set rstemp = Server.CreateObject("ADODB.Recordset")
2. rstemp.cursorlocation = aduseclient
3. rstemp.cachesize = 5
4. rstemp.open SQL,"lojacd",1

Na linha 1 acima temos a abertura de um recordset, na linha 2 foi definido o controle e
responsabilidade pelo cursor de bancode dados, o mtodo adusecliente define o cursor como em modo
cliente, ser alocada ento memoria na maquina do cliente para controle deste cursor. Na linha 3 foi
definido de quantos em quantos registros ser executada a pesquisa da tabela no banco de dados. Por
fim na ultima linha temos a abertura do recordset para seleo dos registros da tabela do data source
name lojacd que ser o nome com o qual ser relacionado o banco de dados no ODBC do
windows.(Relacione agora o banco de dados para no esquecer depois).

1.if not rstemp.eof then
2.contador = rstemp.recordcount
3.rstemp.movefirst
4.rstemp.PageSize = tamanhopagina
5.maximopagina = cint(rstemp.PageCount)
6.maximoregistros = cint(rstemp.PageSize)
7.rstemp.AbsolutePage = pagina

Esta sendo realizado na primeira linha deste trecho do cdigo um teste lgico, ser feita a
verificao do conteudo selecionado pelo recordset acima visto no bloco de cdigo anterior. Caso este
recordset selecione algum registro a tela ser montada. Caso no seja selecionado nenhum registro a
tela no ser montada e o cdigo ser orientado a um comando else que esta no final do codigo fonte
onde temos uma mensagem ao usuario : Registro no localizado ...
Na linha 2 temos a criao de uma variavel de nome contador que esta armazenando o
resultado retornado pelo metodo recordcount (quantidade de registros selecionados). A linha 3 move o
cursor de volta ao primeiro registro, usamos um cursor do tipo openkeyset para contar os registros.
Para contar os registro o cursor movido ao final do banco de dados passando uma vez por cada
registro efutuando uma contagem e ao terminar de passar por todos os registros fica parado
aguardando instrues e extremamente importante fazer-mos com que o cursor volte ao primeiro
registro aja visto que ao montarmos a tela queremos que todos os registros sejam exibidos.
A linha 4 atravs do mtodo pagesize efetua a diviso da quantidade total de registros pela
quantidade de registros permitidos por pgina. Na quinta linha foi criada uma variavel nomeada
maximo pagina que tem armazenado em seu interior o resultado obtido pelo metodo
pagecount(quantidade de paginas obtidas com a paginao). Note porem que este metodo esta sendo
usado dentro da funo cint() que trata o resultado exibindo somente numeros inteiros maiores que
zero. Na linha a seguir (sexta linha) temos uma outra variavel sendo definida nomeada como maximo
pagina e armazenando a quantidade maxima de registros aceita por pagina. Ultima linha sem duvida
uma das mais importantes da pagina pois indica qual pagina ser exibida agora na tela (a partir de qual
registro exibir em tela)

registros = 0 variavel registros igual a zero.
ACR Informtica

Pg - 46
response.write "<font face=verdana size=2 color=red>Pagina " & pagina & " de " & maximopagina &
"</font><br>"

A linha acima imprime na tela a frase Pagina atuaI de quantidade totaI de paginas

response.write "<center><table width=70% ><tr>"

A linha acima cria uma tabela com comprimento de 70 porcento da medida da tela abrindo uma
linha em seguida.

Do Until rstemp.eof OR registros >= maximoregistros

A linha acima repete o bloco de cdigos abaixo at que (until) seja atingido o ultimo registro
caso tenhamos menos do que 10 registros selecionados ou at que sejam impressos 10 registros em
tela. A impresso dos registros controlada pela variavel registro que inicialmente tem valor igual a
zero sendo incrementada a cada volta do looping. Quando esta variavel atingir o valor 10
(maximoderegistros) o looping ser encerrado finalizando assim a impresso em tela dos registros.

response.write "<tr>" uma linha de tabela foi criada
response.write "<td valign=top>" uma coluna foi criada
response.write "<img src = 'imagens/" & rstemp(6) & "' width = 100 height = 100>

Foi impressa a imagem na tela, note que a referencia a coluna foi feita atravs de nmeros ao
invs de nomes como j haviamos usado antes. Isso ocorreu por que desta vez no temos um objeto
connection, a seleo foi efetuada e armazenada em um grande Array multidimensional, para
navegarmos dentro deste array so necessrias duas referencias: o numero da linha e o numero de
colunas. Como em um jogo de batalha naval, o numero de linha na verdade encontrado de acordo
com o registro que esta sendo impresso na tela no momento, ou seja, at que no seja usado o
metodo movenext estaremos ainda no registro de numero 1, aps o uso deste mtodo passaremos
ao regitro nmero dois e na prxima volta do looping estaremos no terceiro e assim at que seja
impresso o ultimo registro na tela.
Ento com base neste conceito precisamos apenas informar o numero da coluna. Que no caso
deste banco de dados a sexta coluna da tabela produtos. Coluna esta que possue informaes
sobre o nome das imagens. O navegador interpreta a linha acima e ao invs do cdigo coloca na tela a
imagem qual fizemos referenacia no cdigo. Poderiamos tambm ter armazenado a imagem em um
objeto OLE dentro do access mas isso faria com que o banco de dados ocupasse muito espao em
disco e o tornaria extremamente lento.

response.write "</td>" fechamos a coluna da imagem
response.write "<td valign=top>" abrimos a coluna para imprimir o resto das informaes sobre o cd.
response.write "<font face = verdana size = 2>"
response.write "<b>Codigo:</b> " & rstemp(0) & "<br>" Ser impresso o cdigo do cd
response.write "<b>Tipo:</b> " & rstemp(1) & "<br>" Ser impresso o Tipo de mdia
response.write "<b>Titulo:</b> " & rstemp(2) & "<br>" Ser impresso o Titulo do cd
response.write "<b>Genero:</b> " & rstemp(3) & "<br>" Ser impresso o genero ao qual pertence o cd
response.write "<b>Status:</b> " & rstemp(8) & "<br>" Ser impresso o status do cd
response.write "<b>Preo:</b> <font color = red>" & rstemp(4) & "<a href='carrinho.asp?codigo=" &
rstemp(0) & "'><img src='img/iconecarrinho.jpg' width=26 height=26 alt='Comprar'
border=0></a></font><br>"
ACR Informtica

Pg - 47

A linha acima esta carregando a pgina carrinho.asp passando como parametro o cdigo do cd
para que a pagina carrinho consiga inserir os dados do cd no carrinho.

response.write "</font></td>"
response.write "</tr><tr><td colspan = 2><hr size = 5></td></tr>"
rstemp.movenext
registros = registros + 1
Loop
response.write "</table></center><p>"
rstemp.close
set rstemp = nothing
%>

As linhas acima so responsaveis pelo fechamento da celula que usamos para relacionar os
dados do cd Usadas tambem para abertura e fechamento de uma linha com uma celula que ocupa
duas colunas onde inserida um linha horizontal com o intuito de separar o cd impresso agora do
seguinte. Temos na na seguencia um comando que faz com o interpretador da linguagem descarregue
o regsitro atual da memoria e carregue o seguinte.
O incremento da variavel registros feito para que possamos ter a certeza de que o loop que
vimos acima consiga imprimir apenas 10 ceds na tela.
O comando loop ira fazer com o imterpretador volte a linha do looping para que possa-se
imprimir o prximo cd na tela este processo ser repetido at que o imterpretador do looping Do Until
torne verdadeira a condio que encerra o looping. Para finalizar fechamos o recordset e
descarregamos da memria para que a prxima tela seja impressa com os cd seguintes (
necessrio limpar um recordset para que este possa receber novos valores, caso no limpo trar
consigo os valores da pgina anterior repetindo o mesmo cdigo na tela ao invs do novo)


<p>&nbsp;</p>
<p><font face="Verdana" size="2">Clique no nmero da pgina que deseja visualizar:
<%
pad = "0"
scriptname = request.servervariables("script_name")
for counter = 1 to maximopagina
if counter >= 10 then
pad = ""
End if
ref ="<a href='" & scriptname
ref = ref & "?qualpagina="& counter
ref = ref & "&pagesize=" & tamanhopagina
ref = ref & "&sqlQuery=" & server.URLencode(SQL)
ref = ref & "'>" & pad & counter & "</a>"
response.write ref & " "
next
%> <b><br>
Nmero total de registro: <%=contador%></b> </font> </p>
<%
else
%>
ACR Informtica

Pg - 48
<div align="center"><font face="Verdana" size="2" color="#FF0000">Registro no
encontrado. </font> </div>
<%end if%>
</body>
</html>

Este ultimo bloco de codigos responsavel pela impressao do links da paginao efetuada em
tela, em primeira instancia declarada um variavel pad que igual a zero em formato string (note que
o zero esta entre ) o que indica que no sera usada para calculos em seguida declarada uma
variavel scriptname que usada para armazenar o nome da pagina que esta sendo processada
(busca.asp).
Temos um looping do tipo for que ir repetir uma operao at que seja impresso o link pra
ultima pagina criada pelo recordset.
Dentro deste looping temos o codigo que far a impresso do link em tela note que temos um
expresso condicional dentro deste looping ( se counter > que 10 , pad= ) . Esta condicional esta
informando ao intrerpretador da linguagem que se counter (variavel usada no looping for para contar a
impressao dos links) for maior que 10 a variavel pad ser igual igual a nulo. A variavel pad tem um
nico papel no codigo ela usada para imprimir o Zero antes dos link de numero inferior a 10. Aps o
termino do codigo do looping ser impresso na tela a quantidade total de registros que havia sido
armazenada dentro da variavel contador.


Pagina carrinho.asp

Nesta pgina ser efetuado o calculo somatorio dos cds comprados pelo usuario. O usuario tera
total controle sobre sua compra podendo colocar ou retirar cds do carrinho ou ainda recalcular a pagina
trocando o a quantidade de um determinado cd ou cds.

Cdigo da pagina ASP :

Quando usuario coloca um cd no carrinhoesta pagina precisa saber se o primeiro cd de uma
nova venda ou se um cd a mais em um venda em andamento. Alm disso precisa checar se a venda
j no foi concluida, para isso criamos ao novo usuario um numero que identifica sua venda. Este
numero ser armazenado dentro de uma session conhecida como codigodestavenda. Toda vez que o
usuario entrar no carrinho ser verificado as condies de sua venda. Caso necessario ser criada
uma nova venda caso no necessrio ser retomada a anterior em andamento para concluso da
compra.

<%

set cn = server.CreateObject("adodb.connection")
cn.open "dsn=Lojacd"

O cdigo acima responsavel pela conexo com o banco de dados que neste caso esta sendo
feita pelo metodo odbc.

set venda = server.createobject("adodb.recordset")
pedido = request.cookies("aspcd")("codigopedido")

ACR Informtica

Pg - 49
Nas linhas acima foi criado um recordset com nome de venda e foi criado uma variavel pedido
cujo para preencher o valor da variavel foi requisitado um cookie que pode ou no exisitir na maquina
(caso exista teremos uma venda em andamento caso no ser criada uma nova venda.)

if pedido <> "" then
venda.open("select * from vendas where codigovenda = " &pedido),cn
if venda.eof then
pedido = ""

O bloco de cdigos acima um expresso condicional que esta testando o conteudo da variavel
pedido, caso pedido seja diferente de nulo (venda em andamento). Ser aberto o recordset criado para
localizao da venda na tebela vendas, a linha seguinte esta checando se a venda foi localizada na
tabela e caso no tenha sido localizada o pedido imediatamante ser igual a nulo. Caso a venda seja
encontrada continua-se o cdigo. O cdigo abaixo esta checando se o campo opcaopgmt diferente
de nulo, caso este seja diferente de nulo o pedido ser igal a nulo tendo visto que este campo s ser
preenchido na ultima pagina da loja virtual quando a venda estver concluida. Este campo preenchido
indica que a venda foi encerrada e sendo no temos como continuar com ela.
Caso o campo opcaopgmt seja vazio retoma-se o numero da venda para continuar o
precessamento do cdigo.

else
if venda("opcaopgmt") <> "" then
pedido = ""
else
session("codigodestavenda") = pedido
end if
end if
venda.close
end if

Na seguencia de cdigo abaixo estamos trabalhando com a possibilidade de o pedido ser igual a
nulo, ou a venda no foi iniciada ainda (primeiro cd dentro do carrinho) ou no conseguiu satisfazer
algumadas condicionais do cdigo acima.

if pedido = "" then
venda.open ("select max(codigovenda) as maiorcodigo from vendas"),cn
if not venda.eof then
session("codigodestavenda") = venda("maiorcodigo")+1
else
session("codigodestavenda") = 1
end if

Na seguencia de abaixo estamos atualizando a tabela vendas(estamos criando a venda) e
tambem estamos criando o cookie que a pagina carrinho.asp procura pra preecher a variavel pedido no
inicio do cdigo, na linha seguinte estamos informando ao explorer quanto tempo o cookie dever
existir criado na maquina (no caso data de hoje mais 5 dias).

cn.execute ("insert into vendas(codigovenda) values ("&session("codigodestavenda")&")")
response.cookies("aspcd")("codigopedido") = session("codigodestavenda")
response.cookies("aspcd").expires = date + 5
ACR Informtica

Pg - 50
end if
%>

<html>
<head>
<title>Carrinho de Compras</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF">
<form action=carrinho.asp method=post>
<table width="100%" border="0" cellspacing="4" cellpadding="0">

<tr bgcolor="#6666FF">
<td colspan="7" height="45">
<div align="center"><b><font color="#FFFFFF">COMPRAS</font></b></font></div>
</td>
</tr>

<tr>
<td colspan="7">&nbsp;</td>
</tr>
<tr>
<td colspan="7">&nbsp;</td>
</tr>
<tr bgcolor="#6666FF">
<td>
<center>
<font color="#FFFFFF" face=Verdana size=1><b>C&oacute;digo: </b></font>
</center>
</td>
<td>
<div align="center">
<font color="#FFFFFF face="Verdana" size="1"><b>Titulo:</b></font>
</div>
</td>
<td width="12%">
<center>
<font color="#FFFFFF" face="Verdana" size="1"><b>Pre&ccedil;o<br> Unit&aacute;rio:
</font> </b>
</center>
</td>
<td>
<div align="center">
<font color="#FFFFFF" face="Verdana" size="1"><b>Quantidade:</font></b>
</div>
</td>
<td colspan="3">
<center>
<font color="#FFFFFF" face="Verdana" size="1"><b>Total :</b></font>
ACR Informtica

Pg - 51
</center>
</td>
</tr>
<%
set vendido = server.createobject("adodb.recordset")

Na linha acima estamos criando um recordset chamado vanedido onde sero colocados todos
os cds comprados pelo usuario.

if request.querystring("codigo")<> "" then

Na linha acima estamos fazendo um teste lgico para verificar se a query string que foi originada
pela pagina busca.asp diferente de vazia. Caso seja diferente de vazia segue-se com o cdigo
abrindo o recordset vendido e localizando o cd escolhido pelo usuario na tabela itens de uma venda.
Este processo esta sendo realizado por que o novo cd s ser inserido na tabela se no existir um
outro igual j dentro da tabela.

vendido.open "select * from itensdeumavenda where codigovenda = "&_
session("codigodestavenda")&" and codigocd ='" & request.querystring("codigo")&"'",cn

if vendido.eof then
cn.execute("insert into itensdeumavenda(codigovenda,codigocd,quantidade) values (" &_
session("codigodestavenda")& "," & request.querystring("codigo") & ",1)")
end if

vendido.close

end if

A seguir temos a rotina responsavel pelo recalculo da tela, toda vez que o usuario entrar no
carrinho ou apertar o botao recalcular teremos o recalculo da pagina. (ao se apertar recalcular a
pagina carrinho sera enviada para carinho.asp, ou seja ser reprocessada). Os unicos elementos de
formulario que temos na tela so os 3 botoes ao final da pagina e os campos quantidade. Os campos
quantidade tem como nome de variavel o numero do cdigo do cd como poder ser visto mais abaixo.
Como ser processado o recalculo ?. O recalculo ser processado de uma forma bem simples,
os cds comprados pelo usuario sero excluidos da tabela itensdeumavenda e sero incluidos
novamente com base nas informaes fornecidas pelo usuario antes de apertar o boto recalcular.
Vamos imaginar a seguinte situao, um usuario compra um cd de sua cantora predileta, s que
resolve dar um cd igual de presente a um amigo. Ento o que ele faz, ele troca o numero um por dois
no campo quantidade e aperta recalcular. Os cds sero excluidos da tabela para que possam ser re-
incluidos na tabela com os novos valores com base no que o usuario digitou no campo quantidade.

if request.form <> "" then

A linha acima esta testando se o conteudo dos campos quantidade de cada cd do formulario
diferente de vazio e caso sejam diferente de vazio sero apagados da tabela todos os cds
pertencentes a este usuario.

cn.execute("delete * from itensdeumavenda where codigovenda = " &_
session("codigodestavenda"))
ACR Informtica

Pg - 52

A linha abaixo responsavel pela insero dos registros de novo na tabela, o comando for each
esta realizando uma rotina de looping, a linhas entre o for each e o next sero executadas uma vez
para cada campo de formulario que estiver na memoria (ou seja uma vez para cada cd)

for each field_name in request.form
if field_name <> "B1" and request.form(field_name)<>"0" then

A linha acima esta testando se o nome da variavel diferente de B1 e ao mesmo tempo tem
conteudo diferente de zero. feito o teste de B1 porque B1 um boto do tipo submit e o valor que
traz consigo recalcular e o teste do zero feito por que o zero esta sendo usado para tirar um cd
do carrinho sendo assim se o valor do campo for igual a zero o cd no ser recolocado dentro do
carrinho.

cn.execute("insert into itensdeumavenda(codigovenda,codigocd,quantidade) values (" &_
session("codigodestavenda")&"," & field_name & "," & request.form(field_name) &")")
end if
next

end if

subtotal = 0

Na linha acima estamos declarando uma variavel chamada subtotal que igual a zero, nas
linhas abaixo estamos criando um recordset produto que ser usado mais tarde e estamos abrindo o
recordset vendido que traz armazenado dentro de si o resultado de uma busca de todos os cds
comprados pelo usuario para que possamos comear a montar a tela.

set produto = server.createobject("adodb.recordset")
vendido.open "select * from itensdeumavenda where codigovenda = " &_
session("codigodestavenda"),cn

if not vendido.eof then 'se vendido no for vazio ento
vendido.movefirst 'volte ao primeiro registro
do while not vendido.eof

A linha acima esta iniciando uma rotina de looping que repetira as linhas abaixo at que seja
impresso na tela o utlimo cd selecionado pelo recordset vendido.

%>

<tr bgcolor="#CCCCFF">
<td>
<div align="right">
<b><i><font face="Verdana" size="1" color="#000000"><%=vendido("codigocd")%>
</font></i></b>
</div>
</td>

A linha acima imprime na tela o codigo do cd na tela.
ACR Informtica

Pg - 53
<%
produto.open "select * from produtos where codigo='"& vendido("codigocd")& "'",cn
%>

A linha acima abre o recordset produto e seleciona na tabela produtos o cd que esta sendo
impresso na tela para que se possa ter acesso a todas informaes sobre o cd tais como : nome, valor,
origem etc ...No vamos usar s o recordset vendido que vinha em uso para imprimir os cds
comprados na tela por que esta s traz na memria a tabela itens de uma venda que possui apenas
os campos cdigo da venda, o cdigo do cd e a quantidade de cds comprados.

<td>
<b><i><font face="Verdana" size="1" color="#000000"><%=produto("titulo")%>
</font></i></b>
</td>

A linha acima imprime na tela o titulo do cd na tela.

<td width="12%">
<div align="right">
<b><i>
<font face="Verdana" size="1" color="#000000"><%=formatcurrency(produto("preco"))%>
</font></i></b>
</div>
</td>

A linha acima imprime na tela o valor unitario do cd na tela.


<td>
<div align="right">
<font face="Verdana" size="1" color="#000000"><b><i>
<input type=text name="<%=vendido("codigocd")%>" size=5 value="<%=vendido("quantidade")%>">
</i></b>
</font>
</div>
</td>

A linha acima imprime na tela a quantidade de cds comprados dentro de um campo de
formulario para que o usuario possa modifica-los para recalcular a pagina.

<td colspan="3">
<div align="right">
<font face="Verdana" size="1" color="#000000"><b><i>
<%=formatcurrency(vendido("quantidade")*produto("preco"))%></i></b>
</font></div>
</td>

A linha acima imprime na tela o total parcial que resultado de uma multiplicao do valor do cd
pela quantidade de cds comprados.

ACR Informtica

Pg - 54
</tr>

<%
subtotal = subtotal + (vendido("quantidade") * produto("preco"))
produto.close
vendido.movenext
loop

Cada vez que o interpretador passar pela rotina acima durante o looping a variavel subtotal que
era igual a zero sofrera o incremento do resultado da multiplicao do valor unitario do cd pela
quantidade comprada, crando assim um total geral que ser exibido ao usuario nas linhas abaixo.

session("subtotal") = subtotal

Na linha acima foi criada uma session subtotal que dever armazenar o contedo do subtotal
para que no seja necessrio repetir-se a rotina na pagina seguinte para chegar ao mesmo valor.

cn.execute "update vendas set valorvenda = cdbl('" & formatnumber(subtotal) & "') where codigovenda
= "&_ session("codigodestavenda")
%>

Na linha acima foi feita uma atualizao na tabela vendas, foi gravado o valor final da venda sem
o acrscimo do frete na coluna vendas.

<tr bgcolor="#6666FF">
<td colspan="4">
<div align="right">
<font face="Verdana" size="1" color="#FFFFFF"><b>Subtotal:</font></b></font>
</div>
</td>
<td colspan="3" width="14%">
<div align="right">
<b><i>
<font color="#FFFFFF" face="Verdana"size="1"><%=formatcurrency(session("subtotal"))%>
</i></b></font>
</div>
</td>

Na linha acima foi impresso na tela o valor final da venda que esta armazenado na session
subtotal.

</tr>
<tr>
<td colspan="7">
<font color="#000000" face="Verdana" size="2">
Para excluir algum item mude sua quantidade para 0 e clique em recalcular
</font>
</td>
</tr>

ACR Informtica

Pg - 55
<tr>
<td colspan="7">
<font color="#000000" face="Verdana" size="2">
Para mudar a quantidade de algum item,digite a nova quantidade e clique em recalcular
</font>
</td>
</tr>

</table>
<%end if%>

<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr bgcolor="#6666FF" valign="middle">
<td><font face="Verdana" size="1"></font></td>
<td><font face="Verdana" size="1">&nbsp;</font></td>
<td><font face="Verdana" size="1"></font></td>
</tr>
<tr bgcolor="#CCCCFF" valign="middle">
<td height="40">
<center>
<input type="submit" name="B1" value="Recalcular">
&nbsp;
</center>
</td>
<td>
<center>
<input type="button" name="Button" value="Continuar" onClick="window.location =
'status.asp?tipo=CD&status=tophits'">
</center>
</td>
<td>
<center>
<input type="button" name="Submit2" value="Concluir"
onClick="window.location='entrarcaixa.htm'">
&nbsp;
</center>
</td>

</tr>

<tr bgcolor="#666666" valign="middle">
<td bgcolor="#6666FF"><font face="Verdana" size="1">&nbsp;</font></td>
<td bgcolor="#6666FF"><font face="Verdana" size="1"></font></td>
<td bgcolor="#6666FF"><font face="Verdana" size="1"></font></td>
</tr>

</table>
</form>
</body>
</html>
ACR Informtica

Pg - 56

Entra caixa.asp

A pagina entracaixa.asp vem em seguida pagina entracaixa.htm, a pagina entracaixa.htm nada
mais do que um formulrio com os campos e-mail e senha que ser enviado para a pagina
entracaixa.asp que ir fazer a validao do login e a abertura da ficha de pedido do cliente na tela.

<%
set cn = server.createobject("adodb.connection")
cn.open "dsn=lojacd"
%>

Nas linhas acima temos somente a conexo ao banco de dados.
<html>

<head>
<title>Caixa</title>
</head>
<body bgcolor="#FFFFFF">
<%
set logar = server.createobject("adodb.recordset")
set venda = server.createobject("adodb.recordset")

Nas linhas acima temos a criao de dois objetos do tipo recordset que sero usados para
selecionar o usurio na tabela cadastro e os produtos do usurio na tabela itens de uma venda como
pode ser visto nas linhas que seguem abaixo:

venda.open "select * from itensdeumavenda where codigovenda =
"&session("codigodestavenda"),cn
logar.open "select * from cadastro where senha = '" & request("senha") & "' and email = '" &
request("email") & "'",cn

Na linha abaixo temos um teste lgico sendo realizado, esta sendo verificado se o recordset
logar trouxe algum registro selecionado. A traduo da linha abaixo seria se logar no vazio ento e
a tela ser montada caso o recordset seja vazio ao invez de se montar a tela o interpretador do cdigo
ser conduzido a um else no final do cdigo que iraapresentar um mensagem ao usuario.

if not logar.eof then
%>
<form method="post" action="confirma.asp">
<table width="100%" border="0" cellspacing="4" cellpadding="2">
<tr bgcolor="#FFFFFF">
<td colspan="7" height="45">
<div align="center"><font color="#333333" size="4" face="Verdana"><b><font
color="#6666FF">FICHA
DE PEDIDO</font></b></font></div>
</td>
</tr>
<tr>
<td colspan="7"><font face="Verdana"></font></td>
ACR Informtica

Pg - 57
</tr>
<tr bgcolor="#6666FF">
<td>
<center>
<font color="#FFFFFF"><b><font face="Verdana" size="1">C&Oacute;DIGO</font></b></font>
</center>
</td>
<td>
<div align="center"><font color="#FFFFFF"><b><font face="Verdana"
size="1">TITULO</font></b></font></div>
</td>
<td width="12%">
<center>
<font color="#FFFFFF"><b><font face="Verdana" size="1">PRE&Ccedil;O</font></b></font>
</center>
</td>
<td>
<div align="center"><font color="#FFFFFF"><b><font face="Verdana"
size="1">QUANTIDADE</font></b></font></div>
</td>
<td colspan="3">
<center>
<font color="#FFFFFF"><b><font face="Verdana" size="1">TOTAL</font></b></font>
</center>
</td>
</tr>
<%
do while not venda.eof

A linha acima uma rotina de looping far com que todo o cdigo abaixo at a expresso loop
seja repetido at que seja satisfeita sua condio que imprimir o ultimo registro selecionado na tela.
J na linha abaixo temos a criao e abertura de um recordset chamado produto este ser usado para
localizar o produto na tabela produstos, pois com o recordset venda temos acesso a tabela
itensdeumavenda que possui os campos cdigo venda, cdigo cd e quantidade. Faltam informaes
para que se possa construir a tela como por exemplo nome do cd, preo, origem e etc...

set produto = server.createobject("adodb.recordset")
produto.open "select * from produtos where codigo='" & venda("codigocd") & "'",cn
%>

A partir deste ponto temos a contruo da tela que o usurio ir ver quando entrar nesta pgina.

<tr bgcolor="#CCCCFF">
<td>
<div align="right"><font face="Verdana" size="1"
color="#000000"><%=venda("codigocd")%></font></div>
</td>

Na linha acima temos a impresso do cdigo do cd na tela.

ACR Informtica

Pg - 58
<td><font face="Verdana" size="1" color="#000000"><%=produto("titulo")%></font></td>

Na linha acima temos a impresso do nome do cd na tela.

<td width="12%">
<div align="right"><font face="Verdana" size="1"
color="#000000"><%=formatcurrency(produto("preco"))%></font></div>
</td>

Na linha acima temos a impresso do valor do cd na tela.

<td>
<div align="right"> <font face="Verdana" size="1" color="#000000">
<%=venda("quantidade")%></font></div>
</td>

Na linha acima temos a impresso da quantidade do cd na tela.

<td colspan="3">
<div align="right"><font face="Verdana" size="1"
color="#000000"><%=formatcurrency(venda("quantidade")*produto("preco"))%></font></div>
</td>

Na linha acima temos a impresso da quantidade multiplicada pelo valor do cd na tela.

</tr>
<%
produto.close
venda.movenext
loop
%>

Na linha acima temos o fechamento do recordset produto, o interpretador ir avanar ao
prximo registro selecionado e por fim temos o comando loop que far com as linhas acima sejam
repetidas para a impresso do registro selecionado na tela desde que no seja o final do arquivo.

<tr bgcolor="#6666FF">
<td colspan="4">
<div align="right"><font face="Verdana"><b><font size="1"
color="#FFFFFF">SUBTOTAL:</font></b></font></div>
</td>
<td colspan="3">
<div align="right"><font color="FFFFFF"><b><font face="Verdana"
size="1"><i><%=formatcurrency(session("subtotal"))%></i></font></b></font></div>
</td>

Na linha acima foi resgatado e impresso em tela o valor de uma session que foi criada na pagina
carrinho.asp.

</tr>
ACR Informtica

Pg - 59
<tr bgcolor="#6666FF">
<td colspan="4">
<div align="right"><b><font face="Verdana" size="1"
color="#FFFFFF">FRETE:</font></b></div>
</td>
<td colspan="3" width="14%">
<div align="right"><font color="FFFFFF"><b><font size="1" face="Verdana"><%

set frete = server.createobject("adodb.recordset")
frete.open "select * from estado where estado like '%"&logar("estado")&"%'",cn
response.write formatcurrency(frete("frete"))
session("frete")=frete("frete")

Nas linhas acima temos a rotina que vai calcular o frete para entrega do produto. Na primeira
linha criamos um recodsetset chamado frete. Na segunda linha estamos fazendo uma selao na
tabela estado com base no estado que o ususario informou ao se cadastrar na loja virtual (o recordset
logar tem todas as informaes sobre o usurio.). Na terceira linha temos a impresso do valor do frete
na tela e na ultima linha temos a criao de uma session com o valor do frete para que no seja
necessrio clacular este de novo.

%> </font> </b></font></div>
</td>
</tr>
<tr bgcolor="#6666FF">
<td colspan="4">
<div align="right"><b><font face="Verdana" size="1"
color="#FFFFFF">TOTAL:</font></b></div>
</td>
<td colspan="3" width="14%">
<div align="right"><font size="1" face="Verdana" color="#FFFFFF"><b> <%

Temos a seguir o calculo do total geral, ou seja o total gasto mais o valor do frete, foi novamente
resgatado o valor da session subtotal que foi criada na pagina carrinho.asp, esta foi armazenada na
varivel a. Na linha seguinte temos a soma de a(subtotal) mais o valor do frete. A seguir temos a
impresso de a na tela. E finalizando a rotina temos a criao de uma session chamada de geral
armazenando o valor de a para que no seja necessrio refazer este calculo de novamente mais tarde.

a = session("subtotal")
a = a + frete("frete")
response.write formatcurrency(a)
session(geral)=a
%> </b></font></div>
</td>
</tr>
</table>
<table width="100%" border="0" cellspacing="4" cellpadding="2">
<tr>
<td width="130" bgcolor="#6666FF"> <font size="1" color="#FFFFFF"><b><font
face="Verdana">Nome:</font>
</b></font></td>
ACR Informtica

Pg - 60
<td bgcolor="#CCCCFF"><font face="Verdana" size="2"><%=logar("nome")%>
<input type=hidden name="nome" value="<%=logar("nome")%>">
</font></td>
</tr>

Na linha acima temos a impresso do nome na tela e a criao de um campo oculto contendo o
mesmo valor para que no seja necessrio conectar-se a tabela cadastro na prxima tela.

<tr>
<td width="130" bgcolor="#6666FF"> <font size="1" color="#FFFFFF"><b><font
face="Verdana">Cpf
:</font> </b></font></td>
<td bgcolor="#CCCCFF"><font face="Verdana" size="2"><%=logar("cpf")%>
<input type=hidden name="cpf" value="<%=logar("cpf")%>">
</font></td>
</tr>

Na linha acima temos a impresso do cpf na tela e a criao de um campo oculto contendo o
mesmo valor para que no seja necessrio conectar-se a tabela cadastro na prxima tela.

<tr>
<td bgcolor="#6666FF" width="130"> <font size="1" color="#FFFFFF"><b><font
face="Verdana">Rg
:</font> </b></font></td>
<td bgcolor="#CCCCFF"><font face="Verdana" size="2"><%=logar("rg")%>
<input type=hidden name="rg" value="<%=logar("rg")%>">
</font></td>
</tr>

Na linha acima temos a impresso do rg na tela e a criao de um campo oculto contendo o
mesmo valor para que no seja necessrio conectar-se a tabela cadastro na prxima tela.

<tr>
<td width="130" bgcolor="#6666FF"><font size="1" color="#FFFFFF"><b><font
face="Verdana">Org&atilde;o
Emissor:</font></b></font></td>
<td bgcolor="#CCCCFF"><font face="Verdana" size="2"><%=logar("orgaoemissor")%>
<input type=hidden name="orgaoemissor" value="<%=logar("orgaoemissor")%>">
</font></td>
</tr>

Na linha acima temos a impresso do rgo emissor na tela e a criao de um campo oculto
contendo o mesmo valor para que no seja necessrio conectar-se a tabela cadastro na prxima tela.

<tr>
<td width="130" bgcolor="#6666FF"> <font size="1" color="#FFFFFF"><b><font
face="Verdana">Endere&ccedil;o
:</font> </b></font></td>
<td bgcolor="#CCCCFF"><font face="Verdana" size="2"><%=logar("endereco")%>
<input type=hidden name="endereco" value="<%=logar("endereco")%>">
ACR Informtica

Pg - 61
</font></td>
</tr>

Na linha acima temos a impresso do endereo na tela e a criao de um campo oculto
contendo o mesmo valor para que no seja necessrio conectar-se a tabela cadastro na prxima tela.

<tr>
<td width="130" bgcolor="#6666FF"> <font size="1" color="#FFFFFF"><b><font
face="Verdana">Bairro
:</font> </b></font></td>
<td bgcolor="#CCCCFF"><font face="Verdana" size="2"><%=logar("bairro")%>
<input type=hidden name="bairro" value="<%=logar("bairro")%>">
</font></td>
</tr>

Na linha acima temos a impresso do bairro na tela e a criao de um campo oculto contendo o
mesmo valor para que no seja necessrio conectar-se a tabela cadastro na prxima tela.

<tr>
<td width="130" bgcolor="#6666FF"><font size="1" color="#FFFFFF"><b><font
face="Verdana">Cep
: </font></b></font></td>
<td bgcolor="#CCCCFF"><font face="Verdana" size="2"><%=logar("cep")%>
<input type=hidden name="cep" value="<%=logar("cep")%>">
</font></td>
</tr>

Na linha acima temos a impresso do cep na tela e a criao de um campo oculto contendo o
mesmo valor para que no seja necessrio conectar-se a tabela cadastro na prxima tela.

<tr>
<td width="130" bgcolor="#6666FF"> <font size="1" color="#FFFFFF"><b><font
face="Verdana">Cidade
:</font> </b></font></td>
<td bgcolor="#CCCCFF"><font face="Verdana" size="2"><%=logar("cidade")%>
<input type=hidden name="cidade" value="<%=logar("cidade")%>">
</font></td>
</tr>

Na linha acima temos a impresso da cidade na tela e a criao de um campo oculto contendo o
mesmo valor para que no seja necessrio conectar-se a tabela cadastro na prxima tela.

<tr>
<td width="130" bgcolor="#6666FF"> <font size="1" color="#FFFFFF"><b><font
face="Verdana">Estado
:</font> </b></font></td>
<td bgcolor="#CCCCFF"><font face="Verdana" size="2"><%=logar("estado")%>
<input type=hidden name="estado" value="<%=logar("estado")%>">
</font></td>
</tr>
ACR Informtica

Pg - 62

Na linha acima temos a impresso do estado na tela e a criao de um campo oculto contendo o
mesmo valor para que no seja necessrio conectar-se a tabela cadastro na prxima tela.

<tr>
<td width="130" bgcolor="#6666FF"> <font size="1" color="#FFFFFF"><b><font
face="Verdana">Pa&iacute;s
:</font> </b></font></td>
<td bgcolor="#CCCCFF"><font face="Verdana" size="2"><%=logar("pais")%>
<input type=hidden name="pais" value="<%=logar("pais")%>">
</font></td>
</tr>

Na linha acima temos a impresso do pas na tela e a criao de um campo oculto contendo o
mesmo valor para que no seja necessrio conectar-se a tabela cadastro na prxima tela.

<tr>
<td width="130" bgcolor="#6666FF" height="39"> <font size="1" color="#FFFFFF"><b><font
face="Verdana">Telefone:</font>
</b></font></td>
<td bgcolor="#CCCCFF" height="39"><font face="Verdana"
size="2"><%=logar("telefone")%>
<input type=hidden name="telefone" value="<%=logar("telefone")%>">
</font></td>
</tr>

Na linha acima temos a impresso do telefone na tela e a criao de um campo oculto contendo
o mesmo valor para que no seja necessrio conectar-se a tabela cadastro na prxima tela.

<tr>
<td width="130" bgcolor="#6666FF"> <font size="1" color="#FFFFFF"><b><font
face="Verdana">Fax
:</font> </b></font></td>
<td bgcolor="#CCCCFF"><font face="Verdana" size="2"><%=logar("fax")%>
<input type=hidden name="fax" value="<%=logar("fax")%>">
</font></td>
</tr>

Na linha acima temos a impresso do fax na tela e a criao de um campo oculto contendo o
mesmo valor para que no seja necessrio conectar-se a tabela cadastro na prxima tela.

<tr>
<td width="130" bgcolor="#6666FF" height="19"> <font color="#FFFFFF"><b><font size="1"
face="Verdana">E-mail
: </font></b></font></td>
<td bgcolor="#CCCCFF" height="19"><font face="Verdana" size="2"><%=logar("email")%>
<input type=hidden name="email" value="<%=logar("email")%>">
</font></td>
</tr>

ACR Informtica

Pg - 63
Na linha acima temos a impresso do e-mail na tela e a criao de um campo oculto contendo o
mesmo valor para que no seja necessrio conectar-se a tabela cadastro na prxima tela.

<tr>
<td width="0" bgcolor="#6666FF" height="11" valign="top"><font color="#FFFFFF"><b><font
face="Verdana" size="1">Endere&ccedil;o
para entrega:</font></b></font></td>
<td bgcolor="#CCCCFF">
<p> <font face="Verdana" size="2">
<input type="radio" name="entrega" value="mesmo endere&ccedil;o">
mesmo endere&ccedil;o
<input type="radio" name="entrega" value="outro endere&ccedil;o">
outro endere&ccedil;o</font></p>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><font face="Verdana" size="2">Nome:</font></td>
<td> <font face="Verdana" size="2">
<input type="text" name="nomeentrega" size="35">
</font></td>
</tr>
<tr>
<td><font face="Verdana" size="2">Endere&ccedil;o:</font></td>
<td> <font face="Verdana" size="2">
<input type="text" name="enderecoentrega" size="35">
</font></td>
</tr>
<tr>
<td><font face="Verdana" size="2">Bairro:</font></td>
<td> <font face="Verdana" size="2">
<input type="text" name="bairroentrega" size="20">
</font></td>
</tr>
<tr>
<td><font face="Verdana" size="2">Cidade:</font></td>
<td> <font face="Verdana" size="2">
<input type="text" name="cidadeentrega" size="20">
</font></td>
</tr>
<tr>
<td><font face="Verdana" size="2">Estado:</font></td>
<td> <font face="Verdana" size="2">
<input type="text" name="estadoentrega" size="3" maxlength="3">
</font></td>
</tr>
<tr>
<td><font face="Verdana" size="2">CEP:</font></td>
<td> <font face="Verdana" size="2">
<input type="text" name="cepentrega" size="9" maxlength="9">
</font></td>
</tr>
ACR Informtica

Pg - 64
</table>
</td>
</tr>
<tr>
<td width="0" bgcolor="#6666FF" height="11" valign="top"><font color="#FFFFFF"><b><font
face="Verdana" size="1">Forma
de pagamento:</font></b></font></td>
<td bgcolor="#CCCCFF">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<center>
<b><font face="Verdana"><font face="Verdana"><font size="2"></font></font></font></b>
</center>
</td>
<td>
<center>
<font face="Verdana" size="2"><b> Banco </b> </font>
</center>
</td>
<td>
<center>
<font face="Verdana" size="2"><b> Ag&ecirc;ncia </b> </font>
</center>
</td>
<td>
<center>
<font face="Verdana" size="2"><b> Conta </b> </font>
</center>
</td>
<td>
<center>
<font face="Verdana" size="2"><b> Nominal </b> </font>
</center>
</td>
</tr>
<tr>
<td> <font face="Verdana" size="2">
<input type="radio" name="pagamento" value="Dep&oacute;sito no Ita&uacute;">
</font></td>
<td><font face="Verdana" size="2">Ita&uacute;</font></td>
<td><font face="Verdana" size="2">xxxx</font></td>
<td><font face="Verdana" size="2">xxxxx-x</font></td>
<td><font face="Verdana" size="2">ASP CD's ON-LINE</font></td>
</tr>
<tr>
<td> <font face="Verdana" size="2">
<input type="radio" name="pagamento" value="Dep&oacute;sito no Bradesco">
</font></td>
<td><font face="Verdana" size="2">Bradesco</font></td>
ACR Informtica

Pg - 65
<td><font face="Verdana" size="2">xxx-x</font></td>
<td><font face="Verdana" size="2">xxxxx-x</font></td>
<td><font face="Verdana" size="2">ASP CD's ON-LINE</font></td>
</tr>
<tr>
<td> <font face="Verdana" size="2">
<input type="radio" name="pagamento" value="Dep&oacute;sito no Santander">
</font></td>
<td><font face="Verdana" size="2">Santander</font></td>
<td><font face="Verdana" size="2">xxx</font></td>
<td><font face="Verdana" size="2">xxxxxx-xx</font></td>
<td><font face="Verdana" size="2">ASP CD's ON-LINE</font></td>
</tr>
<tr>
<td colspan="5"> <font face="Verdana" size="2"> <font size="1">
<input type="radio" name="pagamento" value="Cart&atilde;o" checked>
<b><font color="#000000">Cart&atilde;o:
<select name="cartao">
<option value="CREDICARD">CREDICARD</option>
<option value="MASTERCARD">MASTERCARD</option>
<option value="DINER'S">DINER'S</option>
<option value="VISA">VISA</option>
<option value="AMEX">AMEX</option>
</select>
N&ordm;
<input type="text" name="numcartao" size="16" maxlength="16">
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Validade:
<input type="text" name="validade" value="00/0000" size="7" maxlength="7">
CPF do Titular:
<input type="text" name="cpfti" size="15">
</font></b></font> </font></td>
</tr>
</table>
</td>
</tr>
</table>
<center>
<br>
<input type="submit" name="confirmar" value="Confirmar Pedido">
</center>
</form>
<%
else
response.write ("<center><h3> Os Dados No conferem ou voc ainda no esta cadastrado
!!!</h3><p><a href=cadastro.htm>Cadastrar agora</a></center>")
end if

Nas linhas acima temos o else que esta ligado com o se logar no vazio do comeo do
cdigo.
ACR Informtica

Pg - 66

%>
</body>
</html>


Confirma.asp

Nesta pgina o usurio confirma sua compra e finaliza seu pedido enviando um e-mail ao
administrador da loja virtual.

<%
set cn = server.CreateObject("adodb.connection")
cn.open "dsn=lojacd"

Nas linhas acima foi criada uma conexo ao banco de dados.

set venda = server.createobject("adodb.recordset")
venda.open "select * from itensdeumavenda where codigovenda = "&session("codigodestavenda"),cn

Nestas linhas foi criado um recordset chamado venda e foram selecionados todos os cds
comprados pelo usuario na tabela itens de uma venda.

set pagamento=server.createobject("adodb.recordset")
pagamento.open "update vendas set opcaopgmt='cartao' where
codigovenda="&session("codigodestavenda"),cn

Nas linhas acima foi criado um recordset chamado pagamento que devera atualizar a tabela
vendas preenchendo o campo opcaopgmt ( se este campo for preenchido a venda ser dada por
encerrada pelo sistema lembre-se do carrinho.asp)

Dim str

Foi declarada uma varivel chamada de str. Nas linhas que seguem abaixo vamos preencher
esta varivel str com o contedo que ser enviado como corpo do e-mail ao administrador do site.

str = "====== PEDIDO ======" & chr(10) & chr(10)

Acrescenta ao corpo do e-mail o valor entre e cada chr(10) representa uma quebra de linha.

do while not venda.eof

Na linha acima temos a rotina de looping que ir repetir as linhas abaixo como j foi visto antes
na pagina que estudamos anteriormente.

set produto = server.createobject("adodb.recordset")
produto.open "select * from produtos where codigo = '"&venda("codigocd")&"'",cn

Foi criado e aberto um recordset chamdo produto para que se possa buscar as informaes que
faltam sobre os cds para montar o corpo do e-mail corretamente.
ACR Informtica

Pg - 67

str = str & "Cdigo:" & venda("codigocd") & " " & chr(10)

Foi acrescentado ao corpo do e-mail o cdigo do cd.

str = str & "Prod.:" & produto("titulo") & " " & chr(10)

Foi acrescentado ao corpo do e-mail o titulo do cd.

str = str & "Preo Unit.:" & formatcurrency(produto("preco")) & " " & chr(10)

Foi acrescentado ao corpo do e-mail o valor do cd.
str = str & "Quant.:" & venda("quantidade") & " " & chr(10)

Foi acrescentado ao corpo do e-mail a quantidade de cds comprados.

str = str & "Total Unit.:" & formatcurrency(venda("quantidade") * produto("preco")) &" " & chr(10) &
chr(10)

Foi acrescentado ao corpo do e-mail o resultado da multiplicao do valor do cd pela quantidade de
cds comprados gerando assim o total.

produto.close
venda.movenext
loop

Foi fechado o recordset produto, o interpretador foi conduzido ao prximo registro e o comando
looping fez com que o interpretador volta-se ao inicio do looping para repetir as linhas acima desde que
no esteja no final do arquivo( aps ultimo registro)

str = str & "Subtotal: " & formatcurrency(session("subtotal")) & " " & chr(10)

Foi resgatado e impresso em tela o valor da session subtotal.

str = str & "Frete: formatcurrency(session("frete"))

Foi resgatado e impresso em tela o valor da session frete.

str = str & chr(10) & "Total Geral: formatcurrency(session("frete")) & chr(10)

Foi resgatado e impresso em tela o valor da session geral.


str = str & chr(10) & chr(10) & "====== DADOS DO CLIENTE ======" & chr(10) & chr(10)

Acrescenta ao corpo do e-mail o valor entre e cada chr(10) representa uma quebra de linha.
As linhas abaixo esto ecebendo o valor do campo oculto que foi criado na pagina anterior e
imprimindo na tela.

str = str & "Nome: "& request("nome") &"" & chr(10)
ACR Informtica

Pg - 68
str = str & "CPF: "& request("cpf") &"" & chr(10)
str = str & "RG: "& request("rg") &" Orgo Emissor: "& request("orgaoemissor") &"" & chr(10)
str = str & "Sexo: "& request("sexo") &"" & chr(10)
str = str & "Data Nascimento: "& request("datanasc") &"" & chr(10)
str = str & "Preferncia Msical: "& request("preferenciamus") &"" & chr(10)
str = str & "Endereo: "& request("endereco") &" Complemento: "& request("complemento") &"" &
chr(10)
str = str & "Bairro: "& request("bairro") &"" & chr(10)
str = str & "CEP: "& request("cep") &" - "& request("cidade") &" - "& request("estado") &" - "&
request("pais") &"" & chr(10)
str = str & "Telefone Residncial: "& request("telefoneres") &" Telefone Comercial: "&
request("telefonecom") &"" & chr(10)
str = str & "E-mail: "& request("email") &"" & chr(10)
str = str & "Pagamento: "& request("pagamento") &"" & chr(10)
str = str & "Carto de Crdito: "& request("cartao") &" N.: "& request("numcartao") &" Validade: "&
request("validade") &" CPF do titular: "& request("cpfti") &"" & chr(10)
str = str & chr(10) & chr(10) & "====== DADOS DE ENTREGA ======" & chr(10) & chr(10)
str = str & "Local: " & request("entrega") &"" & chr(10)
str = str & "Nome: " & request("nomeentrega") &"" & chr(10)
str = str & "Endereo: " & request("enderecoentrega") &"" & chr(10)
str = str & "Bairro: " & request("bairroentrega") &"" & chr(10)
str = str & "Cidade: " & request("cidadeentrega") &"" & chr(10)
str = str & "Estado: " & request("estadoentrega") &"" & chr(10)
str = str & "CEP: " & request("cepentrega") &"" & chr(10)

A seguir temos a rotina responsavel pelo envio do e-mail ao administrador do site com a ficha de
pedido criada acima.

set mailer = server.createobject("CDONTS.NewMail")

Cria o objeto cdonts, o objeto cdonts responsvel pelo envio do e-mail e s funciona em
ambiente windows Nt server.

mailer.from = request("email")

A linha acima indica de onde esta sendo enviado o e-mail, no caso quem esta enviando o e-mail
o ususario que se encontra dentro da loja virtual.

mailer.to = "webmaster@lojacd.com.br"

A linha acima esta indicando para onde ser enviado o e-mail no caso ser enviado ao
administrador da loja virtual.

mailer.subject = "Compras feitas pela loja virtual"
mailer.body = str
mailer.send
set mailer = nothing

As linhas acima esta indicando o titulo da mensagem(subject), o conteudo da mensagem que
a varivel str e por fim esta envindo o e-mail e descarregando este da memria.
ACR Informtica

Pg - 69
Poderia-se ter usado na rotina de e-mail mais quatro parmetros: mailer.bodyformat(formato do
corpo do e-mail use 0 para HTML e 1 para txt, o default 1), mailer.mailformat(formato do e-mail use 0
para HTML e 1 para txt, o default 1) e mailer.atatchfile (use este comando para anexar arquivos) e
mailer.atatchurl(use este comado para anexar links).

response.cookies("lojacd").expires=now

Esta linha acima faz com que o cookie criado com o carrinho seja imediatamente descarregado
da memria.

%>
<body bgcolor="#FFFFFF">
<center>
<font size="5" face="Verdana"><b> <u><font size="4" color="#990000">Pedido enviado
com sucesso</font></u></b></font>
</center>
</body>
</html>

TrabaIhando com arquivos de Texto.

Um outro recurso muito interessante que temos com o asp a criao de arquivos de texto no servidor.
Estes arquivos podem ser criado para armazenar arquivo de log de um sistema, armazenar
informaes e ou at mesmo banco de dados.

Modos de abertura:

Forwriting=somente escrita.
Forappending=formato do arquivo (caso txt, leitura e escrita)
Forreading=formato somente leitura.

Opo de formatos:

Tristateusedefault=abre o arquivo em seu formato de origem
Tristatetrue=padro ascII
Tristatefalse=padro unicode.

Mtodos:

Voc preisa criar um objeto do tipo scripting.filesystemobject. ex:

<%
set obj=server.createobject(scripting.filesystemobject)
%>

objeto.read=ler contedo de arquivo texto (1 linha)
objeto.readall= ler contedo de arquivo texto (todo arquivo)
objeto.write= escrever em um arquivo de texto.
objeto.writelines= escrever em um arquivo de texto.(uma linha com quebra e retorno utomatico de
carro)
ACR Informtica

Pg - 70
objeto.writebranklines= escrever em um arquivo de texto linhas em branco.
objeto.columns=contar quantas colunas tem o arquivo de texrto
objeto.lines=contar quantas linhas tem o arquivo de texto
objeto.fileexists=checar se um arquivo existe
objeto.atendofstream= at o final do arquivo
objeto.deletefile=deletar arquivo
Createtextfile=criar arquivo de texto
Opentextfile=abrir arquivo de texto

Exemplo de declaro de cnstantes:

<%
const forreading=1,forwriting=2,forappending=8
const tristateusedefault=-2,tristatetrue=-1,tristatefalse=0
%>


Chat

sistema de conversao em tempo real, o usurio entra em uma sala e encontra outras
pessoas nesta sala com as quais pode conversar enviar figuras e etc... No cdigo da pagina sero
encontrados frases com o primeiro caractere igua a , isto indica que esta linha um comentrio de
cdigo e no deve ser digitada. Ex:
<%
esta linha um comentrio
%>

DefauIt.asp

<html>
<head>
<title>Entrar no chat</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
</head>

<body bgcolor="#FFFFFF">
<form method="post" action="entrar.asp">
<p>Preencha seu Nick:
<input type="text" name="nick">
<input type="submit" value="Entrar">
</p>
</form>
</body>
</html>

As linhas acima constituem uma pagina onde o usario ser interrogado sobre qual nick quer
usar.

entar.asp

ACR Informtica

Pg - 71
uma das principais paginas do chat responsavel pela montagem da tela e entrada do usuario na
sala.

<%
const forreading=1,forwriting=2,forappending=8
const tristateusedefault=-2,tristatetrue=-1,tristatefalse=0

'declarao de constantes

set cn=server.CreateObject("adodb.connection")
cn.open "dsn=chatasptxt"

'conexo ao banco de dados

if request("nick") <> "" and lcase(request("nick")) <> "todos" then

' teste se o nick diferente de vazio e diferente de todos.

set teste=server.createobject("adodb.recordset")
teste.open "select * from chat where nick like '%"& request("nick")&"%'",cn

'procura o nick na tabela nicks para testar se j no existe um user com o mesmo nome que se esta
entrando.

if teste.eof then

' somente se o recordset for igual a vazio (ou seja, nao foi encontrado nick igual)

set grava=server.createobject("adodb.recordset")
grava.open "insert into chat(nick) values('"&request("nick")&"')",cn

' grava o nick na tabela chat

users=server.mappath("sala1/"&request("nick")&".chat")

' indica o caminho onde ser criado o arquivo texto. No caso ser criado numa pasta chamada aula1
que se encontra no server com o nome de nick escolhido.chat

set usuario=server.createobject("scripting.filesystemobject")

' cria-se um objeto padrao filesystem object para que se possa acessar a unidade e criar o arquivo de
texto que ira conter as mensagens deste usuario.

set nicks=usuario.createtextfile(users,true)

' esta sendo usado o objeto criado para criar um arquivo de texto que ser armazenado na varivel
nicks.

session("nick")=request("nick")

ACR Informtica

Pg - 72
' como o nick do usuario um elemento que ser usado muitas vezes no cdigo ainda esta sendo
criada uma session guardando o nick do user.

A seguir temos a montagem da tela em uma janela dividida em tres frames, o superior chama-se
topo.asp(ter apenas o titulo do chat), na regio central teremos a pagina mensagem.asp( responsvel
por exibir as mensagens na tela e por fim temos a pagina formulrio.asp que responsvel pelo envio
das mensagens aos arquivos de texto. A formulrio,asp esta sendo aberta por uma query
comprimentando todo o pessoal que estava na sala.

%>

<html>
<head><title></title></head>
<frameset rows=60,*,90>
<frame src=topo.asp scrolling=no noresize>
<frame src=mensagem.asp >
<frame
src="formulario.asp?quem=Todos&imagem=nada.gif&tipo=Fala+para&mensagem=galera+entrei+na+s
ala..." scrolling=no noresize>
</frameset>
</html>

<%else%>

<script>
alert("Este nick j existe")
window.location="default.asp"
</script>

<%end if%>

Acima temos a mensagem de erro para o segundo if que foi criado


<%else%>
<script>
alert("Voc no pode usar este nick")
window.location="default.asp"
</script>
<%end if%>

Acima temos a mensagem de erro para o primeiro if que foi criado

formuIario.asp

<%
set cn=server.CreateObject("adodb.connection")
cn.open "dsn=chatasptxt"

const forreading=1,forwriting=2,forappending=8
ACR Informtica

Pg - 73
const tristateusedefault=-2,tristatetrue=-1,tristatefalse=0

if request("reservado") <> "" and request("quem") <> "Todos" then

A linha acima esta checando se a mensagem enviada tem como destinatario um nick diferente
de todos e a opo reservado checada. Funcionar se algum na sala enviar uma mensagem
reservada a outra pessoa que no seja todos.

geral=server.mappath("sala1/"&request("quem")&".chat")

set msgaberta=server.createobject("scripting.filesystemobject")
set mensagem=msgaberta.opentextfile(geral,forappending,false,tristatefalse)

As linhas acima esto abrindo o arquivo de texto da pessoa para quem fo envia a mensagem e
abaixo temos a mensagem sendo gravada. Note o Class=a no comando tr, esta propriedade
conhecida como style e deixar o fundo da mensagem em um tom de cinza.


mensagem.writeline "<tr class=a><td><small>("&time&")</small><b> " & session("nick") & "
</B>Reservadamente "&request("tipo") &" "& request("quem") & ": " & request("mensagem") &" <img
src=imagens/"& request("imagem") &"></td></tr>"


if request("quem") <> Session("nick") then

Duas pessoas possuem o direito de ver uma mensagem reservada quem enviou e o
destinatario, as linhas abaixo esto gravando dentro do arquivo de texto a mesagem para que esta
pessoa possa ver na tela a mensagem. Esta sendo feito um teste lgico na linha abaixo para checar se
a pessoa que enviou no tambm o destinatrio (ou seja eu mandei uma mensagem reservada para
mim mesmo), este teste esta sendo realizado para impedir que apaream na tela duas mensagens
iguais, uma por que enviou e outra por que recebeu ...


geralrs=server.mappath("sala1/"&session("nick")&".chat")

set msgaberta1=server.createobject("scripting.filesystemobject")
set mensagem1=msgaberta1.opentextfile(geralrs,forappending,false,tristatefalse)

mensagem1.writeline "<tr><td><small>("&time&")</small><b> " & session("nick") & "
</B>Reservadamente "&request("tipo") &" "& request("quem") & ": " & request("mensagem") &" <img
src=imagens/"& request("imagem") &"></td></tr>"
end if

elseif request("reservado") <> "" and request("quem") = "Todos" then

Temos uma condicional lgica na linha acima que testa se a mensagem foi enviada em modo
reservado a todos na sala, como no existe um arquivo de texto para o usurio todos as linhas abaixo
esto usando uma rotina que grava uma vez para cada usurio a mensagem (ou seja ir gravar a linha
mensagem em questo a todos usurios da sala.

ACR Informtica

Pg - 74
set geralts = server.createobject("adodb.recordset")
geralts.open "select * from chat",cn
do while not geralts.eof

geraltd=server.mappath("sala1/"&geralts("nick")&".chat")

set msgabertatd=server.createobject("scripting.filesystemobject")
set mensagemtd=msgabertatd.opentextfile(geraltd,forappending,false,tristatefalse)


mensagemtd.writeline "<tr class=a><td><small>("&time&")</small><b> " & session("nick")
& "</B> "&request("tipo") &" "& request("quem") & ": " & request("mensagem") &" <img src=imagens/"&
request("imagem") &"></td></tr>"

geralts.movenext
loop


else

O else acima caracteriza uma mensagem publica enviada a uma pessoa ou a todos usuarios
da sala. Por que independende de ser enviada a todos ou a uma pessoa em especial ela ser vista por
todos ento logo ser gravada em todos os arquivos de qalquer forma.

set geral = server.createobject("adodb.recordset")
geral.open "select * from chat",cn
do while not geral.eof

geral1=server.mappath("sala1/"&geral("nick")&".chat")

set msgaberta=server.createobject("scripting.filesystemobject")
set mensagem=msgaberta.opentextfile(geral1,forappending,false,tristatefalse)


if geral("nick") = request("quem") then

mensagem.writeline "<tr class=a><td><small>("&time&")</small><b> " & session("nick") &
"</B> "&request("tipo") &" "& request("quem") & ": " & request("mensagem") &" <img src=imagens/"&
request("imagem") &"></td></tr>"
else
mensagem.writeline "<tr><td><small>("&time&")</small><b> " & session("nick") & "</B>
"&request("tipo") &" "& request("quem") & ": " & request("mensagem") &" <img src=imagens/"&
request("imagem") &"></td></tr>"
end if

geral.movenext
loop

end if
%>
ACR Informtica

Pg - 75
<html>
<head>
<title>Formulario</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
</head>
<body bgcolor="skyblue" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<P>
<table border="0" cellspacing="2" cellpadding="2" align="center" width="761" height="72">
<tr>
<td valign="bottom" height="31">
<form name="form1" action="sair.asp" target="_top">
<input type="submit" name="sair" value="Sair">
</form></td>
<td height="31">
<form method="post" action="formulario.asp">
<table border="0" cellspacing="2" cellpadding="2" align="center" width="617" height="71">
<tr>
<td> <font face="Verdana" size="2"><%=session("nick")%>
<select name="tipo">
<option>Fala para</option>
<option>Grita com</option>
<option>Murmura para</option>
<option>Flerta com</option>
</select>
</font></td>
<td align="right"><font face="Verdana" size="2">com: <b>
<select name="quem">
<option value="Todos">Todos</option>
<%
set nick = server.createobject("adodb.recordset")
nick.open "select * from chat",cn
do while not nick.eof
%>
<option value=<%=nick("nick")%>><%=nick("nick")%> <%nick.movenext%>
<%loop%>
</select>

As linhas acima estao sendo usadas para preecher o combo box com os nicks das pessoas que
esto na sala, este preenchiento feito de forma automtica pois no temos como saber agora no ato
do desenvolvimento quais as pessoas que vo entrar na sala. A autualizao feita tambm de forma
automtica a casa envio de mensagem a pagina formulrio ser inteira reprocessada atualizando
assim ento o combo Box.

</b> </font></td>
<td align="right"><font face="Verdana" size="2">Enviar imagem:</font>
<select name=imagem>
<option value=nada.gif checked>&nbsp;
<option value=assustado.gif>Assustado
<option value=baton.gif>Baton
<option value=beijo.gif>Beijo
ACR Informtica

Pg - 76
<option value=bocejo.gif>Bocejo
<option value=boy.gif>Boy
<option value=careta.gif>Careta
<option value=coracao.gif>Coracao
<option value=dentuco.gif>Dentuco
<option value=flor.gif>Flor
<option value=girl.gif>Girl
<option value=risada.gif>Risada
<option value=sorri.gif>Sorri
</select>
</td>
</tr>
<tr>
<td colspan="3"> <font face="Verdana" size="2"> Mensagem:
<input type="text" name="mensagem" size="40">
</font> <font face="Verdana" size="2"> </font><font face="Verdana" size="2">
<input type="submit" name="enviar" value="Enviar">
<input type="checkbox" name="reservado" value="reservado">
Reservado&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></td>
</tr>
</table>
</form></td>
</tr>
</table>
</body>
</html>

mensagem.asp

<html>
<head>
<title>Mensagem</title>

<style type=text/css>
<!--
.a{background-color:ececec}
//-->
</style>

Nas linhas acima temos o style responsavel pelo aparecimento das mensagens com fundo
cinza. E nas linhas abaixo temos o cdigo responsvel pela atualizao do contedo da tela de
mensagens do chat a cada cinco segundo a pgina sofre um refresh que atualiza a tela.

<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta http-equiv="refresh" content="5;URL=#rodape">
</head>
<body>
<center>
<table width=100%>
<%
ACR Informtica

Pg - 77
const forreading=1,forwriting=2,forappending=8
const tristateusedefault=-2,tristatetrue=-1,tristatefalse=0


geral=server.mappath("sala1/"&session("nick")&".chat")

set mostra=server.createobject("scripting.filesystemobject")

set mensagem = mostra.opentextfile(geral,forreading,false,tristatefalse)

do while mensagem.atendofstream <> true
strline = mensagem.readline
response.write strline & vbclrf
loop

set mensagem = nothing
set mostra = nothing


%>

As linhas acima so responsveis por abrir o arquivo de texto do usurio corrente e exibir suas
mensagens em tela.

</table>
</center>
<p><a name="rodape"></a>
</body>
</html>

sair.asp

Pgina responsavel pela saida do usuario da sala, deve avisar aos usurios que ainda esto na
sala de sua sada,alem de excluir seu nick da tabela e apagar seu arquivo de texto.

<%

set cn=server.CreateObject("adodb.connection")
cn.open "dsn=chatasptxt"


const forreading=1,forwriting=2,forappending=8
const tristateusedefault=-2,tristatetrue=-1,tristatefalse=0
set apaga=server.createobject("adodb.recordset")
apaga.open "delete * from chat where nick='"&session("nick")&"'",cn

A linha acima remove da tabela o nick do usuario que saiu da sala.

set geral = server.createobject("adodb.recordset")
geral.open "select * from chat",cn
ACR Informtica

Pg - 78
do while not geral.eof

geral1=server.mappath("sala1/"&geral("nick")&".chat")

set msgaberta=server.createobject("scripting.filesystemobject")
set mensagem=msgaberta.opentextfile(geral1,forappending,false,tristatefalse)

mensagem.writeline "<tr><td><small>("&time&")</small><b> " & session("nick") & "</B> Sai da
sala ...."

geral.movenext
loop

A linhas acima gravam uma mensagem avisando de sua sada em todos arquivos de texto dos
usuarios que ficaram na sala.

users=server.mappath("sala1/"&session("nick")&".chat")
set usuario=server.createobject("scripting.filesystemobject")
usuario.deletefile users
A linhas acima so usadas para apagar o arquivo de texto do usurio que saiu da sala.
response.redirect "default.asp"

A linha acima redireciona o usuaio para pagina de entrada para que este caso queira possa
entrar de novo no chat com o mesmo ou cm outro nick.

%>
<html>
<head>
<title>Sair do Bate-papo</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
</head>

<body bgcolor="#FFFFFF">


</body>
</html>

topo.asp

<html>
<head>
<title>Topo</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
</head>
<body bgcolor="skyblue">
<Center>
<h2>ACR - INFORMTICA - CHAT 2</h2>
</body>
</html>
ACR Informtica

Pg - 79
EXERCICIOS PARA ESTUDO


Mailer - Envio de E-mails

Ser necessrio criar um banco de dados dentro deste uma tabela mails com os campos nome, e-mail.
Use chave primaria, ser criado um campo cdigo. Para exercitar o mtodo odbc de controle de banco
de dados relacione uma dsn do tipo sistema para usar com este exerccio.

Index.htm

<html>
<head>
<title>Inserir formulrios
</title>
</head>
<body>

<center>
<h2> Bem Vindo ao Mailer </h2>


<a href=inserir.htm>Inserir Novos E-mails</a><p>
<a href=mailer.htm>Enviar E-mails</a>

</center>
</body>
</html>

Inserir.htm

<html>
<head>
<title>Inserir formulrios
</title>
</head>
<body>
<center>
<h3>Cadastrar Novos e-mails na lista</h3>
</center>
<form action="inserir.asp" method="post">
Nome do produto:<input type=text name=nome>
<br>
E-mail:<input type=text name=email>
<p>
<input type=submit value=enviar>
<input type=reset value=limpar>
</form>
</body>
ACR Informtica

Pg - 80
</html>

inserir.asp

<% set cn=server.createobject("adodb.connection")
cn.open"dsn=mailer"

set rs=server.createobject("adodb.recordset")
rs.open "insert into mails(nome,email) values('"&request("nome")&"','"&request("email")&"')",cn
%>
<html>
<head>
<title> inserir dados </title>
<body>
<h2>Dados Gravados com sucesso !!!</h2>
</body>
</html>

Mailer.Htm

<html>
<head>
<title>Cadastro de Clientes</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#ffffff" scroll=no>
<pre>

<div align="center">
<u><font face="Verdana" size="3"><b>CONTEUDO DO E-MAIL :</b></font></u>

<form method="post" action="mailer.asp">
<table border="0" cellspacing="2" cellpadding="2" align="center">
<tr>
<td><font face="Verdana" size="2">From:</font></td>
<td> <font face="Verdana" size="2">
<input type="text" name="from" size="35">
</font></td>
</tr>
<tr>
<td><font face="Verdana" size="2">Subject:</font></td>
<td> <font face="Verdana" size="2">
<input type="text" name="titulo" size="35">
</font></td>
</tr>
<tr>
<td><font face="Verdana" size="2">texto:</font></td>
<td> <font face="Verdana" size="2">
<textarea cols=40 rows=10 name="texto"></textarea>
</font></td>
ACR Informtica

Pg - 81
</tr>
<tr><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr>
<td align=center><input type=reset value="Limpar"</td>
<td align=center><input type=submit value="Enviar e-mails"</td>

</tr>
</table>
</pre>
</div>
</form>
</html>

mailer.asp

<%
set cn = server.CreateObject("adodb.connection")
cn.open "dsn=mailer"

set conteudo=server.createobject("adodb.recordset")
conteudo.open "select * from mails",cn

do while not conteudo.eof

set mailer = server.createobject("CDONTS.NewMail")
mailer.from = request("from")
mailer.to = conteudo("email")
mailer.subject = request("titulo")
mailer.body = request("texto")
mailer.send
set mailer = nothing

conteudo.movenext
loop

%>
<html><head><title> Lista de E-mails </title></head>
<body>

<center><h3>E-mails enviados com sucesso</h3></center>

</body>
</html>

Propriedades de Disco:

<%

set disco=server.createobject("scripting.filesystemobject")

ACR Informtica

Pg - 82
local=request.servervariables("SCRIPT_NAME")
local=server.mappath(local)
nomedisco=disco.getdrivename(local)

set drive=disco.getdrive(nomedisco)



response.write "Propriedades sobre seu drive "& nomedisco &"<br>"
response.write "A letra da unidade " & drive.driveletter &"<br>"
response.write "O caminho at seu drive "&drive.path &"<br>"
response.write "O seu drive opera em "& drive.filesystem&"<br>"
response.write "O nome do seu drive " & drive.volumename & "<br>"
response.write "Espao Livre na unidade " & formatnumber(drive.freespace/1024,0)& " Kb.<br>"
response.write "Espao Total na unidade " & formatnumber(drive.totalsize/1024,0)& " Kb.<br>"
response.write "A raiz do drive " &drive.rootfolder& "<br>"
response.write "O numero de serie do disco " &drive.serialnumber& "<br>"

If drive.isready = true then
response.write "Status do dispositivo = O drive esta pronto para acesso<br>"
else
response.write "Status do dispositivo = O drive nao esta preparado<br>"
end if

select case drive.drivetype

case 0: tipo="Unknown"
case 1: tipo="Removable"
case 2: tipo="Fixed"
case 3: tipo="Network"
case 4: tipo="Cd-Rom"
case 5: tipo="Ram disk"

end select

response.write "Drive do Tipo " &tipo& "<br>"
%>

Propriedades De um arquivo gravado no disco:

<%

Dim ObjFso, ObjArq
Set ObjFso = Server.CreateObject("Scripting.FileSystemObject")
Set ObjArq = ObjFso.GetFile(Server.MapPath("arquivo2.asp"))
Response.Write "Nome do arquivo: " & ObjArq.Name & "<br>"
Response.Write "Apresenta o tipo do arquivo: " & ObjArq.Type & "<br>"
Response.Write "Data de criao do arquivo: " & ObjArq.DateCreated & "<br>"
Response.Write "Tamanho do arquivo: " & formatnumber(ObjArq.Size/1024,2) & " KB<br>"
Response.Write "Caminho da pasta onde esta o arquivo: " & ObjArq.ShortPath & "<br>"
ACR Informtica

Pg - 83
Response.Write "Data do ltimo acesso: " & ObjArq.DateLastAccessed & "<br>"
Response.Write "Data da ltima alterao: " & ObjArq.DateLastModified & "<br>"


Response.Write "Drive em que se encontra: " & ObjArq.Drive & "<br>"
Response.Write "Pasta pai: " & ObjArq.ParentFolder & "<br>"
Response.Write "O arquivo "& ObjArq.Name &" esta dentro da pasta: " & ObjArq.ParentFolder.Name &
"<br>"
Response.Write "Retorna o caminho do arquivo: " & ObjArq.Path & "<br>"
Response.Write "Nome do arquivo: " & ObjArq.ShortName & "<br>"
%>

Select em Mltiplas Tabelas:

Para este exercicio vamos precisar de um banco de dados com tres tabelas : alunos, cursos, notas

Na tabela alunos temos os campos : cdigo, nome, idade, sexo.
Na tabela notas temos os campos : cdigo, asp, cgi, html.
Na tabela cursos temos os campos : cdigo, curso1,curso2,curso3.



<%

set cn=server.createobject("adodb.connection")
cn.open "dsn=acr"

set rs=server.createobject("adodb.recordset")
rs.open "select * from cursos inner join (alunos inner join notas on alunos.cdigo=notas.cdigo) on
cursos.cdigo=notas.cdigo order by alunos.nome",cn

do while not rs.eof
%>
<center>
<table border=3 width=400>
<tr><th>Nome</th><th>Idade</th><th>Sexo</th></tr>
<tr><td><%=rs("Nome")%></td><td><%=rs("Idade")%></td><td><%=rs("Sexo")%></td></tr>
ACR Informtica

Pg - 84
<tr><th colspan=3>Cursos:</th></tr>
<tr><td><%=rs("curso1")%></td><td><%=rs("curso2")%></td><td><%=rs("curso3")%></td></tr>
<tr><th colspan=3>Notas:</th></tr>
<tr><td><%=rs("asp")%></td><td><%=rs("cgi")%></td><td><%=rs("html")%></td></tr>
</table>
</center>
<p>&nbsp;</p>
<%
rs.movenext
loop
%>

Gerenciador de Banco de dados:

Voc vai precisar de uma banco de dados com os campos produto, valor,setor,fornecedor. Use
chave primria,ser criado um campo cdigo ao se ativar chave primaria. Usaremos o Mtodo dbq de
conexo para praticarmos mais um pouco este mtodo que um dos mais usados na web hoje em dia.

<%
set cn = server.createobject("adodb.connection")
cnstring "driver={Microsoft Access Driver (*.mdb)};dbq=&server.mappath("nomebanco.mdb)&;
cnopen(cnstring)
%>

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<%
set rs = server.createobject("adodb.recordset")


acao = request("acao")


if acao = "Cadastrar" then
%>
<form name="form1" method="post" action="sistema.asp">
<p align="center">Bem vindo ao Novo Sistema</p>
<div align="center">
<table width = 70>
<TR>
<TD>Produto</TD>
<TD>
<input type = text name = produto>
</TD>
</TR>
ACR Informtica

Pg - 85
<TR>
<TD>Valor</TD>
<TD>
<input type = text name = valor>
</TD>
</TR>
<TR>
<TD>Setor</TD>
<TD>
<input type = text name = setor>
</TD>
</TR>
<TR>
<TD>Fornecedor</TD>
<TD>
<input type = text name = fornecedor>
</TD>
</TR>
</table>
<p>
<input type="submit" name="acao" value="Inserir">
</p>
</div>
</form>
<% elseif acao = "Buscar" then
rs.open "select * from tblprodutos where "&request("que")&" like
'%"&request("produto")&"%'", cn
if not rs.eof then
%>
<% do while not rs.eof%>
<form name="form1" method="post" action="sistema.asp?codigo=<%=rs("cdigo")%>">
<p align="center">Bem vindo ao Novo Sistema</p>
<p align="center">&nbsp;
<div align="center">
<table width = 70>
<tr>
<td>Produto</td>
<td>
<input type = text name = produto value="<%=rs("produto")%>">
</td>
</tr>
<tr>
<td>Valor</td>
<td>
<input type = text name = valor value="<%=rs("valor")%>">
</td>
</tr>
<tr>
<td>Setor</td>
<td>
ACR Informtica

Pg - 86
<input type = text name = setor value="<%=rs("setor")%>">
</td>
</tr>
<tr>
<td>Fornecedor</td>
<td>
<input type = text name = fornecedor value="<%=rs("fornecedor")%>">
</td>
</tr>
</table>
<p>&nbsp;</p>
<p>
<input type="submit" name="acao" value="Apagar">
<input type="submit" name="acao" value="Atualizar">
</p>
</div>
</form>
<hr>
<%rs.movenext%>
<%loop%>
<%else%>
<center><h3>No h registro cadastrado ... </h3></center>
<form action=sistema.asp method="post">
<div align="center">
<input type="submit" name="acao" value="VOLTAR">
</div>
</form>
<%end if%>
<% elseif acao = "Atualizar" then
rs.open "update tblprodutos set produto = '"&request("produto")&"', valor = '"&request("valor")&"', setor =
'"&request("setor")&"', fornecedor = '"&request("fornecedor")&"' where cdigo = " &
request.querystring("codigo"), cn
%>
<h3 align="center">Registro Atualizado com sucesso !!!! </h3>
<form action=sistema.asp method="post">
<div align="center">
<input type="submit" name="acao" value="VOLTAR">
</div>
</form>
<% elseif acao = "Apagar" then
rs.open "delete * from tblprodutos where cdigo =" & request.querystring("codigo"), cn%>
<div align="center">
<h3>Registro apagado com sucesso !!! </h3>
</div>
<form action=sistema.asp method="post">
<div align="center">
<input type="submit" name="acao" value="VOLTAR">
</div>
</form>
<% elseif acao = "Inserir" then
ACR Informtica

Pg - 87
rs.open "insert into tblprodutos (produto,valor,setor,fornecedor) values ('"&request("produto")&"',
'"&request("valor")&"','"&request("setor")&"','"&request("fornecedor")&"')", cn
%>
<div align="center">
<h3>Dados Gravados Com Sucesso !!! </h3>
</div>
<form action=sistema.asp method="post">
<div align="center">
<input type="submit" name="acao" value="VOLTAR">
</div>
</form>

<% else %>
<form name="form1" method="post" action="sistema.asp">
<p align="center">Bem vindo ao Novo Sistema</p>
<p align="center">Para caso de busca indique qual coluna buscar :
<select name="que">
<option>C&oacute;digo</option>
<option>Produto</option>
<option>Valor</option>
<option>Setor</option>
<option>Fornecedor</option>
</select>
<p align="center">&nbsp;
<div align="center">
<table width = 333>
<TR>
<TD width="146">Palavra a ser buscada</TD>
<TD width="34">
<input type = text name = produto>
</TD>
</TR>
</table>
<p>
<input type="submit" name="acao" value="Buscar">
</p>
<p>Para Inserir Novo Registro:</p>
<p>
<input type="submit" name="acao" value="Cadastrar">
</p>
</div>
</form>

<% end if %>

</body>
</html>

S-ar putea să vă placă și