0% acharam este documento útil (0 voto)
23 visualizações79 páginas

Manual de ASP

O documento é um manual sobre ASP e SQL, abordando a programação web e a evolução das páginas dinâmicas. ASP (Active Server Pages) é uma tecnologia da Microsoft para criar páginas web interativas, processando scripts no servidor antes de enviar o HTML ao cliente. O manual também discute a configuração do Internet Information Server (IIS) e os requisitos para utilizar ASP em servidores Windows.

Enviado por

annaevnasakutina
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
23 visualizações79 páginas

Manual de ASP

O documento é um manual sobre ASP e SQL, abordando a programação web e a evolução das páginas dinâmicas. ASP (Active Server Pages) é uma tecnologia da Microsoft para criar páginas web interativas, processando scripts no servidor antes de enviar o HTML ao cliente. O manual também discute a configuração do Internet Information Server (IIS) e os requisitos para utilizar ASP em servidores Windows.

Enviado por

annaevnasakutina
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 79

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL

D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Manual de ASP e SQL


Módulo: Programação WEB Duração : 150 horas
INTRODUÇÃO

A Internet é um conjunto de redes de computadores interligados pelo mundo inteiro, que têm em
comum um conjunto de protocolos e serviços, de forma que os cibernautas a ela ligados possam usufruir de
serviços de informação e comunicação de alcance mundial tais como: e-mail, servidores Web, ftp, irc, icq etc.
Trata-se da mais bem sucedida aplicação prática do conceito de interoperabilidade, que consiste
em ligação de redes de tecnologias distintas. Isso só foi conseguido graças ao conjunto de protocolos
conhecidos como TCP/IP(Transmission Protocol/Internet Protocol).
Mas o que popularizou mesmo a Internet foi a criação da World Wide Web. Trata-se de um serviço
para a transmissão multimédia de informações implementado pelo protocolo de aplicação HTTP(Hypertext
Transfer Protocol).
Um Cliente HTTP (Browser WEB) comunica com um servidor HTTP(Servidor WEB) requisitando
ficheiros. Geralmente esses ficheiros estão no formato HTML (Hypertext Markup Language) que pode conter
referências para outros ficheiros diversos(imagens, sons, vídeos etc). Ao receber o ficheiro HTML o cliente
verifica cada referência, solicitando ao servidor HTTP os ficheiros indicados.
Esse modelo de funcionamento limita bastante o uso da Web uma vez que as páginas HTML têm
um conteúdo estático, ou seja, sempre são exibidas da mesma forma e não possibilitam nenhuma
interactividade com o utilizador.
Para deixar a Web mais dinâmica e interactiva, criou-se o CGI(Common Gateway Interface). Agora
podemos ter programas num servidor Web que podem ser requisitados por um cliente Web. O programa é
processado e o resultado desse processamento é enviado pelo servidor Web ao cliente, geralmente no formato
HTML. É importante percebermos onde está o dinamismo do CGI: o processamento de tais programas pode
retornar diferentes resultados, dependendo dos parâmetros informados pelo cliente(interacção) ao programa
CGI.
Apesar de dar mais “vida” à web, os programas CGI possuem uma série de desvantagens
técnicas, sendo a principal delas o facto de tais programas executarem num processo diferente do Web Server.
Sendo assim, um servidor web que recebesse várias requisições simultâneas, fácilmente se sobrecarregava e
parava.
Por isso surgiram, e ainda surgem a cada dia, tecnologias alternativas ao uso do CGI: ISAPI,
NISAPI, IDC/HTX, Cold Fusion, Java Server Pages(JSP), Personal Home Page(PHP), Active Server
Pages(ASP) etc.
Evolução das páginas Web:

1ª Geração 2ª Geração 3ª Geração 4ª Geração

HTML
CGI

php

ASP .NET

JAVA

Estática Script Objecto

Microsoft

Sun

Por: Kundan Narendra 1 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

ASP- O que é ???


ASP é um tecnologia da Microsoft que disponibiliza um conjunto de componentes para o
desenvolvimento de páginas Web dinâmicas. Tais páginas consistem em ficheiros de extensão *.asp no
formato texto(ASCII), que contêm combinações de scripts e tags HTML.
Apareceu recentemente a plataforma ASP.NET (Visual Studio.Net), também da Microsoft, e são
ficheiros de extensão *.aspx, muito mais fácil de programar, e criar páginas dinâmicas, sem ter de recorrer a
muitos conhecimentos de programação.
As ASP (Active Server Pages – e traduzido literalmente em Português- Páginas de Servidor
Activas) é considerado um ambiente para programação para criar e correr scripts no servidor, e que o
Webdesigner pode usar para criar páginas dinâmicas, interactivas, fácilmente actualizáveis e de alta
performance. Com as páginas ASP’s, os scripts correm do lado do servidor e não no cliente (browser) . É o
próprio servidor que transforma os scripts em HTML padrão, fazendo com que qualquer browser do mercado
seja capaz de aceder a um site que use páginas com a extensão ASP.
Entre os recursos que podem ser implementados via ASP, podemos citar:
Programação em VBScript ou JavaScript
Acesso a Bases de dados
Sessões (persistência de informações no servidor)
O ASP surgiu na altura do lançamento do Internet Information Server 3.0 (Servidor Web da Microsoft), em 1996.
Por isso, e como já foi mencionado, esta é uma solução Microsoft, que exige que o seu servidor precisa de ser
corrido num sistema operativo da Microsoft (Windows 95/98/Me ou NT/2000/XP). Os seguintes servidores
suportam o uso de páginas ASP:
Microsoft Internet Information Server - no Windows NT Server /2000/ XP Professional
Microsoft Personal Web Server no Windows 95 ou Windows 98
Para utilizar ASP para as páginas Web, certifique-se que o computador em que as vai alojar, corre
o Sistema operativo Windows NT Server 4.0, 2000, XP (ou superior) com o Internet Information Server (IIS)
3.0(ou superior). Esse último é um programa Servidor Web da Microsoft. Se pretende usar os recursos de
acesso à Base de dados, vai precisar de um driver de ODBC instalado e funcionando no servidor.
ASP “funciona” também com o MS Personal Web Server(PWS), para Windows NT WorkStation e para Windows
9x, muito embora essa não seja a plataforma mais recomendada, mas para fim de testarmos as páginas que
criamos é o suficiente- aliás esse será o Servidor que utilizaremos para testar as nossas páginas. Para os
amantes das plataformas Unix/Linux, já existem módulos no mercado que garantem o suporte ao ASP nessa
plataforma.
A grande vantagem, porém, é que esta exigência existe apenas do lado do servidor, porque do
lado do cliente, o visitante pode utilizar qualquer browser, mesmo os que não suportam VBScript (como os da
Netscape).
O funcionamento do ASP é bastante simples, quando um browser solicita uma página ASP
(solicitação feita através de um link ou form), o servidor da Web sabe (se for compatível) que esta é uma página
activa, e seus processos deverão ser realizados no próprio servidor, e as respostas deverão ser enviadas num
formato legível pelo browser, ou seja, no formato HTML (tag’s) e /ou script’s que poderão ser executados no
cliente. Os script’s ASP são executados no mesmo processo do servidor por um Script Engine, sendo assim,
uma vantagem para o processamento em relação a demanda de tempo.
Se a aplicação ASP realizar acesso à base de dados, deverá então realizar a ligação com o DBMS
ou ficheiros que o compõem, através de um ponteiro ODBC que deve ser criado no servidor onde está
localizado o servidor Web, e mesmo deverá apontar para o local da base de dados (o local pode ser um
directório diferente para os ficheiros e/ou uma máquina diferente da que executa o servidor Web). A figura
abaixo mostra o funcionamento de uma solicitação ASP realizada por um cliente.
Resumindo e concluíndo, As ASP (Active Server Pages – e traduzido literalmente em Português-
Páginas de Servidor Activas) é considerado um ambiente para programação para criar e correr scripts
no servidor, e que o Webdesigner pode usar para criar páginas dinâmicas, interactivas, fácilmente
actualizáveis e de alta performance.

Por: Kundan Narendra 2 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Figura 1: Funcionamento do ASP.

Interpretação da imagem:
1. O browser do Utilizador faz a chamada a uma página .ASP localizada no servidor web.

2. O servidor lê a página ASP e inicia o processamento.

3. A página é processada, executando os scripts localizados na página.

4. Como resultado do processamento, sai uma página HTML, que é enviada para o browser do Utilizador
(5).

Como os scripts rodam no servidor, este faz todo o processamento e, na verdade, o que chega ao Utilizador
são páginas HTML padrão. A partir disso, podemos chegar a duas importantes conclusões:

1. Qualquer browser que suporte HTML pode ver páginas .ASP.

2. O código-fonte dos scripts (em VBScript ou Jscript) não é visto pelo Utilizador. O que ele vê é o HTML
gerado pelo servidor web.

INTERNET INFORMATION SERVER


Actualmente na versão 5.0 (no Windows 2000) e 5.5 (no Windows XP professional), o IIS é o
servidor Web mais recomendado pela Microsoft para o desenvolvimento de sites dinâmicos com ASP, pois
correm num ambiente mais seguro e robusto, como: Windows NT Server, 2000 Server ou mesmo XP
Professional trazem esse servidor.
A Sua instalação é bastante simples, cabendo ao utilizador informar apenas quais os componentes
que deseja instalar e em que pasta serão instalados, bem como informar as pastas principais para os serviços
de publicação WWW e FTP.
A configuração do IIS é feita através do Microsoft Management Console (MMC): Iniciar
ProgramasMicrosoft Internet Information ServerInformation Server Manager.

Por: Kundan Narendra 3 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

A primeira coisa a se fazer é criar um novo Web site. Basta ir no menu Action New Site Web,

indicar a descrição do novo site, indicar o IP da máquina e o número da porta do servidor Web( normalmente
80), indicar o caminho para a pasta do site e, para finalizar, informar as permissões de acesso:

Acesso de Leitura
Acesso de Script
Acesso de Execução
Acesso de Gravação
Pesquisa em pasta

Depois de criar o novo site, pode alterar suas configurações clicando no mesmo com o botão
direito do rato, escolhendo a opção propriedades:

Opção Descrição
Configuração do IP, portas de ligação, limite de
Site da Web ligações, Activação do Log
Designar contas administrativas p/ site
Operadores
Optimização
Desempenho
Adicionar/Remover filtros ISAPI
Filtros ISAPI
Configurar permissões de acesso e pasta base
Pasta Base
Personalizar os erros do Servidor Web
Erros Personalizados
Configurar autenticação de utilizadores, segurança de
comunicação e restrições a endereços IP
Pasta de Segurança Definir ficheiros padrões

Documentos

O IIS também possui o recurso de Directórios (pastas) Virtuais. Eles servem para que os
utilizadores Web possam aceder ao seu conteúdo, sem precisar saber sua localização física no disco do
servidor. Camuflando a estrutura real do disco, é possível prevenir contra possíveis ataques de hackers e

Por: Kundan Narendra 4 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

facilitamos a vida dos utilizadores Web, pois se mudarmos a estrutura interna de armazenamento, o endereço
virtual não será afectado. Cada directório (pasta) virtual criado possui suas próprias configurações de
segurança, permissões de acesso, erros personalizados, documentos padrões etc.
Para criar um directório(pasta) virtual, clique com o botão direito do mouse no Web Site onde este
deverá se localizar New Pasta Virtual. Informe então um nome (compatível com o site) para o directório
virtual, especifique o directório físico onde estarão as páginas desse directório, especifique as permissões de
acesso de seus utilizadores. Para que páginas ASP sejam executadas, deve-se pelo menos marcar a
permissão de Script. Caso contrário, o servidor Web retornará as página ASP desse directório aos clientes da
mesma forma que estão armazenadas(com todos os comandos de scripts visíveis aos utilizadores).
Quando você desejar publicar uma página na Web basta criar o ficheiro ASP ou HTML e guardá-lo
numa pasta física relacionada a algum directório virtual. Para aceder ao ficheiro por um Browser, informe o
seguinte URL:
http://nome_do_servidor/nome_directorio_virtual/nome_página

ou

http://localhost/nome_directorio_virtual/nome_página

Aspectos a verificar no seu servidor

Para utilizar código ASP nas suas páginas Web e que para depois as possa correr (testar), é
necessário atender aos seguintes requisitos. Antes de mais nada:
Certifique-se que o computador que vai alojar as páginas ASP, funciona com o S.O. Windows NT
Server, Windows 2000, Windows XP Professional ou Windows 98.
Certifique-se que você tem a mais recente versão do Microsoft Internet Information Server (IIS)
instalado, o Peer Web Services (PWS) ou mesmo o Personal Web Server (PWS, também) instalado
nesse computador.
Se pretende utilizar os recursos de acesso a Bases de dados, certifique-se os dados estão acessíveis
através de driver ODBC. Vai necessitar de um driver de ODBC instalado e funcionado no servidor. Se
optou por usar o Access, instale uma versão 7.0 (95) ou superior no Servidor. Isto garantirá a presença
do driver ODBC e facilitará a criação das suas Bases de dados. Se preferir utilizar o SQL Server,
garanta que o driver ODBC está instalado.
Se pretende usar os recursos de acesso a Bases de dados, verifique a existência de uma "Fonte de
Dados" ODBC para este Base de dados. Isto é feito usando a opção "ODBC" do "Painel de Control"
(Control Panel) do Windows. Se for usar o SQL Server, crie um utilizador com direito para aceder à
Base de dados.
Crie uma pasta para guardar as páginas ASP no seu servidor. Inclua essa pasta na lista do IIS/PWS,
dando direito de "Execute/Execução". As páginas ASP só podem ser corridas a partir de um directório
com o direito de "Execução". Não habilite a opção de "Read/Leitura", para aumentar sua segurança
nessa pasta.
Já aprenderam a instalar e gerir o Servidor web (IIS) no módulo anterior, por isso vamos passar a
utilizar esse servidor Web que instalaram, para correr os nossos scripts ASP.
Garantidos os requisitos acima mencionados, pode começar a criar a primeira página ASP.

Rotinas de Script –(revisão)


Já vimos no curso de Scripts do lado do cliente (Javascript), que um Script é um programa escrito
numa determinada linguagem de programação, e que não necessita ser compilado para ser posteriormente
executado. Os Scripts são interpretados, e os resultados são passados para a saída padrão da
aplicação(monitor de vídeo, impressora, sevidor web etc).

Por: Kundan Narendra 5 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Toda a funcionalidade e “Inteligência” de uma página ASP é controlada através de comandos de Script.
Teoricamente, o ASP pode utilizar qualquer Script Engine(interpretador), mas na prática a Microsoft só
disponibiliza dois:
Visual Basic Script (VBScript) – por defeito, se não indicar nenhuma linguagem
MS Java Script(JScript)
Ao escrevemos páginas *.ASP a primeira coisa que devemos fazer é indicar em qual dessas
linguagens disponíveis elas serão escritas, e que pode ver mais abaixo:

<% @ LANGUAGE=VBScript %>

ou

<SCRIPT LANGUAGE=”VBScript” RUNAT=SERVER>...</SCRIPT>

Vantagens do ASP
Independência do browser: ASP pode correr páginas complexas (e dinâmicas) no servidor e enviar só
os resultados para o cliente.
Páginas x Bases de Dados: Permite visualizar, actualizar, apagar e adicionar informações nos
servidores SQL Server (mais uma BD da Microsoft) ou mesmo numa BD do Access
Segurança do código fonte: Como o Servidor devolve só o resultado em html, o código fonte (lógica)
fica salvaguardada.
Linguagens: O ASP pode utilizar de comandos em VBScript, JavaScript e Html.

1º Exercício: Antes de começar a criar as páginas ASP, vamos criar o nosso directório virtual:

Configurando o PWS

Para executar o Personal


Web Server, clique no
botão "Iniciar", escolha o
item "Programas" e
posicione-se em
"Personal Web Server" e
clique sobre o programa "
Personal Web
Manager"....ou Abra o
Servidor web, clicando no

ícone do PWS (
) no seu desktop

Será aberta a seguinte


janela

a) clique no botão “iniciar”,


para iniciar o servidor

Por: Kundan Narendra 6 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

web..
b) O Servidor será iniciado, como pode ver. Na área "Principal", você verá que o serviço web está activo, que
sua home page pode ser encontrada no endereço http://nome_da_sua_maquina . De seguida, clique no ícone
“Avançadas”, como vem indicado na figura em baixo:

Ao lado vê as "pastas (directórios)


virtuais", as tais pastas virtuais que
Abre-se esta janela, e
foram criadas para este servidor e
nas opções Avançadas podemos alterá-las, adicionando
novas pastas através do botão
"Adicionar", editar uma pasta virtual
já existente, seleccionando-a e
clicando no botão "Editar
propriedades" ou removendo-a

c) Uma pasta virtual é como se criássemos um atalho no servidor web para uma pasta localizada fisicamente
(no disco) noutro local. Por exemplo, clique na pasta "IISADMIN" e edite as propriedades dele....

Conclusão: Veja que a pasta virtual "IISADMIN" está apontando para


"C:\WINDOWS\SYSTEM\insetsrv\iisadmin", e não para "C:\InetPub\wwwroot", que é a pasta padrão do nosso
servidor web. A ideia das pastas virtuais é justamente facilitar o acesso a pastas que têm um caminho muito
longo ou que estão fora da pasta padrão do servidor.

d) Na mesma janela, clique no botão


“Adicionar”.
1) Clique no botão “Procurar” para
indicar a pasta (física) onde se
encontra o Site, ou onde vamos
guardar as nossas páginas ASP, e por
isso anteriormente, vamos criar uma
pasta em : "C:\InetPub\wwwroot", com
o nome de “1CursoASP”, e será essa
pasta que vamos indicar, no sítio onde
diz-“Directório”.
2) Depois dê um nome compatível para esse directório virtual, por exemplo :”curso”
3) Para que páginas ASP sejam executadas, deve-se pelo menos marcar a permissão de Scripts..como
pode ver na imagem, as outras duas opções são opcionais.
4) Depois clique em OK...e o directório virtual foi criado.

Uma dica importante sobre o campo : “Documento(s) predefinido(s) “, não se esqueça de que o valor deste
campo pode variar de servidor para servidor (normalmente é index.htm ou index.html; ou ainda default.htm ou

Por: Kundan Narendra 7 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

default.html....ou mesmo default.asp...como pode constatar na imagem). Por isso, quando for colocar o seu site
na Internet, verifique quais são os nomes de documentos padrões do servidor onde o seu site será alojado.
Por exemplo, suponha que no seu site você criou a página inicial de nome "default.asp", e que aparece
normalmente no servidor local, que tem como documento padrão "default.asp". Se o servidor onde será alojado
o seu site na Internet tiver como documento padrão "index.asp", você será obrigado a renomear a sua página
principal e alterar todos os links no seu site para ela.

Vamos então começar a criar as nossas páginas ASP, e perceber mais um pouco sobre esta linguagem que
permite criar dinamismo e interactividade, nas páginas web.

A sua primeira Página ASP


A seguir a vossa primeira página ASP. Ela devolve simplesmente a data e hora actual do Servidor Web. Crie o
seguinte ficheiro chamado now.asp no seu directório virtual (caminho físico: C:\InetPub\wwwroot\1CursoASP) :

Pode criar a seguinte página ASP, escrevendo o código que está aí , no “Bloco de Notas”, ou no
Frontpage 2000...e guarde com o nome : now.asp

Exemplo nº 1 – now.asp

<% @ LANGUAGE=VBSCRIPT %>


<HTML><HEAD><TITLE>Curso ASP</TITLE></HEAD>
<BODY>
<%=NOW%> <!--função do vbscript que retorna hora/data-->
</BODY></HTML>

Observação : Tente abrir esta página utilizando o caminho físico da mesma e veja o que acontece quando você
tenta visualizar o código fonte. Depois, execute através do URL http://servidor/diretorio_virtual/now.asp e faça o
mesmo teste.
O Web browser não executará comandos HTML, sómente scripts. Mas como ele reconhece um
script? Simples, se o Web Server encontrar na página *.ASP a tag <% ou <SCRIPT LANGUAGE=”VBScript”
RUNAT=SERVER> ele entende que daquela posição até %> ou </SCRIPT>existem comandos de scripts a
serem executados. Sendo assim, ele os executa e só retornará para o cliente o resultado HTML. É importante
observar que o Web Server só tentará interpretar uma página se a mesma estiver guardada com a extensão
.asp, caso contrário, o servidor Web enviará a página como se fosse um ficheiro de texto normal. Logo, não
adianta criar scripts altamente eficientes e esquecer de salvar correctamente o ficheiro.
Como poderá verificar a linguagem ASP é, na verdade, uma junção de programação em VBScript e
Objectos ActiveX. Um script em ASP é identificado por um delimitador <%%>. Esse pode conter várias
instruções. Se você é um bom observador e curioso, verificou que ao examinar o código fonte, a rotina ASP não
aparece, mas sómente a página formatada. Agora você pode esconder como é que são feitas as suas páginas
(sómente o código script).
VBScript é uma linguagem criada a partir do Visual Basic, mas com algumas limitações, por
motivos de segurança.
Objectos ActiveX são objectos, ou melhor, funções prontas, já existentes no servidor. Essas
funções captam os parâmetros de entrada dos dados, manipula-os de acordo a sua função e então envia-os
para a saída. Um exemplo de ActiveX é o Objecto ASPMail, o qual capta os dados de entrada (nome, email,
corpo da mensagem, etc), cria um email com esses dados e depois envia o email.
Uma vez que a linguagem ASP é usada apenas em alguns "pedaços" de páginas HTML, existe um símbolo
para diferenciar o que é programação HTML e o que é programação ASP: <% código asp %>

Por: Kundan Narendra 8 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Funcionamento, Convenção e Simbologia


Como Funciona o ASP? Qual a simbologia e a convenção usada na programação em ASP?
ASP é uma linguagem que veio para complementar e trazer algo dinamismo à linguagem HTML. Ela traz para a
linguagem HTML todo o poder de acesso às Bases de dados, do acesso a ficheiros de texto, da captação e
validação de informações de formulário, da captação de informações sobre o visitante e sobre o servidor, do
uso de variáveis, loops. Observe o código abaixo:

Exemplo nº 2 – ola.asp

<html>
<head><title>Como funciona o ASP?</title></head>
<body bgcolor="#FFFFFF">
<p>Olá Mundo!!!</p>
<%
response.write "<p>Olá Mundo!!!</p>"
%>
<p><%="Olá Mundo!!!"%></p>
</body></html>

O código acima exibe a frase Olá Mundo!!! de três modos diferentes. O primeiro, usando apenas código HTML
puro, o segundo, usando apenas comandos ASP, e o terceiro, é uma mistura de código HTML com ASP. Como
se percebe, não é necessário construir a página inteira com códigos ASP. É possível criar páginas onde há a
mistura das duas linguagens. A única exigência é que, a partir do momento em que o código da página tenha
pelo menos uma linha na linguagem ASP, a extensão do nome da página deve ser .asp. Sómente assim o
servidor poderá distinguir quais páginas que devem ser executadas antes de enviar ao Browser. Abaixo segue
a simbologia e as convenções de uso da linguagem ASP.
<% - início do código ASP
%> - final do código ASP
' (plicas) - usadas antes de comentários dentro do código

A linguagem ASP tem uma estrutura muito bem elaborada, uma vez que ela pode ser implementada com os
chamados Objectos. A linguagem ASP, além de trazer todo o poder do VBScript para a página HTML, traz
ainda o poder dos Componentes ActiveX e dos Objectos. Os componentes ActiveX, simplificando bastante, são
bibliotecas que contêm vários objectos reunidos. Principalmente objectos que necessitam de instâncias para
funcionar, o que significa que, por exemplo, cada acesso a uma Base de dados deve ocupar uma instância
daquele objecto. Esses Objectos são add-ons que dão a capacidade de captura e transmissão de variáveis
entre as páginas, de criação e manipulação de cookies, sessions e publicidade rotativa nos sites, a capacidade
de captura de informações sobre o Browser do visitante e sobre o servidor, de consulta, alteração e adição de
dados em Base de Dados, de envio de emails via página WEB, e uma infinidade de outras funções. Esses
objectos podem ser criados por outras empresas, implementando assim o poder da linguagem ASP.

Definindo uma Aplicação ASP

Uma aplicação ASP é por definição, um conjunto de ficheiros ASP contido num directório de um servidor Web,
apresentado aos utilizadores sob a forma de directório virtual com permissão de execução.

A definição acima deixa uma dúvida ainda. O que une os ficheiros .ASP do directório virtual do servidor ?

Na verdade, não existe um ficheiro de projecto como no Visual Basic, mas sim um ficheiro (não obrigatório)
chamado GLOBAL.ASA. Se este ficheiro existir, então ele será executado antes de qualquer ficheiro ASP.
O Ficheiro global.asa tem o seguinte formato:

Por: Kundan Narendra 9 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

<SCRIPT LANGUAGE=VBSCRIPT RUNAT=SERVER>


Sub Application_OnStart
End sub
Sub Application_OnEnd
End sub
Sub Session_OnStart
End sub
Sub Session_OnEnd
End sub
</SCRIPT>

Dentro de um ficheiro GLOBAL.ASA, podemos capturar eventos de início e fim da sessão e aplicação, e ainda,
podemos inicializar objectos e variáveis comuns aos ficheiros ASP.
É importante também destacar, que sómente poderá existir um ficheiro GLOBAL.ASA para cada
directório virtual (aplicação).

Para iniciar uma aplicação ASP, é necessário que um utilizador solicite uma página ASP através do seu
browser, então ao carregar a primeira página ASP ou o ficheiro GLOBAL.ASA a aplicação é dada como
inicializada. O fim da aplicação é feita sómente quando o servidor Web é desligado, portanto, enquanto o
servidor estiver no ar, os dados das variáveis estarão disponíveis na memória. Esse conceito é o de Aplicação
em ASP.
Numa aplicação executando localmente por um único utilizador tem as suas variáveis e objectos totalmente
dedicados às suas tarefas. Mas no caso das aplicações ASP, isso nunca acontecerá, pelo contrário, poderão
aceder à mesma aplicação vários utilizadores simultaneamente.

Num ficheiro GLOBAL.ASA, podemos colocar variáveis de nível de aplicação e inicializá-los com alguma
informação que estará disponível enquanto o servidor Web estiver no ar.

Imaginem um cenário onde dois utilizadores acedem a uma aplicação ASP. Se fosse necessário armazenar
seus nomes, jamais poderíamos usar variáveis de nível de aplicação, pois elas seriam alteradas a cada acesso.
Por exemplo:

Quando o utilizador “Fulano” acedesse à variável NomeDoUsr, seu valor seria o nome “Fulano”. Em seguida, o
utilizador “Beltrano” acede à aplicação e variável NomeDoUsr conteria o valor “Beltrano”. Se o utilizador
“Fulano” retornasse à aplicação, veria o nome “Beltrano” e não o seu nome, “Fulano”.

Para resolver esse problema, em ASP, devemos usar variáveis de nível de sessão. A cada acesso, é criada
uma Sessão onde o utilizador possui informações exclusivas, que não estarão disponíveis para outros
utilizadores que estejam usando a mesma aplicação. Uma Sessão é iniciada quando um utilizador acede a uma
aplicação ASP, e termina quando ele fecha o seu browser ou encerra a ligação.

Do mesmo modo que existem variáveis de Aplicação e Sessão, podemos ter Componentes Servidores ActiveX
dos dois níveis. A inicialização desses componentes é feita através dos eventos Application_OnStart,
Application_OnEnd, Session_OnStart e Session_OnEnd, no ficheiro GLOBAL.ASA.

Objectos Internos do ASP

Ao programar em ASP, os objectos do browser do cliente não estão disponíveis. Em contrapartida, objectos de
interacção do ambiente (Objectos Internos) estão disponíveis para o uso, e são definidos como internos porque
nós não os criamos, mas simplesmente os utilizamos.

Por: Kundan Narendra 10 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Não deve ser feita nenhuma confusão entre objectos internos do ASP (que não podem ser criados ou
destruídos) com objectos ActiveX do servidor (que são instâncias de objectos).

A lista abaixo apresenta os objectos internos do ASP:

Response Linhas da página de resposta gerada para o browser do cliente;

Request Representa os dados enviados para a página ASP por um formulário ou link do
browser do cliente;

Server Representação do servidor Web onde a página ASP está a ser executada.
Permite o acesso a algumas propriedades e a criação de instâncias de
componentes Servidores ActiveX;

Application Representa uma aplicação ASP (Conjunto de páginas ASP de um directório


virtual do servidor);

Session Representa uma sessão aberta com um cliente via browser. Quando uma
sessão se fecha, todas as variáveis pertencentes a sessão encerrada são
perdidas.
Todos os objectos apresentados podem possuir propriedades, eventos, métodos e colecções.Começaremos
pelo Objecto Response, e já vimos alguns exemplos da sua utilização.

O Objecto Response

A resposta a solicitação (Request HTTP) duma página ASP, é dada pelo objecto Response. Os dados são
enviados no formato HTML, por esse motivo, não é possível o utilizador do browser ver como é o nosso código
ASP. Para o utilizador da Web, a resposta será sempre dada em HTML.
Antes duma página ASP ser enviada ao cliente o Web Server lê seu conteúdo. Se encontra TAGS HTML ou
texto, envia directamente ao cliente. Se encontra scripts, executa-os e passa o resultado HTML para o Web
Browser. Para representar essas respostas HTML, a linguagem ASP utiliza o objecto interno RESPONSE.
Com esse objecto podemos enviar simples comandos HTML ou texto, podemos redireccionar o browser para
buscar informações num outro URL, podemos bufferizar a resposta ao cliente, bem como interromper o envio
da página ASP.
O objecto Response se refere a todos os dados enviados do servidor para o cliente (utilizador - browser), ou
seja, qualquer informação enviada do servidor para o browser do utilizador se utiliza do objecto Response.

Para tanto, esse objecto possui as seguintes propriedades e métodos:

Com esse método podemos enviar qualquer texto para o web


Write > Texto browser.
Método que termina o envio da página ASP ao cliente, mesmo que
End ela não tenha chagado ao final.
Quando Buffer=True, o servidor web só enviará a página ASP ao
cliente quando encerrar toda a leitura da mesma, ou quando
utilizarmos nesse script o metódo Flush. Essa propriedade só
Buffer = Valor Booleano pode ser utilizada antes de qualquer comando que gere respostas
HTML ao cliente.
Permite redireccionar o Browser do Cliente para outra
página(URL). Se a propriedade Buffer for diferente de True, esse
método só poderá ser chamado antes de qualquer comando que
Redirect > URL gere respostas HTML ao cliente.
Esse método apaga todo o conteúdo do Buffer se o mesmo estiver

Clear

Por: Kundan Narendra 11 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

activo.
Esse método pode ser utilizado para enviar o conteúdo do Buffer
Flush para o cliente WEB.
Cria cookies ou altera seu valor. Se a propriedade Buffer for
diferente de True, essa propriedade só poderá ser chamada antes
Cookies(“nome_cookie”) = valor de qualquer comando que gere respostas HTML ao cliente.
Esta propriedade informa o tempo(minutos) em que uma página
ASP pode permanecer activa na Cache do Web Browser.
Expires = minutos Essa propriedade informa a data e a hora exacta em que a página
expira da Cache do Web Browser.
ExpiresAbsolute = #data hora# Esse método escreve um texto no ficheiro de LOG do Web Server.
AppendToLog Texto

Funções do Objecto Response:

Vamos analisar algumas funções mais importantes do objecto Response, e que podemos usar sempre:
response.write - permite enviar texto ao browser
response.redirect - Redirecciona o browser para um endereço especificado.
response.buffer - avisa o browser do utilizador que a página só deverá ser mostrada após ser totalmente
carregada. É interessante para usar com a função response.redirect.
response.cookies - grava informações no cookie do browser

response.write - envia textos ao browser. É interessante na construção de textos que misturam textos
prontos e variáveis.
sintaxe: response.write texto/variável

Exemplo 3 – response.asp
<html>
<head>
<title>response.asp</title>
</head>
<body bgcolor="#FFFF00">
<%
response.write "Olá!!! Abaixo uma rotina com o objecto response.write cujo texto varia de acordo com a
variável counter"
for counter=1 to 250
response.write counter & "->"
next
%>
</body>
</html>

Exemplo 3.1 : Response1.asp


<%
RESPONSE.WRITE "<HTML><HEAD><TITLE>Página HTML em ASP</TITLE></HEAD>"
RESPONSE.WRITE "<BODY><CENTER>A testar objecto Response.... que tal ????
</CENTER>"
RESPONSE.WRITE "</BODY></HTML>"
%>

Neste exemplo, utilizamos o objecto Response.write para escrever uma página Web, misturando as Tags HTML
e o texto que aparecerá na página.

Por: Kundan Narendra 12 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

response.redirect - redirecciona o browser do utilizador para a página especificada. Esta função só pode
ser usada antes do browser divulgar alguma informação no ecrã.

sintaxe: response.redirect(URL)

Exemplo nº 4 – response2.asp
<%
'A função response.redirect redireciona o browser do cliente para o endereço contido na variável
URLnova, no caso, www.disney.com
URLnova = "http://www.disney.com/"
response.redirect(URLnova)
%> <html>
<head>
<title>Redirect</title>
</head>
<body bgcolor="#FFFFFF">
Em breve sera direccionado para o Site novo da Disney
</body>
</html>

response.buffer - avisa o browser do utilizador que a página só deverá ser mostrada após ser carregada
totalmente. É interessante usar com a função response.redirect. Quando utilizamos Buffer=True, temos mais
controlo sobre o que será enviado como resposta ao cliente:
Observe o exemplo:
sintaxe: response.buffer = true/false

Exemplo nº 5 – response2.asp
<% RESPONSE.BUFFER=TRUE
DIM Inicio,Fim ‘ declaração das variáveis dum modo explícito
Inicio = "<HTML><HEAD><TITLE>Script Response.Buffer</TITLE></HEAD><BODY>"
Fim = "</BODY></HTML>"
RESPONSE.WRITE Inicio ‘chamada da variável Ínicio
RESPONSE.WRITE "Esse texto não será enviado ao Cliente!"
RESPONSE.WRITE Fim
RESPONSE.CLEAR ‘Esse método apaga todo o conteúdo do Buffer se o mesmo estiver activo.
RESPONSE.WRITE Inicio
RESPONSE.WRITE "Esse texto será enviado ao cliente!"
RESPONSE.WRITE Fim ‘chamada da variável Fim
%>
response.cookies - grava informações no cookie do browser.
<html>
<head><title>cookies</title></head>
<body>
<%
'o comando time insere o horário actual do servidor
response.cookies("kundanweb")("horariovisita") = time
%>
</body></html>

Por: Kundan Narendra 13 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Objecto Request

O objecto Request se refere a todos os dados requisitados pelo servidor ao cliente, ou seja, qualquer
informação requisitada pelo servidor ao browser do utilizador, por isso utilizamos para a captura dos dados
passados pelos formulários HTML ao Servidor Web no ASP.
Existem três formas diferentes de fazermos essa captura, dependendo do METHOD:

GET Request.QueryString(Nome_Objecto)
POST Request.Form(Nome_Objecto)
GET OU POST Request(Nome_Objecto)

Exemplo 6 - Vamos fazer o uso deste objecto, para isso crie duas páginas ASP, cada uma com função
específica de pedir o preenchimento de dados e enviar os dados fornecidos, pelo visitante:
Crie uma nova página, com o código que pode ver embaixo e guarde com o nome : request1.asp

<% @ LANGUAGE= VBSCRIPT %>


<HTML><HEAD><TITLE>Uso do objecto Request</TITLE></HEAD>
<BODY>
<FORM ACTION="request2.asp" METHOD=GET>
Utilizador: <INPUT TYPE=TEXT NAME="user" MAXLENGTH=10><BR>
Password : <INPUT TYPE=PASSWORD NAME="senha" MAXLENGTH=10><BR>
<INPUT TYPE=SUBMIT VALUE=”Enviar”>
<INPUT TYPE=RESET VALUE=”Limpar”>
</FORM>
</BODY>
</HTML>

Crie uma nova página, com o código que pode ver embaixo e guarde com o nome : request2.asp

<% @ LANGUAGE=VBScript %>


<HTML><HEAD><TITLE> Uso do objecto Request </TITLE></HEAD>
<BODY>
Agradecidos por ter fornecido os seus dados. Confirme se são os mesmos:
Utilizador = <%=Request.QueryString(“user”)%><BR>
Password = <%=Request(“senha”)%>
</BODY>
</HTML>

Neste exemplo, utilizamos uma página HTML (request1.asp) para pedir o nome e a password desejada pelo
utilizador, e os dados foram passados para outra página (request2.asp), atenção que não foram guardados em
local específico, foi só para exemplificar o Objecto Request.
Certamente, reparou no METHOD que era GET, e o método GET não é adequado para formulário que exigem
alguma informação secreta(password) pois o que foi digitado no mesmo é mostrado na barra de endereço do
Browser, e então os mesmos dados apareceram na barra de endereço do Browser, como pode ver mais abaixo:

http://kundan/curso/Request2.asp?user=Kundan&senha=darmeg

E, isso não é o método mais adequado para envio de dados, sendo assim, procure adaptar o exemplo anterior
METHOD=POST – na páginaao método POST, para isso altere só o método, de
METHOD=GET para
request1.asp, mas não basta só isso - na página request2.asp altere onde diz:
Utilizador = <%=Request("user")%>Utilizador = <%=Request.QueryString(“user”)%> para
e guarde as alterações efectuadas na página, experimente outra vez o formulário, e veja o resultado:

Por: Kundan Narendra 14 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

http://kundan/curso/Request2.asp
Mudando o Method de GET para POST, os dados não aparecem na barra de endereço do Browser.

Com o objecto Request somos capazes também de:

Ler Cookies Request.Cookies(“NomeCookie”)


Saber o endereço IP do utilizador Request.ServerVariables(“REMOTE_ADDR”)
Saber o METHOD utilizado Request.ServerVariables(“REQUEST_METHOD”)

Exemplo 7
Crie uma nova página, com o código que pode ver em baixo e guarde com o nome : Request3.asp

<% @ LANGUAGE=VBScript %>


<%'a função time retorna o horário do servidor
response.cookies("kundanweb")("horavisita") = time
'acima, rotina de criação de cookie que já tinhamos visto anteriormente
%>
<HTML><HEAD><TITLE>Request</TITLE></HEAD>
<BODY>Endereço IP do utilizador :
<%=Request.servervariables("REMOTE_ADDR")%>
<%
response.write "<div>" & request.cookies("kundanweb")("horavisita") & "</div>"
'acima, rotina de recuperação da informação colocada no cookie de nome kundanweb
%>
</BODY></HTML>

Obs : Como Request.QueryString, Request.Form, Request.Cookies, Request.ServerVariables possuem


colecções de variáveis, as mesmas podem ser lidas com um comando For Each.
Então acrescente mais um pouco de código à página request3.asp, e faça correr novamente a página e veja o
resultado, o código a acresecentar é o seguinte:

<%FOR EACH ITEM IN Request.ServerVariables


Response.write ITEM & “ – “ & Request.ServerVariables(ITEM) & “<BR>”
NEXT%>

Guarde as alterações efectuadas e experimente ver a página novamente.

Objecto Server

O objecto Server permite o acesso e a configuração de algumas funções e métodos diretamente ligados ao
servidor.
Representa o Servidor Web, permitindo acesso a algumas de suas propriedades. Além disso, ele possibilita a
instanciação em páginas ASP de componentes ActiveX escritos por outros programadores.
Os objectos ActiveX fazem parte da tecnologia COM para criação de componentes de software reutilizáveis. A
ideia é desenvolver objectos com esse padrão para que possam ser reutilizados por “qualquer” linguagem de
programação.
Em particular, o ASP pode trabalhar com componentes COM, só que os mesmos não podem possuir interface
visual. Sendo assim, em páginas ASP usamos os chamados ActiveX DLL’s, componentes que não fornecem
nenhuma interface com o utilizador, sómente com aplicações(métodos, propriedades).
Esses componentes estendem bastante nosso poder de programação. Entre muitas coisas, eles
nos permitem:
Aceder à Base de Dados
Criar/Ler/Alterar ficheiros
Enviar e-mail
Por: Kundan Narendra15 de um total de 792005
INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Funções do Objecto Server:


server.ScriptTimeOut - configuração do Timeout de carregamento da página
server.HTMLEncode - codifica strings. Usado para codificar strings que contenham caracteres especiais.
server.URLEncode - transforma strings para o formato QueryString.
server.MapPath - mapeia ficheiros de acordo com o path físico, a partir do path virtual.
server.CreatObject - permite criar instâncias de objectos vinculados a componentes ActiveX.

Propriedade que determina o tempo máximo(segundos) que um script ASP pode ficar em
ScriptTimeOut execução, antes que o Servidor Web o termine. Isso serve para proibir que scripts ASP
fiquem executando “indefinidatamente”.
Método que codifica uma string para o formato HTML.
HTMLEncode
Método que retorna o PATH real de um determinado directório virtual do servidor Web.
MapPath
Esse método transforma uma string para o formato padrão de URL.
URLEncode
Cria uma instância de um componente ActiveX na página ASP:
A sua Sintaxe é seguinte:
CreateObject Set Obj = Server.CreateObject(“IDObjecto”)

Exemplos:

server.ScriptTimeOut - Configura o tempo máximo para execução e carregamento da página. O tempo por
defeito é de 90 segundos.

sintaxe: server.ScriptTimeOut = tempo

Exemplo 8
<html><head><title>A Testar ScriptTimeOut</title></head>
<body>
<%
response.write(server.scriptTimeOut & "<BR>")
'vai escrever o tempo por defeito que é 90 segundos
Server.ScriptTimeOut = 120
response.write(server.ScriptTimeOut & "<br>")
'vai escrever o tempo definido anteriormente por nós que é de 120 segundos

%>
</body></html>

server.HTMLEncode - usa-se para codificar textos que contenham caracteres especiais, tais como > ou <.
Codificado, o Browser saberá que o caractere faz parte do texto, e então, esse caractere não será interpretado
com código. É usado também para para codificar caracteres de outros idiomas, de forma que o Browser
identifique o idioma, e então exponha os símbolos correctos na página. Vamos ver um exemplo:

sintaxe: server.HTMLEncode("string")

escreva este código a seguir ao código- do exemplo 8

<br>
<%
'Exemplo HTMLEncode
response.write(server.HTMLEncode("<<<Olá Mundo>>>"))
response.write "<br>"

Por: Kundan Narendra 16 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

response.write(server.HTMLEncode("WELCOME TO MÜNCHEN"))
'os caracteres <, >, e Ü são caracteres especiais.
'O comando HTMLEncode assegura que esses códigos serão interpretados de forma correcta pelo Browser.
%>
Após escrever o código, guarde as alterações e experimente correr a página.

server.URLEncode - URLs (Uniform Resource Locators) são usados para requisitar ficheiros e informações em
servidores WEB. Muitas vezes, os URL’s não contêm apenas o nome do ficheiro, mas também carregam com
eles valores de variáveis no formato QueryString. O comando server.URLEncode transforma strings de texto em
strings no formato QueryString.

sintaxe: request.URLEncode("string")

escreva este código a seguir ao código- do exemplo 8

<br>
<%
'Exemplo URLEncode
response.write(server.URLEncode("test.asp?name= Kundan Narendra&idade=18 anos"))
response.write "<br>"
response.write("test.asp?" & server.URLEncode("name= Kundan narendra&idade=18 anos"))
%>

Após escrever o código, guarde as alterações e experimente correr a página.

server.MapPath - retorna o path físico do ficheiro a partir do path virtual.No caso de ficheiros que não
tenham homônimos no mesmo domínio, a função server.MapPath é capaz de localizar o ficheiro no domínio e
retornar o path físico.

sintaxe: server.MapPath("path virtual")

escreva este código a seguir ao código- do exemplo 8

<br>
<%
'Exemplo server.MapPath
response.write(server.mappath("/server1.asp"))
'a linha acima retorna o path virtual do ficheiro server1.asp no servidor.
'C:\Inetpub\wwwroot\server1.asp
response.write "<br>"
response.write(server.MapPath("server1.asp"))
'a linha acima retorna o mesmo path físico, apesar de não conter o path virtual,
'e sim, apenas o nome do ficheiro. Tal retorno só é possível se não existirem dois
' ficheiros com o mesmo nome dentro do mesmo domínio.
'No caso, c:\Cenforcal\1CursoASP\server1.asp
%>

Após escrever o código, guarde as alterações e experimente correr a página.

Mais á frente, iremos fazer exercícios concretos do objecto Server.CreateObject (página 37) - É usado para
gerar instâncias de componentes para uso nos Scripts. Por padrão, cada objecto criado a partir do componente
é automáticamente destruído ao acabar o processamento da página.

Objecto Application

Por: Kundan Narendra 17 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Ao conjunto de páginas ASP do mesmo directório virtual damos o nome de Aplicação ASP. Tal aplicação será
iniciada na primeira vez que um utilizador tentar aceder a uma página desse directório virtual. Será finalizada
quando o servidor web for desligado.
Esse objecto permite- nos manipular dados relativos a toda aplicação ASP. Esses dados podem ser
compartilhados em diversas sessões por vários utilizadores, através de variáveis e objectos de nível de
aplicação.
O objecto Application tem a duração e o scope da aplicação ASP, ou seja, enquanto o servidor Web estiver no
ar, o objecto estará activo desde o primeiro acesso a aplicação.
Não possuindo propriedades, esse objecto é capaz de armazenar qualquer tipo de variável no seu interior
(encapsular). Exemplo:

Sintaxe:
Application(“<NomeDaVariável”) = <Valor>

Como o conteúdo desse tipo de variável pode ser modificado por qualquer utilizador ligado à aplicação, poderia
haver alguma confusão se vários utilizadores tentassem alterar esse valor ao mesmo tempo. Para evitar
possíveis problemas com a “concorrência", o objecto application disponibiliza dois métodos: LOCK e UNLOCK.
O primeiro bloqueia as variáveis de nível de aplicação para o utilizador que invoca tal método. Se qualquer
outro “utilizador” tentar aceder a variáveis desse nível, ficará esperando até que a aplicação seja desbloqueada.
A aplicação só será desbloqueada quando o script que a bloqueou termina a sua execução, ou quando ocorre o
“TimeOut”, ou mesmo quando o script invoca o método UNLOCK.
Ainda relacionado a esse objecto existem dois eventos:

Ocorre quando a aplicação é iniciada, ou seja, quando um directório virtual é


Application_OnStart acedido pela primeira vez.
Ocorre quando a aplicação é finalizada, ou seja, quando o web server é
Application_OnEnd desligado.

Um evento é uma subrotina chamada automáticamente quando o sistema sofre alguma acção
especifica. Tais subrotinas não são escritas directamente nas páginas ASP mas num ficheiro à parte nomeado
de GLOBAL.ASA –o qual já foi apresentado anteriormente.
Sendo assim, quando um directório virtual for acedido pela primeira vez, o Servidor Web procura em tal
directório a existência desse ficheiro. Se encontra, abre o ficheiro e procura a subrotina Application_OnStart
para executar os seus comandos. A mesma coisa acontece quando desligamos o servidor web, só que ele
chama a subrotina Application_OnEnd.
No exemplo a seguir criamos uma variável de nível de aplicação chamada DataHoraI para armazenar a
Data/Hora em que a aplicação foi iniciada. Outra variável chamada Titulo para armazenar o titulo da aplicação
ASP. E uma variável chamada Correio que armazena o e-mail do Web Master:

Exemplo 9: Ficheiro Global.asa

<SCRIPT LANGUAGE=VBSCRIPT RUNAT=SERVER>

Sub Application_OnStart()
Application(“DataHora”)=Now
Application(“Titulo”)=”Curso de ASP”
Application(“mail”)=”mailto:[email protected]
End Sub

</SCRIPT>

Exemplo 9.1 : Guarde com o nome Application1.asp

Por: Kundan Narendra 18 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

<% @LANGUAGE=VBSCRIPT %>


<HTML><HEAD><TITLE><%=Application(“Titulo”)%></TITLE></HEAD>
<BODY>
Esta aplicação ASP foi iniciada em <B><%=Application(“DataHora”)%></B><BR>
<a href="<%=Application("mail")%>">Web Master</a>
</BODY>
</HTML>

Observe que o trabalho de manutenção do site pode ficar facilitado. Imagine que todas as páginas ASP’s do
seu directório virtual possuem um padrão de cores, links, cabeçalho, etc. Sendo assim, as páginas teriam muito
código em comum. Se desejarmos modificar os padrões do nosso site, teríamos que fazer alterações em todos
os ficheiros do directório virtual. Mas se utilizarmos variáveis de nível de aplicação para armazenar essas
configurações, não necessitamos mudar todos os ficheiros do directório, mas apenas o ficheiro GLOBAL.ASA.

Exemplo 9.2: Acresecente as novas variáveis ao ficheiro - Global.asa


ATENÇÃO: Só pode haver um ficheiro Global.asa em cada directório virtual (ou seja em cada aplicação)

<SCRIPT LANGUAGE=VBSCRIPT RUNAT=SERVER>

Sub Application_OnStart()
Application(“DataHora”)=Now
Application(“Titulo”)=”Curso de ASP”
Application(“mail”)=”mailto:[email protected]
Application(“CorFundo”)=”Black”
Application(“CorTexto”)=”Yellow”
Application(“TamFonte”)=”4”
End Sub

</SCRIPT>

Exemplo 9.3: Guarde com o nome Application2.asp

<% @LANGUAGE=VBSCRIPT %>


<HTML><HEAD><TITLE>
<%=Application("Titulo")%>
</TITLE></HEAD>
<BASEFONT SIZE=<%=Application("TamFonte")%> COLOR=<%=Application("CorTexto")%>>
<BODY BGCOLOR=<%=Application("CorFundo")%>>
Essa aplicação ASP foi iniciada em <B><%=Application("DataHora")%></B><BR>
<A Href="<%=Application("mail")%>">Web Master</a>
</BODY>
</HTML>
Experimente ver as alterações que efectuou, teste a página Application2.asp

Objecto Session

Toda vez que um utilizador Web se liga a uma aplicação ASP é iniciada uma sessão para o mesmo no servidor
Web. Para representar tal sessão, o ASP possui um objecto interno chamado Session.
Na verdade, este objecto é muito semelhante com o objecto Application. A diferença esta em dizer que esse
objecto pode armazenar valores ligados apenas a um único visitante do site(o dono da sessão). Com ele
podemos criar variáveis de qualquer subtipo cujo valor pode ser acedido ou modificado sómente pelo “dono” da
sessão.
Para criar uma variável do nível de sessão, devemos escrever comandos com seguinte sintaxe:

Por: Kundan Narendra 19 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Session(“NOME_DA_VARIAVEL”) = VALOR_DA_VARIAVEL

As variáveis de sessão permanecerão na memória(activas) até a sessão ser encerrada. Isso pode acontecer
quando o utilizador fechar o web browser, ou quando ocorre o “TIMEOUT” da sessão, ou quando o script
invoca o método ABANDON do objecto Session.
As sessões criadas por aplicações ASP, são mantidas por elementos conhecidos por Cookies.
A propriedade TIMEOUT é usada quando o utilizador fica parado sem fazer nada no Browser. O default é vinte
minutos, mas esse valor pode ser modificado da seguinte forma:

Session.Timeout = VALOR_MINUTOS

Ainda relacionado a esse objecto existem dois eventos:

Session_OnStart Ocorre quando a sessão é iniciada


Session_OnEnd Ocorre quando a sessão é finalizada.

A exemplo dos eventos do objecto Application, eles também devem ser escritos como subrotinas no ficheiro
GLOBAL.ASA.
O exemplo ilustra o conceito de sessão. Temos uma variável a nível de aplicação chamada contador. Ela serve
para informar a quantidade de pessoas que acederam à aplicação ASP. A idéia é incrementar o valor dessa
variável toda vez que uma sessão é iniciada. Também utilizamos uma variável de sessão que informa a hora
em que a sessão em questão foi aberta.

Exemplo 10 – Acrescente as linhas de código a negrito ao ficheiro -Global.asa, criado no exemplo 9

<SCRIPT LANGUAGE=VBSCRIPT RUNAT=SERVER>

Sub Application_OnStart()
Application(“DataHora”)=Now
Application(“Titulo”)=”Curso de ASP”
Application(“mail”)=”mailto:[email protected]
Application(“CorFundo”)=”Black”
Application(“CorTexto”)=”Yellow”
Application(“TamFonte”)=”4”
Application(“Contador”)=0
End Sub

Sub Session_OnStart()
Application("Contador")=Application("Contador")+1
Session(“HoraS”)=Time
End Sub

</SCRIPT>

A página a seguir encerra a sessão através do método ABANDON:

Exemplo 10.1 :Crie o ficheiro sessao1.asp

<% @LANGUAGE=VBSCRIPT %>


<HTML><HEAD><TITLE><%=Application(“Titulo”)%></TITLE></HEAD>
<BODY>
Esta sessão foi iniciada às <%=Session(“HoraS”)%><BR>
Você é o visitante de número <%=Session(“Contador”)%><BR>

Por: Kundan Narendra 20 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Desde <%=Application(“DataHora”)%>
<HR>
<A HREF=”sessao2.asp”>Encerrar Sessão</A>
</BODY>
</HTML>

Exemplo 10.2 : Crie o ficheiro sessao2.asp –para permitir ao utilzador terminar a sessão

<% @LANGUAGE=VBSCRIPT %>


<HTML><HEAD><TITLE><%=Application(“Titulo”)%></TITLE></HEAD>
<BODY>
<%
Response.write “Obrigado por ter visitado a nossa página”
%>
</BODY>
</HTML>

Estes eram os Objectos internos do ASP, e que permitem-nos utilizá-los para melhorar, e até automatizar
algumas tarefas, como deu para ver com alguns exemplos concretos.
Falamos, em variáveis em alguns exemplos que criamos até agora.... o que é uma variável ????

VARIÁVEIS

São identificadores alfanuméricos que “apontam” para posições de memória onde existem valores
armazenados temporáriamente, podendo estes ser alterados durante o processamento de uma aplicação. Não
nos interessa saber como esse valor será armazenado na memória, nem onde. Basta apenas sabermos o nome
e o tipo do valor armazenado em tal variável.
Nas ASP, as variáveis são também, como no Visual Basic, dinâmicas, não sendo por isso necessária a sua
inicialização. Seja como for, é 'má' programação usar variáveis globais sem controlo sobre as mesmas. Deve-se
usar, mas não em excesso, assim como se devem sempre inicializar as mesmas, não só para melhor controlo,
mas também para melhor performance.
Em VBScript os nomes de variáveis devem começar obrigatoriamente com uma letra e não podem exceder 255
caracteres. Ao contrário da maioria das linguagens de programação, uma variável do VBScript não necessita
ser declarada antes de ser utilizada.
Dim Nome_da_Variavel

Exemplo 11: Guarde este ficheiro com o nome de var1.asp


<% @ LANGUAGE=VBSCRIPT %>
<HTML><HEAD><TITLE>Declaração de variáveis em ASP</TITLE></HEAD>
<BODY>
<% Dim v1 ‘declaração de variáveis
v1 = 100
v2 = 200
v3 = 300 %>

V1=<%=v1%><BR>
V2=<%=v2%><BR>
V3=<%=v3%>
</BODY></HTML>
Simples, não é ????
A mesma variável não pode ser declarada mais de uma vez no mesmo Scope do script: O
código a seguir está errado :

Por: Kundan Narendra 21 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Exemplo 11.1:
<% @ LANGUAGE=VBSCRIPT %>
<HTML><HEAD><TITLE>Curso ASP</TITLE></HEAD>
<BODY>
<% Dim v1
v1 = 100
v2 = 200
Dim v1 ‘Redeclaração da Variável v1
v1 = 900
v3 = 300 %>
V1=<%=v1%><BR>
V2=<%=v2%><BR>
V3=<%=v3%>
</BODY></HTML>

Obs: O “tempo de vida” de uma variável vai desde sua declaração explícita(Dim) ou implícita(sem o Dim) até o
final do script ou sub-rotina.
Talvez não seja fácil perceber isso com exemplos tão simples mas scripts com declarações implícitas de
variáveis são mais difíceis de ser entendidos, além de estarmos mais vulneráveis a erros de digitação. Observe
o seguinte exemplo e tire suas conclusões.

Exemplo 11.2:
<% @ LANGUAGE=VBSCRIPT %>
<HTML><HEAD><TITLE>ASP</TITLE></HEAD>
<BODY>
<% teste = “Centro de Formação Profissional Cenforcal” %>
Nome do Utilizador = <%=tste%>
</BODY></HTML>

Para evitar esse tipo de erro, podemos utilizar a declaração Option Explicit. Ela informa ao interpretador do
script que variáveis só poderão ser utilizadas se antes forem declaradas explicitamente.

Exemplo 11.3: Crie e guarde o ficheiro com o nome de var2.asp


<% @ LANGUAGE=VBSCRIPT %>

<% Option Explicit %>


<HTML><HEAD><TITLE>ASP</TITLE></HEAD>
<BODY>
<%Dim Teste
teste = “Centro de Formação Profissional Cenforcal” %>
Nome do Utilizador = <%=tste%>
</BODY></HTML>

Guarde o ficheiro com o nome de var2.asp, e execute-o no Browser, e repare que agora a execução do script
retornará um erro, uma vez que a variável tste (erro de digitação) não foi explicitamente declarada.
O comando Option Explicit obriga ao programador declarar as variáveis explicitamente, e se no decorrer do
programa aparece uma variável que não foi declarada, o programa dá erro ao ser executado no Browser.

Tipos de Dados

Por: Kundan Narendra 22 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

O VBScript contém apenas um tipo de variável, denominado Variant. O tipo variant pode armazenar qualquer
tipo de dado, e de acordo com o tipo de dados que é armazenado, é possível classifica-lo de acordo com os
subtipos de dados, abaixo relacionados:

Subtipo Descrição
Variável que contém 0 para valores numéricos e "" (string vazia) para
Empty strings.
Variável que não contém dado algum.
Null Contém True ou False
Boolean Números inteiros entre 0 e 255
Byte Números inteiros no intervalo de -32,768 a 32,767.
Integer Números inteiros no intervalo de -2,147,483,648 a 2,147,483,647.
Long Números com ponto flutuante de precisão simples na faixa de -
3.402823E38 a -1.401298E-45 para números negativos e 1.401298E-45 a
3.402823E38 para números positivos.
Números com ponto flutuante de dupla precisão na faixa de -
Single 1.79769313486232E308 a -4.94065645841247E-324 para números
negativos e 4.94065645841247E-324 a 1.79769313486232E308 para
números positivos.
Dados no formato de Data (data e tempo) na faixa de 1 de janeiro de 100 a
Double 31 de dezembro de 9999. (January 1, 100 a December 31, 9999).
Contém dados no formato de string, que podem ter até aproximadamente 2
bilhões de caracteres de tamanho.
Date
(Time)

String

Obs: é possível a conversão de dados de um tipo para outro, mas para isso, os dados devem ser compatíveis
com o subtipo desejado, ou seja, a String "23/5/03" pode ser convertida para o subtipo Date, e vice-versa. Mas
a String "ASP" não pode.
É importante a conversão de tipos de dados uma vez que o modo como os dados serão manipulados
dependem do seu subtipo. Vamos ver alguns comandos para Converter Dados

Para verificar e converter Tipos de Dados, a linguagem VBScript contém algumas funções de verificação e
conversão de tipos de dados importantes para a melhor manipulação dos dados.
As funções de verificação são importantes na hora de detectar se os dados contidos numa variável são
compatíveis com o subtipo para o qual se deseja converter estes dados.
As funções de conversão fazem a conversão de dados de um subtipo para outro, mas para isso, é necessário
que esses dados sejam compatíveis com o subtipo que se deseja obter.

Funções de Verificação

IsArray - IsDate - IsEmpty - IsNull - IsNumeric (exemplo mais abaixo)

Funções de Conversão
CBool - CByte - CDate - CDbl - CInt - CLng - CStr - CSng

Exemplo de CInt - converte a expressão dada num tipo Exemplo de IsDate - retorna True caso o valor da
de dado do subtipo Integer. A diferença para o subtipovariável possa ser convertido em data, caso contrário,
Byte é a faixa de abrangência.retorna False.

Por: Kundan Narendra23 de um total de 79 2005


sintaxe: CInt(nomedavariavel ou expressão)sintaxe: IsDate(nomedavariavel)

<% <%
asp = "23" asp= "23/5/03"
asp2 = 34.67 asp2= "CURSOASP"
response.write Cint(asp) 'retorna 23 response.write IsDate(asp) 'retorna true
INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Vamos agora ver um pequeno exemplo sobre o Tipo de dados:

Exermplo 12: Crie e guarde um ficheiro com o nome de tipo.asp


<% @ Language = VBScript%>
<% Option Explicit %>
<HTML><HEAD><TITLE>Tipo de dados em ASP</TITLE>
<BODY>
<% Dim A
A = "Centro de Formação Profissional Cenforcal" %>
Valor de A como String = <%=A%><BR>
<% A = 2 %>
Valor de A como Inteiro = <%=A%><BR>
<% A=#02/10/2002# %>
Valor de A como Date = <%=A%><BR>
<% A = #06:30:00# %>
Valor de A como Time = <%=A%><BR>
<% A = 10.20 %>
Valor de A como Real = <%=A%><BR>
<% A = True %>
Valor de A como Booleano = <%=A%><BR>
</BODY>
</HTML>
Guarde e experimente.
É possível em VBScript declarar uma variável para armazenar mais de um valor: Array. Ao
declararmos uma variável array devemos informar seu nome e a quantidade de valores que a mesma pode
armazenar:

Dim Nome_Array(Quantidade)

Para aceder a um determinado valor duma variável array, informamos o nome e a posição de tal
valor. Esse índice começa em 0(zero) e vai até o valor especificado na declaração(Quantidade).

Exemplo 12.1: Crie e guarde o ficheiro com o nome de array1.asp

<% @ Language = VBScript%>


<HTML><HEAD><TITLE>Curso ASP</TITLE>
<BODY>
<% Dim MeuArray(3)
MeuArray(0)=Date
MeuArray(1)="Kundan Narendra"
MeuArray(2)=12.45

Por: Kundan Narendra 24 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

MeuArray(3)=Now
%>
Posição 1 = <%=MeuArray(0)%><BR>
Posição 2 = <%=MeuArray(1)%><BR>
Posição 3 = <%=MeuArray(2)%><BR>
Posição 4 = <%=MeuArray(3)%>
</BODY>
</HTML>

Observe que o valor armazenado em cada elemento de um array pode ser de um subtipo diferente dos demais.
Outra observação importante: arrays têm que ser declarados explicitamente.

CONSTANTES

Uma constante representa um valor fixo através de um identificador alfanumérico. A diferença para variáveis é
que o valor uma vez definido, não pode ser modificado. Para definir uma função em VBScript utiliza-se a
declaração Const:
Const Nome_Constante = Valor_Constante

Exemplo 13 : Crie um ficheiro com o seguinte código e guarde-o com o nome constante.asp

<% @ LANGUAGE=VBSCRIPT %>


<HTML><HEAD><TITLE>Constantes</TITLE></HEAD>
<BODY>
<% Const nome = "Kundan"
Const data = #04/06/1962# %>
<B>Nome: </B><%=nome%><BR>
<B>Nascido em :</B><%=data%><BR>
</BODY></HTML>

OPERADORES

De nada adiantaria termos valores armazenados em nossas variáveis de memória, se não pudéssemos fazer
cálculos, comparações ou qualquer outra operação com elas. Em VBScript temos um conjunto de símbolos
alfanuméricos para efectuar tais operações:

Operador Descrição
= Atribuição / Igual
<> Diferente
< Menor que
<= Menor ou igual a
> Maior que
>= Maior ou igual a
+ Soma numérica/ Concatenação de Strings
- Subtracção ou negativo Numérico
* Multiplicação
/ Divisão
\ Efectua a divisão entre dois números e retorna um número inteiro
Mod Retorna o Resto de uma divisão entre inteiros

Por: Kundan Narendra 25 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

^ Exponenciação
& Concatenação de Strings
Is Comparação de Igualdade entre dois Objectos

Pelo exposto, não é difícil perceber que as variáveis serão manipuladas de acordo com os seus subtipos. Os
valores envolvidos numa mesma operação devem ser do mesmo subtipo ou de subtipos compatíveis.

Exemplo 14: Crie e guarde o ficheiro com o nome de operador.asp

<% @ LANGUAGE=VBSCRIPT %>


<% Option Explicit %>
<HTML><HEAD><TITLE>Operadores no ASP</TITLE></HEAD>
<BODY>
<% Dim a,b
a = 10
b=2
response.write a * b
%>
O resultado de A - B será = <%=a-b%><BR>
O resultado de A + B será = <%=a+b%>
</BODY></HTML>

Funções no ASP
Um dos aspectos mais positivo nas ASP, são as suas funções, e a facilidade com que se pode
trabalhar com as mesmas. Existem funções que facilitam muito a vida a quem faz a
programação de vários sites, permitindo uma actualização fácil.

Na seguinte tabela, vai encontrar algumas funções necessárias para a programação de


potentes sites interactivos e dinâmicos. Será a partir destas funções que se irá confrontar com
exemplos realmente essenciais para a programação do dia a dia de sites profissionais.

FUNÇÃO DESCRIÇÂO

Abs() Devolve o valor absoluto de um número

Array() Define um conjunto de valores identicos. O 1º indice tem o valor 0(zero)

Asc() Devolve e valor ASCII de um caracter

Atn() Devolve o arco-tangente de um número

CBool() Devolve True ou False de uma expressão

CByte() Devolve o valor Byte de um número

CCur() Devolve o valor na moeda corrente

CDate() Devolve o valor da data corrente

CDbl() Devolve um valor em tipo DOULBLE

Chr() Devolve o caracter de um valor ASCII

Por: Kundan Narendra 26 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

CInt() Devolve um valor INTEIRO

CLong() Devolve um valor LONGO

Cos() Devolve o coseno de um angulo

CreateObject() Cria uma referencia a um objecto externo

Csng() Devolve um valor tipo SINGLE

Date() Devolve a data do servidor

DateAdd() Devolve a data + N dias

DateDiff() Devolve a diferença entre duas datas

DatePart() Devolve, a partir de uma certa data, a altura do ano

DateSerial() Devolve uma data para determinado Dia, Mes, Ano

DateValue() Devolve uma data válida

Day() Devolve o dia de uma data

Exp() Devolve o exponencial de um valor

Filter() Devolve o valor de uma determinada pesquisa num Array

Fix() Devolve o inteiro de um número

FormatCurrency() Devolve um valor na moeda corrente

FormatDateTime() Devolve um valor na data corrente

FormatNumber() Devolve um número em determinado formato

FormatPercent() Devolve a percentagem de um quociente

GetObject() Devolve e referencia de um objecto

Hex() Devolve o valor hexadecimal

InStr() Devolve a posição de uma string dentro de outra a contar do inicio

InStrRev() Devolve a posição de uma string dentro de outra a contar do fim

IsArray() Devolve True ou False sobre uma variavel array (Tabela)

IsDate() Devolve True ou False sobre se uma variavel é uma data valida ou não

Por: Kundan Narendra 27 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

IsEmpty() Devolve True ou False se uma variavel está vazia ou não

IsNull() Devolve True ou False se uma variavel é nula ou não

IsNumeric() Devolve True ou False se uma variável é numérica ou não

IsObject() Devolve True ou False se é um objecto válido ou não

Join() Devolve uma variável concatenando uma variável array

LBound() Devolve o menor valor da dimensão de um array

LCase() Devolve uma strig em minusculas

Left() Devolve um certo número de caracteres á esquerda de uma stringg

Len() Devolve o comprimento de uma string

Log() Devolve o logaritmo de um número

LTrim() Devolve uma string eliminando os espaços á esquerda

Mid() Devolve um número de caracteres a partir de uma dada posição

Minute() Devolve o minuto de uma dada hora

Month() Devolve o mes de uma data

Monthdate() Devolve o nome do mes correspondente a uma data

Now() Devolve o data e a hora corrente

Oct() Devolve o valor octal de um número

Replace() Devolve uma string alterada por outra

Devolve o valor de uma cor (R)=Red/Vermelho (G)=Green/Verde


RGB()
(B)=Blue/Azul

Right() Devolve um número de caracteres á direita de uma string

Round() Devolve valores numéricos arredondados

Second() Devolve os segundos da hora corrente

Sgn() Devolve o sinal de um valor (1=positivo) (0=zero) (-1=negativo)

Sin() Devolve o seno de um angulo

Space() Devolve / introduz um número de espaços entre duas strings

Por: Kundan Narendra 28 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Split() Devolve um array atraves de uma string

Sqr() Devolve a raiz quadrada de um número

StrComp() Devolve 1 ou -1 conforme as strigns são iguais ou diferentes

StrReverse() Devolve uma string invertendo os caracteres

String() Devolve um caracter repetido N vezes

Tan() Devolve a tangente de um número

Time() Devolve a hora do sistema

Timevalue() Devolve uma hora válida

TypeName() Devolve o tipo de variável

UBound() Devolve o maior valor da dimensão de um array

Ucase() Devolve uma string em maiusculas

Devolve um número correspondente ao tipo de variável

0-Vazia ; 1-Nula ; 2-Integer ; 3-Long ; 4-Single ; 5-Double ; 6-Currency


VarType()
7-Data ; 8-String ; 9-Object ; 10-Error ; 11-Booleano ; 12-Variant ; 13-DAO

17-Byte ; 8192-Array

Weekday() Devolve o dia da semana, um número (1=Domingo), etc.

WeekDayName() Devolve por extenso o dia da semana

Year() Devolve o ano da data

Vamos agora ver um exemplo da utilização de algumas Funções aqui descritas:

Exemplo 15: funcoes1.asp

<% @ Language = VBScript%>


<% Option Explicit%>
<HTML><HEAD><TITLE>Curso ASP</TITLE>
<BODY>
<% Dim dia,mes,ano
dia = 4
mes = 6
ano = 2003 %>
<%=DateSerial(ano,mes,dia) %>
<BR><%=CDate(dia & "/" & mes & "/" & ano)%>
Por: Kundan Narendra29 de um total de 79
2005
INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

<BR>
Eu gostaria de Ganhar <%=FormatCurrency(50000)%> por mês ! <BR>
Hoje eu ganho <%=FormatNumber(35/3)%> por dia....
</BODY>
</HTML>

ESTRUTURAS DE CONTROLO (ou decisão)

São estruturas embutidas numa linguagem de programação que nos permite executar determinado conjunto de
comandos de acordo com uma determinada condição.

O primeiro comando do VBScript que se encaixa nessa descrição é o IF:

If <Condição> Then
Instruções
End if

Esse comando testa a Condição, se mesma for verdadeira, o bloco de instruções entre If e End If
será executado. A expressão IF, é aqui usada para que em conjunto com o operador de comparação , fizessem
uma comparação, e se a condição fosse verdadeira o programa continua, senão termina.

Exemplo 16 : if1.asp
<% @ Language = VBScript%>
<HTML><HEAD><TITLE>If....End If</TITLE></HEAD>
<BODY>
<% if WeekDay(Date)=1 then %>
Hoje é Domingo
<% end if %>
<% if WeekDay(Date)<>1 then %>
Hoje não é Domingo
<% end if %>
</BODY></HTML>

O exemplo anterior apesar de estar sintáticamente e correctamente escrito, poderia ser escrito de uma forma
mais eficiente. Para tal, devemos utilizar o comando If associado a Else:

If <Condição> Then
Comandos_1
Else
Comandos_2
End if

Quando o interpretador encontra esse comando testa a condição, se for verdadeira, executa o bloco de
Comandos_1. Se a condição for falsa(0), o interpretador salta para Else e executa o bloco de comandos_2, e
este tipo de programação permite, um melhor aproveitamento do Processador, e sua consequente economia.
Então, utilizando o IF...ELSE.... o programa teria a seguinte estrutura:

Exemplo 16.1 : if2.asp


<% @ Language = VBScript%>
<HTML><HEAD><TITLE>If....End If</TITLE></HEAD>

Por: Kundan Narendra 30 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

<BODY>
<% if WeekDay(Date)=1 then %>
Hoje é Domingo
<% else %>
Hoje não é Domingo
<% end if %>
</BODY></HTML>
Experimente correr o programa e verificará, que o resultado é idêntico ao anterior.
Podemos também ter vários If..Then...Else aninhados, em que cada cláusula Else estará ligada ao If .. Then
imediatamente anterior.

Exemplo 16.2 : if3.asp

<% @ Language = VBScript%>


<HTML><HEAD><TITLE> If....Else…End If </TITLE></HEAD><BODY>
<% if WeekDay(Date)=1 then %>
Hoje é Domingo
<% else
if WeekDay(Date)=7 then %>
Hoje é Sábado
<% else%>
Hoje é dia de trabalhar e estudar
<%end if
end if %>
</BODY>
</HTML>

No exemplo anterior temos um End IF para cada If .. then .. Else. Isso dificulta bastante a leitura do código por
parte do programador. Para melhorar a nossa vida, o VBScript possui uma estrutura derivada da anterior: o If
Then ElseIf. A diferença dessa estrutura para a anterior é que agora só precisamos de um endif ao final de
todos os comandos. Sintaxe:

If <Condição> Then
Comandos_1
ElseIF <Condição>
Comandos_2
Else
Comando_3
End if

Exemplo 16.3 : if4.asp

<% @ Language = VBScript%>


<HTML><HEAD><TITLE>If…ElseIf…</TITLE>
<BODY>
<% if WeekDay(Date)=1 then %>
Hoje é Domingo
<% elseif WeekDay(Date)=7 then %>
Hoje é Sábado
<% else%>
Hoje é dia de trabalhar e estudar
<% end if %>
</BODY></HTML>

Por: Kundan Narendra 31 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Este tipo de expressões dá muito jeito aos programadores para criar programas complexos, mas quando
existem várias opções em cadeia, eu sugiro que se use a existe uma estrutura alternativa ao If..Then..Else,
mais flexível e mais elegante, o :

Select Case; fica melhor organizado, e as confusões dentro do código são bastante menores.

Sintaxe:

Select Case Expressao


Case Condição
Comandos_1
Case Condição 2
Comandos_2
Case Else
Comandos_3
End Select

Exemplo 17 : Crie um ficheiro com o seguinte código e guarde-o com o nome select.asp
<html><head><title>Select Case</title>
<body>
<%
cumprimento = hour(now)
Select Case cumprimento
case 0,1,2,3,4,5,6,7,8,9,10,11,12
response.write "Bom Dia"
case 13,14,15,16,17,18,19
response.write "Boa Tarde"
case 20,21,22,23,24
response.write "Boa Noite"
Case else
response.write "Este relógio está maluco"
End Select
%>
</body>
</html>

Guarde o ficheiro, e experimente-o no Browser.

Trabalho 1: Agora escreva o código do exemplo anterior, utilizando a estrutura IF – e mostre-o ao formador.

Resolução na última página deste Manual.

Vamos ver mais um exemplo, que poderá ser útil para algumas páginas onde temos de mostrar o dia da
semana.

Exemplo 17.1 : select1.asp

<% @LANGUAGE=VBSCRIPT%>
<HTML>
<HEAD><TITLE>Select Case</TITLE></HEAD>
<BODY>

Por: Kundan Narendra 32 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

<% Dim DiaS

Select Case WeekDay(Date)


Case 1
DiaS = “Domingo”
Case 2
DiaS = “Segunda-feira”
Case 3
DiaS = “Terça-feira”
Case 4
DiaS = “Quarta-feira”
Case 5
DiaS = “Quinta-feira”
Case 6
DiaS = “Sexta-feira”
Case Else
DiaS = “Sábado”
End Select %>
Hoje é <%=DiaS%>
</BODY>
</HTML>

Pergunta: Qual foi a Função que foi utilizada, nesta estrutura ???
Resposta: Foi utilizada a função ___________________

Trabalho 2: Agora escreva o código para que além do dia mostre a Hora Actual – e mostre-o ao formador.

Resolução na última página deste Manual.

ESTRUTURAS DE CONTROLE (OU REPETIÇÃO)

É possível repetir um bloco de instruções dentro de um programa escrito em VBScript. Para isso existem sete
tipos diferentes de estruturas de repetição, denominadas de loop:
Do Until <Condição>
Executa um bloco de instruções até que a Condição se
instruções
torne verdadeira
Loop
Só difere da estrutura anterior pois a condição só éDo
testada no final. Sendo assim, as instruções do loopinstruções
serão executadas pelo menos uma vez.Loop Until <Condição>
Do While <Condição>
Executa um bloco de comandos enquanto a condição
instruções
for verdadeira
Loop
Só difere da estrutura anterior pois a condição só éDo
testada no final. Sendo assim, as instruções do loopinstruções
serão executadas pelo menos uma vez.Loop While <Condição>
While <Condição>
instruçõesMesma coisa que Do While ... Loop
Wend
For Variável=limiteI to limiteF Step NA Variável será iniciada com o valor limiteI. A cada
instruçõesexecução do loop ela é incrementada em N. Quando
Nextseu valor ultrapassar de limiteF, o loop se encerra.
Por: Kundan Narendra 33 de um total de 79 2005
INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

For Each Elemento In Colecção Parecido com a estrutura anterior, só que aqui o bloco
instruções de instruções é executado para cada elemento
Next existente numa matriz ou numa colecção de objectos.

Vamos ver alguns exemplos da utilização de loops, tem de ter em atenção não criar Loops infinitos.

Exemplo 18 : loop.asp

<% @LANGUAGE=VBSCRIPT%>
<HTML>
<HEAD><TITLE>Loops</TITLE></HEAD>
<BODY>
<% Dim Nomes(4), nome
Nomes(0)=”Sporting”
Nomes(1)=”Beleneses”
Nomes(2)=”Atlético”
Nomes(3)=”Benfica”
Nomes(4)=”Boavista”
For each nome in Nomes %>
<%=nome%><BR>
<% Next%>
</BODY></HTML>

Exemplo 18.1 :loop1.asp


<html><body>
<%
x = 0 ‘inicialização da variável a zero
Do Until x=10
x=x+1
Loop
response.write x
%></body></html>

O comando Do...Loop executa uma determinada rotina até que a condição se torne verdadeira, para
interromper o Loop, usa-se o comando Exit Do
Exemplo 18.2 –loop2.asp
<html><body>
<%
For i=1 to 50
response.write i
next
%></body></html>

O comando For...Next executa uma determinada rotina até que o contador (uma variável) atinja o valor
determinado, observe que não é necessário nenhuma rotina de incrementação de valores em i. A cada ciclo, o
valor de i é acrescido de uma unidade, automáticamente.
Para encerrar qualquer Loop (Ciclo de repetição), usamos o comando EXIT. Ele permite que se saia
permanentemente de um loop, de uma função ou de um Sub. A tabela seguinte apresenta o seu formato para
cada situação:

Exit Do Dentro de loops que começam com DO


Exit For Dentro de loops que começam com FOR

Por: Kundan Narendra 34 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Exit Function Para sair de uma Function


Exit Sub Para abandonar um Sub

Procedures (Subrotinas)

Algumas vezes, em programação, uma mesma sequência de códigos precisa ser usado constantemente. Em
vez de copiá-los sempre que forem precisos, pode-se usar as Procedures. Procedures são caixas pretas, onde
pode entrar com alguns dados, a caixa preta processa, e no caso das Functions, retorna outros valores, de
acordo com um algorítimo. O VBScript possui dois tipos de Procedures: Sub e Function.
Um Sub é um conjunto de comandos associados a um identificador alfanumérico.
Uma Function possui a mesma definição só que além de executar os comandos a ela associados, pode gerar
um valor como resultado.
Essas subrotinas podem ainda receber algum(s) valor(s) como parâmetro. Veja a seguir suas respectivas
sintaxes:

Sub NomeDoProcedimento([Parâmetro(s)])
Comando(s)
End Sub

Function NomeDaFunção([Parâmetro(s)])
Comando(s)
End Function

Dentro da Function devemos implementar um mecanismo para passar o valor calculado para fora da function.
Basta atribuir tal valor ao identificador da Function.
Na verdade, o identificador da Function é uma expressão pois retorna um valor. Para verificarmos o valor
retornado por uma Function, colocamos a mesma no lado direito de uma atribuição:

Exemplo 19- procedure1.asp


<html><body>
<%
Function soma(valor1,valor2) ‘ função criada pelo utilizador, com parâmetros
If valor1 = "" then valor1 = 0
If valor2 = "" then valor2 = 0
soma = valor1 + valor2
End Function
'acima, a função denominada soma foi apresentada
'abaixo, uma chamada à função foi feita. Então a função executa a rotina e devolve um determinado valor, neste
caso 5.

response.write soma(2,3)
%></body></html>

Esse exemplo serve para ilustrar as vantagens de se trabalhar com subrotinas : o programa fica mais
estruturado e dependendo do número de comandos de uma subrotina, existe uma economia de linhas de
código.
Já uma Sub simplesmente executa uma acção, não retornando valor algum.

Exemplo 19.1 –procedure1.asp

Por: Kundan Narendra 35 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

<html><body>
<%
Sub visualizar_nome(nome)
response.write "O nome do site é: " & nome
End Sub
'acima, a procedure do tipo Sub foi denominada visualizar_nome

response.write "Qual é o site para Webdesigners que oferece Tutoriais, Ferramentas e Recursos aos seus
visitantes?"
Call visualizar_nome("KUNDAN.WEB")
response.write "<div><a href=www.kundan.web.pt>Home</a></div>"
'acima, o comando Call faz a chamada à Sub visualizar_nome. Como pode-se perceber, uma Sub não retorna
nenhum valor, mas sim executa uma acção.

%>
</body></html>

Usando Server-Side Includes


Vamos agora falar sobre Server-Side Includes ou Inclusão do lado do servidor, ou explicando melhor :
ficheiros de inclusão. O que são os ficheiros de inclusão ?

Os ficheiros de inclusão são ficheiros de scripts ASP (com a extensão .asp ou .inc) que são incluídos nas
páginas de um site com o objectivo de facilitar a manutenção, modularizar o código e facilitar a compreensão do
mesmo.

Para que possa entender melhor, suponha que você está a desenvolver um site e que o mesmo já tem 100
páginas. Existem elementos comuns a várias páginas como : barra de navegação (botões com as
hiperligações), logotipos, endereço de e-mail, banners, etc.... Agora imagine que o seu site utilize um script para
realizar um cálculo com um taxa fixa e que pode variar com o decorrer do tempo.

E se necessitar de alterar alguns desses elementos ? Vai ter que fazer essas alterações em todas as páginas
onde eles estiverem contidos... Imagine o trabalho que vai dar !!!

No entanto se utilizar ficheiros de inclusão vai ter que alterar apenas o ficheiro original e pronto !!!! As
alterações são automáticamente reflectidas em todas as páginas durante a inclusão do ficheiro. Isto vale para
bibliotecas de código, funções, etc...

Existem duas maneiras de você fazer a inclusão de um ficheiro numa página ASP:

1- A instrução geral e recomendada é :

<!--#include virtual="nome_do_ficheiro"-->

isto é chamada de inclusão virtual e você deve informar o nome do ficheiro e sua localização absoluta relativa à
raiz do site da Web do ficheiro actual. A instrução para incluir o ficheiro config.asp que está no directório
contas é a seguinte:

<!--#include virtual="/contas/config.asp"-->

Os ficheiros que podem ser incluidos não se restringem a ficheiros com extensão .asp . Você pode incluir
ficheiros textos com qualquer extensão. Mas lembre-se que os ficheiros com extensão .asp possuem uma
protecção: quando alguém tenta visualizar o conteúdo de um ficheiro com extensão .asp irá ver sómente o
resultado do processamento do ficheiro.

Por: Kundan Narendra 36 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

2- Você pode usar também a seguinte instrução :

<!--#include file="nome_do_ficheiro"-->

aqui a palavra chave file inclui ficheiros relativos ao directório onde reside o ficheiro que está sendo incluído.
Você não tem que fornecer o caminho especificado para a raiz do servidor ; pode usar um caminho relativo.

Os ficheiros de inclusão podem conter código HTML e/ou código ASP mas são processados antes de
qualquer código ASP. Vejamos a seguir um exemplo :

Vamos criar dois ficheiros de scripts asp : pagina1.asp e pagina2.asp e guardá-los no directório curso.
O ficheiro pagina2.asp será incluido no ficheiro pagina1.asp quando este for chamado no seu servidor.

Exemplo 20 - Ficheiro pagina1.asp


<html>
<head>
<title>Pagina1.asp</title>
</head>
<%
response.write "Pagina1.asp </p>"
response.write "Exemplo de inclusão de ficheiros <p>"
response.write "A seguir vai estar incluido o ficheiro pagina2.asp</p>"
%>
<!--#include file="pagina2.asp"-->
</body>
</html>

Observe que temos codigo HTML e codigo ASP delimitado pelas tags <% %>. A instrução usada para incluir o
ficheiro pagina2.asp é : <!--#include file="pagina2.asp"-->

Exemplo 20.1 -Ficheiro pagina2.asp


<%
Response.Write "<font color='#0000FF'"
response.write "----------------------------------------</br>"
response.write "Olá , eu sou o ficheiro pagina2.asp <br>"
response.write "----------------------------------------</br>"
%>
O ficheiro pagina2.asp contém somente script ASP (o código HTML usado esta inserido na instrução
Response.write). Agora tem de correr sómente o ficheiro pagina1.asp através do Servidor web.
No decorrer deste Curso, vamos criar vários exemplo de Sites dinâmicos, e aí vamos utilizar os SSI (Server
Side Includes), para facilitar a elaboração de sites, que tenham objectos comuns em todas as páginas.

Componente FileAccess

O componente ou objecto File Access (ActiveX FileSystemObject) é um componente usado para aceder a
ficheiros de texto. Os ficheiros tipo texto, muitas vezes, são usados como base de dados de acesso sequencial
(nem sempre é vantajoso usar base de dados com acesso aleatório, como o Access, ...). Assim sendo, foi
necessário criar um componente que permitisse a leitura e gravação de dados nestes ficheiros.
Para instanciar tal objecto numa página ASP escrevemos o seguinte código:

Dim Objecto

Por: Kundan Narendra 37 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Set Objecto = Server.CreateObject(“Scripting.FileSystemObject”)


Já conhecíamos alguns objectos internos do ASP, tais como: Response, Request, Application , Session e
Server –o qual permite criar ou instanciar objectos ActiveX através do comando CreateObject, e será esse é
que vamos ver daqui para a frente.
Gravar dados num ficheiro de texto (txt) é útil quando se sabe que não será trabalhado um volume muito grande
de dados, como é o caso de um contador que apenas soma valores a cada visita, ou a criação de logs à uma
área importante do site, etc...

Abaixo tem um exemplo de fácil compreensão, para demonstrar a facilidade em se gravar dados em Bloco de
Notas(portanto em formato de simples texto), e posteriormente lê-los.

Exemplo 21 – gravatexto.asp
<%
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
caminho = Server.MapPath("teste.txt") 'especifique aqui o caminho onde ficará/está o TXT
Set GRAVAR = FSO.CreateTextFile(caminho,true)
'Foi criado o objecto e logo após busca o txt em caminho para gravar, se não achar, vai criá-lo (por causa da
‘marcação TRUE)

gravar.write ("teste de gravação num ficheiro de texto")


gravar.close
response.write "GRAVADO!"
'após abrir o TXT, gravará a linha com o texto que foi pedido e a confirmação no cliente aparecerá como
‘"GRAVADO"
%>

Agora vai criar o seguinte ficheiro, e vai certificar se ele pode ler através do ficheiro de texto criado no passo
anterior.

Exemplo 21.1 – lertexto.asp

<%
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
caminho = Server.Mappath("teste.txt")
Set TXT = FSO.OpenTextFile(caminho)
'cria a instância do objecto, e busca pelo TXT indicado pela variável caminho como acima

response.write txt.readALL
'após abrir o TXT, todo conteúdo do ficheiro teste.txt será enviado ao cliente, neste exemplo, retornará o texto
‘tal e qual como foi gravado acima
txt.close
%>

Guarde e teste este ficheiro.

ASP + BASE DE DADOS

É possível criar páginas ASP -dinâmicas que tenham a possibilidade de actualizar informações através duma
base de dados. Para tal, devemos utilizar o componente Microsoft Data Access que já vem instalado com o IIS.
Para implementar esse acesso a uma base de dados relacional o Data Access utiliza componentes inseridos no
pacote ADO(ActiveX Data Object), uma tecnologia baseada no ODBC (Open DataBase Connectivity).
Normalmente a ligação às bases de dados pelas ASP é feito pelo ADO, que por sua vez usa uma ligação
ODBC. Esta ligação é feita sem se saber se a base de dados é MSAccess ou não. O que interessa é que a
mesma seja feita com sucesso. Vai-se criar a ligação via ODBC, mas vai ser exemplificado também uma
maneira de se ligar à Base de Dados MSAccess sem ser necessário o uso do ODBC, ligação essa mais

Por: Kundan Narendra 38 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

conhecida internacionalmente por DSNLess Connection (visto que para o uso de ODBC a ligação processa-se
com DSN=…).

ODBC

O ODBC é o meio mais conhecido para aceder a uma base de dados em ambiente Windows. Ele facilita a vida
do programador mascarando as particularidades de implementação das Bases de Dados com que os mesmos
irão trabalhar.
A ideia é que cada fabricante de base de dados crie um driver ODBC. Sendo assim, quando um programa tenta
aceder a um determinado tipo de base de dados via ODBC o Windows procura um drive apropriado para este,
verifica como deve proceder e então efectua as operações requisitadas.
Antes de colocar a mão na massa e desenvolver páginas ASP com acesso a uma base de dados devemos:

Criar uma Base de Dados compatível com ODBC


Registar a Base de Dados como uma origem de dados ODBC

Esse último passo permite que aplicações que acedam à Base de Dados via ODBC precisem
apenas saber o nome dessa origem de dados, dispensando-se as preocupações com a localização exacta e o
tipo de base de dados a aceder.

Para criar uma origem de dados devemos executar o programa ODBC do Painel de Controlo do
Windows, clicando neste Icone - Erro! Não é possível criar objectos a partir de códigos de campo de edição., e
a seguir aparecerá a seguinte janela:
Geralmente para uma aplicação Web é criada uma Origem de dados no separador System DSN.
Clicando no botão ADD (adicionar) temos:

Por: Kundan Narendra 39 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Aqui devemos escolher o driver ODBC a ser utilizado para aceder à nossa Base de Dados. Para o nosso
exemplo usaremos o Microsoft Access, no passo a seguir –numa janela que vai abrir- defina um nome para a
ligação e a localização física da base de dados. Mas, mais à frente vamos criar um Driver ODBC para nos
ligarmos a uma Base de dados do Access.

Base de dados

Criar uma Base de dados para a internet. Criar um site não é uma tarefa fácil, temos que nos preocupar o com
o design, a estruturação dos textos, o tratamento das imagens, os recursos e limitações de servidores, etc.

Mas sem dúvida nenhuma, a parte que merece mais atenção é quando temos que usar uma Base de dados no
site. O acesso a uma Base de dados é um dos recursos mais utilizados nas páginas ASP, a facilidade com que
se pode criar um site dinâmico fica claro neste neste exercício que aborda os conceitos básicos sobre ligação a
uma Base de dados.

O motivo é muito simples, a Base de dados sempre foi alvo de constantes problemas no funcionamento de
sistemas desktop's e principalmente para a Internet. Sem contar que envolve segurança e interfere
directamente na velocidade do site.

Todos estes factores poderiam desanimar qualquer pessoa na hora de decidir ou não usar uma Base de dados
no site, mas isto não é mais uma questão de decisão, é uma questão de necessidade. Hoje em dia, um site tem
que ter aparência bonita, mas principalmente, tem que ser dinâmico e precisa existir interactividade com o
utilizador. Esta interactividade só é possível com o uso de Base de dados.

Introdução ao ADO
As páginas ASP com acesso a dados permitem interagir com a informação de uma base de dados seja para
obter informação e mostrá-la ao utilizador ou para actualizar seu conteúdo.

São muitas as aplicações deste conceito nos sistemas de informação actuais por exemplo, uma empresa que
vende seus artigos pela Internet deve dispor de páginas nas que se visualizem os dados de seus produtos,
Por: Kundan Narendra40 de um total de 792005
INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

disponibilidade, preço, etc.. e armazenar os pedidos de seus clientes. Por tratar-se de informação em contínua
actualização e um grande número de consultas a necessidade de uma base de dados é indispensável.

Para ligar-se a uma base de dados, as páginas ASP utilizam a tecnologia ADO (ActiveX Data Objects) que
pode aceder a sistemas de administração de Base de dados compatíveis ODBC (entre os quais SQL Server,
Access, Informix ou Oracle.)

O ADO (ActiveX Data Objects) é uma tecnologia fácil de usar, apesar de extensível, para adicionar acesso à
Base de dados pelas páginas Web. Você pode usá-lo para gravar scripts compactos escalonáveis para se
ligar a fontes de dados compatíveis com OLE (Object Linking and Embedding, vinculação e incorporação de
objectos) DB (banco de dados OLE), como Bases de dados, folhas de cálculos, ficheiros de dados
seqüenciais ou directórios de correio electrônico. O OLE DB é uma interface de programação no nível do
sistema que fornece um conjunto padrão de interfaces COM para a exposição da funcionalidade do sistema
de gestão de Base de dados. Com o modelo de objecto do ADO, é simples aceder a essas interfaces
(usando linguagens de script, como VBScript ou JScript) para adicionar funcionalidade de Base de dados a
aplicações da Web. Além disso, também pode usar o ADO para aceder a Bases de dados compatíveis com
Open Database Connectivity (ODBC, conectividade aberta de Base de dados).

Para utilizar uma base de dados em páginas ASP devemos instanciar os objectos do ADO:
Connection : representa uma ligação activa com uma base de dados ODBC. Esse é o
componente mais importante do ADO, sendo que os demais só poderão ser criados a partir
dele.
Command : representa um comando a ser executado pela fonte de dados ODBC. Com ele
podemos criar comandos SQL compilados no servidor (preparados).
Recordset: representa um conjunto de registos resultantes do processamento de um comando
SQL em um objecto Connection. É esse objecto que permite a navegação numa tabela ou
consulta à base de dados.
Fileds : Representa os campos de um RecordSet.

Nunca se esqueça de que o primeiro objecto que deve ser instanciado é o Connection e que pode ser feito de
seguinte modo:

Set nomedaConnection = Server.CreateObject(“ADODB.Connection”)


Depois de instanciar o objecto Connection, precisamos de activar a ligação com a fonte de dados
ODBC. Para isso, usamos o método Open do Connection. Sintaxe:

nomedaConnection.Open FonteODBC , Utilizador, password

Onde :
FonteODBC : é o nome da fonte OBDC ou uma string de conexão com o Banco
Utilizador : é o nome do Utilizador da Base de Dados(opcional)
password : é a password desse Utilizador (opcional)

Exemplo:

nomedaConnection.Open “gestao”

Se for um criador de scripts com conhecimentos básicos sobre ligação de Bases de dados, achará a sintaxe de
comandos do ADO simples e fácil de usar. Se for um programador experiente, desfrutará o acesso escalonável
de alto desempenho que o ADO propicia a várias fontes de dados.

Por: Kundan Narendra 41 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

A primeira etapa na criação de uma aplicação de dados para a Web é fornecer ao ADO uma maneira de
localizar e identificar a sua fonte de dados. Isso é realizado através de uma sequência de caracteres de ligação,
vários argumentos delimitados por ponto-e-vírgula que definem parâmetros, como o Driver e a localização da
fonte de dados.

A tabela abaixo lista as sequências de caracteres de ligação com base de dados OLE para várias fontes de
dados comuns:

Fonte de dados Sequência de caracteres de ligação com base de dados OLE

Microsoft®
Access Provider=Microsoft.Jet.OLEDB.4.0;Data Source=caminho físico do ficheiro .mdb

Microsoft SQL
Server Provider=SQLOLEDB.1;Data Source=caminho da base de dados no servidor

Oracle Provider=MSDAORA.1;Data Source=caminho da base de dados no servidor

Para permitir a compatibilidade com as versões anteriores, o Driver de base de dados OLE para ODBC
oferece suporte à sintaxe da sequência de caracteres de ligação ODBC. A tabela a seguir lista as
sequências de caracteres de ligação ODBC usadas com mais frequência:

Driver da fonte Sequência de caracteres de ligação ODBC


de dados

Microsoft
Access Driver={Driver do Microsoft Access (*.mdb)};DBQ=caminho físico do ficheiro .mdb

SQL Server DRIVER={SQL Server};SERVER=caminho do servidor

Oracle DRIVER={Microsoft ODBC para Oracle};SERVER=caminho do servidor

Driver={Driver do Microsoft Excel (*.xls)};DBQ=caminho físico do ficheiro .xls;


Microsoft Excel DriverID=278

Tipo de Ligação
Podem utilizar-se dois sistemas de ligação às bases de dados:

Com DSN (data source name)

Sem DSN (data source name)

Por: Kundan Narendra 42 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Com DSN

Este sistema consiste em definir um identificador da ligação mediante o driver ODBC acessível no Painel de
Controlo (já abordamos esta parte anteriormente). Posteriormente, já nas páginas ASP, faz-se o acesso
mediante uma string de ligação que inclui o identificador anteriormente citado.

Já vimos como podemos criar um DSN no Windows, por isso vamos avançar.

Sem DSN

Este sistema requer que seja colocado o ficheiro da base de dados (habitualmente Access) num directório do
servidor. Desta forma, na ligação será utilizada uma string um pouco mais complexa já que devem identificar-se
tanto o driver como o directório físico completo de base de dados.

Estes são os 3 passos para realizar a ligação

Criar o objecto para ligar-se à base de dados mediante a instrução


Server.CreateObject("ADODB.Connection")

Definir a ligação (com/sem DNS), mediante a instrução objConn.ConnectionString

Abrir a ligação mediante a instrução: objConn.Open

O ADO fornece o objecto Connection para o estabelecimento e o gestão de ligações entre os aplicações e
fontes de dados compatíveis com base de dados OLE ou base de dados compatíveis com ODBC. O objecto
Connection apresenta propriedades e métodos que você pode utilizar para abrir e fechar ligações de base
de dados e emitir consultas para actualizar informações.

Para estabelecer uma ligação à base de dados, primeiro crie uma instância do objecto Connection. Pode ver no
exemplo a seguir o script que cria uma instância do objecto Connection, instruções de ligação a uma base de
dados :
<%
<font size="2"> Dim objConn

' Criação da instância do objecto que realiza a ligação à base de dados


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

' Fornecer ao objecto a informação correspondente à ligação ODBC a utilizar mediante DNS
objConn.ConnectionString = "DSN=bdProgramacao"

' Sem DNS


objConn.ConnectionString = "DBQ=C:\meus documentos\program.mdb;DRIVER={MS Access (*.mdb)}"

' Abrir a ligação


objConn.Open </font>
%>

No exercício –sobre a Base de dados, vamos ver como criar uma Base de dados para ser usada na Internet, e
numa página ASP.

Para acompanhar este exercício, vai ter de instalar um servidor PWS (em príncipio está instalado) ou IIS5 no
seu PC.

Por: Kundan Narendra 43 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Primeiro crie uma Base de dados no MS-ACCESS 97 ou 2000 com a seguinte estrutura:

Nome da Base de dados: meu_Base.MDB


Crie uma tabela com o nome: Clientes
Crie 5 campos.

Exercício 22- Vamos criar a nossa Base de dados passo a passo:

1 - Inicie o MS-Access 97 ou 2000;


2 - Seleccione Blank Access Database (Base de dados vazia) e dê OK;
3 - Seleccione a pasta C:/Inetpub/wwwroot/CursoASP (caso não tenha está pasta, instale o PWS.);
4 - Dê o nome à Base de dados: meu_site;
5 - Clique em Criar;
6 - Seleccione Tabela, e dê um duplo clique em “Create Table in design view”;
7 - Agora você irá definir 5 campos para a tabela, digite conforme mostrado abaixo:

Field Name (Nome do campo) Data Type (Tipo de dados)


Código_cliente Number (Número)
Nome Text (Texto)
Telefone Text (Texto)
Data_registo Date/Time (Data/Hora)
Obs Memo

09 - Clique em Save
10 - Digite o nome da Tabela a guardar: Clientes
11 - Caso ele solicite uma chave primária, responda: Não
12 - Feche a Tabela e o Access

O ficheiro meu_site.MDB está criado

No exercício anterior vimos como criar um Base de dados no MS-Access, agora vamos ver como usar este
Base de dados com ASP e ADO.

Para facilitar a compreensão, vamos fazer um formulário em HTML para podermos preencher alguns registos
novos na nossa Base de dados.
Este formulário pode ser criado usando o Front Page, Dreamwever ou outro programa Editor de HTML que você
tenha. Abaixo pode ver o código do nosso formulário.

Exercício 22.1 -Guarde esta página com o nome de formulario.htm

<html>
<head>
<title>Formulário para Registo de Clientes</title>
</head>
<body>
<form method="POST" action="registo.asp">
<table border="0" width="100%">
<tr>
<td width="50%" align="right"><font face="Verdana" size="2">Código do
cliente: </font></td>
<td width="50%"><font face="Verdana" size="2"><input type="text" name="Codigo_cliente"

Por: Kundan Narendra 44 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

size="36"></font></td>
</tr>
<tr>
<td width="50%" align="right"><font face="Verdana" size="2">Nome do
cliente: </font></td>
<td width="50%"><font face="Verdana" size="2"><input type="text" name="Nome_cliente"
size="36"></font></td>
</tr>
<tr>
<td width="50%" align="right"><font face="Verdana" size="2">Telefone: </font></td>
<td width="50%"><font face="Verdana" size="2"><input type="text" name="Telefone" size="36"></font></td>
</tr>
<tr>
<td width="50%" align="right"><font face="Verdana" size="2">Data de
Registo: </font></td>
<td width="50%"><font face="Verdana" size="2"><input type="text" name="Data" size="36">
formato: dd/mm/aa</font></td>
</tr>
<tr>
<td width="50%" align="right"><font face="Verdana" size="2">Obs:</font></td>
<td width="50%"><font face="Verdana" size="2"><textarea rows="3" name="Obs"
cols="29"></textarea></font></td>
</tr>
<tr>
<td width="50%"></td>
<td width="50%"><font face="Verdana" size="2"><input type="submit" value="Registar" name="registar"><input
type="reset" value="Limpar" name="limpar"></font></td>
</tr>
</table>
</form>
</body>
</html>

Poderá observar que neste formulário a linha que faz uma chamada a outro ficheiro, o registo.asp:
<form method="POST" action=" registo.asp">
Isto quer dizer que os dados digitados no formulário serão enviados para o ficheiro registo.asp, que por sua vez
vai processar, conjuntamente com o Servidor Web a página e a respectiva execução dos dados.

Vamos criar agora o ficheiro registo.asp, o código estará todo comentado para uma maior compreensão:

Exercício 22.2 –registo.asp


<%
' Aqui vou dizer ao ASP que quero trabalhar com o formato de data Português
’ o formato de data em Português(Brasil) é de 1046

Session.LCID = 2070

'Vamos criar uma função para inverter a data, já que no Access a data é gravada no formato americano

Function DataInvertida(data)
dia=day(Data)
mes=month(Data)
ano=year(Data)
DataInvertida=mes&"/"&dia&"/"&ano

Por: Kundan Narendra 45 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

End Function

'Agora vamos criar a ligação à Base de dados.


'Estou considerando que você criou a Base de dados exactamente como no exemplo ‘anterior.

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


ligacao.ConnectionString = "Provider=PCsoft.Jet.OLEDB.4.0;Data
Source="c:\inetpub\wwwroot\cursoASP\meu_site.mdb"

' Agora vou usar o comando Request.form para recuperar os valores digitados no formulario.htm
' Observe que na recuperação da data, uso a função criada acima

Codigo = Request.Form("Codigo_cliente")
Nome = Request.Form("Nome_cliente")
Telefone = Request.Form("Telefone")
Data = Datainvertida(Request.Form("Data"))
Obs = Request.Form("Obs")

' Aqui vou gravar os dados recuperados na tabela clientes

ligacao.Execute "insert into Clientes(Codigo_cliente, Nome, Telefone, Data_registo, Obs) values('" & Codigo &
"','" & Nome & "','" & Telefone & "',#" & Data & "#,'" & Obs & "')"

' Para libertar memória no servidor é necessário destruir os objectos criados acima.
ligacao.Close
Set ligacao = Nothing
%>

Guarde este ficheiro com o nome registo.asp


Abra o Browser web, com o servidor ligado e digite o seguinte endereço: http://localhost/curso/formulario.htm
Preencha alguns registos conforme pode ver mais abaixo:

Vamos agora criar o ficheiro consulta.asp - Para visualizar os dados inseridos acima é necessário criar o
ficheiro consulta.asp.

Por: Kundan Narendra 46 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Acesso aos dados


A continuação, temos as instruções para que desde uma página ASP possamos aceder à informação da base
de dados e mostrá-la no Browser do utilizador.

Nota: Suponha que temos uma tabela de produtos com as seguintes colunas: nome, preço e distribuidor.Na
página ASP a ser criada aparecerão aqueles produtos cujo preço seja inferior à 30 Euros e para realizar esta
consulta utilizaremos o objecto ADODB.Recordset .

Para recuperar dados, examinar resultados e fazer alterações numa base de dados, o ADO fornece o objecto
Recordset. Como o próprio nome indica, o objecto Recordset tem recursos que você pode usar, dependendo
das suas restrições de consulta, para recuperar e exibir um conjunto de linhas da base de dados ou registos. O
objecto Recordset mantém a posição de cada registo retornado por uma consulta, permitindo que você percorra
os resultados, um item de cada vez.

O código abaixo está todo comentado para uma maior compreensão:

Exercício 22.3 - consulta.asp

<%

'Agora vamos criar a ligação à Base de dados.


Set ligacao = Server.CreateObject("ADODB.Connection")
ligacao.ConnectionString = "Provider=PCsoft.Jet.OLEDB.4.0;Data Source="
c:\inetpub\wwwroot\cursoASP\meu_site.mdb "

'Criamos agora um objecto recordset


' Um objecto recordset representa um conjunto de registos de uma tabela gerados por uma consulta ou por um
comando executado
Set RS_Max = Server.CreateObject("ADODB.Recordset")
RS_Max.CursorType = adOpenKeyset

'O recordset Rs_max irá ter os dados da tabela clientes


RS_Max.Open "SELECT * FROM Clientes order by Nome", ligacao

' Abaixo um código HTML que será usado para criar uma tabela onde os dados serão exibidos
%>
<table border="0" width="100%">
<tr>
<td width="20%" bgcolor="#999966" align="center"><font size="2" face="Verdana">Cód_Cliente</font></td>
<td width="20%" bgcolor="#999966" align="center"><font size="2" face="Verdana">Nome</font></td>
<td width="20%" bgcolor="#999966" align="center"><font size="2" face="Verdana">Telefone</font></td>
<td width="20%" bgcolor="#999966" align="center"><font size="2" face="Verdana">Data</font></td>
</tr>
</table>
<%
'
do while not Rs_max.eof
%>
<table border="0" width="100%">
<tr>
<td width="25%"><font size="2" face="Verdana"><%=rs_max("Codigo_cliente")%></font></td>
<td width="25%"><font size="2" face="Verdana"><%=rs_max("Nome")%></font></td>
<td width="25%"><font size="2" face="Verdana"><%=rs_max("Telefone")%></font></td>

Por: Kundan Narendra 47 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

<td width="25%"><font size="2" face="Verdana"><%=rs_max("Data_registo")%></font></td>


</tr>
</table>
<%
rs_max.movenext
loop

' Destruo todos os objectos criados para a libertação de memória no servidor


Rs_max.close
ligacao.Close
Set ligacao = Nothing
%>

Guarde este ficheiro com o nome de consulta.asp.

Para aceder a este ficheiro digite o seguinte endereço no seu Browser web: http://localhost/curso/consulta.asp

Objecto Recordset

Verificamos que para instanciarmos um RecordSet procedemos da seguinte forma:

Set Tabela = Server.CreateObject(“ADODB.RecordSet”)

Em seguida devemos indicar a Fonte de Dados ODBC para o Recordset:

Tabela.ActiveConnection = “nomeDSN”

Por fim, abrimos o recordset utilizando o método Open e informando o comando SQL:

Tabela.Open “Select * From Clientes”

Mas a forma mais fácil de se instanciar um Recorset é pela utilização do método Execute do Connection:

Set Tabela = nomedaConnection.Execute(“Select * from pessoa”)

Os principais métodos e propriedades do objecto RecordSet são:

BOF (beggining of file) True indica início do RecordSet


EOF (end of file) True indica o final do RecordSet
Close Fecha o recordset aberto
MoveFirst Move o cursor para o primeiro registo de um RecordSet
MoveLast Move o cursor para o último registo de um RecordSet
MoveNext Move o cursor para o próximo registo de um RecordSet
MovePrevious Move o cursor para registo anterior de um RecordSet
Update Guarda as alterações feitas no RecordSet na Base de Dados. Também serve para
alterar o registo corrente do RecordSet
Exemplo:
Tabela.Update “email”,”[email protected]
Adiciona um registo ao RecordSet
Ex:
AddNew Tabela.AddNew
Tabela(“Nome”)=”Mafalda”
Tabela(“DataN”)=#26/05/1980#

Por: Kundan Narendra 48 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Tabela.Update
Delete Elimina um registo de um Recordset consequentemente, de uma tabela da Base
de Dados.

Para exibir os valores dos campos de todos os registos de um Recordset usamos a colecção de objectos Fields:

Do While not Tabela.EOF


Response.Write Tabela.Fields(0).Value & “<BR>”
Response.Write Tabela.Fileds(“Nome”) & “<BR>”
Response.Write Tabela.Fields(“email”) & “<BR>”
Response.Write Tabela.Fields(“DataN”) & “<HR>”
Tabela.MoveNext
Loop

A linguagem SQL

No decorrer do exemplo anterior utilizamos algumas instruções:


"SELECT * FROM Clientes order by Nome"
Isto é uma das instruções (comando) da Linguagem SQL.
O que é SQL ???
Para já podemos dizer que SQL –deriva do termo Structered Query Language –ou seja uma linguagem
estruturada de consultas. Esta linguagem permite-nos efectuar consultas a uma Base de dados.

O uso de comando SQL é fundamental quando se trabalha com Base de dados num site. A instrução SQL não
é usada apenas em sites .ASP, diversas linguagens agregam o poder do SQL para acesso a dados.

Porém para aceder a uma Base de dados é necessário ter noções sobre SQL. E as Bases de dados que fazem
o uso de SQL são: Access, SQL Server, Oracle, MySql e outros.

Instruções SQL- Comando Select


A informação numa base de dados é armazenada em tabelas que por sua vez se compõe de colunas ou
campos. Para realizar uma consulta à uma tabela deve-se utilizar a instrução (comando) SELECT. Numa
consulta básica na claúsula SELECT se indicam as colunas a visualizar, na claúsula FROM, a tabela da qual
obter os dados e por último a claúsula WHERE se indicam as restrições a aplicar.

Para o nosso exemplo vamos usar ASP e uma base de dados em Access. O comando Select é usado para
seleccionar dados em uma tabela dentro do critério que você definir.

Considere que você tenha uma tabela chamada 'Clientes' com os seguintes campos:

Cod_cliente
Nome
Data_nascimento
Limite_credito

Antes de começar a mostrar os exemplos vamos entender alguns operadores e cláusulas que iremos usar:

= - igual

<> - diferente

* - todos

Por: Kundan Narendra 49 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

order by - define a ordem

order by desc - em ordem decrescente

where – onde

between – entre

group by – agrupar

Abaixo vamos ver as diversas formas de fazer um select eficiente.

Select * from Clientes order by Nome


Selecciona todos os campos (*) da tabela (Clientes), ordenando por Nome (order by Nome)

Select * from Clientes order by Data_nascimento Desc


Selecciona todos os campos (*) da tabela (Clientes), ordenando por Data de Nascimento em ordem
decrescente (order by Data_nascimento Desc)

Select Cod_cliente, Nome from Clientes order by Nome


Selecciona os campos (Cod_cliente e Nome) da tabela (Clientes), ordenando por Nome (order by Nome)

Select Cod_cliente, Nome from Clientes where Cod_cliente=99


Selecciona os campos (Cod_cliente e Nome) da tabela (Clientes), onde o cliente tenha o Código 99 (where
Cod_cliente=99)
Obs: neste caso estou considerando que o campo Cod_cliente é numérico, caso ele seja texto, o valor 99 deve
ficar entre plicas (where Cod_cliente='99')

Select Cod_cliente, Nome from Clientes where Cod_cliente<>99


Selecciona os campos (Cod_cliente e Nome) da tabela (Clientes), onde o cliente seja diferente de 99 (where
Cod_cliente<>99)

Select * from Clientes where Limite_credito between 1000 and 2500


Selecciona todos os campos (*) da tabela (Clientes), onde o Limite de crédto esteja entre 1000 e 2500 (where
Limite_credito between 1000 and 2500)

Select * from Clientes where Data_nascimento between '01/01/1989' and '31/12/1985' order by Nome
Selecciona todos os campos (*) da tabela (Clientes), onde a data de nascimento esteja entre 01/01/1989 e
31/12/1985 (between '01/01/1989' and '31/12/1985') ordenando por Nome
Obs: neste exemplo a data vem entre apóstrofo.

select Limite_credito, count(Limite_credito) as s_limite from Clientes group by Limite_credito


Selecciona o campo Limite_credito e soma seu conteúdo(Limite_credito, count(Limite_credito) as s_limite) da
tabela (Clientes), agrupando os dados pelo Limite de crédito (group by Limite_credito)

Instruções SQL – Comandos Insert, Update e Delete


Estes três comandos são largamente usados com uma Base de dados. Insert - é usado para Inserir dados no
Base de dados. Update - é usado para actualizar uma informação que foi modificada. Delete - é usado para
excluir um registo.

Considere que você tenha uma tabela chamada 'Clientes' com os seguintes campos:
Cod_cliente
Nome
Data_nascimento

Por: Kundan Narendra 50 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Limite_credito

Antes de começar a mostrar os exemplos vamos entender alguns operadores e cláusulas que iremos usar:
= - igual
<> - diferente
* - todos
where - onde

Abaixo vamos ver as diversas formas de usar estes três comandos SQL.

Comando Insert
insert into Clientes(Cod_cliente, Nome, Data_nascimento, Limite_credito) values(2,'João da
silva','25/07/02',1500)

Neste exemplo o comando insert irá gravar o valor 2 no campo Cód_cliente, o texto João da silva no campo
Nome, a data 25/07/02 no campo data_nascimento e o valor 1500 no campo Limite_credito. Todos os campos
estão na Tabela Clientes

Comando Update
UPDATE Clientes SET Nome='Luis Ribeiro', Data_nascimento=08/01/71, Limite_credito=2500 WHERE
Cod_cliente = 2

Este exemplo o comando Update irá actualizar o campo Nome para "Luis Ribeiro", o Campo Data_nascimento
para 08/01/71 e o campo Limite_credito para 2500. Para que o comando Update saiba qual registo ele deverá
actualizar é necessário informar a cláusula WHERE Cod_cliente = 2

Comando Delete
DELETE * FROM Clientes where Cod_cliente=2

O commando Delete irá apagar o registo que tem o campo Cod_cliente = 2


Obs: Sempre que fizermos referência a campos Textos, data e valores lógicos, os valores deverão estar entre
plicas. Esta prática não é necessária para campos numéricos.

Fazendo uma pequena revisão daquilo que fizemos no exercício 22, podemos dizer de que:

1. As Instruções de acesso aos dados;


<%
Dim objConn
Dim objRS
Dim strSQL

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


‘ ligação à Base de dados via DSN –em que o nome de DSN é gestão
objConn.ConnectionString = "DSN=gestão"

' Inicialização do objecto Recordset Set


objRS = Server.CreateObject("ADODB.Recordset")

' Construção da consulta com SQL


strSQL = "SELECT nome, preço FROM produtos WHERE preço < 30"

' Execução da consulta


objRS.Open strSQL, objConn
%>

Por: Kundan Narendra 51 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Como resultado do código acima, o servidor obtém um conjunto de registos procedentes da base de dados e
posiciona o cursor no primeiro deles. O objecto recordset proporciona mecanismos para aceder aos diferentes
campos e mover o cursor entre os diferentes registos. O código abaixo mostra como fazê-lo.

2. As Instruções de visualização dos dados


Nome e Preço
<%
' Loop até encontrar EOF (fim do cursor)
Do Until objRS.EOF = True
Response.Write "<tr>"
' objRS("nome") y objRS("preço") contém os valores
' dos campos nome e preço da base de dados
Response.Write "<td>Nome= " & objRS("nome") & "</td>"
Response.Write "<td>Preço = " & objRS("preço") & "</td>"
Response.Write "</td></tr>"
' mover o cursor para o próximo registo.
' quando estiver no último registo EOF (end of file) será True.
objRS.MoveNext
Loop %>

Encerrar as ligações
É uma prática recomendável fechar e eliminar os objectos recordset e de ligação criados na página ASP. Para
isto utilizamos o código indicado a continuação:

3. Instruções para encerrar uma Ligação


<%
' Fechar o objecto Recordset
objRS.Close
' Eliminar o objecto Recordset
Set objRS = Nothing
' Fechar o objecto da ligação
objConn.Close
' Eliminar o objecto da ligação
Set objConn = Nothing
%>

Recapitulando melhor as instruções SQL:

4. Instruções SQL de SELECT (CONSULTA )


SELECT * FROM clientes WHERE cidade="Lisboa"
SELECT nome FROM produtos WHERE preço > 2000

As operações de incluir, actualizar e eliminar informação duma base de dados também se realizam mediante
instruções SQL concretamente utilizamos INSERT, UPDATE e DELETE respectivamente.

Por exemplo, a sentença UPDATE é composta da claúsula SET para indicar o novo valor dos campos e
WHERE para indicar os registos nos que se deseja realizar a actualização.

Instruções SQL de modificação: INSERT


INSERT INTO Produtos (nome, preço, distribuidor)
VALUES ("Auriculares", 1730, "batech")

Instruções SQL de modificação: UPDATE


UPDATE Produtos SET preço = preço + (0,02 * preço) WHERE distribuidor="ACME"

Por: Kundan Narendra 52 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Instruções SQL de modificação: DELETE


DELETE FROM Produtos WHERE distribuidor="ACME"
Terminando, vamos ver um ficheiro que é considerado importante, quando trabalhamos com o ADO.

adovbs.inc
ADOVBS.INC é um ficheiro que vem com o servidor Internet Information Server (IIS) e no qual se definem todas
as constantes utilizadas com os objectos do ADO.

A inclusão de ficheiros é muito útil para podermos ter um código legível e reutilizável que são duas
características imprescindíveis em páginas de acesso a dados. Para isto utilizamos a instrução include virtual
(que já conhecemos) que pertence ao grupo de instruções do protocolo HTTP e cuja sintaxe é a seguinte:

<!-- #include virtual="/adovbs.inc" -->


Neste caso o ficheiro ADOVBS.INC deverá estar armazenado no directório raíz da aplicação Web. Poderá
consultar o código desse ficheiro, nas raíz do seu servidor web.

Tentei tornar este Manual de ASP, mais prático – não esquecendo a parte teórica que sempre elucida- nos em
relação a coisas importantes, mas também nos permite esclarecer muitas dúvidas, numa altura em que
estamos a criar páginas ASP.
Espero que tenham entendido o que é ASP, porque é que utilizamos essa tecnologia para criar aplicações Web,
qual a linguagem de scripts que podemos utilizar para criar páginas ASP, quais os objectos mais importantes,
as funções que podemos utilizar, e até mesmo como podemos criar as nossas próprias funções.
A Internet está cheia de Lições, Artigos, Exercícios passo-a-passo, se porventura resolver optar por esta
tecnologia, poderá pesquisar á procura de esclarecimentos e tópicos mais avançados, porque este manual
abordou, as coisas mais importantes até ao nível médio, permitindo a qualquer um de vós criar Páginas ASP, a
brincar.
A partir de agora vamos avançar para a criação de alguns exemplos, tais como:

Criação de um BackOffice em ASP –em que vamos criar um pequeno Site de notícias com a parte
da gestão de notícias, e a visualização das mesmas por parte dos visitantes do Site.
Criação de um livro de visitas –Guestbook para que o visitante possa deixar a sua mensagem.
Criação de um Site de e-Commerce –Comércio electrónico para venda de produtos.
Criação do Site do Centro de Formação Profissional –ao nível de divulgação de Cursos, Datas,
Inscrições on-line, Historial, Contactos, Cursos realizados,e a página da Introdução.

Após a construção destes três exemplos, qualquer um de vós estará apto a trabalhar com o ASP, e criar Sites
dinâmicos e interactivos com o visitante.
Mais abaixo tem a resolução de alguns trabalhos pedidos no decorrer deste manual.
Resolução do Trabalho 1:

<HEAD><TITLE>Select Case</TITLE></HEAD>
<%
cumprimento = hour(now)
If cumprimento < 19 then
response.write "Bom Dia"
Else
response.write "Boa Noite"
End if
'o comando IF...then...Else comparou o valor da variavel cumprimento com um determinado valor estipulado (no
caso, 19). Se o valor for menor que 19, então escreve na página "Bom Dia". Caso contrário (Else), "Boa Noite"
%></body></html>
Podia escrever a estrutura IF, Then, ElseIf, Else para apresentar as horas e os cumprimentos desejados.

Por: Kundan Narendra 53 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Resolução do Trabalho 2:

<% @LANGUAGE=VBSCRIPT%>
<HTML>
<HEAD><TITLE>Select Case</TITLE></HEAD>
<BODY>

<% Dim DiaS

Select Case WeekDay(Date)


Case 1
DiaS = “Domingo”
Case 2
DiaS = “Segunda-feira”
Case 3
DiaS = “Terça-feira”
Case 4
DiaS = “Quarta-feira”
Case 5
DiaS = “Quinta-feira”
Case 6
DiaS = “Sexta-feira”
Case Else
DiaS = “Sábado”
End Select %>
Hoje é <%=DiaS%> & Now()
</BODY> </HTML>

Funcionamento de um ficheiro

Utilizador

ASP
Funcionamento do ASP mais simplificado.

Perguntas frequentes sobre ASP


Que linguagens script são suportadas pelas ASP?
Há o suporte nativo para JScript (o JavaScript da Microsoft) e VBScript. Existem plug-ins ActiveX para dar
suporte para outras linguagens como REXX, PERL, and Python.

Por: Kundan Narendra 54 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Quais os browsers que suportam ASP?


Todos os browsers suportam ASP. Isto acontece pelo facto das páginas ASP serem processadas pelo servidor.
O que o cliente recebe é sómente código HTML padrão.
As páginas ASP são capazes de guardar estados?
Sim. As Aplicações ASP podem armazenar dados que são mantidos durante toda uma sessão. Desta forma,
um utilizador pode fornecer seu nome sómente uma vez em uma página e as demais páginas podem obter este
dado automáticamente (certamente já sabem sobre os Cookies). Este recurso é ideal para aplicações de venda
pela Internet.
As páginas ASP oferecem segurança?
Sim. O recurso ASP é parte integrante do IIS (Internet Information Server), que tem sua segurança integrada
com o Windows NT Server (ou superior). É fácil restringir o acesso a páginas ASP usando os esquemas de
autenticação do IIS (senha básica da Web, senha do NT ou certificados de cliente). É ainda possível dar
segurança aos dados transmitidos usando SSL (Secure Socket Layer).
Que Bases de dados podem ser acessados usando ASP?
Uma aplicação ASP pode ser usada com qualquer Base de dados compatível com ODBC (Open Data Base
Connectivity). Isto inclui dados do Access, Microsoft SQL Server, Oracle, Sybase, Informix, DB2, entre outros.
ASP é melhor que CGI?
ASP lhe dá todos os recursos de aplicações CGI de uma forma mais fácil e mais robusta. Com as ASP, é muito
fácil criar ligações entre o browser e os dados em formatos normalmente incompatíveis com HTML, como
Bases de dados. ASP é mais robusto por não criar um processo no servidor para cada pedido do utilizador,
como acontece com o CGI. Usando ASP em vez de CGI, um servidor pode atender a um grande número de
pedidos de utilizadores de forma mais rápida e usando menos memória. Além disso, criar páginas ASP é em
geral muito mais fácil do que criar aplicações CGI.
ASP é melhor do que Perl?
Perl é apenas uma linguagem script e não uma ferramenta de desenvolvimento. Usando ASP, o programador
tem objectos predefinidos para criar aplicações complexas, como os que permitem o acesso a Bases de dados
ou o uso de sessões. Além do mais, ASP pode utilizar Perl como linguagem script, se assim desejar, usando
plug-ins ActiveX de terceiros.

Exercícios Práticos
Vamos agora passar à parte prática, na criação de Páginas ASP, começando com exemplos simples e muito
práticos. Aumentaremos o grau de dificuldade, à medida que estivermos mais familiarizados, com esta
Linguagem:
Exercício 1
<HTML>
<BODY>
Esta página foi actualizada em <%= Now() %>.
</BODY>
</HTML>

Conclusão

Exercício 2
<%
Dim dtmHora

dtmHora = Hour(Now())
Por: Kundan Narendra 55 de um total de 79 2005
INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

If dtmHora < 12 Then


strSaudar = "Bom dia!"
Else
strSaudar = "Olá!"
End If
%>

<%= strSaudar %>

Conclusão

Exercício 3
<% For fontsize = 1 to 7 %>
<FONT SIZE=<% =fontsize %>>
Server-side script!<BR>
</FONT>
<% Next %>

<HTML>
<HEAD>
<TITLE>Server-Side Scripting</TITLE>
</HEAD>
<BODY>

</BODY>
</HTML>

Conclusão

Exercício 4
<%
'Definir duas variáveis com valores em cadeias.
strNomeProprio = "Kundan"
strApelido = "Narendra"
%>
<P>Esta página Web está personalizada para "<%= strNomeProprio %>&nbsp;<%= strApelido %>." </P>

Conclusão

Por: Kundan Narendra 56 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Exercício 5
<%
Dim dtmHora, strNomeServidor, strSoftwareServidor, intSaudar
dtmHora = Time()
strNomeServidor = Request.ServerVariables("SERVER_NAME")
strSoftwareServidor = Request.ServerVariables("SERVER_SOFTWARE")

'Gerar um número aleatório.


Randomize
intSaudar = int(rnd * 3)
%>

<SCRIPT LANGUAGE="JScript">
<!--
//Chamar função para apresentar a saudação mostrarMsgIntro()

function mostrarMsgIntro()
{
switch(<%= intSaudar %>)
{
case 0:
msg = "Este é o servidor de Web <%= strNomeServidor%> a executar o <%= strSoftwareServidor
%>."
break
case 1:
msg = "Bem vindo ao servidor Web <%= strNomeServidor %>. A hora local é <%= dtmHora %>."
break
case 2:
msg = "Este servidor está a executar o <%= strSoftwareServidor %>."
break
}
document.write(msg)
}
-->
</SCRIPT>

Conclusão

Exercício 6
<%
Dim arrFavoriteLinks(9,1)

arrFavoriteLinks(0,0) = "http://www.microsoft.com"
Por: Kundan Narendra57 de um total de 79 2005
INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

arrFavoriteLinks(0,1) = "O site da Microsoft"


arrFavoriteLinks(1,0) = "http://www.adobe.com"
arrFavoriteLinks(1,1) = "O site da Adobe"
arrFavoriteLinks(2,0) = "http://www.borland.com"
arrFavoriteLinks(2,1) = "O site da Borland"

Response.Write "<A HREF=" & arrFavoriteLinks(0,0) & ">"


Response.Write arrFavoriteLinks(0,1) & "</A>"
Response.Write "<BR>"

Response.Write "<A HREF=" & arrFavoriteLinks(1,0) & ">"


Response.Write arrFavoriteLinks(1,1) & "</A>"
Response.Write "<BR>"

Response.Write "<A HREF=" & arrFavoriteLinks(2,0) & ">"


Response.Write arrFavoriteLinks(2,1) & "</A>"
%>
Conclusão

Exercício 7
<html>
<head>
<title>Exemplo da utilização de um ficheiro de funções</title>
<!--Inclusão do ficheiro que tem a função FormataData-->
<!--#INCLUDE FILE="FUNCOES.inc"-->
</head>
<body>
<p><b>Exemplo da utilização de um ficheiro de funções</b></p>
<p>Este exemplo utiliza a função <b>FormataData</b> que se encontra num ficheiro separado
(<em>funcoes.inc</em>), e que é incluido nesta página ASP. Esta função formata a data, surgindo o dia
da semana e o mês, em português.</p>
<%
response.write "<p>Hoje é <b>" & FormataData(date()) & "</b></p>"
response.write "<p>A hora do servidor <em>web</em> é " & time() & "</p>"
%>
</body>
</html>

Ficheiro FUNCOES.inc
<%
function FormataData(DataK)
dim strMes
dim strDia

Por: Kundan Narendra 58 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

select case WeekDay(DataK)


case 1: strDia="Domingo"
case 2: strDia="Segunda-feira"
case 3: strDia="Terça-feira"
case 4: strDia="Quarta-feira"
case 5: strDia="Quinta-feira"
case 6: strDia="Sexta-feira"
case 7: strDia="Sábado"
end select

select case Month(DataK)


case 1: strMes="Janeiro"
case 2: strMes="Fevereiro"
case 3: strMes="Março"
case 4: strMes="Abril"
case 5: strMes="Maio"
case 6: strMes="Junho"
case 7: strMes="Julho"
case 8: strMes="Agosto"
case 9: strMes="Setembro"
case 10: strMes="Outubro"
case 11: strMes="Novembro"
case 12: strMes="Dezembro"
end select

FormataData=strDia & ", " & day(DataK) & " de " & strMes & ", " & year(DataK)
end function
%>

Conclusão

Além destes exercícios, vamos criar aplicações práticas, e testá-las, corrigir erros, e finalizar o
trabalho.

Exercício Prático 1: Criação de um BackOffice em ASP

Um BackOffice é uma área protegida dentro do seu site. Um bom exemplo é um sistema de notícias, onde
existe uma página pública para apresentar as notícias e uma área reservada para a introdução das mesmas na
base de dados, por parte de pessoas autorizadas.

Seguidamente mostramos-lhe como pode implementar este exemplo, utilizando um sistema simples de notícias
para a página principal.

Por: Kundan Narendra 59 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Exemplo de BackOffice

Para criar este BackOffice necessita de uma base de dados SQL Server ou MSAccess onde será colocada
a tabela dos utilizadores com acesso ao BackOffice e a tabela das notícias. Crie a sua base de dados em
Access e guarde-a com o nome de “news.mdb”, pode prosseguir de acordo com os passos seguintes:

1. Criação das tabelas de utilizadores e de notícias

1. Crie uma tabela com o nome "users" e os campos indicados na tabela seguinte:

Nome do campo Tipo


User_id AutoNumber
Username Text
Password Text

2. Crie também uma tabela com o nome "noticias" e os seguintes campos:

Nome do campo Tipo


ID Autonumber
Data Date/Time
Assunto Text
Noticia Memo

2. Construção das Páginas do BackOffice

Este sistema será constituído por 5 páginas mais o ficheiro "global.asa" do IIS ou PWS.

1. Para inserir na tabela "users" os utilizadores com acesso ao BackOffice, poderá utilizar as paginas
"form.asp" e "create.asp", alterando o código respectivo.

2. Página global.asa

A página "global.asa" é um ficheiro opcional do IIS, onde podem ser especificados eventos ou objectos,
com alcance dentro do âmbito de uma sessão ou aplicação.

Se ainda não criou este ficheiro, deverá criá-lo agora e colocá-lo na raiz da sua aplicação. Insira de
seguida, o seguinte código:

1. <SCRIPT LANGUAGE="vbscript" RUNAT=Server>

2. Sub session_OnStart

3. Session.Timeout = 10

4. Session("Logon")=false

5. Session("userid")=""

Por: Kundan Narendra 60 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

6. end sub

7. Sub session_OnEnd

8. Session("Logon")=false

9. Session("userid")=""

10. end sub

11. </script>

Este código cria as variáveis para cada sessão, onde serão arquivados o user_id e a
indicação de logon deste (logon=true/false) .
Guarde-o com o nome global.asa, na pasta backoffice, que vai criar logo de seguida, para
guardar todos os restantes ficheiros que vai criar na continuação deste exercício.

3. Página de login - login.asp

Esta página, constrói a "form" (formulário) de login onde é pedido ao utilizador o seu username e
password para entrar no BackOffice (área reservada). Escreva o seguinte código:

1. <html>

2. <head>

3. <%

4. Session("Logon")=false

5. Session("userid")=""

6. %>

7. </head>

8. <body>

9. <center>

10. <table border="1" width="30%">

11. <tr>

12. <td width="20%" bgcolor="#CC0000">


<font color="#FFFFFF" face="Verdana"><small>

13. Username</small></font></td>

14. <td width="10%">

Por: Kundan Narendra 61 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

15. <form method="POST" action="passwd.asp">

16. <input type="text" name="Username" size="10"


tabindex="1" maxlength="8">

17. </tr>

18. <tr>

19. <td width="20%" bgcolor="#CC0000">


<font color="#FFFFFF" face="Verdana"><small>

20. Password</small></font></td>

21. <td width="10%">

22. <input type="password" name="passwd" size="10" maxlength="8"


tabindex="2">

23. </tr>

24. </table>

25. <table border="0" width="30%">

26. <tr>

27. <td width="18%"></td>

28. <td width="12%">

29. <font face="Verdana"><input type="submit"


value="Entrar" name="go" tabindex="3"
style="font-family: Verdana; border-style: groove;
padding-top: 0"></font>

30. </tr>

31. </table>

32. </form>

33. </center>

34. </body>

35. </html>

Nas linhas 3,4,5 e 6 são reinicializadas as variáveis de sessão.

Guarde esta página com o nome de login.asp, na pasta backoffice, que criou no passo anterior.

Página de validação dos dados de login - passwd.asp

Por: Kundan Narendra 62 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

4. Esta página não será vista pelo utilizador, servindo apenas para validar os dados de login inseridos pelo
mesmo. Se estes dados estiverem correctos, o utilizador é reencaminhado para a página de introdução
de notícias do BackOffice.

1. <%

2. if request("username")="" or request("passwd")="" then

3. Session("Logon")=false

4. response.redirect("terminate.asp")

5. else

6. dim StrSql

7. StrSql="Select * from user WHERE username='" &


request.form("username") & "'"

8. set Conn=server.createobject("adodb.connection")

9. MdbFilePath = Server.MapPath("news.mdb")

10. Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
set rs = Conn.Execute(StrSql)

11. if rs.eof then

12. '################################

13. '# Não existe nenhum user com esse nome #

14. '################################

15. Session("Logon")=false

16. response.redirect("terminate.asp")

17. else

18. if rs("password")=request.form("passwd") then

19. '################################

20. '# Password está correcta #

21. '################################

22. Session("Logon")=true

23. Session("userid")= rs("user_id")

Por: Kundan Narendra 63 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

24. conn.close

25. response.redirect("Bomain.asp")

26. else

27. '################################

28. '# Password está incorrecta #

29. '################################

30. conn.close

31. response.redirect("terminate.asp")

32. end if

33. end if

34. end if

35. %>

Guarde esta página com o nome de passwd.asp, na pasta backoffice, que criou no passo
anterior.

5. Página de encerramento de sessão - terminate.asp

Esta página também não será vista pelo utilizador, servindo apenas para garantir que a
sessão é bem encerrada e as variáveis bem inicializadas.

1. <%

2. Session("Logon")=false

3. Session("userid")=""

4. response.redirect("login.asp")

5. %>

Guarde esta página com o nome de terminate.asp, na pasta backoffice, que criou no
passo anterior.

6. Página principal do BackOffice - bomain.asp

Aqui, os operadores poderão introduzir, apagar e visualizar as notícias.

Por: Kundan Narendra 64 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

1. <%

2. '##########################

3. '# Verificação da sessão #

4. '##########################

5. response.expires-1

6. if Session("logon")=false or Session("userid")="" then

7. response.redirect("terminate.asp")

8. end if

9. %>

10. <html>

11. <body>

12. <table width="100%" border="1" valign="top">

13. <tr>

14. <td valign="top" width="30%">

15. <% '###############################

16. '# Listagem das notícias #

17. '###############################

18. StrSql="Select * from noticias order by date asc"

19. set Conn=server.createobject("adodb.connection")

20. MdbFilePath = Server.MapPath("news.mdb")

21. Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
set rs = Conn.Execute(StrSql)

22. set rs = Conn.Execute(StrSql)

23. if rs.eof then

24. %>Não existem notícias na BD<%

25. else

26. do while not rs.eof %>

27. <b><%=rs("data")%></b></br>

Por: Kundan Narendra 65 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

28. <I><%=rs("assunto")%></I></br>

29. <%=rs("noticia")%></br>

30. <hr></hr>

31. <%rs.movenext

32. loop

33. end if%>

34. </td>

35. <td valign="top" width="70%">

36. <% '###############################

37. '# Form para a introduçao de notícias #

38. '###############################%>

39. <form name="noticia" method="post" action="newsCreate.asp">

40. Data: <input type="text" name="data" value="<%=date%>"


size="12"></br>

41. Assunto: <input type="text" name="assunto" size="30"></br>

42. Noticia: <input type="text" name="noticia" size="80"></br>

43. <input type="submit" value="Criar">

44. </form>

45. </td>

46. </tr>

47. </table>

48. <p align="center"><a href="terminate.asp">Sair da area


reservada</a></p>

49. </body>

50. </html>

Da linha 1 à 9 são verificadas as variáveis de sessão. Se o user_id estiver vazio ou a variável "logon"
tiver o valor "false" (não existe um utilizador "logado"), não é permitida a entrada no BackOffice.
Guarde esta página com o nome de bomain.asp, na pasta backoffice, que criou no passo anterior.

Por: Kundan Narendra 66 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

7. Inserção de notícias - newsCreate.asp

Esta página grava as notícias introduzidas pelos operadores.

1. <%

2. response.expires=-1

3. 'Código de validação dos dados introduzidos pelo


operador.(...)

4. dim StrSql 'Variável que arquiva o comando de sql a executar

5. StrSql ="INSERT INTO noticias (data,assunto,noticia) values


(#" & Request.form("data") & "#,'" & Request.Form("assunto") & "','" &
Request.Form("noticia") & "')"

6. set conn=server.createobject("adodb.connection")

7. MdbFilePath = Server.MapPath("news.mdb")

8. Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"

9. set rs=Conn.execute(StrSql)

10. response.redirect("bomain.asp")

11. %>

Atenção: não foram incluídas quaisquer validações dos dados introduzidos pelo operador, visto já ter
sido dado um exemplo no código acima.

Guarde esta página com o nome de newsCreate.asp, na pasta backoffice, que criou no passo anterior.

Este pequeno exercício foi útil para perceber o que é realmente o “BackOffice” dum site desta natureza, será
então a área reservada, para os utilizadores autorizados, que poderão entrar mediante uma autenticação, e
colocar lá os seus artigos.
Podíamos logo de seguida criar, uma página onde aparecessem as notícias escritas pelos colunistas, e para
isso temos de escrever o seguinte código:

8.Visualização de notícias - default.asp

Depois de termos o Backoffice criado, vamos criar condições para ter um site de notícias, onde listamos todas
as notícias, e também exibimos uma a uma, com todos os detalhes.

Para listar as últimas notícias inseridas na nossa base de dados –news.mdb, podemos utilizar o código ASP
descrito, e comentado, abaixo:

<%@LANGUAGE="VBSCRIPT"%>
<%
' Primeiramente, devemos indicar ao servidor, onde está localizada a nossa base
' de dados, contendo as notícias listadas.

Por: Kundan Narendra 67 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

set conn=server.createobject("adodb.connection")
MdbFilePath = Server.MapPath("news.mdb")
Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";" "

' De seguida, criamos a ligação com a BD.


set noticias = Server.CreateObject("ADODB.Recordset")
noticias.ActiveConnection = Conn

' Criamos o código SQL que Selecciona todos os campos da tabela


' noticias, e ordena os registos de maneira decrescente pela data.
noticias.Source = "SELECT * FROM noticias ORDER BY ID DESC"
noticias.CursorType = 0
noticias.CursorLocation = 2
noticias.LockType = 3
noticias.Open()
noticias_numRows = 0
%>
<html>
<head>
<title>Site de Notícias</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<p>Listagem das últimas notícias:</p>
<%
' Criamos um contador, para limitar o número de registos a serem exibidos.
limite = 0
If not noticias.EOF then noticias.MoveFirst
' Enquanto não acabarem as notícias listadas, e o limite for menor do que
' 15, continuamos listando-as.
While Not noticias.EOF and cnt_nr < 15
%>
<p><%=noticias("data")%> |
<a href="noticia.asp?ID=<%=noticias("ID")%>">
<b><%=noticias("assunto")%></b></a>
<%=noticias("noticia")%></p>
<%
' Aumenta +1 no valor da variável limite
limite = limite + 1
noticias.MoveNext
' Repete o loop
wend
%>
</body>
</html>
<%
' Fecha a ligação à BD
noticias.Close
Set noticias = Nothing
%>

Guardeesteficheirocomo:default.asp,napastabackofficecriadaanteriormente.
Na próxima parte, veremos como exibir os detalhes de cada notícia, utilizando o componente
Request.QueryString.

Por: Kundan Narendra 68 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

9. Mostrar os detalhes da notícia - noticia.asp

Após termos listado as últimas notícias listadas na nossa Base de Dados, devemos criar uma página *.asp
onde, exibimos o conteúdo completo da notícia.

Veja o código comentado abaixo:


<%@LANGUAGE="VBSCRIPT"%>
<%
' Primeiramente, devemos indicar ao servidor, onde está localizado nosso banco de dados, contendo as
notícias listadas.
set conn=server.createobject("adodb.connection")

MdbFilePath = Server.MapPath("news.mdb")
Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";" "

' Resgatamos o valor da variável ID, passada através da URL.


id = request.querystring("ID")

set exibe_noticia = Server.CreateObject("ADODB.Recordset")


exibe_noticia.ActiveConnection = Conn

' Seleccionamos apenas a notícia onde a ID for igual ao parâmetro passado pela URL
exibe_noticia.Source = "SELECT * FROM noticias where id="& id &""
exibe_noticia.CursorType = 0
exibe_noticia.CursorLocation = 2
exibe_noticia.LockType = 3
exibe_noticia.Open()
exibe_noticia_numRows = 0
%>
<html>
<head>
<title> Site de Noticias- detalhadas</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<p><b><%=exibe_noticia("assunto")%></b><br>
</p>
<p>
<%
noticia=exibe_noticia("noticia")
noticia=replace(noticia, chr(10), "<br>")
response.write noticia
%>
<p><b>Data:</b> <%=exibe_noticia("data")%></p>

<a href=”default.asp”>Voltar</a>
</body>
</html>
<%
' Fecha a ligação
exibe_noticia.Close
Set exibe_noticia = Nothing
%>

Por: Kundan Narendra 69 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Guarde este ficheiro como: noticia.asp, na pasta backoffice criada anteriormente.

Podemos considerar este exercício como o mais completo Sistema de Notícias com Backend (área reservada
para os colunistas) e Frontend (área das notícias recentes e detalhadas vísivel aos visitantes). Espero que
tenham tirado as devidas ilações deste exemplo, porque a linguagem ASP permite-nos criar sistemas mais
completos e complexos do que este, é necessário é que continue a dedicar o tempo para o estudo do ASP, ou
ASP.NET (a nova versão do ASP) e que permite-nos criar aplicações para a WEB mais profissionais.

Os programas de Gestão de conteúdos (como este que acabamos de construir), os exemplares mais nobres
desta geração, adoptados por vários sites, chegam a custar, em licença, 400 mil dólares. Últimamente, como a
situação da Internet não anda exactamente de vento em popa, vimos neste pequeno exemplo como criar uma
opção muito mais modesta e radicalmente mais económica de software de administração de conteúdo,
utilizando ferramentas já conhecidas pela grande maioria dos programadores ASP.
São elas: Microsoft Access, para a Base de Dados, e um editor HTML/texto qualquer (como o Frontpage 2000),
podendo-se adoptar o Bloco de Notas, do Windows.

Que todos os exemplos que fizermos ao longo deste Curso, sirvam de algum modo para vos indicar o caminho
do sucesso, apesar da Internet já estar inundada, de pessoas que fazem através da criação deste tipo de
aplicações, o seu ganha pão, mas isso não é caso para desmoralizar, porque você com estes conhecimentos
adquiridos, e com a arte de programar duma maneira diferente, pode ganhar o seu espaço.

Exercício Prático 2: - Criar um livro de visitas(Guestbook)

Vamos começar a usar ASP e acesso a uma Base de dados com ADO. Vamos ver como implementar uma
funcionalidade usada em muitas páginas web: o Livro de visitas ou Guestbook.

A coisa funciona da seguinte maneira: Ao visitar um site que disponibiliza um livro de visitantes, podemos
assinar o livro , deixar nosso e-mail e colocar alguma mensagem característica. Vamos mostrar como criar as
rotinas para implementar um livro de visitas num site.
Básicamente vamos precisar de uma base de dados na qual iremos armazenar os registos inseridos pelos
visitantes. Vamos armazenar os seguintes dados:
IDO código de identificação do assinante

nome o nome do utilizador que assinou o livro


email o email do assinante
mensagem a mensagem do visitante
dataa data da assinatura do livro
Será necessário criar uma base de dados com uma tabela com os campos acima mencionados, usaremos
então o Access para criar a base de dados visita.mdb e a tabela visitantes com a estrutura mencionada.(Ver
figura abaixo)

Como Aceder à Base de Dados....eis a questão ????

Por: Kundan Narendra 70 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Como já vimos, o acesso à base de dados pode ser feito de 3 maneiras :

1- ) Usando um Driver OLE DB (iremos usar esta forma de acesso a base de dados). Neste método usamos o
seguinte código:

'cria uma instância do objecto connection


Set Conn = Server.CreateObject("ADODB.Connection")
DB = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source="& _
Server.MapPath("visita.mdb")
Conn.Open DB

2-) A segunda forma é usar um driver ODBC ( existem servidores que não suportam Drivers OLE DB ). Neste
caso o código é o seguinte:

'cria uma instância do objecto connection Set


Conn = Server.CreateObject("ADODB.Connection")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &_
Server.MapPath("visita.mdb")

3-) Podemos usar ainda um DSN ( Data Source Name) para aceder aos dados via objecto connection da ADO.
Como exemplo podemos criar o DSN com o nome de visitantes e usá-lo para o acesso à base de dados.

'cria uma instância do objecto connection


Set Conn = Server.CreateObject("ADODB.Connection")
Conn.open "DSN=visitantes;uid=;pwd=;"
Neste projecto vai usar um ficheiro de script asp , o ficheiro visitas.asp que será o responsável pela
funcionalidade do nosso livro de visitas e um ficheiro onde iremos reunir todas as funções JavaScript usadas
para validar os dados; o ficheiro funcoes.asp que será um ficheiro de inclusão.

O ficheiro ajuda.htm também será usado para exibir o conteúdo da ajuda ao utilizador.

O código do ficheiro funcoes.asp é o seguinte:

<script language="JavaScript">
function verifica_dados(form) {
var tamanho_pesquisa = new String()
tamanho_pesquisa = document.enviar.mensagem.value

if(EmBranco(form.nome) == true) {
alert("Por favor digite o seu nome.");
form.nome.focus();
return false;
}

if(EmBranco(form.email) == true) {
alert("O seu e-mail apresenta um formato inválido.");
form.email.focus();
return false;
}

if(tamanho_pesquisa.length > 200 ){


AvisoInvalido(document.enviar.mensagem,'ATENÇÃO: Sua mensagem deve conter no máximo 200
caracteres!\n\n');
return false;
}

Por: Kundan Narendra 71 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

if(EmBranco(form.mensagem) == true) {
alert("Deixe pelo menos uma palavra");
form.mensagem.focus();
return false;
}
} // fim da função

// Verifica se os campos foram preenchidos


function EmBranco(campo) {
if(campo.value == "")
return true;
else
return false;
}

/************************************************
* function AvisoInvalido
* Gera um alerta para o utilizador
* volta o foco p/campo
* Input: theField - campo do formulário com problema
* warnText - texto a ser mostrado no alert
************************************************/
function AvisoInvalido (theField, warnText) {
theField.focus()
theField.select()
alert(warnText)
return false
}
</script>

<script language="JavaScript">
// funcao para obter ajuda
function ajuda(){
window.open('ajuda.htm','explica','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,
_ resizable=no,copyhistory=no,width=270,height=310,top=40,left=150');
}
</script>
As funções deste ficheiro fazem a validação da entrada de dados nos campos do formulário do site.

Ao aceder à página do livro de visitas iremos mostrar os utilizadores que já assinaram o livro e a seguir
mostraremos o formulário que permitirá ao utilizador informar os dados para assinar o livro.

O nome e o email do utilizador e a mensagem são de preenchimento obrigatório e limitamos as mensagens a


200 caracteres. Se o utilizador não informar o nome ou o email ou se tentar inserir um mensagem em branco as
funções em JavaScript não permitirão a gravação . Se ainda o utilizador ultrapassar o limite de 200 caracteres
para sua mensagem receberá um aviso para abreviar a mensagem.

O utilizador pode clicar no nome do visitante que já assinou o livro para lhe enviar uma mensagem, pode
também clicar sobre o ícone do livro para obter ajuda resumida de como proceder para assinar o livro.

Por: Kundan Narendra 72 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Veja a seguir o código do ficheiro visitas.asp comentado:


<%option explicit %>
<!--#include file="funcoes.asp" -->
<%
'declaração das variáveis
Dim nome
Dim email
Dim mensagem
Dim homepage
Dim conn
Dim DB
Dim rst
Dim SQL

'cria uma instância do objecto connection


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

DB = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source="& _


Server.MapPath("visita.mdb")
Conn.Open DB

'2-)Acesso usando um driver ODBC


'conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("visita.mdb")

'3-)Acesso usando um DSN chamado visitantes


'Conn.open "DSN=visitantes;uid=;pwd=;"

'cria uma instância do objecto recordset


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

if Request.ServerVariables("CONTENT_LENGTH")> 0 THEN
SQL = "SELECT * FROM visitantes"
rst.Open SQL,Conn,1,2
rst.AddNew
rst("nome") = Request.form("nome")
rst("email") = Request.form("email")
rst("mensagem") = Request.form("mensagem")
rst("data") = day(now) & "/" & month(now) & "/" & year(now)
rst.Update
rst.close
end if

'ordenar o recordset pelo nome dos visitantes


SQL = "SELECT * FROM visitantes ORDER BY nome"
rst.Open SQL,Conn,1,2
%>

<HTML>
<HEAD>
<TITLE>Relação dos Visitantes</TITLE>
</HEAD>
<CENTER>
<body bgcolor="#00FFFF">

Por: Kundan Narendra 73 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

<table border="0">
<tr>
<td><img src="logo_vb.gif" width="320"
height="49"><font face="Comic Sans MS"><em></em></font><font
color="#004080" face="Comic Sans MS"><em>Kundan</em></font><font
color="#FF0000" face="Comic Sans MS"><em>Web</em></font><font
color="#808040" face="Comic Sans MS"><em> / </em></font><font
height="49"><font face="Comic Sans MS"><em> </em></font><font
color="#004080" face="Comic Sans MS"><em>Base </em></font><font
color="#FF0000" face="Comic Sans MS"><em>de</em></font><font
color="#004080" face="Comic Sans MS"><em> </em></font><font
color="#808040" face="Comic Sans MS"><em>Dados</em></font><font
color="#004080" face="Comic Sans MS"><em> </em></font><font
color="#0080FF" face="Comic Sans MS"><em>na </em></font><font
color="#FF8000" face="Comic Sans MS"><em>WEB</em></font></td>
</tr>
</table>
<hr>
<p><font size="5" face="Comic Sans MS">Livro de Visitas</font>
<A href="javascript:ajuda()"><IMG border=0<img src="livro.gif" width="67" height="39"></p></A>
<table border="0" width="90%">
<tr>
<td width="100%">
<div align="center">
<center>
<table border="0" width="90%">
<%
While Not rst.EOF
%>
<tr>
<td width="100%" bgcolor="#CDCDCD">
<font face="Arial" size="2" color="green">
Assinado em</font><font color="black"><em>
<%=rst("data")%></em></font>
<font face="Verdana" color="blue">por</font>
<font color="pink"><em><a href="mailto:<%=rst("email")%>">
<%=rst("nome")%></a><br></em></font>

<div align="center"><center>
<table border="0" width="70%">
<tr>
<td width="100%"><p align="center">
<font color="black" size="2" face="Arial">
<i><%=rst("mensagem")%></i>
</font></td></tr>
</table></center></div></td></tr>
<%
rst.MoveNext
wend
rst.close
conn.close
set rst=nothing
set conn=nothing

Por: Kundan Narendra 74 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

%>
</table>
</center></div>
</td></tr>
</table>
</center>
</div>
<% 'inicializa as variáveis
nome=""
email=""
mensagem=""
homepage=""
%>
<form name="enviar" method="POST" action="<%=Request.ServerVariables("SCRIPT_NAME")%>" _
onsubmit="return verifica_dados(this);">
<center>
<Table bgcolor="aqua" border="0">
<tr><td>
<b>Nome (*): </b>
<input type="text" size="60" name="nome" value="<%=nome%>">
</td></tr>
<tr><td>
<b>E-Mail(*): </b>
<input type="text" size="60" name="email" value="<%=email%>">
</td></tr>
<tr></tr>
<tr><td>
<b>Mensagem : <font color=blue>Obs: (*) Preenchimento obrigatório</font></b>
<textarea rows="3" name="mensagem" value="<%=mensagem%>" cols="60"></textarea>
</td></tr><tr>
<td>
<input type="submit" value="Assinar" name="B1">
<input type="reset" value="Limpar" name="B2">
</td></tr>
</table>
</form>
</center>
<hr></body>
</html>

Vamos explicar como funciona...

1-) <%option explicit %> - Esta instrução obriga a que declaremos todas a variáveis usadas no
projecto. ( boa prática )

2-)<!--#include file="funcoes.asp" --> - Aqui estamos a incluir o ficheiro funcoes.asp na página


visitas.asp , com isto o código fica mais claro e a manutenção também.

3-) A seguir criamos um objecto Connection e definimos uma string de ligação. Vamos usar a base
de dados visitas.mdb localizado no diretório onde está a página ASP. A seguir abrimos a ligação com
a base de dados.

'cria uma instância do objecto connection

Por: Kundan Narendra 75 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

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

DB = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source="& _


Server.MapPath("/database/visita.mdb")
Conn.Open DB

4-) Set rst = Server.CreateObject("ADODB.Recordset") - criamos a variável recordset - rst.

5-) O código abaixo irá fazer a inclusão dos dados do formulário na tabela visitantes.
if Request.ServerVariables("CONTENT_LENGTH")> 0 THEN
SQL = "SELECT * FROM visitantes"
rst.Open SQL,Conn,1,2
rst.AddNew
rst("nome") = Request.form("nome")
rst("email") = Request.form("email")
rst("mensagem") = Request.form("mensagem")
rst("data") = day(now) & "/" & month(now) & "/" & year(now)
rst.Update
rst.close
end if

6-) A seguir usamos a instrução : While Not rst.EOF / Wend para percorrer a tabela e mostrar todos os
registos da Base de Dados, na página do site.

7-) O formulário para preencher os dados é montado usando o seguinte código:(Observe o uso das tags
<%=campo%> )

<form name="enviar" method="POST" action="<%=Request.ServerVariables("SCRIPT_NAME")%>" _


onsubmit="return verifica_dados(this);">
<center>
<Table bgcolor="aqua" border="0">
<tr><td>
<b>Nome (*): </b>
<input type="text" size="60" name="nome" value="<%=nome%>">
</td></tr><tr><td>
<b>E-Mail(*): </b>
<input type="text" size="60" name="email" value="<%=email%>">
</td></tr><tr></tr>
<tr><td>
<b>Mensagem : <font color=blue>Obs: (*) Preenchimento obrigatório</font></b>
<textarea rows="3" name="mensagem" value="<%=mensagem%>" cols="60"></textarea>
</td></tr><tr><td>
<input type="submit" value="Assinar" name="B1">
<input type="reset" value="Limpar" name="B2">
</td></tr>
</table>
</form>

Após ter criado e implementado, o Livro de Visitas –tente passar uma vista de olhos sobre a explicação, sobre
cada parte de código do ficheiro visitas.asp.
O Livro de visitas é uma aplicação muito simples, e fácil de implementar, mas como certamente reparou – o uso
de uma Base de Dados é necessário.

Por: Kundan Narendra 76 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

Espero que depois de construir esta pequena aplicação, fique com mais noções sobre como funciona o ASP, e
atenção de que qualquer destes códigos, ou mesmo um ficheiro (por ex: funcoes.asp) pode ser utilizado em
outras aplicações, não necessita de criar tudo de raíz.

Exercício Prático 3: - Criar um contador para a Página

Que tal um contador no Site ?? Este serve para indicar o número de acessos ? É bem mais simples
do que se pensa. Vamos usar um ficheiro texto para armazenar o número de acessos e
incrementá-lo a cada requisição do utilizador á nossa página. Vamos lá...
As etapas envolvidas são as seguintes:

1-) Criamos o objecto que permite o acesso a ficheiros. Usaremos o componente


FileSystemObject. (Poderiamos ter usado uma base de dados).

2-) Criamos um ficheiro texto para armazenar o valor do contador. Fazemos isso usando o nome
do ficheiro de script acrescido da extensão .cnt.

3-) A cada requisição da página pelo utilizador abrimos o ficheiro lendo o seu conteudo e
incrementando o valor de uma unidade.

4-) Se o ficheiro não existir iniciamos o contador do zero( iconta := 0)


5-) A seguir atribuimos o valor a uma variável iconta.
6-) Fechamos os objectos e visualizamos o valor do contador.

O código script do ficheiro contador.asp é dado a seguir

<%
' Declarando as variaveis usadas
Dim objFSO, objContador' variável de acesso a ficheiros (FileSystemObject ) e objecto contador
Dim strArqTexto' nome do ficheiro texto
Dim iConta' variavel que incrementa o contador
Dim I' variavel usada no loop

' Monta o nome do ficheiro texto com extensão .cnt a partir do nome do ficheiro de script
strArqtTexto = Server.MapPath(Request.ServerVariables("SCRIPT_NAME") & ".cnt")

'Cria o objecto de acesso ao ficheiro texto


Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

' Abre o ficheiro texto


Set objContador = objFSO.OpenTextFile(strArqTexto, 1, True)

' Le o conteudo actual do ficheiro texto


If Not objContador.AtEndOfStream Then
' determina o valor do contador
iConta = CLng(objContador.ReadAll)
Else
' se o ficheiro nao existe inicia com zero
iConta = 0
End If

Por: Kundan Narendra 77 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

' Fecha o ficheiro e destroi o objecto


objContador.Close
Set objContador = Nothing

' incrementa o contador


iConta = iConta + 1

' Sobrescreve o ficheiro texto existente


Set objContador = objFSO.CreateTextFile(strArqTexto, True)

' Salva e Actualiza o contador


objContador.Write iConta

' fecha e destroi o objecto


objContador.Close
Set objContador = Nothing

' Destroi o objecto FSO


Set objFSO = Nothing

‘escreve o numero de acessos


Response.Write iConta
%>

Podemos implementar o script acima usando a directiva include numa página ASP. A sintaxe é
dada a seguir:
<!-- #INCLUDE FILE="contador.asp" -->

Iremos aproveitar o exemplo anterior e incluir o ficheiro contador.asp usando a directiva include.
O ínicio do script já com a directiva include fica assim:
<html>
<head>
<TITLE>Teste de contador</TITLE>
</head>
<body bgcolor="#FFFFFF">
<!--#INCLUDE VIRTUAL="\ADOVBS.INC" -->
<!--#INCLUDE FILE="contador.asp" -->
<%
...
...
...
%>
<hr>
<b>Numero de Acessos a esta página : <%=iconta%></b>

</BODY>
</HTML>

O resultado do processamento deste script é o seguinte:

Por: Kundan Narendra 78 de um total de 79 2005


INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL
D EL E G A Ç ÃO R E G I O N A L D E L I S B O A E V A L E D O T E J O
CENTRO DE FORMAÇÃO PROFISSIONAL DE LISBOA PARA O SECTOR TERCIÁRIO

De forma simples acabamos de implementar um contador para as páginas ASP usando só um


ficheiro texto.

Tem aqui mais um exemplo de criação de contador em ficheiro de Texto.

<%
Set ObjectoFicheiro = CreateObject(“Scripting.fileSystemObject”)
Set LerTexto = ObjectoFicheiro.OpenTextFile
(Server.MapPath(“contador.txt”),1)
Valor = LerTexto.ReadLine
Set LerTexto = nothing
Set EscreveTexto = ObjectoFicheiro.CreateTextFile
(Server.MapPath(“contador.txt”),True)
EscreveTexto.WriteLine(valor+1)
EscreveTexto.Close
Response.Write “Houveram “ & (valor+1) & “ acessos...<br>”
%>

Resultado é idêntico ao anterior:

Dou por terminado este Módulo de Programação Web, esperando que tenha conseguido incutir, o
máximo possível de noções sobre esta matéria.

Desejo que este Módulo e Curso decorra da melhor forma, e Boa Sorte para o Futuro.

BOM TRABALHO

Por: Kundan Narendra 79 de um total de 79 2005

Você também pode gostar