Você está na página 1de 730

I

Sumrio
ASP 3. 0
CRI ANDO SI TES
DINMICOS COM
J lio Battisti
www.baixebr.org
II
Criando Sites Dinmicos com ASP 3.0
Copyright 2000 by Jlio Battisti
Copyright 2000 by Axcel Books do Brasil Editora Ltda.
Nenhuma parte desta publicao poder ser reproduzida sem autorizao
prvia e escrita de Axcel Books do Brasil Editora.
Editora de Produo: Gisella Narcisi
Editor Responsvel: Ricardo Reinprecht
Criando Sites Dinmicos com ASP 3.0
Jlio Battisti
ISBN: 85-7323-141-6
Suporte Tcnico ao Leitor
Limite de garantia: Nosso suporte tcnico limita-se ao contedo especfico do livro,
e no a questes gerais referentes ao(s) software(s) descrito(s), cessando caso esta
publicao tenha sido esgotada. Para obter esse suporte tcnico especfico,
o leitor deve informar ttulo, autor e pgina, somente via e-mail.
Todos os originais de livros enviados para avaliao pela Editora sero destrudos,
caso no sejam aprovados. No ser feita sua devoluo em nenhuma hiptese.
Os conceitos emitidos nesta obra so de inteira responsabilidade do Autor.
E-mail:
editora@axcel.com.br
Visite nossa Home Page
http://www.axcel.com.br
Axcel Books do Brasil Editora
Av. Paris, 571 Bonsucesso
21041-020 Rio de Janeiro RJ
Tel. (21) 2564-0085
III
Sumrio
Cr dit os
Pr oduo
Alexandre Ramires
Carlos Alberto S Ferreira
Reviso
Vanessa Garcia
Ar t e e Diagr amao
Ingo Bertelli
Super visor de Pr oduo
Carlos Alberto S Ferreira
Capa
Ingo Bertelli
Edit or a de Pr oduo
Gisella Narcisi
Edit or Responsvel
Ricardo Reinprecht
IV
Criando Sites Dinmicos com ASP 3.0
Agr adeciment os
Embora este seja o meu segundo livro, a emoo e a satisfao de concluir mais esse trabalho
talvez at maior do que no lanamento do primeiro. Foram meses de trabalho rduo,
escrevendo captulos entre uma viagem e outra. Felizmente conseguimos concluir esse livro
no tempo estimado. E o principal que saiu conforme o planejado. Penso que esse livro pode
ajudar bastante aqueles que querem aprender a tecnologia ASP, e at mesmo programadores
mais experientes.
No entanto, um trabalho como este no pode ser realizado sem que vrias pessoas contribuam,
formando uma verdadeira equipe. Devo citar e agradecer, mais uma vez, a pacincia, o amor, a
dedicao e o apoio de minha esposa Lu, diante de mais este desafio. Sei que no foi fcil ficar ao
meu lado, um final de semana aps o outro, apenas escutando o barulho das teclas do computador.
Sem o seu apoio e compreenso, tudo seria muito mais difcil, para no dizer impossvel. Prometo
que o prximo trabalho ter somente umas 200 pginas.
Gostaria tambm de agradecer o amor e apoio da minha me Dona Lucy. Pessoa que sempre
me incentivou, apoiou, acreditou no meu trabalho e fez despertar em mim o amor pelos
livros. Me, mais uma vez agradeo por tudo o que fizestes e continuas fazendo por mim.
Agradeo mais do que tudo, o amor que sempre me deste, fazendo com que eu crescesse com
a certeza de estar sendo amado e querido.
Tambm quero agradecer a equipe da Axcel Books, pela sua pacincia em corrigir e revisar
mais este trabalho, sempre com sugestes para a melhoria do mesmo, de tal forma que o
amigo leitor possa obter uma obra de qualidade.
Devo citar ainda minhas irms: Rose, Lacy e Sandra que sempre renovam minhas foras com
seus elogios sinceros e verdadeiros. Os momentos que passamos juntos, embora poucos, so
verdadeiros e profundos. Uma simples conversa, um almoo, um passeio; so momentos de
parada e reflexo. Momentos que nos mostram o quanto a vida vale a pena. Espero podermos
passar mais tempo juntos.
V
Sumrio
Sobr e o Aut or
Jlio Battisti profissional certificado da Microsoft, tendo sido aprovado em 16 Exames da
Microsoft, com os quais obteve certificaes como: MCP, MCP+I, MCSE, MCSE+I e MCDBA.
Gerente de rede na Secretaria da Receita Federal, e conhece a tecnologia ASP desde sua
primeira verso. Tambm autor de artigos de informtica e trabalha com o desenvolvimento
e administrao de Web sites. Autor do livro: Srie Curso Bsico & Rpido Microsoft Windows
2000 Server, publicado pela Editora Axcel Books. Atua como instrutor de cursos de
informtica na Secretaria da Receita Federal, em outros cursos particulares e tambm para
turmas em Universidades.
VI
Criando Sites Dinmicos com ASP 3.0
VII
Sumrio
Sumrio
Introduo........................................................................................................................................ 1
Sites Dinmicos com ASP 3.0 ......................................................................................................... 1
Equipamento e Software Necessrio ............................................................................................... 3
Instalando e Testando o IIS 5.0........................................................................................................ 4
Novidades e Melhorias do IIS 5.0.................................................................................................. 10
Administrao e Servios .............................................................................................................. 11
Desenvolvimento de Aplicaes Internet/Intranet ................................................................. 12
Hora de Comear ......................................................................................................................... 13
Viso Geral dos Captulos do Livro ........................................................................................ 13
Ento, Mos obra ............................................................................................................... 14
Captulo 1 Uma Introduo Tecnologia ASP ......................................................................... 15
Era uma Vez uma Internet com Contedo Esttico....................................................................... 16
Um Comeo Quase sem Querer .............................................................................................. 16
Uma Viso Geral da Internet e de Seus Elementos ................................................................ 17
Contedo Dinmico na Internet .................................................................................................... 19
A Era do Comrcio Eletrnico ....................................................................................................... 23
Aplicaes Para a Web ................................................................................................................... 29
A Complexidade de Gerenciamento do Modelo
Cliente/Servidor e Aplicaes em Duas Camadas.................................................................. 29
Aplicaes em Duas Camadas ................................................................................................ 30
Aplicaes em Trs Camadas ................................................................................................. 31
Aplicaes em Quatro Camadas ............................................................................................. 33
Questes a Considerarmos nos Modelos em Trs ou Mais Camadas .................................... 34
O que ASP? .................................................................................................................................. 35
Preparando o Servidor Para Acompanhar os Exemplos................................................................ 37
Criando a Estrutura de Pastas e Subpastas ............................................................................. 37
Tornando a Pasta Livro Parte dos Servidor IIS ....................................................................... 38
Alguns Exemplos Prticos ...................................................................................................... 44
O Tradicional Hello World ................................................................................................... 44
Um Exemplo de Pgina Dinmica .......................................................................................... 48
Captulo 2 Uma Introduo ao VBScript .................................................................................. 53
Introduo ...................................................................................................................................... 54
O que VBScript ............................................................................................................................ 54
Uma Reviso Rpida de HTML...................................................................................................... 56
Estrutura Bsica de uma Pgina HTML.................................................................................. 56
Tags Para a Criao de Formulrios HTML............................................................................. 60
Criando o Formulrio a tag <FORM> </FORM> ....................................................... 60
Criando uma Caixa de Texto a Tag <INPUT TYPE=TEXT> ................................... 62
Criando uma Caixa de Texto Para a Digitao
de Senhas a tag <INPUT TYPE=PASSWORD>....................................................... 64
Criando um Check Box a tag <INPUT TYPE=CHECKBOX>............................... 66
VIII
Criando Sites Dinmicos com ASP 3.0
Criando um Conjunto de Radio Buttons a tag <INPUT TYPE=RADIO> ............ 68
Criando um Campo Para Digitao de Comentrios
e Textos Maiores a tag <TEXTAREA> </TEXTAREA> .............................................. 70
Criando uma Lista de Opes (Caixa de Combinao) a tag
<SELECT></SELECT> em Combinao com <OPTION></OPTION> .................... 72
Finalizando o Formulrio com os Botes Enviar Dados e Limpar Dados
as Tags <INPUT TYPE=SUBMIT> e <INPUT TYPE=CLEAR> ......................... 75
Declarao e Utilizao de Variveis no VBScript ........................................................................ 78
O que uma Varivel ? ........................................................................................................... 78
Inserindo Cdigo VBScript ..................................................................................................... 78
Declarao e Tipo de Varivel .............................................................................................. 79
Fazendo Clculos e Comparaes com o VBScript Operadores ................................................ 83
Fazendo Clculos com os Operadores Aritmticos ................................................................ 83
Comparando Valores com os Operadores de Comparao .................................................... 87
O Escopo das Variveis, no VBScript ............................................................................................ 91
Estruturas Para Controle de Fluxo em VBScript ........................................................................... 95
Estruturas de Deciso.............................................................................................................. 95
A Estrutura If...Then ........................................................................................................ 96
A Estrutura If...Then...Else............................................................................................... 96
A Estrutura If...Then...ElseIf...Else................................................................................... 97
A Estrutura Select...Case .................................................................................................. 99
Estruturas de Repetio ........................................................................................................ 100
A Estrutura For...Next ..................................................................................................... 100
A Estrutura Do...Loop..................................................................................................... 102
A Estrutura Do While Condio...Loop ......................................................................... 102
A Estrutura Do... Loop While Condio ........................................................................ 103
A Estrutura Do Until Condio...Loop .......................................................................... 106
A Estrutura Do... Loop Until Condio ......................................................................... 107
Concluso ..................................................................................................................................... 110
Captulo 3 Funes, Procedimentos e Eventos com VBScript ................................................ 111
Tipos de Dados e Funes Para Converso de Tipos ................................................................... 112
Determinando o Tipo de Dados Contido em uma Varivel .................................................. 112
A Funo IsArray............................................................................................................ 113
A Funo VarType........................................................................................................... 115
A Funo IsDate.............................................................................................................. 118
A Funo IsEmpty .......................................................................................................... 121
A Funo IsNull .............................................................................................................. 122
A Funo IsNumeric....................................................................................................... 124
A Funo IsObject .......................................................................................................... 125
Funes Para Converso de Tipos ......................................................................................... 127
Funo Cbool .................................................................................................................. 127
Funo CByte .................................................................................................................. 128
Funo CCur ................................................................................................................... 129
Funo CDate.................................................................................................................. 130
Funo CDbl ................................................................................................................... 131
Funo CInt .................................................................................................................... 132
Funo CLng ................................................................................................................... 133
IX
Sumrio
Funo CSng ................................................................................................................... 134
Funo CStr .................................................................................................................... 135
Funes Int e Fix ............................................................................................................ 135
Outras Funes do VBScript Tratamento
de String, Datas e Funes Matemticas ..................................................................................... 136
Funes Para Tratamento de String ...................................................................................... 136
Funo Asc ..................................................................................................................... 136
Funo Chr ..................................................................................................................... 136
Funo Len ..................................................................................................................... 137
Funo LCase .................................................................................................................. 137
Funo UCase ................................................................................................................. 138
Funo Left ..................................................................................................................... 138
Funo Right ................................................................................................................... 138
Funo Mid ..................................................................................................................... 139
Funo String.................................................................................................................. 140
Funes Para Tratamento de Data e Hora ............................................................................. 140
Funo Date .................................................................................................................... 140
Funo Time ................................................................................................................... 141
Funo Day ..................................................................................................................... 141
Funo Month................................................................................................................. 142
Funo Now.................................................................................................................... 142
Funo MonthName ....................................................................................................... 143
Funo Hour ................................................................................................................... 143
A funo DateDiff ........................................................................................................... 144
A Funo DateAdd ......................................................................................................... 145
Funo Year ..................................................................................................................... 147
Funo WeekDay ............................................................................................................ 147
Funo WeekDayName................................................................................................... 148
Funes Para Clculos Matemticos ..................................................................................... 149
Criando Suas Prprias Funes e Procedimentos ....................................................................... 151
Criando e Utilizando Sub-rotinas ......................................................................................... 151
Criando e Utilizando Funes............................................................................................... 154
Trabalhando com Eventos no VBScript ...................................................................................... 157
Principais Eventos dos Objetos do Internet Explorer .......................................................... 159
Concluso ..................................................................................................................................... 167
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0 .......................................... 169
Introduo .................................................................................................................................... 170
Entendendo e Utilizando ASP ..................................................................................................... 170
Como e Onde uma Pgina ASP Processada? ..................................................................... 171
O que uma Pgina ASP Retorna Para o Navegador do Cliente?........................................... 172
O que Preciso Para Criar e Acessar Pginas ASP? ............................................................. 175
Objetos do ASP 3.0....................................................................................................................... 176
Uma Viso Geral do Modelo de Objetos do ASP 3.0............................................................ 177
O Objeto Request .......................................................................................................................... 179
Colees do Objeto Request .................................................................................................. 179
A Coleo Form do Objeto Request .............................................................................. 179
A Coleo QueryString do Objeto Request .................................................................... 186
X
Criando Sites Dinmicos com ASP 3.0
Alguns Campos que Merecem Consideraes Especiais .............................................. 189
A Coleo ServerVariables do Objeto Request .............................................................. 193
A Coleo Cookies do Objeto Request ........................................................................... 199
A Coleo ClientCertificate do Objeto Request ............................................................. 203
Propriedade do Objeto Request ............................................................................................ 203
Mtodo do Objeto Request .................................................................................................... 204
O Objeto Response ....................................................................................................................... 206
Coleo do Objeto Response ................................................................................................. 206
Propriedades do Objeto Response ........................................................................................ 211
A Propriedade Buffer do Objeto Response .................................................................... 211
A Propriedade CacheControl do Objeto Response ........................................................ 212
A Propriedade CharSet do Objeto Response ................................................................. 213
A Propriedade ContentType do Objeto Response ......................................................... 214
A Propriedade Expires do Objeto Response .................................................................. 215
A Propriedade ExpiresAbsolute do Objeto Response ................................................... 216
A Propriedade IsClientConnected do Objeto Response ................................................ 217
A Propriedade PICS do Objeto Response ...................................................................... 218
A Propriedade Status do Objeto Response .................................................................... 219
Mtodos do Objeto Response ................................................................................................ 219
O Mtodo AddHeader do Objeto Response ................................................................... 220
O Mtodo AppendToLog do Objeto Response............................................................... 220
O Mtodo BinaryWrite do Objeto Response .................................................................. 221
O Mtodo Clear do Objeto Response ............................................................................. 222
O mtodo End do Objeto Response ............................................................................... 223
Comentrios ................................................................................................................... 223
O Mtodo Flush do Objeto Response ............................................................................ 224
O Mtodo Redirect do Objeto Response ........................................................................ 225
O Mtodo Write do Objeto Response ............................................................................. 226
Alguns Exemplos Prticos de Aplicao ..................................................................................... 227
Exemplo 1: Validao dos Dados de um Formulrio ............................................................ 227
Exemplo 2: Formulrio Para Clculo de Imposto ................................................................. 239
Concluso ..................................................................................................................................... 248
Captulo 5 Conectando Pginas ASP com Bancos de Dados.................................................. 249
Uma Reviso dos Conceitos Bsicos de Banco de Dados ........................................................... 251
Entidades e Atributos ............................................................................................................ 251
Chave Primria ...................................................................................................................... 252
Relacionamentos Entre Tabelas ............................................................................................ 253
Relacionamento do Tipo Um Para Um .......................................................................... 254
Relacionamento do Tipo Um Para Vrios ...................................................................... 255
Relacionamento do Tipo Vrios para Vrios ................................................................. 255
Integridade Referencial .................................................................................................. 256
Normalizao de Tabelas ...................................................................................................... 257
Primeira Forma Normal .................................................................................................. 258
Segunda Forma Normal .................................................................................................. 259
Terceira Forma Normal ................................................................................................... 260
Passos Para Projetar um Banco de Dados.............................................................................. 261
XI
Sumrio
Etapas na Estruturao de um Banco de Dados ............................................................ 261
Dicas Para Determinao dos Campos em uma Tabela ................................................. 262
Como Escolher o Campo que Ser a Chave Primria? .................................................. 262
Noes Bsicas da Linguagem SQL Structured Query Language ............................................ 263
Introduo ............................................................................................................................. 263
A Instruo SELECT ............................................................................................................. 264
A Instruo UPDATE............................................................................................................. 272
A Instruo INSERT .............................................................................................................. 273
A Instruo Delete ................................................................................................................. 274
Uma Viso Geral de ADO e OLE DB............................................................................................ 275
Um Pouco Sobre ODBC Open Database Conectivity ........................................................ 275
Criando uma Fonte ODBC Para um Banco de Dados do Microsoft Access 97 ............. 276
Criando uma Fonte ODBC Para um Banco de Dados do Microsoft SQL Server 2000 ....... 282
Um Pouco Sobre OLE DB e ADO.......................................................................................... 288
Uma Viso Geral do Modelo de Objetos ADO ............................................................................ 290
O Objeto Connection ................................................................................................................... 292
O Primeiro Exemplo .............................................................................................................. 295
Modificando um Pouco o Nosso Exemplo............................................................................ 304
Um Pouco Mais Sobre o Objeto Connection ............................................................................... 306
Criando um Formulrio Para Pesquisa......................................................................................... 311
Criando a Pgina HTML com o Formulrio de Pesquisa...................................................... 312
Criando a Pgina ASP Para Pesquisar no Banco de Dados .................................................. 313
Concluso ..................................................................................................................................... 318
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I ................................. 321
Introduo .................................................................................................................................... 322
Estabelecendo Conexes sem a Utilizao de ODBC.................................................................. 323
A Propriedade ConnectionString................................................................................................. 324
Configurando Conexes com Bancos de Dados do Microsoft Access .......................... 324
Configurando Conexes com Bancos de Dados do Microsoft SQL Server ................... 326
Configurando Conexes com Bancos de Dados ORACLE............................................. 331
Alguns Detalhes Finais Sobre o Objeto Connection ................................................................... 333
O Mtodo Close ..................................................................................................................... 333
Pool de Conexes ............................................................................................................... 334
O Objeto RecordSet ...................................................................................................................... 335
Cursores .......................................................................................................................... 336
Localizao do Cursor .................................................................................................... 339
Lock de Registros............................................................................................................ 341
Propriedades do Objeto RecordSet ................................................................................ 343
Mtodos do Objeto RecordSet ........................................................................................ 345
Uma Pgina ASP Para Inserir Informaes no Banco de Dados ................................................. 347
Editando Registros em um Banco de Dados ................................................................................ 361
A Pgina ASP Para Selecionar o Produto a ser Alterado produto.asp .............................. 362
A Pgina que Localiza o Registro do Produto a ser Atualizado localiza.asp ........................... 365
A Pgina que Atualiza os Dados na Tabela Produtos do Banco de
Dados Nwind.mdb Atualiza.asp ........................................................................................ 370
Utilizando o Nosso Exemplo de Alterao de Registro........................................................ 372
Eliminando Registros de um Banco de Dados ............................................................................ 375
XII
Criando Sites Dinmicos com ASP 3.0
A Pgina ASP Para Excluir o Produto Selecionado Exclui.asp ......................................... 375
Utilizando o Nosso Exemplo de Excluso de Registro......................................................... 377
A Propriedade Filter do Objeto RecordSet .................................................................................. 380
Concluso ..................................................................................................................................... 385
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II ................................ 387
O Objeto Command ..................................................................................................................... 389
Um Breve Introduo ao Objeto Command ......................................................................... 389
Os Mtodos do Objeto Command......................................................................................... 393
As Propriedades do Objeto Command ................................................................................. 393
Consultas Parametrizadas no Microsoft Access ................................................................... 397
O Objeto Parameter ...................................................................................................................... 402
Utilizando o Objeto Command Para Passar Parmetros Para uma Consulta Parametrizada ...... 403
Utilizando o Nosso Exemplo ................................................................................................ 414
Um Desafio Para o Amigo Leitor ........................................................................................... 415
Um Pouco Mais Sobre Pesquisas em Banco de Dados ................................................................ 417
A Utilizao do Operador Like ............................................................................................. 418
A Utilizao de Mltiplos Critrios ...................................................................................... 423
O Operador And ............................................................................................................. 423
O Operador Or ................................................................................................................ 424
Alguns Exemplos de Utilizao de Mltiplos Critrios ....................................................... 424
Utilizando Funes de Agregao......................................................................................... 426
Alguns Exemplos de Utilizao de Funes de Agregao .................................................. 427
Um Formulrio Genrico Para Pesquisas ..................................................................................... 437
Utilizando o Nosso Formulrio de Pesquisa ......................................................................... 446
Concluso ..................................................................................................................................... 450
Captulo 8 Aplicativos Web e Componentes .......................................................................... 453
Introduo .................................................................................................................................... 454
O que uma Aplicao Web no IIS? ........................................................................................... 454
Uma Aplicao Cliente/Servidor Tradicional ...................................................................... 455
Aplicaes Web um Novo Paradigma ................................................................................ 456
Aplicaes Web no IIS .......................................................................................................... 457
O Arquivo Global.asa ................................................................................................................... 465
Um Aplicativo s Pode ter um Arquivo Global.asa ...................................................... 466
O Objeto Application ................................................................................................................... 468
Eventos do Objeto Application ............................................................................................. 469
Evento Application_OnStart .......................................................................................... 469
Evento Application_OnEnd ........................................................................................... 478
Colees do Objeto Application ........................................................................................... 478
A Coleo Contents ........................................................................................................ 479
A Coleo StaticObjects ................................................................................................. 483
Mtodos do Objeto Application............................................................................................ 483
O Objeto Session .......................................................................................................................... 486
Eventos do Objeto Session.................................................................................................... 487
O Evento Session_OnStart ............................................................................................. 488
Evento Session_OnEnd .................................................................................................. 496
Colees do Objeto Session .................................................................................................. 496
XIII
Sumrio
A Coleo Contents ........................................................................................................ 497
A Coleo StaticObjects ................................................................................................. 501
Mtodos do objeto Session ................................................................................................... 501
Propriedades do Objeto Session ........................................................................................... 503
Concluso ..................................................................................................................................... 506
Captulo 9 Segurana de Aplicaes Web com IIS e ASP ...................................................... 509
Autenticao de Usurios com o IIS 5.0 ..................................................................................... 512
O Acesso Annimo ...................................................................................................................... 512
Como Definir a Conta Para Acesso Annimo no IIS 5.0 ...................................................... 515
Verificando as Configuraes da Conta Para
Acesso Annimo no Windows 2000 Server ......................................................................... 519
Configurando Permisses NTFS em Pastas do Servidor Web .............................................. 525
Sistemas de Arquivos no Windows 2000 e Permisses NTFS............................................. 526
Definindo Permisses NTFS .......................................................................................... 529
Autenticao Bsica ..................................................................................................................... 539
Autenticao Integrada do Windows........................................................................................... 540
Autenticao Utilizando Certificados ......................................................................................... 541
Mapeamento do Certificado Cliente ..................................................................................... 541
Configurando o Tipo de Autenticao no IIS.............................................................................. 542
Mais Configuraes de Segurana do IIS .................................................................................... 546
Configurando Opes Gerais de Segurana ......................................................................... 546
Configurao de Segurana Para Aplicativos Web no IIS .................................................... 550
Definindo Restries de Acesso a Nvel de Endereo IP ............................................................ 552
Mecanismos de Segurana do Banco de Dados .......................................................................... 557
Concluso ..................................................................................................................................... 561
Captulo 10 Utilizando Componentes do IIS .......................................................................... 563
Introduo .................................................................................................................................... 564
O Objeto Server ............................................................................................................................ 564
Propriedade do Objeto Server ............................................................................................... 565
Mtodos do Objeto Server ..................................................................................................... 566
O Mtodo CreateObject .................................................................................................. 566
O Mtodo Execute(url) ................................................................................................ 568
Exemplo .............................................................................................................................. 569
O Mtodo GetLastError( ) ............................................................................................... 570
O Mtodo URLEncode(texto) ...................................................................................... 571
O Mtodo MapPath(url) .............................................................................................. 573
O Mtodo Transfer(url) ............................................................................................... 574
O Mtodo HTMLEncode(texto) ................................................................................... 575
Um Exemplo Prtico de Utilizao do Objeto Server ................................................................. 576
Utilizando Componentes do Servidor em Pginas ASP ............................................................. 586
O Componente Content Link ................................................................................................ 586
Criando um Objeto do Tipo Content Link ..................................................................... 588
Mtodos do Objeto Content Link ................................................................................... 588
Um Exemplo que Utiliza o Componente Content Link ................................................ 591
O Componente Ad Rotator .................................................................................................... 596
O Arquivo de Programao da Rotatria ....................................................................... 597
XIV
Criando Sites Dinmicos com ASP 3.0
URL ..................................................................................................................................... 598
Largura ................................................................................................................................ 598
Altura .................................................................................................................................. 598
Borda ................................................................................................................................... 599
URL_anncio ...................................................................................................................... 599
URL_home_page_anncio.................................................................................................. 599
Texto.................................................................................................................................... 599
Impresses .......................................................................................................................... 599
Exemplo .............................................................................................................................. 600
O Arquivo de Redirecionamento ................................................................................... 600
Exemplo .............................................................................................................................. 600
Propriedades do Objeto Ad Rotator ............................................................................... 601
Mtodo do Objeto Ad Rotator ........................................................................................ 602
O Componente Page Counter ................................................................................................ 605
Os Mtodos do Componente Page Counter ................................................................... 606
O Componente Browser Capabilities Capacidades do Navegador ................................... 609
Concluso ..................................................................................................................................... 615
Captulo 11 Os Objetos FileSystemObject, Drive, Folder e File............................................. 617
Introduo .................................................................................................................................... 618
O Objeto FileSystemObject .......................................................................................................... 618
Propriedade do Objeto FileSystemObject ............................................................................. 619
Mtodos do Objeto FileSystemObject .................................................................................. 620
Mtodos do Objeto FileSystemObject Para Trabalho com Drives................................. 620
Mtodos do Objeto FileSystemObject Para Trabalho com Pastas ................................. 621
Mtodos do Objeto FileSystemObject Para Trabalho com Arquivos ............................ 628
O Objeto Drive.............................................................................................................................. 634
Propriedades do Objeto Drive ............................................................................................... 634
O Objeto Folder ............................................................................................................................ 637
Propriedades do Objeto Folder .............................................................................................. 638
Mtodos do Objeto Folder ..................................................................................................... 642
O Objeto File ................................................................................................................................ 644
Propriedades do Objeto File .................................................................................................. 644
Mtodos do Objeto File ......................................................................................................... 647
Exemplo Prtico ........................................................................................................................... 649
Concluso ..................................................................................................................................... 652
Captulo 12 Tratamento de Erros, Transaes e Outros Assuntos......................................... 655
O Objeto ASPError ....................................................................................................................... 657
Propriedades do Objeto ASPError ........................................................................................ 657
Algumas Dicas Para Minimizar Erros .......................................................................................... 658
Erros de Sintaxe .................................................................................................................... 658
Erros de Semntica ou de Tempo de Execuo .................................................................... 659
Erros Lgicos ......................................................................................................................... 661
Algumas Dicas Para Reduzir a Ocorrncia de Erros ............................................................ 662
O Conceito de Transaes e a Utilizao de Transaes em Pginas ASP................................. 663
O Conceito de Transao ...................................................................................................... 664
XV
Sumrio
Colocando uma Pgina ASP no Contexto de uma Transao .............................................. 665
Estabelecendo um Script Transacional ................................................................................ 666
Restabelecendo ou Abortando um Script ............................................................................. 667
Gravando Eventos de Transao ........................................................................................... 667
Registrando um Componente no Gerenciador de Servios de Componente ...................... 669
Escopo de Objeto ................................................................................................................... 672
Colocando Transaes em Fila ............................................................................................. 672
Utilizando a Diretiva #include.................................................................................................... 673
As Diretivas @ ............................................................................................................................. 675
A Diretiva de Processamento @CODEPAGE ........................................................................ 676
A Diretiva de Processamento @ENABLESESSIONSTATE .................................................. 677
A Diretiva de Processamento @LANGUAGE ....................................................................... 678
A Diretiva de Processamento @LCID ................................................................................... 678
A Diretiva de Processamento @TRANSACTION................................................................. 679
Concluso ..................................................................................................................................... 680
Apndice Referncia Rpida da Linguagem VBScript ........................................................... 681
Declarando Variveis com VBScript ............................................................................................ 683
Operadores ................................................................................................................................... 684
Estruturas de Deciso e Laos de Controle em VBScript ............................................................ 685
Estrutura de Deciso If Then Else ........................................................................................ 685
Estrutura de deciso If Then ElseIf ....................................................................................... 686
O Lao For...Next ................................................................................................................... 686
O Lao For Each...Next .......................................................................................................... 686
A Estrutura Select Case...End Select .................................................................................... 686
A Estrutura Do While Condio...Loop ................................................................................ 687
Loop ....................................................................................................................................... 687
A Estrutura Do... Loop While Condio ............................................................................... 688
A Estrutura Do Until Condio...Loop ................................................................................. 689
A Estrutura Do... Loop Until Condio ................................................................................ 690
Comentrios em VBScript ........................................................................................................... 691
Funes no VBScript .................................................................................................................... 692
Funes Para Converso de Valores ............................................................................................. 692
ASC(String) .................................................................................................................... 692
Chr(nmero) ................................................................................................................... 692
CBool(expresso) ............................................................................................................ 692
CByte(expresso) ............................................................................................................ 693
CCur(expresso) ............................................................................................................. 693
CDate(data) ..................................................................................................................... 693
CDbl(data) ....................................................................................................................... 694
CInt(expresso) ............................................................................................................... 694
CLng(expresso) ............................................................................................................. 694
CSng(expresso) ............................................................................................................. 694
CStr(expresso) ............................................................................................................... 695
Fix(expresso) ................................................................................................................. 695
Hex(expresso) ............................................................................................................... 695
Int(expresso) ................................................................................................................. 695
XVI
Criando Sites Dinmicos com ASP 3.0
Oct(expresso) ................................................................................................................ 695
Round(expresso,numcasasdecimais) ........................................................................... 695
Sgn(expresso) ................................................................................................................ 696
Funes Para Trabalho com Datas ............................................................................................... 696
Date( ) ............................................................................................................................. 696
DateAdd(intervalo,numerodeintervalos,data) ............................................................... 696
DatePart(intervalo,data) ................................................................................................. 697
DateSerial(ano,ms,dia) ................................................................................................. 698
DateValue(String) ........................................................................................................... 698
Day(data) ........................................................................................................................ 698
Hour(tempo) ................................................................................................................... 698
Minute(tempo) ................................................................................................................ 698
Month(data) .................................................................................................................... 698
MonthName(data) .......................................................................................................... 699
Now( ) ............................................................................................................................. 699
Second(tempo) ............................................................................................................... 699
Time( )............................................................................................................................. 699
TimeSerial(hora,minuto,segundo) ................................................................................. 699
TimeValue(String) .......................................................................................................... 700
WeekDay(data) ................................................................................................................ 700
WeekDayName(nmero) ................................................................................................ 700
Year(data) ........................................................................................................................ 700
Funes Matemticas ................................................................................................................... 700
Atn(nmero) ................................................................................................................... 701
Cos(nmero) ................................................................................................................... 701
Exp(nmero) ................................................................................................................... 701
Log(nmero) ................................................................................................................... 701
Randomize( ) .................................................................................................................. 701
Rnd(nmero) .................................................................................................................. 701
Sin(nmero) ................................................................................................................... 702
Sqr(nmero) ................................................................................................................... 702
Tan(nmero) ................................................................................................................... 702
Funes Para Manipulao de Strings ......................................................................................... 702
FormatCurrency(expresso) ........................................................................................... 702
FormatDateTime(expresso,opo) ................................................................................ 702
FormatNumber(expresso,numdigitos) ......................................................................... 703
FormatPercent(expresso,numdigitos) ........................................................................... 703
InStr(String1,String2) ..................................................................................................... 703
LCase(string) ................................................................................................................... 704
Left(string,nmero) ........................................................................................................ 704
Len(string) ...................................................................................................................... 704
LTrim(string) ................................................................................................................... 704
Mid(string,start,nmero) ................................................................................................ 704
Replace(string,ocorrncia,substituio) ........................................................................ 705
Right(string,nmero) ...................................................................................................... 705
RTrim(string) .................................................................................................................. 705
Space(nmero) ............................................................................................................... 705
StrComp(String1,String2) .............................................................................................. 705
XVII
Sumrio
String(nmero,caractere) ............................................................................................... 706
StrReverse(string) ........................................................................................................... 706
Trim(string) ..................................................................................................................... 706
UCase(string) .................................................................................................................. 706
ndice Remissivo.......................................................................................................................... 707
1
Introduo Sites Dinmicos com ASP 3.0
Int r oduo
Sites Dinmicos
com ASP 3.0
Criando Sites Dinmicos com ASP 3.0
2
Neste livro vamos abordar diversos assuntos relacionados com a criao de sites dinmicos.
Desta forma, o leitor ter condies de aprofundar os seus conhecimentos em contedos de
grande importncia para a criao de aplicativos para a Web. Iremos apresentar, juntamente
com conceitos tericos, um grande nmero de exemplos e aplicaes prticas em detalhes,
para que o leitor tenha condies de entender com clareza os assuntos abordados.
O trabalho de criar sites e aplicaes para Intranet/Internet tornou-se bastante complexo. O
profissional da Web precisa conhecer um nmero cada vez maior de ferramentas e tecnologias.
A criao de sites, simplesmente atravs da utilizao de pginas HTML, j no capaz de
gerar os resultados necessrios. Hoje, um site na Internet ou na Intranet de uma empresa,
deve apresentar as caractersticas destacadas a seguir:
Gerao dinmica de contedo.
Conexo de pginas com banco de dados.
Personalizao do contedo, de acordo com as preferncias de cada usurio.
Segurana no acesso a reas restritas do site, somente para usurios autorizados e com
nvel de acesso adequado.
Criptografia dos dados transmitidos, ofererecendo garantia de autenticidade e integridade
das informaes, principalmente para sites de Comrcio Eletrnico, onde o usurio deve
digitar informaes importantes, tais como o nmero do carto de crdito.
Servios como envio de mensagens ou grupos de discusso, diretamente atravs do site.
Mecanismos de pesquisa rpidos e precisos.
Layout atraente e funcional, de tal forma que o internauta possa, rapidamente, localizar
o contedo desejado.
Bom contedo e atualizao constante.
Desenvolver um site, que contenha essas caractersticas, no uma tarefa simples. Exige o
uso de diversas tecnologias e ferramentas de apoio, alm, claro, de profissionais competentes
e adequadamente treinados.
Com a utilizao da tecnologia ASP 3.0 Active Server Pages podemos obter bons resultados
na criao de sites com este nvel de complexidade. Ao estudar os captulos deste livro, o
leitor aprender a utilizar essa tecnologia. O aprendizado de ASP simples, principalmente
para quem j conhece o Visual Basic ou o Visual Basic for Applications (linguagem de desenvol-
vimento para o Microsoft Office). Em vrias situaes, o cdigo bastante semelhante.
A tecnologia est disponvel atravs da utilizao do Internet Information Services 5.0, como
servidor Web, o qual pode ser instalado juntamente com o Windows 2000 Server. Podemos
notar uma mudana no nome do servidor Web da Microsoft. A verso anterior era denominada
Internet Information Server 4.0 IIS 4.0; e a nova, Internet Information Services 5.0 IIS 5.0.
3
Introduo Sites Dinmicos com ASP 3.0
Observe que o Server foi substitudo por Services. No tpico sobre as novidades do IIS 5.0,
irei explicar o que significa, na prtica, esta mudana.
Durante a instalao do Windows 2000 Server, podemos optar por instalar, ou no, o Internet
Information Services 5.0. Ao longo deste livro estarei utilizando a abreviatura IIS 5.0 (para
manter coerncia com o padro utilizado pela Microsoft no Resource Kit do Windows 2000
Server), ao fazer referncia ao Internet Information Services 5.0. Caso no tenhamos instalado
o IIS 5.0 na instalao do Windows 2000 Server, podemos adicion-lo quando for necessrio.
Para isso, utilizamos o cone Adicionar ou remover programas, no Painel de controle. No
prximo tpico desta introduo, veremos como instalar o IIS 5.0.
importante salientar que o IIS 5.0, somente est disponvel no Windows 2000 Server. Isso
significa que no possvel voc continuar utilizando o Windows NT Server 4.0 (com o qual
est disponvel o IIS 4, atravs da instalao do Option Pack 4.0) e apenas fazer o upgrade do
IIS 4.0 para o IIS 5.0. Tambm importante destacar que as novas caractersticas do ASP 3.0,
somente esto disponveis no IIS 5.0. Em outro tpico desta introduo estarei abordando
essas novas caractersticas.
Equipament o e Sof t war e Necessr io
Para acompanhar todos os exemplos propostos no livro, precisamos de um computador com
Windows 2000 Server instalado. Tambm faz-se necessrio que o IIS 5.0 esteja instalado e
corretamente configurado.
A configurao mnima necessria depende de uma srie de fatores.
Se o equipamento vai ser utilizado como um servidor Web na Internet, vrios so os aspectos
a serem considerados, tais como:
Aplicaes implementadas e recursos de hardware necessrios, como memria, disco
e processador.
Nmero estimado de acessos simultneos e dirios, sendo esta uma das estimativas
mais difceis de se obter, uma vez que o sucesso de um site pode ser determinado por
um nmero muito grande de fatores, nem todos de fcil mensurao.
Grau de segurana necessrio desejvel. Neste caso, entram questes como criptografia,
uso de certificados digitais, criao de VPN Virtual Private Networks (Redes Privadas
Virtuais) , procedimentos de recuperao de falha, plano de contingncia, etc.
Percentual de folga desejado para recursos tais como: memria, processador, disco. Ao
projetar um site, bastante comum utilizar hardware que atenda as necessidades atuais
com uma certa folga, para que seja possvel suportar crescimentos maiores do que os
Criando Sites Dinmicos com ASP 3.0
4
estimados. Alguns sites famosos j enfrentaram problemas de crescimento alm do
esperado. Quando isso acontece, mais recursos de hardware precisam ser adicionados
com o site em funcionamento. a bem conhecida situao de trocar o pneu com o carro
andando. Eu diria que hoje, na velocidade em que as mudanas acontecem, seria um
pouco pior, algo como trocar a turbina com o avio em pleno vo.
Para maiores informaes sobre como planejar a capacidade de hardware para um servidor
Web com o IIS 5.0, consulte o captulo Capacity Planning do livro Internet Information
Services Resource Guide, parte integrante do Windows 2000 Server Resource Kit.
Como equipamento para ser utilizado em casa, ou em um laboratrio de teste na sua empresa,
aconselho a seguinte configurao:
Processador Pentium 200 ou superior.
64 MB de RAM, sendo 128 MB, altamente recomendvel.
2 GB de disco rgido.
Com menos de 64 MB de RAM, o Windows 2000 Server no pode ser instalado. Sendo detectada
memria inferior a 64 MB durante o processo de instalao, o mesmo ser suspenso.
Alm do Windows 2000 Server e do IIS 5.0, tambm precisaremos ter os seguintes programas
e servios instalados, para que possamos acompanhar os exemplos deste livro:
Internet Explorer 4.x (ou superior) ou Netscape Navigator 4.x.
Microsoft Transaction Services (vem junto com o Windows 2000 Server).
Microsoft Index Services (vem junto com o Windows 2000 Server).
Em cada um dos captulos, estaremos apresentando vrios exemplos prticos. Atravs destes
exemplos, voc poder entender melhor a aplicao dos conceitos tericos apresentados. Em
muitas situaes, a melhor maneira de entender um determinado assunto, atravs da
utilizao do mesmo para resoluo de um problema prtico do dia-a-dia. Muitos dos exemplos
apresentados, podem ser facilmente adaptados para uso em aplicaes que voc esteja
desenvolvendo. Situaes como acesso a banco de dados atravs de pginas Web, indexao
e pesquisa de contedos, implementao de mecanismos de segurana, etc., so comuns a
maioria das aplicaes Web atuais. Agora vamos aprender a instalar o IIS 5.0.
Inst alando e Test ando o IIS 5 . 0
Caso voc no tenha instalado o IIS 5.0, quando da instalao do Windows 2000 Server,
possvel fazer a instalao quando for necessrio. Agora aprenderemos, passo a passo, a instalar
o IIS 5.0. Nunca demais lembrar que sem o IIS 5.0, no ser possvel testar os exemplos
prticos, propostos neste livro.
5
Introduo Sites Dinmicos com ASP 3.0
Para instalar o IIS 5.0:
1. Faa o logon no Windows 2000 Server.
2. Abra o Painel de controle (Iniciar/Configuraes/Painel de controle).
3. Abra a opo Adicionar ou remover programas.
4. Surgir a janela indicada na Figura 1.1.
Figura I.1 : Janela Adicionar ou r emover pr ogr amas.
5. No lado esquerdo da janela, d um clique na opo Adicionar ou remover componentes
do Windows.
6. Surgir a janela indicada na Figura 1.2.
Figura I.2: Janela par a alt er ar a inst alao do Windows.
Criando Sites Dinmicos com ASP 3.0
6
7. D um clique no boto Componentes.
8. Ser exibida, por breves instantes, uma mensagem Aguarde.... Depois surge a janela
Assistente de componentes do Windows, conforme indicado na Figura 1.3.
Figura I.3: Janela Assist ent e de component es do Windows.
9. Utilizando o Assistente de componentes do Windows podemos adicionar novos
servios, ou remover servios que no sejam mais necessrios.
10. V descendo com a barra de rolagem vertical, at localizar o item Internet Information
Services (IIS), conforme indicado na Figura 1.4.
Se esta opo estiver marcada, o IIS 5.0 j est instalado. Neste caso clique no boto Cancelar.
Depois s fechar a janela Adicionar ou remover programas e o Painel de controle.
Se esta opo estiver desmarcada, significa que o IIS 5.0 ainda no foi instalado. Marque esta
opo para instalar este servio.
Observe que ao marcar a opo, o boto Detalhes habilitado. O IIS 5.0 formado por uma
srie de componentes e funcionalidades. Existe um servidor de pginas (servidor HTTP), um
servidor de FTP, um servidor de notcias (NNTP), etc.
Ao instalarmos o IIS 5.0, podemos escolher um ou mais dos seus componentes, dependendo
das necessidades do nosso site. No necessrios que todos os componentes do IIS 5.0 sejam
instalados. Por exemplo, se o servio de cpia de arquivos no for necessrio, no temos
porque instalar o servio de FTP.
7
Introduo Sites Dinmicos com ASP 3.0
Figura I.4: O ser vio Int er net Infor mat ion Ser vices ( IIS) .
DICA
Instale somente os servios realmente necessrios. No uma boa idia instalar todos os servios
disponveis, j que somente alguns sero utilizados. Quanto mais servios instalados, maiores
as possibilidades de ataque e quebra da segurana do site, por parte de um hacker.
11. Clique no boto Detalhes.
12. Na lista de opes disponveis, certifique-se de que somente as seguintes esto marcadas:
Arquivos comuns.
Documentao.
Extenses de servidor do FrontPage 2000.
Gerenciador de Internet Services (HTML).
Servidor File Transfer Protocol (FTP).
Servidor World Wide Web.
Snap-In do Internet Information Services.
13. Observe que, aps ter selecionado os componentes a serem instalados, o Windows
2000 Server, exibe o espao em disco necessrio, conforme indicado pela Figura 1.5.
Criando Sites Dinmicos com ASP 3.0
8
Figura I.5: Indicao do espao necessr io no disco r gido.
14. D um clique em OK. Voc estar de volta ao Assistente de componentes do Windows.
15. D um clique no boto Avanar para ir para a prxima etapa do assistente.
16. O Windows 2000 Server exibe uma janela indicando o progresso da Instalao, como
na Figura 1.6.
Figura I.6: Pr ogr esso da inst alao do IIS 5 . 0 .
9
Introduo Sites Dinmicos com ASP 3.0
17. Caso o Windows 2000 Server no encontre os arquivos necessrios instalao no
disco rgido, voc ser solicitado a inserir o CD de instalao do Windows, conforme
indicado pela Figura 1.7.
Figura I.7: M ensagem solicit ando o CD de inst alao do Windows.
18. Insira o CD e d um clique em OK. O Windows 2000 Server inicia o processo de cpia
dos arquivos.
19. Aps finalizada a cpia dos arquivos, o Assistente emite uma mensagem dizendo que
o processo foi concludo com sucesso.
20. D um clique no boto Concluir para encerrar o Assistente.
21. Voc estar de volta janela Adicionar ou remover programas. D um clique no boto
Fechar para sair desta janela.
22. Voc estar de volta ao Painel de controle. Feche o Painel de controle.
23. Agora o IIS 5.0 est instalado e pronto para funcionar.
IMPORTANTE
Caso voc no tenha acesso a um computador com o Windows 2000 Server no tem problema.
Voc pode acompanhar a maioria dos exemplos deste livro, utilizando o Windows 2000 Profes-
sional. A maneira de instalar o IIS 5.0 exatamente a mesma, quer seja no Windows 2000
Server, ou no Windows 2000 Professional. Para os exemplos mais simples, at mesmo o Per-
sonal Web Server, que acompanha o Windows 98, pode ser utilizado. Porm no Personal Web
Server, no existem os conceitos de Transao e segurana disponveis no IIS 5.0.
Agora que j temos o IIS 5.0 instalado, vamos testar se o mesmo est funcionando corretamente.
Para testar se o IIS 5.0 foi instalado com sucesso:
1. Abra o Internet Explorer.
2. Digite o seguinte endereo: http://localhost.
Criando Sites Dinmicos com ASP 3.0
1 0
Deve surgir uma janela conforme indicado na Figura 1.8.
Figura I.8: A pgina padr o do IIS 5 . 0 , logo aps a inst alao.
Esta a pgina inicial padro do IIS 5.0 logo aps a instalao. Isto comprova que o IIS 5.0 foi
instalado com sucesso.
3. Feche o Internet Explorer.
No prximo tpico, irei apresentar as melhorias do IIS 5.0, em relao a verso anterior, IIS
4.0, dentre as quais destaca-se a verso 3.0 do ASP Active Server Pages 3.0, com a qual
estaremos trabalhando neste livro.
Novidades e M elhor ias do IIS 5 . 0
O IIS 5.0 a nova verso do Servidor Web da Microsoft, o qual disponibilizado como um
Servio (conforme indicado pelo nome Services e no mais Server) do Windows 2000 Server.
A verso anterior IIS 4.0 era instalada como parte do Option Pack 4.0, para o Windows NT
Server 4.0. No Windows 2000 Server, o IIS 5.0 faz parte do prprio Sistema Operacional.
Neste tpico, apresentaremos as principais novidades desta nova verso. Para simplificar o
entendimento, classificarei as novidades em duas categorias, conforme descrito abaixo:
1 1
Introduo Sites Dinmicos com ASP 3.0
Administrao e servios (FTP e HTTP).
Desenvolvimento de aplicaes Internet/Intranet.
Administ r ao e Ser vios
Os novos recursos do IIS 5.0 aumentaram a sua estabilidade e segurana. Novos assistentes
foram introduzidos para facilitar as tarefas mais comuns de administrao e segurana. Eis
algumas das novidades:
Reinicializao de download: Agora o servio de FTP capaz de reinicializar um down-
load que tenha sido interrompido, a partir do ponto em que a interrupo ocorreu, isso
evita que tenhamos que comear do zero. Caracterstica de grande utilidade, principal-
mente para arquivos grandes, uma vez que a velocidade da Internet ainda no
nenhuma maravilha.
Compactao HTTP: Toda a informao, enviada via HTTP, pode ser compactada. Para
arquivos de texto (arquivos com cdigo HTML, por exemplo), o ganho considervel
na maioria dos casos, acima de 70 %. Podemos utilizar compactao tambm com
arquivos de imagens (.jpg, .gif), ou qualquer outro tipo de arquivo transmitido via
HTTP. O browser deve ser capaz de descompactar a informao (Internet Explorer e o
Netscape Navigator em verso 4.x, dentre outros).
Assistentes de segurana: Novos assistentes facilitam a execuo de tarefas relacionadas
com a segurana. Por exemplo, o Assistente de Permisses (Permissions Wizard) facilita
a tarefa de atribuir permisses de acesso de arquivo. Esta era uma tarefa complicada
em verses anteriores, uma vez que a permisso efetiva, depende da combinao entre
as permisses estabelecidas no Sistema Operacional (permisses NTFS) e as do IIS.
Temos tambm um assistente para gerenciar Certificados.
Contabilidade de processos (Process Accounting): Modificaes introduzidas no ker-
nel do Windows 2000 Server, permitem um controle bastante refinado nos processos
que esto rodando. Com isso, pode ser determinado o quanto de processador cada site
virtual est consumindo (lembrando que o IIS admite diversos sites em um nico
servidor). Com isso possvel determinar se um dos sites est consumindo, despropor-
cionalmente, tempo do processador. Por exemplo, pode ser que uma pgina ASP mal
implementada, esteja elevando a carga no processador. Esta caracterstica tambm pode
ser utilizada por provedores de contedo, os quais hospedam sites de outras empresas,
como um parmetro para a cobrana do servio de hospedagem do site.
Melhor administrao atravs do browser: Administrar o IIS 5.0, remotamente, atravs
do browser ficou bem mais fcil. Alm disso, a maioria das tarefas podem ser executadas
atravs dele, o que no era possvel em verses anteriores. O administrador tambm
pode criar Contas Administrativas (conhecidas como Operadores), com permisses
Criando Sites Dinmicos com ASP 3.0
1 2
limitadas a determinadas tarefas, por exemplo, criar diretrios virtuais. Com isso
possvel distribuir a administrao do IIS entre diversos Administradores.
Web Distributed Authoring and Versioning (WebDAV): Permite que o autor de pginas, possa
remotamente editar, mover ou eliminar arquivos. Tambm possvel editar as propriedades
de arquivos e diretrios, remotamente, atravs de uma coneco HTTP. Com WebDAV, o
autor est utilizando o HTTP como um protocolo de compartilhamento de arquivo.
Autenticao Digest: Aumenta a segurana e a confiabilidade da autenticao dos usurios.
Com a Autenticao Digest, feito um hash das informaes de senha antes da transmisso.
Informaes ligadas sesso e a hora do sistema so adicionadas ao hash. Com isso, mesmo
que a senha seja interceptada, no poder ser decifrada. Os demais tipos de autenticao
continuam existindo: HTTP Basic, Windows NT Challenge/Response e NTLM authentica-
tion (conhecida como integrated Windows authentication).
Desenvolviment o de Aplicaes Int er net /Int r anet
Muitas melhorias foram feitas nesta rea. Vamos descrever, resumidamente, algumas das novidades.
Proteo das aplicaes: Por padro, todas as aplicaes rodam em um processo comum,
o qual separado do processo do IIS 5.0. Porm possvel rodar aplicaes de maior
importncia (ou que necessitem de maior desempenho) em um processo separado.
Principais novidades para pginas ASP Active Server Pages:
Novos mtodos para o controle de fluxo da aplicao (Server.Transfer,
Server.Execute, etc.).
Melhorias no tratamento de erros. Teremos um captulo deste livro dedicado ao
tratamento de erros em pginas ASP.
Scriptless ASP: Mesmo pginas que contenham somente cdigo HTML podem ter
a extenso .ASP. Com isso pode-se criar toda a estrutura do site utilizando pginas
com a extenso .ASP e adicionar os scripts no momento oportuno.
Integrao com o XML Extensible Markup Language. Ainda no ouviu falar de XML?
O caso srio.
Novas maneiras para detectar as capacidades do browser do cliente.
Melhorias de performance: Capacidade de self-tunning das pginas ASP.
So muitas as novidades do IIS 5.0 e uma das melhores fontes para conhec-las o livro
Internet Information Services Resource Guide (em Ingls), o qual, conforme descrito
anteriormente, faz parte do Windows 2000 Server Resource Kit.
1 3
Introduo Sites Dinmicos com ASP 3.0
Hor a de Comear
Bem, j estamos com o IIS instalado e funcionando, conhecemos as novidades desta verso e
estamos ansiosos para comear a trabalhar com pginas ASP, em sua verso 3.0. Pois
exatamente o que estaremos fazendo deste ponto em diante. Voc aprender a utilizar os
principais recursos do ASP 3.0, podendo criar pginas e aplicaes para Web, com diversos
recursos e funcionalidades.
Abaixo apresento uma pequena descrio do contedo de cada captulo deste livro. Caso
voc esteja iniciando os estudos sobre ASP, aconselho que leia os captulos na seqncia
apresentada. Caso j trabalhe com ASP, sinta-se a vontade para ler os captulos na ordem que
julgar mais adequada. Cada captulo apresenta exemplos completos, os quais ilustram os
conceitos tericos apresentados.
Em todos os exemplos, estou utilizando a linguagem VBScript, devido a sua funcionalidade
e facilidade de aprendizado. Caso o leitor queira utilizar Java Script (agora formalmente ECMA
Script), sinta-se vontade.
Viso Ger al dos Capt ulos do Livr o
Captulo 1: Apresentaremos uma viso geral sobre a criao de sites dinmicos, bem
como do desenvolvimento de aplicaes para Internet/Intranet (tambm conhecidas
como aplicaes para a Web). Veremos o que ASP, bem como as tecnologias utilizadas
na criao de aplicaes Web.
Captulo 2: Como em nossos exemplos estaremos utilizando a linguagem VBScript.
Neste captulo sero apresentados os conceitos bsicos desta linguagem, juntamente
com exemplos prticos de utilizao dos conceitos apresentados.
Captulo 3: Apresentaremos aspectos adicionais da linguagem VBScript, aprendendo
a utilizar funes, comandos e outros. Tambm aprenderemos sobre o conceito de
eventos em pginas Web; alm de aprender a criar cdigo a ser executado em resposta
a determinados eventos de uma pgina, como por exemplo o clique em um determinado
boto de comando.
Captulo 4: Neste captulo comearemos a estudar os objetos fornecidos pelo ASP 3.0.
Veremos os diversos mtodos e propriedades de cada objeto, bem como a relao entre
eles. Utilizaremos alguns exemplos prticos para facilitar o entendimento dos conceitos
apresentados.
Captulo 5: Neste captulo aprenderemos a conectar pginas ASP com bancos de dados.
Veremos como criar pesquisas personalizadas, utilizando como critrio de pesquisa,
valores fornecidos pelo cliente, atravs de um formulrio. Trataremos de diversos
mtodos de acesso a bases de dados, desde a utilizao de meios tradicionais, como
Criando Sites Dinmicos com ASP 3.0
1 4
drivers ODBC, at mtodos mais atuais, como a utilizao de ADO (ActiveX Data Ob-
jects) e OLE-DB Providers.
Captulo 6: Neste captulo trataremos de aspectos avanados de conexo de pginas ASP
com bancos de dados. Veremos como implementar pesquisas avanadas, efetuar
atualizaes e alteraes em bancos de dados. Analisaremos algumas situaes usuais do
dia-a-dia. Tambm sero abordados aspectos ligados segurana no acesso s informaes.
Captulo 7: Abordaremos a conexo de pginas ASP com banco de dados. Vamos realizar
um estudo completo do objeto Command e aprender a utiliz-lo para enviar parmetros
para consultas Parametrizadas do Microsoft Access.
Captulo 8: Veremos os conceitos de sesso e estado da conexo. Ser apresentado o
conceito de aplicao Web. Aprenderemos, em detalhes, a utilizar os objetos Applica-
tion e Session. Tambm aprenderemos sobre a funo e como utilizar o arquivo global.asa.
Captulo 9: Trataremos de aspectos de segurana envolvendo pginas ASP.
Captulo 10: Estudaremos diversos componentes que j vem junto com o IIS e fornecem
funcionalidades adicionais, bastante teis na criao de aplicaes Web.
Captulo 11: Neste captulo faremos um estudo completo sobre um dos objetos mais
complexos do ASP: FileSystemObject. Estudaremos todos os seus mtodos, bem como
os objetos derivados: Drive, Folder e File.
Captulo 12: Neste captulo apresentaremos o objeto ASP Error. Tambm aprenderemos
sobre o conceito de Transaes, alm de aprendermos a utilizar a diretiva #include e
as diretivas @.
Apndice A: Teremos uma listagem dos comandos e funes mais utilizados na
linguagem VBScript, que poder ser usada como uma referncia.
Ent o, M os obr a
Bem, feitas as devidas apresentaes, hora de comearmos nossa jornada, rumo ao
aprendizado de ASP. Cabe ressaltar a grande aceitao que vem tendo a tecnologia de Active
Server Pages da Microsoft. Basta observar o grande nmero de sites na Internet que utilizam
esta tecnologia. Tambm grande o nmero de empresas que desenvolvem aplicativos para
sua Intranet, utilizando-se da tecnologia ASP.
Sem a menor sombra de dvidas, a facilidade no aprendizado, aliada aos recursos oferecidos,
que tornaram a tecnologia de pginas ASP largamente difundida e utilizada. Quem j
programa em Visual Basic, ou Visual Basic for Applications, ficar absolutamente vontade
para aprender a tecnologia ASP.
Ento, mos obra, vamos aprender ASP 3.0.
1 5
Captulo 1 Uma Introduo Tecnologia ASP
Capt ul o 1
Uma Introduo
Tecnologia ASP
Criando Sites Dinmicos com ASP 3.0
1 6
A Internet faz parte da vida de um nmero cada vez maior de pessoas. Fazer compras, sem
sair de casa; receber, diretamente no seu computador, as ltimas notcias; comprar e vender
aes; procurar emprego pela rede. Todos so exemplos de facilidades oferecidas pelo uso da
Internet. Talvez seja mais simples enunciar o que no possvel de se fazer pela rede, do que
listar todas suas possibilidades. Mas nem sempre foi assim. Para chegar ao nvel que nos
encontramos hoje, com a disponibilizao dos mais variados servios via Internet, muita
evoluo ocorreu. Desde os tempos de contedo meramente informativo, at a possibilidade
de escutar rdio e fazer compras pela rede, muitas tecnologias novas surgiram. E o ritmo de
evoluo no pra, pelo contrrio, parece acelerar cada vez mais.
Neste captulo veremos um pouco sobre esta evoluo da Internet. Passaremos pelas diversas
fases, desde a criao de sites com contedo esttico, at os aplicativos de n-camadas atuais.
Tambm veremos como a tecnologia ASP, contribui para a criao de sites dinmicos. Com
isso voc ver em que situaes indicada a utilizao de pginas ASP.
Er a uma Vez uma Int er net com Cont edo Est t ico
Neste tpico veremos um pouco sobre a histria de Internet e seus conceitos bsicos. Aprenderemos
sobre os diversos elementos envolvidos quando um usurio acessa contedo da Internet. Tambm
veremos as limitaes e problemas dos sites pioneiros que criavam contedo esttico.
Um Comeo Quase sem Quer er
Poderamos dizer que a origem da Internet foi casual e despretensiosa. Inicialmente, foi criada
uma rede conhecida como ARPANET, utilizada pelo Departamento de Defesa norte-americano,
alguns fornecedores e pesquisadores ligados a este departamento. Como a ARPANET mostrou-
se de grande utilidade, facilitando a troca de informaes, acabou expandindo-se de uma
maneira rpida e inesperada. Neste ponto, a idia de uma rede de computadores para a troca
de informaes estava lanada.
Mais tarde, foi criada uma rede baseada nas mesmas tecnologias da ARPANET, porm com uma
abrangncia maior (tanto geogrfica, quanto de objetivos). A idia era trazer os benefcios
demonstrados pela ARPANET, para um nmero maior de pessoas e empresas. Eis que nascia a
Internet. No final da dcada de 80, a Internet j era bastante conhecida nos meios acadmicos do
mundo inteiro. Nesta poca, porm, ainda tnhamos a Internet sem a interface grfica. Normalmente
a troca de informaes era feita por FTP, alguns aplicativos baseados em telnet, ou o popular gopher,
que tornou-se bastante conhecido nos primeiros anos da dcada de 90. O gopher, basicamente, era
um sistema baseado em opes de menu, para divulgao e pesquisa de informaes.
At 1991 era proibido o trfego de qualquer informao comercial pela Internet. Esta proibio
era mantida pela National Science Fundation, entidade que financiou grande parte do
desenvolvimento da Internet nos EUA, at este momento. Com a liberao, as empresas
1 7
Captulo 1 Uma Introduo Tecnologia ASP
passaram a fazer uso da Internet para fins comerciais. Desde ento a rede expandiu-se
enormemente, atingindo, hoje, milhes de pessoas em todo o mundo.
A popularizao definitiva da rede veio com a criao de uma interface grfica. Com a criao
da linguagem HTML, servidores HTTP, e programas para acessar as pginas HTML
armazenadas nos servidores (tambm conhecidos como browser ou navegadores), a Internet
tornou-se mais popular do que nunca. Este foi o momento do surgimento da WWW World
Wide Web. Talvez a melhor traduo para World Wide Web seja: Teia de Alcance Mundial.
Esta a idia que temos de Internet. Uma rede (teia) que conecta computadores do mundo
inteiro (alcance mundial), proporcionando a troca de informaes e uma infinidade de servios
e facilidades para as empresas e para o cidado comum.
Com certeza, os criadores da ARPANET, e depois da Internet, no imaginavam uma expanso
e popularizao to rpida da rede. Hoje, vemos anncios de sites na televiso, durante o
Telejornal e na transmisso de partidas de futebol. A maioria dos jornais possui um caderno
de informtica, quase totalmente dedicado a assuntos relacionados com a Internet. Vemos
reportagens sobre a rede em todas as revistas, e no somente nas especializadas em Informtica,
que agora dedicam quase a totalidade de suas matrias a assuntos da Internet. Enfim, a Internet
j faz parte do nosso dia-a-dia; veio para ficar e facilitar a nossa vida.
Agora vamos conhecer um pouco mais sobre a Internet e os diversos elementos que a compem.
Uma Viso Ger al da Int er net e de Seus Element os
Encontrar uma definio precisa e unnime para a Internet uma tarefa complexa. Vamos
ver os elementos que a compe, sem nos preocuparmos com definies formais. Por exemplo,
o que preciso para que o usurio domstico possa acessar a Internet; onde fica e por onde
circula a informao que est sendo acessada.
Figura 1 .1 : Uma viso ger al da Int er net , com cont edo est t ico.
Usur io
Usur io domst ico conect ado
Int er net at r avs da linha t elefnica.
Internet
Ser vidor Web
Pginas HTM L est t icas
Criando Sites Dinmicos com ASP 3.0
1 8
Antes de continuar com as explicaes, considere o diagrama indicado na Figura 1.1. Nesta
figura, temos representados os elementos mais comuns da Internet, conforme descrito a seguir.
Usurio: Representamos um usurio residencial. Normalmente este tipo de usurio faz
a conexo atravs da linha telefnica comum. Para isso preciso a utilizao de um
provedor de acesso, que fornece a conexo com a Internet. O usurio utiliza um programa
conhecido como navegador (browser), para acessar o contedo da Internet. Os dois
navegadores mais conhecidos so o Internet Explorer da Microsoft, e o Netscape Naviga-
tor da Netscape. Quando o usurio acessa um determinado contedo, dizemos que ele
est acessando um site (tambm encontramos o uso da palavra pgina, ao invs de
site). Por exemplo, quando o usurio acessa o endereo http://www.microsoft.com/brasil,
dizemos que ele est acessando a pgina, ou o site, da Microsoft Brasil. Quando o usurio
acessa o endereo http://wwww.microsoft.com/vbasic, dizemos que o usurio est
acessando a pgina do Visual Basic, no site da Microsoft. Durante este livro, estarei
utilizando a palavra pgina, significando que o usurio est acessando um determinado
contedo na Internet, ou na Intranet da empresa.
Internet: Pelo fato de ser formada por um grande nmero de equipamentos servidores,
hubs, switch, linhas de comunicao, satlites, etc. , representamos a Internet como
uma nuvem. Esta a representao que voc encontrar na maioria dos livros.
O servidor Web: Neste caso o servidor que contm a informao solicitada pelo usurio.
Por exemplo, ao digitar www.axcel.com.br, no campo endereo do navegador, o usurio
est solicitando que seja carregado o contedo da pgina inicial do site da Editora
Axcel Books. Observe que o servidor tambm est conectado Internet, isto , faz
parte da Internet. As pginas armazenadas no servidor so desenvolvidas utilizando-
se a linguagem HTML Hypertext Markup Language. Voc pode encontrar muita
informao sobre HTML na prpria Internet. O rgo responsvel pela padronizao
da linguagem HTML o w3. No site www.w3.org, voc pode encontrar um grande
volume de informaes sobre HTML.
Na Figura 1.1, representamos a primeira gerao de contedo da Internet. Conforme indicado
pela seta maior, a informao trafegava, basicamente, em um nico sentido. O usurio solicita
um determinado contedo, e o mesmo entregue e exibido no seu navegador. Observe que o
usurio no tem a possibilidade de enviar informaes para o servidor. Alm disso, nesta
primeira fase o contedo das pginas esttico.
Uma vez criada a pgina (atravs da utilizao do HTML), a mesma no modificada. Cada
vez que o usurio se conectar pgina, ver o mesmo contedo. A nica maneira de alterar o
contedo, alterando o cdigo HTML. Com isso, da prxima vez que o usurio se conectar
pgina, ver a nova verso da mesma. Porm esta metodologia de modificao de pginas
trabalhosa e pouco produtiva. Imagine que voc esteja publicando um catlogo de produtos,
com informaes diversas sobre vrios produtos, tais como: cdigo do produto, descrio e
1 9
Captulo 1 Uma Introduo Tecnologia ASP
preo. Uma das maneiras de criar este catlogo atravs da utilizao do cdigo HTML, para
criar na pgina uma tabela com informaes sobre os diversos produtos. Porm cada vez que
houver uma modificao em um dos produtos, voc ter que editar a pgina e salvar a nova
verso da mesma. Convenhamos que um processo bastante trabalhoso.
Embora trabalhoso, era assim que funcionavam os primeiros sites, no incio da era WWW. O
contedo era esttico, ou seja, alteraes nas pginas, implicavam em alteraes, diretamente
no cdigo HTML das mesmas. Imagine o trabalho para a manuteno de grandes sites, com
diversas reas de informaes, onde o nmero de pginas pode facilmente chegar na casa dos
milhares. Com isso a evoluo para a criao de contedo mais dinmico, foi um processo
natural e necessrio.
Cont edo Dinmico na Int er net
Com o crescimento da Internet e a necessidade de constantes alteraes no contedo das
pginas, surge uma segunda gerao de sites na Internet, capazes de entregar contedo mais
atualizado, alm de permitir que o usurio interagisse com as pginas Web, tambm enviando
informaes e no apenas recebendo. Nesta fase surge a possibilidade de ligao das pginas
HTML com o contedo de bancos de dados. Observe o diagrama indicado na Figura 1.2.
Figura 1 .2: Conect ando pginas HTM L com bancos de dados.
Pelo diagrama, podemos ver que o usurio tem possibilidade de enviar informaes para a Internet,
e no apenas receber. Isto possibilitou o desenvolvimento de uma srie de servios, impossveis de
serem desenvolvidos apenas com a utilizao de pginas criadas com HTML.
Usur io
Usur io domst ico
conect ado a Int er net at r avs
da linha t elefnica.
Internet
Agor a o usur io pode enviar e
r eceber infor maes.
A conexo de pginas HTM L com
bancos de dados, per mit e a cr iao
de pginas mais dinmicas e
int er at ivas.
Ser vidor de Banco de Dados
Ex. : M icr osof t SQL Ser ver.
Ser vidor Web
Pginas HTM L dinmicas
Criando Sites Dinmicos com ASP 3.0
2 0
Para enviar informaes, o usurio preenche os campos de um formulrio (o qual criado
com a utilizao de HTML) e, ao clicar em um boto Enviar, os dados so enviados para o site
da Web. Ao chegar no servidor Web, estes dados precisam ser recebidos por um programa
capaz de entender o formato dos dados e armazen-los em um banco de dados.
Os primeiros programas, capazes de realizar esta tarefa, seguiam a especificao conhecida
como CGI Common Gateway Interface. Muitas aplicaes Web foram desenvolvidas
utilizando-se a especificao CGI, e vrias ainda continuam sendo utilizadas. A utilizao de
scripts, desenvolvidos na linguagem Perl, um exemplo de utilizao de CGI. O script recebe
os dados enviados pelo formulrio, os decodifica e armazena o resultado em um banco de
dados. Embora bastante funcional, a utilizao de CGI comeou a apresentar alguns problemas,
e novas alternativas foram desenvolvidas. Est fora do escopo deste livro discutir os problemas
da utilizao de CGI.
Dentre as vrias alternativas que surgiram para a gerao de contedo dinmico, podemos
citar a tecnologia de Active Server Pages, a qual faz parte do servidor Web IIS (Internet
Information Services), da Microsoft. Podemos criar uma pgina ASP, capaz de receber os
dados enviados por um formulrio e armazenar estes dados em um banco de dados, por
exemplo o Microsoft Access ou o Microsoft SQL Server. Aprenderemos a criar este tipo de
pgina ASP, no Captulo 4. Agora veremos apenas alguns exemplos simples da utilizao de
ASP, sem conexo com bancos de dados.
Com a conexo de pginas com bancos de dados, uma srie de possibilidades foram abertas,
como por exemplo:
Criao de pginas para pesquisa em banco de dados.
Cadastro de usurios que acessam o site, bem como a entrega de contedo
personalizado, de acordo com as preferncias do usurio. Por exemplo, ao entrar no
site, o usurio informa um nome e senha, com os quais foi previamente cadastrado.
Com isso aberta uma pgina com opes e contedo personalizados, de acordo com
preferncias especificadas pelo usurio.
Desenvolvimento de aplicaes residentes em servidores Web e acessveis atravs
do navegador. Devemos observar que estas aplicaes ainda eram limitadas e no
possuam todas as funcionalidades das aplicaes convencionais, desenvolvidas para
o ambiente Windows.
Apesar das suas limitaes, um novo panorama desenhava-se na Internet com a possibilidade
da criao de sites mais dinmicos, atravs da conexo com bancos de dados. Apenas para
exemplificar o funcionamento de uma pesquisa em banco de dados, atravs da Internet,
observe a Figura 1.3.
2 1
Captulo 1 Uma Introduo Tecnologia ASP
Figura 1 .3: Pesquisa em um banco de dados, at r avs da Int er net .
Vamos analisar os passos executados, desde o momento que o usurio preenche o critrio de
pesquisa, at o momento em que o resultado da consulta retornado:
O usurio acessa a pgina onde temos um formulrio para a digitao de um ou mais
critrios de pesquisa. Por exemplo, pode ser uma consulta a uma base dos CEPs de
todo o Brasil. O usurio poderia digitar o nome da Cidade, selecionar um Estado e
digitar o nome, ou parte do nome, da Rua, conforme indicado pela Figura 1.4.
Aps preencher o(s) critrio(s) de pesquisa, o usurio clica em um boto Enviar ou
Pesquisar. Os dados digitados no formulrio so enviados para o servidor.
Um script CGI, ou uma pgina ASP, no servidor, recebe os dados enviados pelo usurio.
Com estes dados, montado um comando (normalmente uma String SQL Structured
Query Language), o qual vai efetuar a consulta no banco de dados. Aps montado o
comando, o mesmo enviado para o servidor de Banco de Dados (que pode ser uma
mquina separada, ou pode estar instalado no prprio servidor Web).
O servidor de Banco de Dados recebe o comando de pesquisa, localiza um ou mais
registros que atendam o(s) critrio(s) de pesquisa e retorna o resultado para o script
CGI, ou para a pgina ASP.
Com o resultado retornado pelo servidor de Banco de Dados, o script CGI, ou a pgina
ASP, monta uma pgina HTML, normalmente no formato de uma tabela, e envia esta
pgina HTML de volta para o navegador do cliente, conforme indicado na Figura 1.5.
Caso no seja encontrado nenhum registro que atenda o(s) critrio(s) especificado(s),
retornada uma pgina com uma mensagem de que no foi encontrado nenhum registro.
Internet
Usur io
Usur io digit a o cr it r io de
pesquisa em uma pgina Web.
Agor a o usur io pode enviar e
r eceber infor maes.
A conexo de pgina HTM L com bancos
de dados, per mit e a pesquisa em
bancos de dados.
No ser vidor Web, um scr ipt CGI, ou uma
pgina ASP, r ecebe o cr it r io de pesquisa,
execut a a consult a no banco de dados,
mont a uma pgina HTM L, com o r esult ado
de volt a par a o navegador do usur io.
Ser vidor de Banco de Dados
Ex. M icr osof t SQL Ser ver.
Criando Sites Dinmicos com ASP 3.0
2 2
Figura 1 .4: Digit ando os cr it r ios de pesquisa em um for mulr io cr iado com HTM L.
Figura 1 .5: Result ados obt idos a par t ir de um banco de dados do CEP.
2 3
Captulo 1 Uma Introduo Tecnologia ASP
Veja que ao mesmo tempo em que aumentaram as possibilidades de desenvolvimento, tambm
aumentaram as complexidades a serem gerenciadas, tanto na criao de pginas, quanto no
gerenciamento dos sites. Observe que ainda nem falamos de questes tais como segurana,
proteo do banco de dados contra acessos no-autorizados, ou at mesmo ataques de hackers
tentando roubar informao ou corromper a informao do banco de dados.
Alm das novas complexidades, novas questes ainda precisavam ser resolvidas (sendo que
algumas ainda hoje no esto completamente solucionadas). Por exemplo, para vender pela
Internet, as questes de segurana precisavam ser bem resolvidas. Quem arriscaria a colocar
o nmero do carto de crdito em um site de Comrcio Eletrnico, sem a garantia de que o
mesmo seja seguro?
Alm disso, existe a necessidade de troca de informaes entre as diversas empresas, via
Web. Por exemplo, quando voc vai fazer uma compra pela Internet, voc digita o nmero do
seu carto de crdito. Antes de finalizar o pedido, a empresa que est vendendo precisa verificar,
junto a operadora do carto, se o nmero fornecido vlido, se no um carto vencido, se no
um carto que foi roubado, etc. Todas estas informaes precisam ser verificadas rapidamente,
em tempo real. O usurio no est a fim de aguardar muito tempo em frente ao computador.
Note que um nmero grande de fatores comea a surgir, principalmente com o incio do
Comrcio Eletrnico. Para resolver tantos problemas, a simples conexo de pginas com bancos
de dados, embora necessria, no era mais suficiente.
No prximo item veremos um pouco mais sobre esta nova gerao de sites Web, os quais
fazem uso de diversas tecnologias. Lembrando que a cada dia novidades esto surgindo.
A Er a do Comr cio Elet r nico
Estamos vivendo um nova era, a qual marcada pelo Comrcio Eletrnico, ou o chamado e-
business. Todas as revistas especializadas e meios de comunicao apresentam matrias,
diariamente, sobre Comrcio Eletrnico. As possibilidades so inmeras, tanto para as
empresas quanto para os usurios e profissionais envolvidos. O Comrcio Eletrnico deixou
de ser apenas uma previso em livros e revistas, e passou a ser uma realidade, presente no
dia-a-dia de todos ns. Com isso uma nova gerao de sites est sendo criada, muito mais
complexa do que a anterior, necessitando de ferramentas de desenvolvimento e gerenciamento
cada vez mais sofisticadas.
Grande parte do oramento de informtica das empresas est direcionada para atividades ligadas
ao Comrcio Eletrnico. Novas tecnologias surgem todos os dias, prometendo facilitar a criao
de sites para essas e outras atividades relacionadas. Neste tpico veremos quais as tecnologias
necessrias para criao destes sites, bem como as complexidades envolvidas.
Criando Sites Dinmicos com ASP 3.0
2 4
O Comrcio Eletrnico pode acontecer de duas maneiras distintas:
B2B Business to Business: Acontece quando so feitas transaes comerciais entre duas
empresas. Pode ser uma montadora de automveis comprando peas de um fornecedor,
ou uma livraria encomendando livros de uma editora. Em termos de volume financeiro, o
B2B responsvel por um grande percentual do que comercializado via Internet.
B2C Business to Consumer: um cliente, como eu e voc, comprando um livro ou
um CD atravs de uma loja virtual na Internet. Hoje existem sites de Comrcio Eletrnico
que vendem uma srie de coisas: livros, revistas, cosmticos, CDs, roupas, e at
remdios e carros.
medida que aumenta o nmero de sites de Comrcio Eletrnico, aumenta, tambm, a
concorrncia. Portanto, conquistar e manter clientes tm sido o grande desafio. No basta
colocar um catlogo de produtos, garantir a segurana e entregar a mercadoria no local indicado
e no prazo estipulado. Embora estas sejam questes fundamentais, no so mais suficientes
para garantir a fidelidade do cliente, pois, diferentemente do comrcio tradicional, no Comrcio
Eletrnico, o concorrente est apenas a um clique de mouse.
Hoje, um dos grandes desafios conhecer o cliente, saber identificar seus hbitos e armazenar
o maior nmero de informaes sobre ele, tal como o histrico de compras e pesquisas
realizadas no catlogo de produtos. De posse destas informaes, o site deve ser capaz de
fazer ofertas personalizadas para o cliente. Posso citar o meu caso como exemplo. H tempos
que compro livros importados em um determinado site. Ao acessar o site, aps me identificar,
aparece um link: Sugestes para o Jlio. Vejam que at o link j vem personalizado; isso
atrai o cliente. como entrar no mercadinho da esquina e o seu Manoel ir dizendo: Ol seu
Jlio, aquele queijo colonial que o Sr. gosta, chegou. Ao clicar no link de sugestes, recebo
uma listagem de livros. O mais interessante que, nesta listagem, realmente esto os livros
nos quais estou interessado. Que milagre este? No milagre nenhum. Desde a primeira
compra, o site vem armazenando informaes sobre as pesquisas que fao no catlogo de
livros e sobre o que efetivamente compro. Com isso, foi possvel identificar minhas preferncias
e elaborar uma lista de sugestes personalizada. Quanto maior a quantidade de informaes,
mais precisa ser esta lista de sugestes.
Vejam que os sites de Comrcio Eletrnico esto tentando fazer o que o seu Manoel do
mercadinho da esquina faz h muitos anos. Esto tentando dar um tratamento personalizado
para os seus clientes, com o objetivo de mant-los satisfeitos. Clientes satisfeitos significam
vendas e lucros para a empresa.
Conhecer as preferncias do cliente apenas um dos exemplos de aplicao a partir de dados
obtidos pelo site. Com uma base de dados grande e confivel, muitas outras aplicaes podem
ser construdas sobre esses dados. Por isso que, a maioria dos sites, mesmo os que fornecem
servios gratuitos, exigem que voc preencha um cadastro, antes de disponibilizar o acesso a
2 5
Captulo 1 Uma Introduo Tecnologia ASP
servios e informaes. Com as informaes obtidas atravs do cadastro, a empresa est
tentando montar a sua base de dados.
Vejam que os dados precisam ser obtidos e armazenados em um banco de dados. Depois, a
segurana dos dados precisa ser garantida. J pensou se algum consegue invadir o site de
uma empresa e obter uma listagem de nmeros de cartes de crdito? Seria pssimo para a
imagem e para as vendas desta empresa. Alm da segurana, novas aplicaes esto sendo
construdas para fazer uso destes dados, com o objetivo no s de melhorar as vendas, mas
tambm de melhorar as relaes com os clientes. No basta que a empresa seja capaz de
vender; para sobreviver ela precisa continuar vendendo para o cliente. Para continuar
vendendo, isto , para fidelizar o cliente, a rea de atendimento de fundamental importncia.
Se voc compra, por exemplo, um CD e o mesmo entregue fora do prazo, voc reclama. Se
sua reclamao no for satisfatoriamente atendida, voc deixar de comprar desta empresa e
ir procurar outra. Afinal na Internet, o concorrente est a um clique de mouse.
Um dos assuntos mais discutidos no momento representado pela sigla CRM Customer
Relationship Management. Traduzindo teramos: Gerenciamento das Relaes com o Cliente.
CRM representa um conjunto de solues de hardware e software , capazes de melhorar a
relao das empresas com os clientes, principalmente no atendimento s questes do cliente,
quer seja suporte tcnico, dvidas sobre novos produtos, etc.
Quem j no ligou para uma central de atendimento e teve que contar a mesma histria uma
dezena de vezes. Voc liga algum atende. Voc descreve o seu problema, a pessoa diz que no
com ela e passa para um outro setor. Um novo atendente e a mesma histria; voc passado
para um outro setor. Depois da dcima transferncia (considerando que voc seja uma pessoa
paciente, seno aps a terceira voc j desligaria o telefone), voc desliga irritado, sem ter
solucionado o problema. Muito provavelmente, esta empresa acaba de perder mais um cliente.
Clientes no so raros, raras ss as empresas que conseguem fideliz-lo de forma eficiente.
Melhorar o atendimento ao cliente, ou de uma maneira mais genrica, a relao dos clientes
com a empresa, o objetivo do CRM. Ao ligar para uma central de atendimento, a pessoa
identifica-se atravs do seu cdigo de cliente, o sistema de CRM busca em uma base de
dados consolidada todas as informaes sobre o cliente. Ento, ele descreve o problema,
que inserido no sistema. Caso o atendente no seja capaz de solucion-lo, a chamada
transferida diretamente para a pessoa capaz de solucionar o problema. O cliente no precisa
repetir toda a histria porque toda a descrio do problema tambm est acessvel pessoa
que ir atend-lo (os dados foram passados pelo sistema de CRM, quando da transferncia
do chamado). O cliente atendido, soluciona o seu problema e fica satisfeito. Cliente
satisfeito continua comprando.
Criando Sites Dinmicos com ASP 3.0
2 6
A descrio do pargrafo anterior representa uma situao ideal; claro que os sistemas de
CRM ainda no so perfeitos. Porm novas tcnicas esto sendo introduzidas, atravs da
possibilidade de atendimentos via Internet, acessando o site da empresa. Com a melhoria dos
sistemas de telecomunicaes, poderemos tornar realidade um atendimento de alta qualidade
e conclusivo, atravs da Internet. Por exemplo, o cliente est pesquisando o catlogo de
produtos. Na pgina com os dados do produto, existe um link Outras dvidas. Ao clicar
neste link, o cliente entra numa seo de bate-papo com um atendente da empresa. O cliente
pode colocar as suas dvidas, que sero respondidas em tempo real. Tendo as dvidas
solucionadas, h maior probabilidade de ser feito um pedido. Alm disso as dvidas do
cliente podem ser armazenadas no banco de dados. Quando uma determinada dvida comear
aparecer com certa freqncia, os dados que a solucionam podem ser disponibilizados no
catlogo. Assim, os prximos clientes que tiverem a mesma dvida, no precisaro entrar em
contato com o atendimento. Vejam que novamente estamos em um processo de aquisio de
informaes, atravs do prprio site, e utilizao destas informaes para melhorar a qualidade
dos servios e produtos oferecidos.
No B2B tambm existem muitas questes a serem gerenciadas. Para entendermos a
complexidade destas situaes imagine o seguinte exemplo, ilustrado pela Figura 1.6.
Figura 1 .6: A complexidade das quest es envolvidas no B2 B.
Temos uma rede de concessionrias que prestam servios de manuteno para uma
determinada marca de automveis. O objetivo ter um controle automatizado de estoque.
Cada pea catalogada possui um nvel mnimo de unidades em estoque. Quando este nvel
atingido, o banco de dados deve lanar um pedido para este item automaticamente. O
funcionamento do sistema descrito a seguir.
Concessionrias Fornecedores
Ser vidor
Ser vidor
Ser vidor
Ser vidor
Ser vidor
Ser vidor
2 7
Captulo 1 Uma Introduo Tecnologia ASP
O cliente vai na concessionria para comprar uma determinada pea. O atendente efetua a
venda e o estoque atualizado. Se a pea atingir o nvel mnimo, previamente estabelecido,
um pedido ser automaticamente gerado. Este pedido contm informaes sobre a
concessionria, bem como sobre as peas que esto sendo encomendadas.
As informaes sobre o pedido so criptografadas para garantir a segurana, e o pedido
enviado, via Internet, para o fornecedor da pea. Dentro de um prazo preestabelecido, a pea
entregue, evitando que a mesma fique com estoque zerado.
Observe que, neste caso, existe uma troca de informaes entre as concessionrias e os
fornecedores. Para que possa haver esta troca de informaes, os sistemas das duas
empresas devem ser capazes de trocar dados em um formato comum, efetuando negcios
atravs da Internet.
Vamos introduzir algumas questes que complicam um pouco mais a infra-estrutura necessria
para a realizao do B2B. Por exemplo, ao invs de comprar uma determinada pea sempre do
mesmo fornecedor, o sistema deve ser capaz de enviar o pedido para vrios fornecedores, e
selecionar aquele que fizer a melhor oferta, tanto em termos de preo quanto de prazo de
entrega. Neste caso, a concessionria lana o pedido no seu site e aguarda as propostas dos
fornecedores. Aps recebidas as respostas, uma delas selecionada. Este parece ser um sistema
de leilo ao contrrio, ou seja, o comprador anuncia que est precisando de um determinado
produto, e os fornecedores esforam-se para fazer a melhor proposta. Esta forma de fazer compras
conhecida como e-procurement. Em determinados casos, a lista de propostas est disponvel
para todos os fornecedores, isto , se um fornecedor A fez uma proposta e, depois, ao consultar
a lista, viu que um fornecedor B fez uma melhor do que a sua, ele pode alterar a sua proposta,
dentro do perodo de tempo estipulado pelo comprador, no nosso caso, a concessionria.
Vejam que mesmo no sistema de B2B, a lgica tem sido revertida em favor do cliente, isto ,
os fornecedores que disputam o cliente, atravs de boas ofertas, preos competitivos e
prazos adequados de entrega.
Porm a criao de sistemas deste tipo uma tarefa complexa. A todo o momento temos
acesso a informaes de bancos de dados, questes de segurana no acesso a essas informaes,
alm de uma lgica bastante complicada. Em diversos pontos do processo podemos fazer uso
da tecnologia ASP, para criar solues bem interessantes. O uso de pginas ASP, em conjunto
com outras tecnologias, possibilita a criao de solues complexas como as exemplificadas
neste captulo.
Criando Sites Dinmicos com ASP 3.0
2 8
Vamos inserir mais alguns detalhes no nosso exemplo. Pode ser que alm de fazer o pedido,
uma vez aprovada a compra, a concessionria deva fazer o pagamento do mesmo, por meio
de uma transao on-line. O pagamento pode ser feito, por exemplo, atravs de uma
transferncia da conta corrente da concessionria para a conta corrente do fornecedor. Neste
ponto, precisamos introduzir o conceito de transao, o qual ser bastante detalhado no
Captulo 12, Conceitos Avanados: Transaes e o Microsoft Transaction Services.
Uma transao, de maneira bastante simples, um conjunto de aes que deve acontecer
como um todo, ou seja, todas as aes contidas na transao tm que ser finalizadas com
sucesso, ou nenhuma delas deve ser realizada. Caso uma das aes, contida na transao,
falhe, as que ainda estiverem pendentes devem ser canceladas; e as aes j realizadas devem
ser revertidas. Com isso garantimos que a transao acontece como um todo, ou que nenhuma
das suas aes so realizadas.
Para entender, na prtica, o conceito de transaes, vamos voltar ao exemplo anterior. Ao
efetuar um pagamento, o sistema deve transferir valores da conta corrente da concessionria,
para a conta corrente do fornecedor. Estas duas aes devem acontecer no contexto de uma
transao, conforme indicado abaixo:
Incio da Transao
Ao 1: Debita o valor da conta corrente da concessionria.
Ao 2: Credita o valor na conta corrente do fornecedor.
Final da Transao
A primeira ao efetua o dbito na conta corrente da concessionria. Suponhamos que a
Ao 1 ocorra com sucesso, porm na hora de fazer o crdito na conta corrente do fornecedor,
ocorra um problema, o que devemos fazer? O valor deve ser estornado para a conta da
concessionria, ou seja, a Ao 1 deve ser cancelada, uma vez que nem todas as aes dentro
da transao puderem ser concludas com xito. Vejam a importncia do conceito de transao,
pois neste caso, se no usssemos transao, o valor seria debitado da conta corrente da
concessionria e no teria sido creditado na conta corrente do fornecedor.
Poderamos entrar em nveis cada vez mais profundos, sobre os aspectos tecnolgicos
necessrios realizao do Comrcio Eletrnico. Porm estas questes fogem ao escopo deste
livro (quem sabe em um trabalho futuro...). Neste livro estaremos aprendendo a utilizar a
tecnologia ASP para abordar alguns destes aspectos, atravs de exemplos prticos e
detalhadamente explicados.
2 9
Captulo 1 Uma Introduo Tecnologia ASP
Aplicaes Par a a Web
Embora utilizamos os exemplos de Comrcio Eletrnico, CRM, e-procurement, etc., como
situaes onde podemos utilizar a tecnologia ASP, no somente nestas situaes que a
tecnologia pode ser utilizada. Hoje em dia, com o aumento da complexidade das redes de
computadores baseadas em PCs, existe uma tendncia bastante acentuada em favor do
desenvolvimento de aplicaes que seguem o modelo Web. So aplicaes que so acessadas
atravs de um browser. Neste tpico iremos falar um pouco sobre aplicaes Cliente/Servidor
tradicionais e os problemas deste tipo de modelo. Falaremos sobre aplicaes em duas, trs
ou n camadas, e onde a tecnologia ASP se encaixa, neste mundo de desenvolvimento de
aplicaes habilitadas para a Web.
A Complexidade de Ger enciament o do M odelo
Client e/Ser vidor e Aplicaes em Duas Camadas
O modelo Cliente/Servidor foi criado tendo como base a descentralizao dos dados e recursos
de processamento, em oposio ao modelo centralizado utilizado na poca em que o mainframe
dominava absoluto. Neste modelo, conforme indicado pela Figura 1.7, em uma rede de
computadores existem uma ou mais mquinas que atuam como Servidores, disponibilizando
recursos para as demais mquinas, as quais atuam como Clientes.
Figura 1 .7: O M odelo Client e/Ser vidor t r adicional.
Conforme pode ser visto na Figura 1.7, temos servidores para arquivos, banco de dados e
outras funes, tais como: Servidores de impresso, servidores Web, etc. Tipicamente estas
redes so formadas por servidores, que so equipamentos com um maior poder de
processamento e armazenamento do que os Clientes, os quais, na maioria dos casos, so
microcomputadores ligados em rede.
Ser vidor de Ar quivos Bancos de Dados Out r os Ser vidor es
Client es Client es Client es Client es Client es
Criando Sites Dinmicos com ASP 3.0
3 0
Aplicaes em Duas Camadas
No incio da utilizao do modelo Cliente/Servidor, as aplicaes foram desenvolvidas
utilizando-se um modelo de desenvolvimento em duas camadas. Neste modelo, um programa,
normalmente elaborado em um ambiente de desenvolvimento como o Visual Basic, Delphi
ou Power Builder , instalado em cada cliente. Este programa acessa dados em um servidor
de Banco de dados, conforme ilustrado na Figura 1.8.
Figura 1 .8: O modelo de desenvolviment o em duas camadas.
No modelo em duas camadas, temos um programa que instalado no cliente, e que faz acesso
a um banco de dados residente no servidor de Banco de Dados. Na maioria dos casos, a
mquina do cliente um PC rodando Windows, e a aplicao cliente desenvolvida utilizando-
se um dos ambientes conhecidos, conforme citado anteriormente. Sendo a aplicao Cliente,
um programa para Windows (na grande maioria dos casos), a mesma deve ser instalada em
cada um dos computadores da rede, que faro uso da aplicao. o processo de instalao
normal, para qualquer aplicao Windows. No modelo em duas camadas, a aplicao Cliente
responsvel pelas seguintes funes:
Apresentao: O cdigo que gera a interface visvel do programa faz parte da aplicao
Cliente. Todos os formulrios, menus e demais elementos visuais, esto contidos no
cdigo da aplicao Cliente. Caso sejam necessrias alteraes na interface do programa,
faz-se necessria a gerao de uma nova verso do programa, e todos os computadores
que possuem a verso anterior, devem receber a nova verso, para que o usurio possa
ter acesso as alteraes da interface. A que comeam a surgir os problemas no modelo
em duas camadas: uma simples alterao de interface suficiente para gerar a
necessidade de atualizar a aplicao, em centenas ou milhares de computadores. O
gerenciamento desta tarefa algo extremamente complexo.
Banco de Dados
No modelo de duas camadas, t oda a
"Lgica do negcio" fica no Client e.
Quando o pr ogr ama Cl i ent e
inst alado, so inst aladas t odas as
r egr as de acesso ao banco de dados.
Client e Client e Client e Client e Client e
3 1
Captulo 1 Uma Introduo Tecnologia ASP
Lgica do Negcio: As regras que definem a maneira como os dados sero acessados e
processados, so conhecidas como Lgica do Negcio. Fazem parte da Lgica do Negcio
desde funes simples de validao da entrada de dados, como o clculo do dgito
verificador de um CPF, at funes mais complexas, como descontos escalonados para
os maiores clientes, de acordo com o volume da compra. Questes relativas legislao
fiscal e escrita contbil tambm fazem parte da Lgica do Negcio. Por exemplo, um
programa para gerncia de Recursos Humanos, desenvolvido para a legislao dos EUA,
no pode ser utilizado, sem modificaes, por uma empresa brasileira. Isso acontece
porque a legislao dos EUA diferente da legislao brasileira. Em sntese, as regras
para o sistema de Recursos Humanos so diferentes. Alteraes nas regras do negcio
so bastante freqentes em funo das constantes mudanas na legislao do nosso
pas. Com isso, faz-se necessria a gerao de uma nova verso do programa cada vez
que uma determinada regra muda, ou quando regras forem sendo acrescentadas ou
retiradas. Desta forma, todos os computadores que possuem a verso anterior devem
receber a nova verso, para que o usurio possa ter acesso s alteraes. Aqui temos
mais um problema do modelo em duas camadas: qualquer alterao nas regras do negcio
suficiente para gerar a necessidade de atualizar a aplicao em centenas ou milhares
de computadores. O gerenciamento desta tarefa algo extremamente complexo.
Com a evoluo do mercado e as alteraes da legislao, mudanas nas regras do negcio
so bastante freqentes. Por isso o modelo de duas camadas, demonstrou-se de difcil
manuteno e gerenciamento, alm de apresentar um TCO muito elevado, conforme
comentado na Introduo deste livro.
A outra camada, vem a ser o banco de dados, o qual fica armazenado em servidor da rede.
Uma aplicao desenvolvida em Visual Basic, a qual acessa um banco de dados em um servidor
Microsoft SQL Server, um tpico exemplo de uma aplicao em duas camadas.
Em busca de solues para os problemas do modelo em duas camadas, que surge a proposta
do modelo em trs camadas, conforme analisaremos a seguir.
Aplicaes em Tr s Camadas
Como uma evoluo do modelo em duas camadas, surge o modelo de trs camadas. A idia
bsica deste novo modelo em trs camadas, retirar as regras do negcio do cliente e centraliz-
las em um determinado ponto, o qual chamado de servidor de aplicaes. O acesso ao
banco de dados feito atravs das regras contidas no servidor de Aplicaes. Ao centralizar
as regras do negcio em um nico ponto, fica muito mais fcil a atualizao das mesmas. A
Figura 1.9, nos d uma idia geral do modelo em trs camadas.
Criando Sites Dinmicos com ASP 3.0
3 2
Figura 1 .9: O modelo de desenvolviment o em t r s camadas.
Todo o acesso do cliente ao banco de dados feito de acordo com as regras contidas no servidor
de Aplicaes. O cliente no tem acesso ao banco de dados, sem antes passar pelo servidor de
Aplicaes. Com isso as trs camadas so as seguintes:
Apresentao: Continua no programa instalado no cliente. Alteraes na interface do
programa geram a necessidade de atualizar a aplicao em todos os computadores,
onde a mesma est sendo utilizada. Porm, cabe ressaltar que alteraes na interface
so menos freqentes do que alteraes nas regras do negcio.
Lgica: So as regras do negcio, as quais determinam de que maneira os dados sero
utilizados. Esta camada foi deslocada para o servidor de aplicaes. Desta maneira,
quando uma regra do negcio for alterada, basta atualiz-la no servidor de aplicaes.
Aps a atualizao, todos os usurios passaro a ter acesso a nova verso, sem que seja
necessrio reinstalar o programa em cada um dos computadores da rede. Vejam que ao
centralizar as regras do negcio em um servidor de Aplicaes, estamos facilitando a
tarefa de manter a aplicao atualizada.
Dados: Nesta camada temos o servidor de Banco de Dados, no qual reside toda a
informao necessria para o funcionamento da aplicao. Cabe ressaltar que os dados
somente so acessados atravs do servidor de Aplicao, e no diretamente pela
aplicao Cliente.
Com a introduo da camada de Lgica, resolvemos o problema de termos que atualizar a aplicao
em centenas ou milhares de computadores, cada vez que uma regra do negcio fosse alterada.
Porm continuamos com o problema de atualizao da aplicao, cada vez que sejam necessrias
mudanas na interface. Por isso que surgiram os modelos de n-camadas. No prximo tpico,
iremos falar um pouco sobre o modelo em quatro camadas. No Captulo 12, Conceitos Avanados:
Transaes e o Microsoft Transaction Services, estaremos falando sobre camadas adicionais.
Ser vidor de Aplicaes
No modelo de t r s camadas, t oda a
Lgica do Negcio fica no ser vidor de
Aplicaes. Com isso, a at ualizao
das r egr as do negcio fica mais fcil.
Client e Client e Client e Client e Client e
Ser vidor de Banco de Dados
3 3
Captulo 1 Uma Introduo Tecnologia ASP
Aplicaes em Quat r o Camadas
Como uma evoluo do modelo de trs camadas, surge o modelo de quatro camadas. A idia
bsica do modelo em quatro camadas retirar a apresentao do cliente e centraliz-la em
um determinado ponto, o qual na maioria dos casos um servidor Web. Com isso o prprio
cliente deixa de existir como um programa que precisa ser instalado em cada computador da
rede. O acesso aplicao feito atravs de um navegador, como o Internet Explorer ou o
Netscape Navigator. A Figura 1.10 nos d uma idia geral do modelo em quatro camadas.
Figura 1 .1 0: O modelo de desenvolviment o em quat r o camadas.
Para acessar a aplicao, o cliente acessa o endereo da aplicao, utilizando o seu navegador.
Por exemplo http://www.empresa-abc.com/sistemas/cadastro.asp. Todo o acesso do cliente
ao banco de dados feito de acordo com as regras contidas no servidor de Aplicaes. O
cliente no tem acesso ao banco de dados, sem antes passar pelo servidor de Aplicaes. Com
isso as quatro camadas so as seguintes:
Cliente: Neste caso o cliente o navegador utilizado pelo usurio, quer seja o Internet
Explorer, quer seja o Netscape Navigator, ou outro navegador qualquer.
Apresentao: Passa para o servidor Web. A interface pode ser composta de pginas
HTML, ASP, ou qualquer outra tecnologia capaz de gerar contedo para o navegador.
Com isso alteraes na interface da aplicao so feitas diretamente no servidor Web, e,
portanto, estas alteraes estaro, automaticamente, disponveis para todos os clientes.
Com isso no existe a necessidade de reinstalar a aplicao em todos os computadores
da rede. Fica muito mais fcil garantir que todos esto tendo acesso verso mais
Ser vidor Web Ser vidor de Aplicaes Ser vidor de Banco de Dados
Client e Client e Client e Client e Client e
O Client e s pr ecisa de um Navegador par a t er acesso a aplicao.
Criando Sites Dinmicos com ASP 3.0
3 4
atualizada da aplicao. A nica coisa que o cliente precisa ter instalado na sua mquina,
o navegador. O acesso ao banco de dados feito atravs do servidor de Aplicaes.
Lgica: So as regras do negcio, as quais determinam de que maneira os dados sero
utilizados. Esta camada est no servidor de Aplicaes. Desta maneira, quando uma regra do
negcio for alterada, basta atualiz-la no servidor de Aplicaes. Aps a atualizao, todos
os usurios passaro a ter acesso nova verso, sem que seja necessrio reinstalar o programa
em cada um dos computadores da rede. Vejam que, ao centralizar as regras do negcio em
um servidor de Aplicaes, estamos facilitando a tarefa de manter a aplicao atualizada.
Dados: Nesta camada temos o servidor de banco de dados, no qual reside toda a
informao necessria para o funcionamento da aplicao.
Com o deslocamento da camada de apresentao para um servidor Web, resolvemos o problema
de termos que atualizar a aplicao em centenas ou milhares de computadores, cada vez que
uma regra do negcio for alterada. Neste ponto a atualizao das aplicaes uma tarefa mais
gerencivel, muito diferente do que acontecia no caso do modelo em duas camadas.
Os servidores de Aplicao, Web e Banco de Dados no precisam ser necessariamente
servidores separados, isto , uma mquina para fazer o papel de cada um dos servidores. O
conceito de servidor de Aplicao, Web ou Banco de Dados um conceito relacionado com a
funo que o servidor desempenha. Podemos ter, em um mesmo equipamento, um servidor
de Aplicaes, um servidor Web e um servidor de Banco de Dados. Claro que questes de
desempenho devem ser levadas em considerao, conforme analisaremos no prximo tpico.
Quest es a Consider ar mos nos M odelos em Tr s ou M ais Camadas
Muitas so as vantagens dos modelos em trs ou mais camadas em relao facilidade de
gerenciamento e atualizao das aplicaes. Porm deve-se levar em considerao o
desempenho e dimensionamento dos equipamentos que atuaro como servidores.
A partir do momento que estamos deslocando funcionalidades (tipicamente lgica e
apresentao), do cliente para um ou mais servidores, tambm estamos deslocando capacidade
de processamento em termos de memria RAM e processador. Funes que antes eram
executadas pelos clientes, utilizando memria e processador da estao cliente, agora foram
deslocadas para os servidores, consumindo memria e processador do servidor. Portanto, um
dos fatores chave o correto dimensionamento dos equipamentos servidores.
Para fazer o dimensionamento dos servidores, precisamos conhecer o nmero de usurios que
iro acessar a aplicao, o nvel de exigncia de cada usurio e os recursos necessrios pelos
softwares do servidor, entre outros fatores. Para determinar o nvel de recursos necessrios em
cada um dos servidores, voc precisa fazer um estudo bem detalhado, de tal forma que o servidor
no fique subdimensionado. Quando o servidor no est corretamente dimensionado, a tendncia
que o acesso a aplicao fique bastante lento, causando insatisfao entre os usurios.
3 5
Captulo 1 Uma Introduo Tecnologia ASP
Neste modelo de desenvolvimento para a Web, em trs ou mais camadas, existem diversos
pontos nos quais podemos utilizar a tecnologia ASP. Ao desenvolver a interface da aplicao,
pode-se combinar cdigo HTML com cdigo ASP. Utilizando ASP, podemos desenvolver
pginas que acessam o banco de dados, atravs do servidor de Aplicaes. Questes como
autenticao de usurios, determinao do nvel de acesso e segurana da aplicao podem
ser desenvolvidas com a utilizao de ASP.
Para que voc possa utilizar a tecnologia ASP da melhor maneira, com o objetivo de atender
s necessidades da sua aplicao, importante que voc conhea o modelo de desenvolvimento
para a Web, bem como a utilizao de ASP, para a criao das aplicaes. No decorrer deste
livro, estaremos abordando diversos tpicos relacionados criao de aplicaes Web.
O que ASP?
Definir exatamente o que ASP uma tarefa que pode gerar controvrsias. Eu, particularmente,
gosto de definir ASP, como sendo: Uma tecnologia que permite a criao de pginas dinmicas,
nas quais alm de cdigo HTML, temos cdigo ASP. justamente este cdigo, que fornece a
funcionalidade, que torna os sites dinmicos, possibilitando a criao de aplicaes Web.
No defino ASP como uma linguagem de Script porque, para a criao de pginas ASP, podemos
utilizar diferentes linguagens, tais como VBScript e Java Script. Neste livro, estaremos
utilizando o VBScript. Teremos os Captulos 2 e 3 dedicados linguagem VBScript.
Melhor do que definies formais, entender como funciona uma pgina ASP. Vamos nos
basear na Figura 1.11.
Figura 1 .1 1 : Como funciona o ASP.
Int er net
ht t p: //www. abc. com/cep. asp Ser vidor Web
www. abc. com
A pgi na ASP pr oc es s ada no s er vi dor . O r es ul t ado do
pr ocessament o uma pgina HTM L. O que r et or na par a o client e
a pgina HTM L, j r esult ant e do pr ocessament o no ser vidor Web.
Criando Sites Dinmicos com ASP 3.0
3 6
Vamos fazer alguns comentrios sobre a Figura 1.11.
O servidor Web, no nosso caso o IIS da Microsoft, reconhece que a pgina solicitada uma
pgina ASP, pela extenso da pgina. As pginas ASP devem ter a extenso .asp. Se criarmos
uma pgina ASP e a salvarmos com a extenso .htm ou .html, o IIS simplesmente ignora o
cdigo ASP. A criao de pginas ASP est ligada utilizao do IIS. No podemos, por
exemplo, criar pginas ASP e disponibiliz-las utilizando outros servidores Web, como o
Netscape Web Server ou o Apache. J existem empresas trabalhando para disponibilizar a
tecnologia ASP para alguns servidores Web, rodando no sistema operacional Unix ou Linux.
O usurio digita o endereo http://www.abc.com/cep.asp e tecla Enter. Feito isso, o pedido
enviado para o servidor www.abc.com. O servidor identifica a extenso do arquivo .asp.
Como a extenso .asp, a pgina cep.asp passada para o Interpretador ASP, o qual faz
parte do IIS. O Interpretador percorre toda a pgina, executando o cdigo ASP e retornando o
cdigo HTML, resultante deste processamento. Com isso o que retornado para o usurio,
que solicitou a pgina ASP, apenas o cdigo HTML resultante do processamento da pgina.
Este fato pode ser comprovado pedindo para que o navegador exiba o cdigo fonte da pgina.
No caso do Internet Explorer 5.0, basta selecionar a opo Cdigo fonte, do menu Exibir. O
fato do retorno ser HTML puro traz diversos benefcios, dentro os quais podemos destacar:
Os algoritmos, bem como o prprio cdigo ASP, ficam protegidos. Isto significa que o
usurio no tem acesso ao cdigo das aplicaes Web, desenvolvidas em ASP. Isto
bastante desejvel, uma vez que no seria interessante que qualquer usurio pudesse
copiar, livremente, os algoritmos e cdigos da empresa.
O acesso pginas ASP independente do navegador utilizado. No importa se estamos
utilizando o Netscape Navigator, o Internet Explorer, ou qualquer outro navegador.
Uma vez que o que retorna cdigo HTML, qualquer navegador capaz de acessar
uma pgina ASP.
Em contrapartida, o servidor precisa ser o IIS da Microsoft. Outros servidores ainda no
possuem um Interpretador ASP, o que inviabiliza a utilizao de pginas ASP nos mesmos.
Outra questo importante a considerar o fato de uma pgina ASP ser interpretada no servidor.
Isto significa que voc no pode criar uma pgina ASP e test-la localmente, simplesmente
abrindo-a no navegador. Se voc criar uma pgina ASP, salv-la no seu disco rgido local e
tentar abri-la no navegador, todo o cdigo ASP ser ignorado, uma vez que no existe o
Interpretador ASP. Para poder testar as suas pginas ASP, voc ter que salv-las em um
servidor Web, que esteja rodando o IIS.
Para acompanhar os exemplos deste livro, aconselho que voc utilize o Windows 2000 Server
ou o Windows 2000 Professional, com o IIS 5.0 instalado. Caso voc no disponha de um
computador, com um destes dois sistemas instalados, voc pode utilizar o Windows 98 com
3 7
Captulo 1 Uma Introduo Tecnologia ASP
o Personal Web Server instalado. Porm, com o Personal Web Server, alguns dos exemplos
deste livro, principalmente os que utilizam as novas caractersticas do ASP 3.0, no iro
funcionar corretamente.
Na Introduo, voc aprendeu a instalar o IIS 5.0. No prximo item, aprenderemos a criar um
diretrio no servidor do IIS e salvar nossas pginas neste local, para depois podermos test-
las. Sugiro que voc tambm crie este diretrio para salvar nossos exemplos. Iremos criar um
diretrio para cada captulo do livro, de tal forma que os exemplos possam ficar melhor
organizados.
IMPORTANTE
Para os exemplos deste livro, estou utilizando um servidor com o Windows 2000 Server. O
nome do servidor www.groza.com. Se voc estiver utilizando um servidor com um nome
diferente, substitua www.groza.com, pelo nome do servidor que voc estiver utilizando, sempre
que o mesmo aparecer nos nossos exemplos.
Pr epar ando o Ser vidor Par a Acompanhar os Exemplos
Neste item vamos criar uma pasta chamada livro. Dentro desta pasta vamos criar uma subpasta
para cada captulo do livro: Capitulo1, Capitulo2, e assim por diante, at o Capitulo12. Depois
aprenderemos a tornar esta pasta, parte integrante do servidor IIS. No so todas as pastas de
um servidor que podem ser acessadas atravs do IIS.
Cr iando a Est r ut ur a de Past as e Subpast as
Utilizando o Windows Explorer, crie uma estrutura de pastas e subpastas, conforme indicado
na Figura 1.12. Lembre-se de no utilizar acentos para o nome das subpastas.
IMPORTANTE
Estou utilizando o drive C:. Voc pode utilizar qualquer um dos drives disponveis no seu
computador.
Agora vamos fazer com que a pasta livro (e conseqentemente, todas as suas subpastas)
passe a fazer parte do servidor IIS www.groza.com.
Criando Sites Dinmicos com ASP 3.0
3 8
Figura 1 .1 2: Cr iando a est r ut ur a de past as e subpast as.
Tor nando a Past a Livr o Par t e dos Ser vidor IIS
Agora vamos aprender passo a passo, como tornar a pasta livro, parte do servidor IIS. Para
isso utilizaremos o console Gerenciamento do Internet Services, do Windows 2000 Server.
Para maiores informaes sobre MMC, Snap-in e Consoles administrativos, consulte a Unidade
IV, do livro Srie Curso Bsico & Rpido, Microsoft Windows 2000 Server, de minha autoria
e publicado pela editora Axcel Books.
Tornando a pasta livro parte do servidor IIS www.groza.com:
1. Faa o logon como Administrador.
2. Clique em Iniciar/Programas/Ferramentas administrativas/Gerenciador do Internet
Services.
3. Ser aberta a janela Internet Information Services, conforme indicado pela Figura 1.13.
4. D um clique duplo no nome do computador para abri-lo. No exemplo da Figura 1.13,
o nome do computador servidor. Feito isso so exibidas trs opes, conforme indicado
pela Figura 1.14.
3 9
Captulo 1 Uma Introduo Tecnologia ASP
Figura 1 .1 3: O Ger enciador do Int er net Ser vices.
Figura 1 .1 4: Opes de ger enciament o par a o IIS 5 . 0 .
5. D um clique no sinal de +, ao lado da opo Site da Web padro, para expandir esta
opo. As opes que aparecem so as pastas que j fazem parte do site.
6. D um clique com o boto direito do mouse sobre Site da Web padro. No menu que
surge, aponte para Novo. Nas opes que surgem, d um clique na opo Pasta virtual,
conforme indicado pela Figura 1.15.
Criando Sites Dinmicos com ASP 3.0
4 0
Figura 1 .1 5: Cr iando uma nova past a vir t ual, no ser vidor IIS 5 . 0 .
7. Esta pasta virtual ser associada pasta livros, criada anteriormente.
8. Ser exibida a primeira tela do Assistente para a criao de pasta virtual. D um clique
no boto Avanar, passando segunda etapa do assistente.
9. Nesta segunda etapa, voc precisa definir um nome (Alias) para esta pasta virtual.
Utilizaremos o mesmo nome da pasta: livro. No obrigatrio que seja utilizado o
mesmo nome. Por questo de facilidade de administrao e gerenciamento, sempre
utilizo nomes iguais para o nome da pasta no disco rgido e o nome no IIS 5.0.
10. Digite livro, conforme indicado pela Figura 1.16.
Figura 1 .1 6: Digit ando um nome par a a past a no IIS 5 . 0 .
4 1
Captulo 1 Uma Introduo Tecnologia ASP
11. D um clique no boto Avanar, passando terceira etapa do assistente.
12. Na terceira etapa, o assistente pergunta qual a pasta a ser associada com o nome vir-
tual informado na etapa anterior. Nesta etapa voc pode digitar o caminho completo
para a pasta, ou utilizar o boto procurar, para localizar a pasta desejada. No nosso
exemplo, vamos digitar C:\livro. Com isso estamos associando a pasta C:\livro com a
pasta virtual livro, do servidor IIS 5.0.
13. Digite C:\livro, conforme indicado na Figura 1.17, e d um clique no boto Avanar,
para ir para a quarta etapa do assistente.
Figura 1 .1 7: Infor mando o caminho da past a C: \livr o.
14. Na quarta etapa do assistente, podemos configurar as permisses de acesso pasta
livro. Certifique-se de que as opes Leitura e Executar scripts (ASP, por exemplo)
estejam marcadas, conforme indicado pela Figura 1.18. Se a opo Executar scripts
(ASP, por exemplo) no estiver marcada, o cdigo ASP ser ignoradas pelo IIS.
15. D um clique em Avanar. Surge a tela final do assistente.
16. D um clique no boto Concluir, para finalizar o assistente.
17. Voc estar de volta ao Gerenciador do Internet Services.
18. Observe que um novo diretrio virtual chamado livro, j aparece como parte integrante
do servidor IIS, conforme indicado na Figura 1.19.
Criando Sites Dinmicos com ASP 3.0
4 2
Figura 1 .1 8: Configur ando as opes de segur ana.
Figura 1 .1 9: O dir et r io vir t ual livr o, r ecm cr iado.
19. Feche o Gerenciador do Internet Services.
Uma vez criado o diretrio virtual livro, o qual est associado pasta C:\livro, como posso
acessar o contedo que for colocado dentro da pasta C:\livro, ou em uma das suas subpastas?
4 3
Captulo 1 Uma Introduo Tecnologia ASP
A resposta para a questo acima bastante simples, basta que entendamos como so formados
os endereos em um servidor como o IIS. No nosso exemplo, o endereo do servidor
www.groza.com. Ao digitarmos este endereo, estamos acessando a pgina principal do
servidor. Vamos supor que dentro do diretrio livro fosse colocada uma pgina chamada
index.asp. Como faramos para acessar esta pgina, atravs do navegador? O endereo da
pgina em questo, seria o seguinte: www.groza.com/livro/index.asp.
A Figura 1.20, descreve em detalhes a formao deste endereo.
Figura 1 .20: A for mao de ender eos no ser vidor IIS.
Observe que primeiro vem o nome do servidor, depois o nome do diretrio virtual e, finalmente,
o nome da pgina a ser acessada.
Como que fica o endereo, quando eu quero acessar uma pgina que est dentro de uma
subpasta da pasta livro?
Seguindo o mesmo raciocnio anterior, fica fcil responder a esta pergunta. Vamos supor que voc
queira acessar uma pgina chamada cep.asp, que est na subpasta Capitulo1, a qual est na pasta
livro. Como fica o endereo para acessar esta pgina? A Figura 1.21, responde esta questo.
Figura 1 .21 : A for mao de ender eos em subpast as do
dir et or io vir t ual, no ser vidor IIS.
Nome do dir et r io vir t ual
www.gr oza.com/livro/index.as p
Nome do s er vidor. Nome da pgina a
s er aces s ada
Nome do dir et r io vir t ual
www.gr oza.com/livro/Capit ulo1/cep.as p
Nome do s er vidor Nome da pgina a
s er aces s ada
Nome da s ubpas t a
Criando Sites Dinmicos com ASP 3.0
4 4
Com isso, podemos ver que existe uma lgica bem definida para a formao dos endereos.
Apenas para confirmar, vamos dar mais alguns exemplos de formao de endereos. Considere
os casos abaixo indicados:
Qual o endereo de uma pgina chamada teste.htm, gravada no diretrio Capitulo6?
Resposta: www.groza.com/livro/Capitulo6/teste.htm.
Qual o endereo de uma pgina chamada cadastro.asp, gravada no diretrio Capitulo10?
Resposta: www.groza.com/livro/Capitulo10/cadastro.asp.
importante que voc entenda bem a maneira como o servidor IIS constri os endereos de acesso
para as pginas gravadas em seus diretrios virtuais. Observe que o diretrio virtual, simplesmente
um nome que nos leva at o diretrio real, gravado no disco. Podemos criar diversos diretrios
virtuais, em um nico servidor IIS. Em um trabalho futuro, estarei escrevendo sobre o IIS 5.0.
IMPORTANTE
Voc pode criar a estrutura sugerida neste tpico para acompanhar os exemplos deste livro.
Voc tambm pode optar pela criao de uma estrutura diferente, neste caso, lembre-se de
utilizar a estrutura correta quando estiver acompanhando os nossos exemplos.
Alguns Exemplos Pr t icos
Agora que j sabemos como uma pgina ASP processada e retornada para o usurio, e
tambm sabemos como acontece a formao de endereos no servidor IIS, chegou o momento
de comear a aprender a criar pginas ASP. Neste item, veremos, atravs de exemplos simples,
como criar cdigo ASP e como testar as pginas criadas. Tambm comprovaremos, na prtica,
que o que retorna do servidor para o navegador apenas cdigo HTML.
O Tr adicional Hello Wor ld
Para comear, vamos criar uma pgina ASP bastante simples. Criaremos uma pgina ASP que
retorna a frase Hello World para o usurio, em diferentes tamanhos, utilizando a tag HTML
para cabealhos, do <H1> at <H6>. O <H1> a de maior tamanho, e vai diminuindo at
chegar ao menor tamanho que o <H6>.
NOTA
As listagens de cdigo deste livro, apresentam numerao de linhas. Porm, ao criar o cdigo,
no devem ser digitados os nmeros das linhas. Os nmeros so utilizados, apenas para
facilitar a explicao dos cdigos de exemplo.
4 5
Captulo 1 Uma Introduo Tecnologia ASP
Abra o Bloco de notas (Iniciar/Programas/Acessrios/Bloco de notas) e digite o texto indicado
na Listagem 1.1.
Listagem 1.1 O exemplo do Hello World.
1 <HTML>
2 <HEAD>
3 <TITLE>Minha primeira pgina ASP!!</TITLE>
4 </HEAD>
5 <BODY>
6 <%
7 Response.Write <H1> Hello World </H1>
8 Response.Write <H2> Hello World </H2>
9 Response.Write <H3> Hello World </H3>
10 Response.Write <H4> Hello World </H4>
11 Response.Write <H5> Hello World </H5>
12 Response.Write <H6> Hello World </H6>
13 %>
14 </BODY>
15 </HTML>
IMPORTANTE
No digite o nmero das linhas. A numerao apenas aparece na listagem, para servir como
referncia na hora de explicarmos o cdigo ASP.
Salve este documento na subpasta Capitulo1, da pasta livro. Salve o arquivo com o nome de
exemplo1.asp. Se voc tambm estiver utilizando o Bloco de notas, importante digitar a
extenso .asp, pois caso contrrio o Bloco de notas, colocar a extenso .txt.
Antes de explicarmos o cdigo da Listagem 1.1, vamos test-lo. Para testar o cdigo faa o seguinte:
1. Abra o Internet Explorer.
2. No campo endereo digite o seguinte: www.groza.com/livro/Capitulo1/exemplo1.asp
3. Tecle Enter.
Se no foram cometidos erros na hora da digitao da Listagem 1.1, o Internet Explorer mostra
o resultado da pgina exemplo1.asp, conforme indicado na Figura 1.22.
Criando Sites Dinmicos com ASP 3.0
4 6
Figura 1 .22: O r esult ado da pgina exemplo1 . asp.
Agora vamos falar um pouco sobre o cdigo da Listagem 1.1.
Nas linhas de 1 at 5, temos o cdigo HTML normal para qualquer pgina. De interessante
apenas a tag <TITLE> </TITLE>, que define o ttulo que ser exibido na Barra de ttulos do
Internet Explorer, quando voc acessa a pgina. Isso pode ser comprovado na Figura 1.22,
onde vemos a frase: Minha primeira pgina ASP!! Microsoft Internet Explorer, na Barra
de ttulos.
A partir da linha 6 que temos novidades. Observe, na linha 6, a utilizao de <%. Esta
combinao de sinais, indica o incio de um trecho com cdigo ASP, ou seja, cdigo que deve
ser interpretado pelo servidor IIS.
A partir da linha 7, temos a utilizao do comando Response.Write. Este comando, retorna
para o navegador, o texto que est entre aspas. No exemplo da linha 7, ser retornado
<H1>Hello World</H1>, que justamente a tag de cabealho do HTML. As demais linhas
repetem a operao, para as demais tags de cabealho do HTML.
Na linha 13, a combinao de sinais %>, indica o final do trecho de cdigo ASP, iniciado na
linha 6.
4 7
Captulo 1 Uma Introduo Tecnologia ASP
IMPORTANTE
Todo trecho de cdigo ASP, inicia com um <% e deve ser finalizado com um %>. Podemos
ter mais do que um trecho de cdigo ASP, dentro de um mesmo documento. Com isso podemos
ir mesclando trechos de cdigo HTML, com trechos de cdigo ASP. Essa possibilidade nos d
uma grande flexibilidade na hora de construir aplicaes para a Web. Sempre que for necessrio
algum tipo de processamento em uma pgina, podemos inserir cdigo ASP para fazer o
processamento desejado, e depois retornar o resultado no formato HTML.
As linhas 14 e 15 so tags HTML, que aparecem no final de uma pgina. A tag </BODY>
o fechamento da tag <BODY>, e a tag </HTML> o fechamento da tag <HTML>. Para
maiores detalhes sobre a linguagem HTML, consulte o livro HTML 4 Curso Bsico & Rpido,
da editora Axcel Books.
Conforme descrito anteriormente, o cdigo ASP processado pelo IIS, e o resultado deste
processamento retornado para o navegador do cliente no formato HTML. Podemos facilmente
comprovar isto.
Comprovando que o que retorna somente o cdigo HTML:
1. Se voc no estiver com a pgina exemplo1.asp aberta, abra-a conforme descrito no
exemplo anterior.
2. No menu Exibir, clique na opo Cdigo fonte.
3. Ser exibida uma janela, conforme indicado pela Figura 1.23.
Figura 1 .23: Cdigo HTM L, r esult ant e do pr ocessament o da pgina exemplo1 . asp.
Criando Sites Dinmicos com ASP 3.0
4 8
4. Observe que o cdigo retornado para o cliente, cdigo HTML puro, sem nenhum
sinal do cdigo ASP. Isso impede com que o usurio possa ter acesso ao cdigo dos
aplicativos desenvolvidos em ASP. Alm disso qualquer navegador pode ser utilizado
para acessar uma pgina ASP, uma vez que o que , efetivamente, enviado para o
cliente cdigo HTML.
5. Feche a janela indicada na Figura 1.23.
Nesse exemplo, criamos a nossa primeira pgina ASP. Onde aprendemos alguns detalhes
importantes e confirmamos outros, anteriormente apresentados. Apenas para revisar, vamos
enunciar os principais tpicos abordados:
Uma pgina pode conter um ou mais trechos com cdigo ASP.
Cada trecho de cdigo ASP, inicia com <% e termina com %>.
Uma pgina ASP identificada pela sua extenso, que deve ser .asp, caso contrrio o
cdigo ASP ser ignorado pelo servidor IIS.
O cdigo ASP processado pelo servidor IIS, e o resultado desse processamento que
retornado para o navegador do cliente, no formato de cdigo HTML. Voc pode,
facilmente, comprovar este fato, selecionando a opo Cdigo fonte, do menu Exibir,
do Internet Explorer.
Pelo fato do resultado do processamento de uma pgina ASP ser cdigo HTML, qualquer
navegador est habilitado para acessar pginas ASP, e no somente o Internet Explorer.
Para encerrarmos este captulo, vamos a mais um exemplo prtico. Na pgina exemplo1.asp,
no temos nenhuma vantagem em utilizar cdigo ASP. Poderamos utilizar cdigo HTML,
que obteramos o mesmo resultado, sem maiores problemas.
No prximo exemplo, veremos como a utilizao de ASP pode facilitar a criao de pginas
dinmicas e aplicativos para a Web. Por enquanto no se preocupe em entender todos os
comandos do ASP e do VBScript. Teremos todo este livro para aprend-los. O objetivo do
prximo exemplo salientar a natureza dinmica do ASP na gerao de pginas.
Um Exemplo de Pgina Dinmica
Vamos imaginar que voc queira criar uma pgina, onde no incio aparea a seguinte frase:
Boqueiro do Leo, 25 de Junho de 2000; ou seja, o nome da cidade, e data.
NOTA DO AUTOR
Estou utilizando Boqueiro do Leo, como exemplo, porque a minha terra natal. Claro que
pouca gente conhece, pois uma cidade pequena. Mas sempre que o tempo permite, volto
para rever familiares e amigos.
4 9
Captulo 1 Uma Introduo Tecnologia ASP
Poderamos criar esta pgina utilizando HTML, porm todos os dias, no final do dia, teramos
que editar a pgina para alterar a data, uma vez que a mesma no ser atualizada
automaticamente. Utilizando cdigo ASP, podemos fazer com que a pgina acesse a data do
servidor IIS e exiba a data sempre atualizada, na pgina ASP. Com isso, cada vez que a pgina
for acessada pelo usurio, o cdigo ASP ir determinar a data do servidor e enviar uma pgina
com a data atualizada. Este um exemplo, bastante simples, de uma pgina dinmica; pois a
data dinamicamente determinada pelo cdigo ASP.
A pgina da Listagem 1.2 soluciona o problema proposto.
Abra o Bloco de Notas (Iniciar/Programas/Acessrios/Bloco de notas) e digite o texto indicado
na Listagem 1.2.
Listagem 1.2 Pgina dinmica O exemplo da determinao da data.
1 <HTML>
2 <HEAD>
3 <TITLE>Minha segunda pgina ASP!!</TITLE>
4 </HEAD>
5 <BODY>
6 <%
7 data_atual=Date()
8 mes_atual=Month(data_atual)
9 Select Case mes_atual
10 Case 1
11 mes_desc=Janeiro
12 Case 2
13 mes_desc=Fevereiro
14 Case 3
15 mes_desc=Maro
16 Case 4
17 mes_desc=Abril
18 Case 5
19 mes_desc=Maio
20 Case 6
21 mes_desc=Junho
22 Case 7
23 mes_desc=Julho
24 Case 8
25 mes_desc=Agosto
Criando Sites Dinmicos com ASP 3.0
5 0
26 Case 9
27 mes_desc=Setembro
28 Case 10
29 mes_desc=Outubro
30 Case 11
31 mes_desc=Novembro
32 Case 12
33 mes_desc=Dezembro
34 End Select
35 Response.Write Boqueiro do Leo, & Day(data_atual) & de & mes_desc & de
& Year(data_atual)
36 %>
37 <p> Aqui o restante da pgina...</p>
38 </BODY>
39 </HTML>
IMPORTANTE
No digite o nmero das linhas. A numerao apenas aparece na listagem para servir como
referncia na hora de explicarmos o cdigo ASP. Esta orientao vlida para todas as listagens
que aparecerem neste livro.
Salve este documento na subpasta Capitulo1, da pasta livro. Salve o arquivo com o nome de
exemplo2.asp. Lembre-se de digitar a extenso .asp, pois caso contrrio o Bloco de notas,
colocar a extenso .txt.
Antes de explicarmos o cdigo da Listagem 1.2, vamos test-lo. Para testar o cdigo faa o seguinte:
1. Abra o Internet Explorer.
2. No campo endereo digite: www.groza.com/livro/Capitulo1/exemplo2.asp.
3. Tecle Enter.
4. Se no foram cometidos erros na hora da digitao da Listagem 1.2, o Internet Explorer
mostra o resultado da pgina exemplo2.asp, conforme indicado na Figura 1.24.
5 1
Captulo 1 Uma Introduo Tecnologia ASP
Figura 1 .24: O r esult ado da pgina exemplo2 . asp.
Agora vamos falar um pouco sobre o cdigo da Listagem 1.2.
Da linha 1 at a linha 5 temos cdigo HTML.
A partir da linha 6 que temos o cdigo ASP, conforme indicado pelo sinal <%. Na linha 7,
utilizamos a funo Date( ), para atribuir a data do sistema varivel data_atual. Na linha
8, utilizamos a funo Month para extrair apenas o ms da data atual, e atribuir este valor
a varivel mes_atual. A funo Month, retorna um nmero inteiro entre 1 e 12, o qual
indica o ms do ano; 1=Janeiro, 2=Fevereiro, 3=Maro e assim por diante. Por isso, das
linhas 9 at 34, utilizamos o lao de controle Select Case ... End Select para definir a varivel
mes_desc, com base no valor retornado pela varivel mes_atual. Veremos o lao de controle
Select Case ... End Select, em detalhes, no Captulo 2.
Finalmente, na linha 35, utilizo o comando Response.Write, para retornar a data no formato
desejado. Observe que, com o comando Response.Write, posso retornar diversos valores, quer
sejam valores fixos de texto, colocados entre aspas (como no exemplo Boqueiro do Leo,),
quer sejam valores obtidos de variveis, como no caso mes_desc. Para juntar as vrias partes
que devem ser retornadas, utilizamos o operador &.
Da linha 37 at a linha 39 temos cdigo HTML.
Conforme descrito anteriormente, o cdigo ASP processado pelo IIS e o resultado deste
processamento retornado para o navegador do cliente no formato HTML. Podemos facilmente
comprovar isto.
Criando Sites Dinmicos com ASP 3.0
5 2
Comprovando, mais uma vez, que o que retorna somente o cdigo HTML.
1. Se voc no estiver com a pgina exemplo2.asp aberta, abra-a conforme descrito no
exemplo anterior.
2. No menu Exibir, clique na opo Cdigo fonte.
3. Ser exibida uma janela, conforme indicado pela Figura 1.25.
Figura 1 .25: Cdigo HTM L r esult ant e do pr ocessament o da pgina exemplo2 . asp.
4. Observe que o cdigo retornado para o cliente, cdigo HTML puro, sem nenhum sinal
do cdigo ASP. No vemos as funes utilizadas, nem mesmo o lao de controle Select
Case. O que retorna o resultado do comando Response.Write. Isso impede que o usurio
possa ter acesso ao cdigo dos aplicativos desenvolvidos em ASP. Alm disso, como j
disse anteriormente, qualquer navegador pode ser utilizado para acessar uma pgina
ASP, uma vez que o que , efetivamente, enviado para o cliente cdigo HTML.
5. Feche a janela indicada na Figura 1.25.
Veja que, neste exemplo, temos uma pgina em que o contedo gerado dinamicamente, a
partir da hora do servidor. Voc pode testar este comportamento dinmico da pgina,
facilmente. Altere a data do servidor. Carregue novamente a pgina exemplo2.asp. Observe
que a mesma j exibe a nova data. Altere novamente a data do servidor e pressione F5 para
atualizar a pgina exemplo2.asp. Isso gerao dinmica de contedo, embora at o momento
seja um contedo bastante simples. Nos prximos captulos avanaremos um pouco mais.
Agora que j entendemos os diversos aspectos envolvidos com a criao de pginas ASP,
estamos aptos a aprender um pouco mais sobre a linguagem VBScript, que estaremos utilizando
neste livro. Isso ser assunto para os Captulos 2 e 3.
5 3
Captulo 2 Uma Introduo ao VBScript
Capt ul o 2
Uma Introduo
ao VBScript
Criando Sites Dinmicos com ASP 3.0
5 4
Int r oduo
Neste captulo aprenderemos o bsico a respeito de VBScript. Veremos exatamente o que
VBScript, e onde utiliz-lo. Aprenderemos que possvel executar cdigo VBScript, tanto no
navegador do cliente, quanto no servidor Web. Depois apresentaremos os aspectos bsicos da
linguagem, tais como a declarao de variveis, operadores e laos de controle. medida em
que os conceitos forem sendo apresentados, iremos trabalhando com exemplos prticos, para
que os conceitos possam ser melhor entendidos. Tambm aprenderemos a criar sub-rotinas e
funes. Na parte final do captulo, desenvolveremos alguns exemplos prticos de utilizao
de VBScript, na criao de pginas. Ao completar este captulo, voc ter uma noo bsica
de VBScript, e ser capaz de criar solues simples utilizando esta linguagem.
NOTA
Os exemplos apresentados nas listagens deste captulo, podem ser criados utilizando-se um
redator de texto, como o Bloco de notas, e salvando os arquivos com a extenso .htm. Depois
s abrir os mesmos no Internet Explorer e testar. Os nmeros das linhas que aparecem nas
listagens, no devem ser digitados. Os mesmos foram includos, nas respectivas listagens,
apenas para facilitar o acompanhamento das explicaes de cada exemplo.
O que VBScr ipt
VBScript uma linguagem de criao de scripts, a qual derivada do Visual Basic (VB) e do
VBA (Visual Basic for Applications). O Visual Basic o ambiente de desenvolvimento grfico
mais utilizado para o desenvolvimento de aplicaes para o ambiente Windows. Como o
nome sugere, a programao em Visual Basic baseada na linguagem de programao Basic.
O VBA derivado do Visual Basic (de certa forma, podemos dizer que um subconjunto do
VB), e a linguagem utilizada para automatizar tarefas nos aplicativos do Microsoft Office.
Por exemplo, quando voc precisa criar cdigo para automatizar alguma tarefa no Microsoft
Excel ou no Microsoft Access, voc est utilizando o VBA.
Se voc j conhece VB ou VBA ir sentir-se bastante vontade com VBScript. Muitos dos
comandos bsicos, como estruturas de controle, declaraes de variveis, operadores e
funes, so idnticos. Na verdade alguns artigos definem VBScript como sendo um
subconjunto do VB.
Devemos considerar alguns fatos importantes, dentre os quais podemos destacar:
VBScript uma linguagem para a criao de scripts. Um script no compilado para
gerar um programa executvel, ao invs disso, cada linha do script interpretada, e
executada.
5 5
Captulo 2 Uma Introduo ao VBScript
O cdigo escrito juntamente com uma pgina HTML. A pgina enviada para o
navegador, o qual interpreta e executa o cdigo VBScript, uma linha por vez. O suporte
VBScript nativo no Internet Explorer, j no Netscape Navigator o suporte VBScript
se d atravs da instalao de um plug-in.
NOTA
Um plug-in um programa que estende a funcionalidade de um navegador. No nosso exemplo
estamos falando de um plug-in que permite que o Netscape Navigator interprete e execute
cdigo VBScript.
Com a utilizao do VBScript, podemos ampliar as capacidades de uma pgina HTML,
tornando-a mais funcional e interativa. Podemos realizar clculos, exibir mensagens
em janelas pop-up, detectar eventos tais como o clique em um link ou em um boto de
comando, criar menus interativos, etc. Podemos utilizar cdigo VBScript para fazer a
validao dos dados de um formulrio. Caso exista erro em algum campo, ou caso
algum campo obrigatrio no tenha sido preenchido, podemos retornar uma mensagem
para o usurio, com os dados que o mesmo preencheu, indicando qual ou quais cam-
pos esto com problema. Com isso o usurio corrige os problemas, antes que os dados
sejam enviados para o servidor, reduzindo as possibilidades de erro e agilizando o
processamento das informaes. So muitas as possibilidades.
A linguagem VBScript foi desenvolvida tendo-se a segurana como uma de suas
diretrizes. Atravs do uso de VBScript, no possvel criar uma pgina, por exemplo,
que tenha acesso ao sistema de arquivos do computador e possa apagar ou modificar
informaes. Evidentemente que a criatividade de hackers mal intencionados no tem
limites. Porm diversos cuidados foram tomados, pela Microsoft, para tornar a VBScript
uma linguagem segura.
Pela semelhana com o Visual Basic, VBScript uma linguagem de fcil aprendizado.
Se voc j programa em Visual Basic, aprender VBScript ser simplesmente uma questo
de saber o que possvel fazer com VBScript e quais so as suas limitaes.
Conforme podemos concluir, VBScript uma linguagem para a criao de scripts, os quais
ampliam a funcionalidade das pginas HTML.
No prximo item faremos uma reviso rpida os principais elementos de uma pgina HTML.
Como o cdigo VBScript que roda no cliente escrito dentro da prpria pgina HTML,
importante que saibamos identificar seus principais elementos. Alm disso, conforme veremos
a partir do Captulo 4, uma pgina ASP mistura as tags HTML com elementos de cdigo ASP.
Por isso importante que saibamos reconhecer os principais elementos de uma pgina HTML.
Para maiores informaes sobre HTML, consulte o livro HTML 4 Curso Bsico & Rpido, da
editora Axcel Books.
Criando Sites Dinmicos com ASP 3.0
5 6
Uma Reviso Rpida de HTM L
Conforme descrevemos na introduo desse livro, as pginas da Internet, so criadas
utilizando-se da linguagem HTML Hypertext Markup Language. Uma traduo seria:
Linguagem de Marcao de Texto. As pginas ficam gravadas no servidor Web, e quando o
cliente digita um endereo solicitando determinada pgina, a mesma transportada at o
navegador do cliente. O navegador interpreta o cdigo HTML e exibe a pgina, j formatada.
Neste tpico, faremos uma reviso rpida sobre os principais elementos de uma pgina HTML,
bem como sobre os principais elementos para a construo de formulrios, como campos
para a digitao de texto, que estaro sendo usados durante os exemplos deste livro.
Est r ut ur a Bsica de uma Pgina HTM L
Todo documento HTML apresenta a mesma estrutura bsica. Documentos HTML so criados
utilizando o que chamamos de tag ou marcador. Por exemplo, existe uma tag para fazer
com que o navegador exiba um determinado texto em negrito, outra tag para exibir texto em
itlico, um conjunto de tags para criar as linhas e colunas de uma tabela, e assim por diante.
Na Listagem 2.1, vemos um exemplo da estrutura bsica de um documento HTML.
Listagem 2.1 O exemplo do Hello World.
1 <HTML>
2 <HEAD>
3 <META NAME=GENERATOR Content=Microsoft Front Page 4.0>
4 <TITLE>Criando Sites dinmicos com ASP 3.0 !!!</TITLE>
5 </HEAD>
6 <BODY>
7 <P>Uma Pgina HTML muito simples !!!!</P>
8 </BODY>
9 </HTML>
IMPORTANTE
Cabe novamente ressaltar, que os nmeros de linha, no fazem parte do cdigo HTML. Apenas
foram colocados na listagem para facilitar a explicao da mesma. Esta recomendao vlida
para todas as listagens apresentadas neste livro. Com isso, se voc for digitar esta listagem,
no digite o nmero das linhas. Este fato pode ser comprovado pela Figura 2.1.
5 7
Captulo 2 Uma Introduo ao VBScript
As maioria das tags HTML so formadas por pares. Conforme podemos ver na Listagem 2.1,
todo documento HTML, comea com a tag <HTML> e termina com uma tag </HTML>
(linhas 1 e 9, respectivamente).
Logo aps a tag <HTML>, temos a tag <HEAD>. Dentro das tags <HEAD> e </HEAD>
podemos colocar diversas informaes, muitas vezes chamadas de Metainformao. Contida
nesta seo do documento est a informao a respeito do prprio documento, como por
exemplo: qual o programa utilizado para gerar o documento, nome do autor, data de criao,
etc. As informaes contidas nesta seo do documento, so utilizadas, muitas vezes, pelos
mecanismos de pesquisa da Internet, como o Altavista (www.altavista.digital.com) e o Yahoo
(www.yahoo.com). Uma tag especial, que podemos utilizar a tag <TITLE> </TITLE>. O
texto colocado dentro desta tag, ser exibido na Barra de ttulos do navegador. Este fato pode
ser comprovado pela Figura 2.1.
Figura 2.1 : Um exemplo de ut ilizao da t ag < TITLE> < /TITLE> .
Observe o ttulo que aparece na Barra de ttulos da Figura 2.1. Logo aps o ttulo, no caso do
Internet Explorer, aparece a expresso: Microsoft Internet Explorer.
Criando Sites Dinmicos com ASP 3.0
5 8
Aps o par de tags <HEAD> </HEAD>, temos a tag <BODY>. A partir da tag <BODY>, na
linha 6, que comea a parte do documento que ser exibida pelo navegador. Tudo o que
estiver entre o par de chaves <BODY> </BODY> contedo que deve ser exibido pelo
navegador. Neste nosso exemplo, muito simples, temos apenas um pargrafo de texto sendo
exibido. A tag que define uma pargrafo de texto <P> </P>, conforme indicado na linha 7.
Esta a estrutura bsica de todo documento HTML.
Cada tag do HTML pode conter um ou mais atributos. Um atributo modifica a maneira como
o navegador exibe o contedo da pgina. Por exemplo, na Listagem 2.2, estamos utilizando o
atributo color da tag <FONT>, para modificar as caractersticas da fonte do texto a ser exibido.
Listagem 2.2 Utilizando atributos da tag <FONT> </FONT>.
1 <HTML>
2 <HEAD>
3 <META NAME=GENERATOR Content=Microsoft Front Page 4.0>
4 <TITLE>Criando Sites dinmicos com ASP 3.0 !!!</TITLE>
5 </HEAD>
6 <BODY>
7 <P><FONT color=navy><B>Uma Pgina HTML muito simples !!!!</B></FONT> </P>
8 </BODY>
9 </HTML>
Neste caso, na linha 7, o atributo color definido para o valor navy, o qual equivale a uma
fonte de cor azul marinho. Observe que a tag <FONT> </FONT> utilizada dentro da tag
de pargrafo, para modificar as caractersticas da fonte deste pargrafo. Tambm utilizamos a
tag <B></B>, para fazer com que o texto fosse exibido em negrito. Ao visualizar este
documento, no navegador, o texto Uma Pgina HTML muito simples !!! ser exibido em
negrito e com fonte de cor azul marinho.
Um estudo mais detalhado sobre as tags da linguagem HTML foge ao escopo deste livro.
Novamente indico o livro HTML 4 Curso Bsico & Rpido, da editora Axcel Books, para
maiores informaes sobre a linguagem HTML. Apenas como um exemplo de uma pgina
mais completa, considere a Listagem 2.3, onde utilizamos as tags para criao de tabelas.
<TABLE> e </TABLE>, para criar a tabela; <TR> e </TR> para criar novas linhas; <TD>
e </TD>, para criar as clulas dentro de uma linha da tabela.
Listagem 2.3 Uma pgina HTML com diversas tags.
1 <HTML>
2 <HEAD>
5 9
Captulo 2 Uma Introduo ao VBScript
3 <META NAME=GENERATOR Content=Microsoft Visual Studio 6.0>
4 <TITLE>Criando Sites dinmicos com ASP 3.0 !!!</TITLE>
5 </HEAD>
6 <BODY>
7 <P><FONT color=navy><B>Produo de SOJA da Regio Sul !!!</B></FONT></P>
8 <TABLE border=1 cellPadding=1 cellSpacing=1 width=75%>
9 <TR>
10 <TD align=middle>Ano de Produo</TD>
11 <TD align=middle>Produo em Toneladas</TD>
12 </TR>
13 <TR>
14 <TD align=middle>1996</TD>
15 <TD align=middle>23450</TD>
16 </TR>
17 <TR>
18 <TD align=middle>1997</TD>
19 <TD align=middle>32456</TD>
20 </TR>
21 <TR>
22 <TD align=middle>1998</TD>
23 <TD align=middle>33000</TD>
24 </TR>
25 <TR>
26 <TD align=middle>1999</TD>
27 <TD align=middle>32560</TD>
28 </TR>
29 </TABLE>
30 <P>Dados atualizados em -&gt; 30/06/2000.</P>
31 </BODY>
32 </HTML>
Na Figura 2.2, temos o documento da Listagem 2.3, sendo exibido no navegador.
Criando Sites Dinmicos com ASP 3.0
6 0
Figura 2.2: Um exemplo de ut ilizao da t ag < TABLE> < /TABLE> .
No prximo item estudaremos algumas tags ligadas a criao de formulrios com HTML.
Estudaremos estas tags em maiores detalhes, pois estaremos utilizando-as em diversos
exemplos deste livro.
Tags Par a a Cr iao de For mulr ios HTM L
A criao de formulrios, permite que o usurio preencha alguns campos e envie os dados
para o servidor Web. Por exemplo, quando voc est comprando pela Internet, em um
determinado momento, precisa fornecer informaes, como o endereo de entrega, telefone
de contato, etc. Voc preenche estas informaes em um formulrio. Normalmente, existe
um boto Enviar, no qual voc deve clicar, aps ter preenchido os dados necessrios. So
muitas as aplicaes onde utilizamos formulrios.
Cr iando o For mulr io a t ag < FORM > < /FORM >
Um formulrio criado utilizando as tags <FORM> </FORM>. Na Listagem 2.4, temos um
exemplo de utilizao da tag <FORM>.
6 1
Captulo 2 Uma Introduo ao VBScript
Listagem 2.4 Tag para a criao de formulrios.
1 <HTML>
2 <HEAD>
3 <META NAME=GENERATOR Content=Microsoft Front Page 4.0>
4 <TITLE>Um exemplo simples de formulrio.</TITLE>
5 </HEAD>
6 <BODY>
7 <P>Cadastro de Clientes:<BR>
8 Preencha os campos e clique no boto Enviar Dados.</P>
9 <P>
10 <FORM action= id=FORM1 method=post name=FORM1><BR>
{ Aqui teramos tags HTML de definio do formulrio }
11 </FORM>
12 </BODY>
13 </HTML>
O atributo mais importante da tag <FORM> o action. No atributo action, devemos informar
o endereo de uma pgina ASP, um script CGI, ou qualquer outro elemento capaz de processar
os dados digitados em um formulrio. O usurio preenche os campos do formulrio, e, ao
clicar no boto Enviar, chamada a pgina ou programa indicados no atributo action, o qual
responsvel por processar as informaes do formulrio.
Na Listagem 2.5, temos um exemplo em que uma pgina ASP responsvel por processar os
dados enviados pelo formulrio.
Listagem 2.5 O atributo action contm o endereo de uma pgina ASP.
1 <HTML>
2 <HEAD>
3 <META NAME=GENERATOR Content=Microsoft Front Page 4.0>
4 <TITLE>Um exemplo simples de formulrio.</TITLE>
5 </HEAD>
6 <BODY>
7 <P>Cadastro de Clientes: <BR>
8 Preencha os campos e clique no boto Enviar Dados.</P>
9 <P>
10 <FORM action=http://www.meusite.com/processa.asp id=FORM1 method=post
name=FORM1><BR>
Criando Sites Dinmicos com ASP 3.0
6 2
{ Aqui teramos tags HTML de definio do formulrio }
11 </FORM>
12 </BODY>
13 </HTML>
A Figura 2.3 ilustra este processo.
Figura 2.3: A Pgina ASP ar mazena os dados digit ados no for mulr io, em um banco de dados.
Neste caso, a pgina ASP recebe os dados do formulrio preenchido pelo cliente, processa esses
dados, e os armazena em um banco de dados. O servidor de Banco de Dados pode ser o mesmo
servidor Web, ou um equipamento separado. Aps armazenar os dados no banco de dados, a
pgina ASP envia cdigo HTML puro, de volta para o cliente. Normalmente a pgina HTML, que
retorna para o cliente, apresenta uma mensagem dizendo que os dados foram enviados com
sucesso, ou, no caso de erros, apresenta uma mensagem de erro, com a possvel causa do problema.
A partir do Captulo 4, estaremos aprendendo a criar pginas ASP para tratar com formulrios
e armazenar os dados enviados em bancos de dados, bem como para fazer pesquisas em
banco de dados.
Cr iando uma Caixa de Text o a Tag < INPUT TYPE= TEXT >
A tag <INPUT TYPE=TEXT> cria uma caixa de texto, na qual podem ser exibidos e tambm
digitados valores, quer sejam nmeros ou textos. Esta tag possui os seguintes atributos:
Banco de
Dados
Ser vidor Web
A pgina ASP, no ser vidor, r ecebe os dados enviados pelo
for mulr io e ar mazena os dados em um banco de dados,
como o M icr osof t SQL Ser ver, ou M icr osof t Access.
O usur io pr eenche os dados do for mulr io
e clica no bot o Enviar. A pgina ASP,
especificada na t ag act ion chamada.
Client e
6 3
Captulo 2 Uma Introduo ao VBScript
Tabela 2.1 Atributos da tag <INPUT TYPE=TEXT>.
Na Listagem 2.6, temos um exemplo de criao de um formulrio com dois campos para
entrada de texto. Um para o nome, outro para o endereo.
Listagem 2.6 Um formulrio com dois campos de texto.
1 <HTML>
2 <HEAD>
3 <META NAME=GENERATOR Content=Microsoft Front Page 4.0>
4 <TITLE></TITLE>
5 </HEAD>
6 <BODY>
7 <P>Digite os dados solicitados, depois clique no boto Enviar:</P>
8 <FORM action= id=FORM1 method=post name=FORM1>
9 <P>Nome: <INPUT type=text id=nome name=nome maxlength=20 ></P>
Atributo Descrio
TYPE Indica o tipo do campo, no caso de campos para digitar ou
exibir informao, utilizamos TEXT.
SIZE Determina o tamanho do campo que ser exibido no
navegador.
MAXSIZE Tamanho mximo de caracteres do campo. MAXSIZE pode
ser maior do que SIZE. Neste caso o navegador rola o
contedo do campo, quando o mesmo atingir o nmero de
caracteres definido por SIZE.
NAME o nome associado ao campo, o qual ser utilizado pela
pgina ASP, para fazer referncia a este campo.
VALUE o valor padro do campo. Por exemplo, para um campo
Cidade, podemos definir o atributo VALUE como So Paulo.
Neste caso, ao carregar o formulrio no navegador, o campo
Cidade, j vem com o valor So Paulo. Caso seja necessrio, o
usurio pode modificar este valor.
ID Utilizado por linguagens de script, como o VBScript.
Criando Sites Dinmicos com ASP 3.0
6 4
10 <P>Endereo: <INPUT type=text id=endereco name=endereco maxlength=20 ></P>
11 </FORM>
12 </BODY>
13 </HTML>
Nas linhas 9 e 10, temos o cdigo HTML, que cria os dois campos do formulrio. A Figura
2.4 mostra este formulrio, sendo visualizado no Internet Explorer, com os dados digitados
pelo usurio.
Figura 2.4: Visualizando um for mulr io simples no Int er net Explor er.
Cr iando uma Caixa de Text o Par a a Digit ao
de Senhas a t ag < INPUT TYPE= PASSWORD >
A tag <INPUT TYPE=PASSWORD> cria uma caixa de texto, apropriada para a digitao
de senhas, pois enquanto o usurio digita a senha, so exibidos, somente asteriscos (*). Isso
impede que algum, descubra a senha do usurio, simplesmente observando quando o mesmo
est preenchendo o formulrio. Esta tag possui os atributos descritos a seguir.
Tabela 2.2 Atributos da tag <INPUT TYPE=PASSWORD>.
Atributo Descrio
TYPE Indica o tipo do campo, no caso de campos para digitar
senhas, utilizamos PASSWORD.
6 5
Captulo 2 Uma Introduo ao VBScript
Na Listagem 2.7, temos um exemplo de criao de um formulrio com um campo para a
digitao de senhas.
Listagem 2.7 Formulrio com um campo para a digitao de senha.
1 <HTML>
2 <HEAD>
3 <META NAME=GENERATOR Content=Microsoft Front Page 4.0>
4 <TITLE></TITLE>
5 </HEAD>
6 <BODY>
7 <P>Digite os dados solicitados, depois clique no boto Enviar:</P>
8 <FORM action= id=FORM1 method=post name=FORM1>
9 <P>Nome: <INPUT type=text id=nome name=nome maxlength=20 ></P>
10 <P>Endereo: <INPUT type=text id=endereco name=endereco maxlength=20 ></P>
11 <P>Senha: <INPUT type=password id=senha name=senha maxLength=10></P>
12 </FORM>
13 </BODY>
14 </HTML>
Na linha 11, temos o cdigo HTML, que cria o campo para a digitao de senha. A Figura 2.5,
mostra este formulrio, sendo visualizado no Internet Explorer, j com os dados digitados
pelo usurio.
Atributo Descrio
SIZE Determina o tamanho do campo que ser exibido no
navegador.
MAXSIZE Tamanho mximo de caracteres do campo. MAXSIZE
pode ser maior do que SIZE. Neste caso o navegador
rola o contedo do campo, quando o mesmo atingir o
nmero de caracteres definido por SIZE.
NAME o nome associado ao campo, o qual ser utilizado pela
pgina ASP, para fazer referncia ao campo.
VALUE o valor padro do campo. Normalmente deixado em
branco.
ID Utilizado por linguagens de script, como o VBScript.
Criando Sites Dinmicos com ASP 3.0
6 6
Figura 2.5: O campo par a senha exibe soment e ast er iscos ( * ) .
Cr iando um Check Box a t ag < INPUT TYPE= CHECKBOX >
A tag <INPUT TYPE=CHECKBOX> cria um pequeno quadradinho, conhecido como Check
Box. Um Check Box, pode estar em dois estados: marcado ou desmarcado. Normalmente
utilizado para a entrada de dados. Por exemplo, voc pode estar utilizando um formulrio
para pesquisa, no qual podem existir questes que permitam a escolha de mais do que uma
alternativa. Neste caso, a utilizao de vrias tags do tipo Check Box o mais indicado. Esta
tag possui os seguintes atributos.
Tabela 2.3 Atributos da tag <INPUT TYPE=CHECKBOX>.
Atributo Descrio
TYPE Indica o tipo do campo, neste caso, utilizamos
CHECKBOX.
CHECKED Indica se o Check Box est, inicialmente, marcado ou no.
NAME o nome associado ao campo, o qual ser utilizado pela
pgina ASP, para fazer referncia a este campo.
ID Utilizado por linguagens de script, como o VBScript.
VALUE o valor de retorno do campo, caso o Check Box seja marcado.
6 7
Captulo 2 Uma Introduo ao VBScript
Na Listagem 2.8, temos um exemplo de criao de um formulrio com a utilizao de vrios
Check Box.
Listagem 2.8 Um formulrio com vrios Check Box.
1 <HTML>
2 <HEAD>
3 <META NAME=GENERATOR Content=Microsoft Front Page 4.0>
4 <TITLE></TITLE>
5 </HEAD>
6 <BODY>
7 <P>Digite os dados solicitados, depois clique no boto Enviar:</P>
8 <FORM action= id=FORM1 method=post name=FORM1>
9 <P>Nome: <INPUT type=text id=nome name=nome maxlength=20 ></P>
10 <P>Endereo: <INPUT type=text id=endereco name=endereco maxlength=20 ></P>
11 <P>Senha: <INPUT type=password id=senha name=senha maxLength=10></P>
12 <P>Certificaes:
13 <INPUT id=MCP name=MCP type=checkbox value=MCP> MCP
14 <INPUT id=MCSE name=MCSE type=checkbox value=MCSE>MCSE
15 <INPUT id=MCDBA name=MCDBA type=checkbox value=MCDBA>MCDBA
16 <INPUT id=MCSD name=MCSD type=checkbox value=MCSD>MCSD</P>
17 </FORM>
18 </BODY>
19 </HTML>
Nas linhas de 13 a 16, temos o cdigo HTML que cria os diversos Check Box. Quando o
usurio seleciona um determinado Check Box, o valor do atributo value associado com o
Check Box, que, por sua vez, pode ser armazenado em um campo de uma tabela do banco de
dados, pela pgina ASP, responsvel pelo processamento dos dados do formulrio. A Figura
2.6 mostra este formulrio, sendo visualizado no Internet Explorer, onde o usurio digitou
dados nos campos e marcou alguns dos Check Box disponveis. Observe que mais do que um
Check Box pode ser marcado.
Criando Sites Dinmicos com ASP 3.0
6 8
Figura 2.6: O usur io selecionou vr ios Check Box.
Cr iando um Conjunt o de Radio But t ons a t ag < INPUT TYPE= RADIO >
A tag <INPUT TYPE=RADIO> cria um Radio Button. Um Radio Button pode estar em
dois estados: marcado ou desmarcado. Utilizamos estes elementos em grupos. A caracterstica
de um grupo de Radio Buttons que somente um dos Radio Button do grupo pode estar
selecionado. Se voc clicar em um Radio Button que no est selecionado, este ser
selecionado, e o que estava selecionado ser desmarcado. Para criar um grupo de Radio Buttons,
bastante simples, basta atribuir o mesmo valor para o atributo name, para todos os Radio
Buttons, que faro parte do grupo. Desta maneira, de todos os Radio Buttons que tiverem o
mesmo nome, somente um poder estar selecionado em um determinado momento. Esta tag
possui os atributos descritos na Tabela 2.4.
Tabela 2.4 Atributos da tag <INPUT TYPE=RADIO>.
Atributo Descrio
TYPE Indica o tipo do campo, neste caso, utilizamos RADIO.
NAME o nome associado a todos os Radio Buttons que fazem
parte do mesmo grupo, o qual ser utilizado pela pgina
ASP, para fazer referncia ao campo.
6 9
Captulo 2 Uma Introduo ao VBScript
Na Listagem 2.9, temos um exemplo de criao de um formulrio com a utilizao de um
grupo de Radio Buttons, para a seleo do tipo de carto de crdito.
Listagem 2.9 Um formulrio com um grupo de Radio Buttons.
1 <HTML>
2 <HEAD>
3 <META NAME=GENERATOR Content=Microsoft Front Page 4.0>
4 <TITLE></TITLE>
5 </HEAD>
6 <BODY>
7 <P>Digite os dados solicitados, depois clique no boto Enviar:</P>
8 <FORM action= id=FORM1 method=post name=FORM1>
9 <P>Nome: <INPUT type=text id=nome name=nome maxlength=20 ></P>
10 <P>Endereo: <INPUT type=text id=endereco name=endereco maxlength=20 ></P>
11 <P>Senha: <INPUT type=password id=senha name=senha maxLength=10></P>
12 <P>Certificaes:
13 <INPUT id=MCP name=MCP type=checkbox value=MCP>MCP
14 <INPUT id=MCSE name=MCSE type=checkbox value=MCSE>MCSE
15 <INPUT id=MCDBA name=MCDBA type=checkbox value=MCDBA>MCDBA
16 <INPUT id=MCSD name=MCSD type=checkbox value=MCSD>MCSD</P>
17 <P>Selecione o Carto de Crdito:</P>
18 <P>
19 <INPUT id=cartao name=cartao type=radio value=Visa>Visa
20 <INPUT id=cartao name=cartao type=radio value=Master Card>Master Card
21 <INPUT id=cartao name=cartao type=radio value=Outros>Outros
22 </P>
23 </FORM>
24 </BODY>
25 </HTML>
Atributo Descrio
ID Utilizado por linguagens de script, como o VBScript.
VALUE o valor de retorno do campo, caso o Radio Button seja
marcado.
Criando Sites Dinmicos com ASP 3.0
7 0
Nas linhas de 19 a 21, temos o cdigo HTML que cria os diversos Radio Buttons. Quando o
usurio seleciona um dos Radio Buttons, o valor do atributo value associado com o grupo
de Radio Buttons, que, por sua vez, pode ser armazenado em um campo de uma tabela do
banco de dados, pela pgina ASP responsvel pelo processamento dos dados do formulrio.
A Figura 2.7 mostra este formulrio, sendo visualizado no Internet Explorer, onde o usurio
digitou dados nos campos e marcou uma das opes disponveis para o carto de crdito.
Nunca demais lembrar que o usurio somente conseguir marcar uma das opes.
Figura 2.7: O usur io soment e consegue selecionar uma
das opes par a o car t o de cr dit o.
Cr iando um Campo Par a Digit ao de Coment r ios
e Text os M aior es a t ag < TEXTAREA> < /TEXTAREA>
A tag <TEXTAREA> </TEXTAREA> cria um campo para a digitao de quantidades maiores
de texto no formulrio. Por exemplo, pode ser um campo para digitao de comentrios,
crticas e sugestes, ou um campo para detalhar a descrio de um produto, no caso de uma
pgina que apresenta um catlogo de produtos. Esta tag possui os seguintes atributos.
7 1
Captulo 2 Uma Introduo ao VBScript
Tabela 2.5 Atributos da tag <TEXTAREA> </TEXTAREA>.
Na Listagem 2.10, temos um exemplo de criao de um formulrio com a utilizao de um
campo para a digitao de sugestes e comentrios.
Listagem 2.10 Um formulrio com um campo para sugestes e comentrios.
1 <HTML>
2 <HEAD>
3 <META NAME=GENERATOR Content=Microsoft Front Page 4.0>
4 <TITLE></TITLE>
5 </HEAD>
6 <BODY>
7 <P>Digite os dados solicitados, depois clique no boto Enviar:</P>
8 <FORM action= id=FORM1 method=post name=FORM1>
9 <P>Nome: <INPUT type=text id=nome name=nome maxlength=20 ></P>
10 <P>Endereo: <INPUT type=text id=endereco name=endereco maxlength=20 ></P>
11 <P>Senha: <INPUT type=password id=senha name=senha maxLength=10></P>
12 <P>Certificaes:
13 <INPUT id=MCP name=MCP type=checkbox value=MCP>MCP
14 <INPUT id=MCSE name=MCSE type=checkbox value=MCSE>MCSE
15 <INPUT id=MCDBA name=MCDBA type=checkbox value=MCDBA>MCDBA
16 <INPUT id=MCSD name=MCSD type=checkbox value=MCSD>MCSD</P>
17 <P>Selecione o Carto de Crdito:</P>
18 <P>
19 <INPUT id=cartao name=cartao type=radio value=Visa>Visa
20 <INPUT id=cartao name=cartao type=radio value=Master Card>Master Card
Atributo Descrio
NAME o nome associado ao campo, o qual ser utilizado pela pgina
ASP, para fazer referncia ao campo.
ID Utilizado por linguagens de script, como o VBScript.
WRAP Determina se o texto deve trocar automaticamente de linha,
quando for atingido o tamanho limite do campo. O valor padro
para este campo SOFT.
Criando Sites Dinmicos com ASP 3.0
7 2
21 <INPUT id=cartao name=cartao type=radio value=Outros>Outros
22 </P>
23 <TEXTAREA id=coment name=coment wrap=SOFT> </TEXTAREA>
24 </FORM>
25 </BODY>
26 </HTML>
Na linha 23, temos o cdigo HTML, que cria o campo para a digitao do texto, para as
crticas e sugestes. A Figura 2.8 mostra este formulrio, sendo visualizado no Internet Explorer,
com as crticas e sugestes digitadas pelo usurio.
Figura 2.8: O usur io digit a suas cr t icas e sugest es.
Cr iando uma List a de Opes ( Caixa de Combinao) a t ag
< SELECT> < /SELECT> em Combinao com < OPTION> < /OPTION>
A tag <SELECT></SELECT> cria a lista, e as tags <OPTION></OPTION> definem os
elementos da lista. Esta lista chamada de Caixa de combinao, na qual apresentada uma
7 3
Captulo 2 Uma Introduo ao VBScript
lista de valores, dentre os quais o usurio pode clicar selecionando uma ou mais opes. Cada
opo (definida pela tag <OPTION></OPTION>) possui um valor que exibido na lista, e um
valor associado, caso esta opo seja selecionada. Este valor associado que ser armazenado
no banco de dados, pela pgina ASP. Veja os principais atributos da tag <SELECT></SELECT>.
Tabela 2.6 Atributos da tag <SELECT></SELECT>.
Na Listagem 2.11, temos um exemplo de um formulrio com a criao de uma lista bairro,
com trs valores possveis.
Listagem 2.11 Um formulrio com uma Caixa de combinao bairro.
1 <HTML>
2 <HEAD>
3 <META NAME=GENERATOR Content=Microsoft Front Page 4.0>
4 <TITLE></TITLE>
5 </HEAD>
6 <BODY>
7 <P>Digite os dados solicitados, depois clique no boto Enviar:</P>
8 <FORM action= id=FORM1 method=post name=FORM1>
9 <P>Nome: <INPUT type=text id=nome name=nome maxlength=20 ></P>
10 <P>Endereo: <INPUT type=text id=endereco name=endereco maxlength=20 ></P>
11 <P>Senha: <INPUT type=password id=senha name=senha maxLength=10></P>
12 <P>Selecione o bairro:
13 <SELECT id=bairro name=bairro>
14 <OPTION selected value=CENTRO>CENTRO</OPTION>
15 <OPTION value=CAMOBI>CAMOBI</OPTION>
16 <OPTION value=DORES>DORES</OPTION>
17 </SELECT>
18 </P>
19 <P>Certificaes:
20 <INPUT id=MCP name=MCP type=checkbox value=MCP>MCP
21 <INPUT id=MCSE name=MCSE type=checkbox value=MCSE>MCSE
Atributo Descrio
NAME o nome associado lista, o qual ser utilizado pela
pgina ASP, para fazer referncia ao campo.
ID Utilizado por linguagens de script, como o VBScript.
MULTIPLE Pode ser True ou False. Caso seja True, permite que sejam
selecionados mltiplo itens.
Criando Sites Dinmicos com ASP 3.0
7 4
22 <INPUT id=MCDBA name=MCDBA type=checkbox value=MCDBA>MCDBA
23 <INPUT id=MCSD name=MCSD type=checkbox value=MCSD>MCSD</P>
24 <P>Selecione o Carto de Crdito:</P>
25 <P>
26 <INPUT id=cartao name=cartao type=radio value=Visa>Visa
27 <INPUT id=cartao name=cartao type=radio value=Master Card>Master Card
28 <INPUT id=cartao name=cartao type=radio value=Outros>Outros
29 </P>
30 <TEXTAREA id=coment name=coment wrap=SOFT> </TEXTAREA>
31 </FORM>
32 </BODY>
33 </HTML>
Nas linhas 13 a 17, temos o cdigo HTML que cria a Caixa de combinao. Na primeira opo
<OPTION selected value=CENTRO>CENTRO</OPTION>, a palavra selected, indica que
esta opo deve estar selecionada por padro. A Figura 2.9 mostra este formulrio, com a
opo DORES sendo selecionada na Caixa de combinao bairros.
Figura 2.9: Selecionando uma opo, na Caixa de combinao.
7 5
Captulo 2 Uma Introduo ao VBScript
Finalizando o For mulr io com os Bot es Enviar Dados e Limpar Dados
as Tags < INPUT TYPE= SUBM IT > e < INPUT TYPE= CLEAR >
Todo formulrio deve ter um boto do tipo Submit. Ao clicar neste boto, chamada a pgina
ASP (ou outro endereo indicado), indicada no atributo action do formulrio. A pgina ASP
processa os dados enviados pelo formulrio HTML, podendo, por exemplo, adicionar os dados
digitados em uma tabela de um banco de dados. Na Tabela 2.7, temos os atributos para um
boto do tipo Submit.
Tabela 2.7 Atributos da tag <INPUT TYPE=SUBMIT>.
Atributo Descrio
TYPE Deve ser definido como Submit.
NAME Utilizado por linguagens de script, como o VBScript.
ID Utilizado por linguagens de script, como o VBScript.
VALUE o texto que ser exibido no boto.
Embora no seja de uso obrigatrio, bastante comum termos um boto do tipo Reset. Ao
clicar neste boto, todos os campos do formulrio so apagados. O projetista da aplicao
Web quem ir definir a necessidade, ou no, da utilizao de um boto do tipo Reset. Na
Tabela 2.8, temos os atributos para um boto do tipo Reset.
Tabela 2.8 Atributos da tag <INPUT TYPE=RESET>.
Na Listagem 2.12, completamos o nosso formulrio de exemplo, com a adio de um boto
do tipo Submit e outro boto do tipo Reset.
Listagem 2.12 O formulrio completo, com os botes do tipo Submit e Reset j includos.
1 <HTML>
2 <HEAD>
Atributo Descrio
TYPE Deve ser definido como Reset.
NAME Utilizado por linguagens de script, como o VBScript.
ID Utilizado por linguagens de script, como o VBScript.
VALUE o texto que ser exibido no boto.
Criando Sites Dinmicos com ASP 3.0
7 6
3 <META NAME=GENERATOR Content=Microsoft Front Page 4.0>
4 <TITLE></TITLE>
5 </HEAD>
6 <BODY>
7 <P>Digite os dados solicitados, depois clique no boto Enviar dados.</P>
8 <FORM action= id=FORM1 method=post name=FORM1>
9 <P>Nome: <INPUT type=text id=nome name=nome maxlength=20 ></P>
10 <P>Endereo: <INPUT type=text id=endereco name=endereco maxlength=20 ></P>
11 <P>Senha: <INPUT type=password id=senha name=senha maxLength=10></P>
12 <P>Selecione o bairro:
13 <SELECT id=bairro name=bairro>
14 <OPTION selected value=CENTRO>CENTRO</OPTION>
15 <OPTION value=CAMOBI>CAMOBI</OPTION>
16 <OPTION value=DORES>DORES</OPTION>
17 </SELECT>
18 </P>
19 <P>Certificaes:
20 <INPUT id=MCP name=MCP type=checkbox value=MCP> MCP
21 <INPUT id=MCSE name=MCSE type=checkbox value=MCSE>MCSE
22 <INPUT id=MCDBA name=MCDBA type=checkbox value=MCDBA>MCDBA
23 <INPUT id=MCSD name=MCSD type=checkbox value=MCSD>MCSD</P>
24 <P>Selecione o Carto de Crdito:</P>
25 <P>
26 <INPUT id=cartao name=cartao type=radio value=Visa>Visa
27 <INPUT id=cartao name=cartao type=radio value=Master Card>Master Card
28 <INPUT id=cartao name=cartao type=radio value=Outros>Outros
29 </P>
30 <TEXTAREA id=coment name=coment wrap=SOFT> </TEXTAREA>
31 <P>
32 <INPUT id=Enviar name=Enviar type=submit value=Enviar dados>
7 7
Captulo 2 Uma Introduo ao VBScript
33 <INPUT id=Limpar name=Limpar type=reset value=Limpar dados>
34 </P>
35 </FORM>
36 </BODY>
37 </HTML>
Nas linhas 32 e 33, temos o cdigo HTML que cria os botes Enviar dados e Limpar dados,
respectivamente. A Figura 2.10, mostra o nosso formulrio de exemplo, j completo.
Figura 2.1 0: O for mulr io de exemplo, j complet o.
Com isso conclumos a nossa reviso, sobre HTML. Esta reviso fez-se necessria, pois, ao
longo de todo livro, estaremos utilizando formulrios HTML, em conjunto com pginas ASP.
No restante deste captulo, e no seguinte, estarei apresentando os fundamentos do VBScript.
Criando Sites Dinmicos com ASP 3.0
7 8
Declar ao e Ut ilizao de Var iveis no VBScr ipt
O que uma Var ivel ?
Uma varivel um espao da memria do computador, reservado para armazenar valores.
Este espao de memria ligado ao nome da varivel. Na maioria das aplicaes, faz-se
necessrio o uso de variveis. Por exemplo, voc desenvolve uma pgina para realizar clculos
financeiros, como por exemplo, emprstimos de longo prazo. O usurio digita um valor para
o emprstimo e o prazo desejado. Com base na taxa de juros utilizada, feito o clculo das
prestaes. Os valores digitados pelo usurio precisam estar disponveis no momento do
clculo. A maneira de manter estes dados disponveis atravs da utilizao de variveis.
Quando o usurio digita o valor do emprstimo desejado, este valor armazenado em uma
varivel, para utilizao no momento de realizao dos clculos.
Estaremos utilizando variveis ao longo de todo livro. Este um conceito existente em todas as
linguagens de programao, como por exemplo em Visual Basic, C, C++, e assim por diante.
Inser indo Cdigo VBScr ipt
Antes de continuarmos com variveis, vamos aprender a inserir cdigo VBScript em uma pgina
HTML. Existem marcadores especiais, que indicam o incio e o fim de um cdigo VBScript.
Para inserir cdigo VBScript, utilizamos a tag <SCRIPT>, conforme indicado abaixo:
<SCRIPT LANGUAGE=vbscript>
<!
Aqui vamos inserir o cdigo VBScript.
>
</SCRIPT>
NOTA
Observe a utilizao do atributo LANGUAGE. Este atributo define qual a linguagem de script
que ser utilizada. Alm do VBScript, poderamos utilizar o JavaScript. Neste livro, estaremos
utilizando VBScript.
NOTA
A utilizao de <! , no incio do cdigo, e de >, no final do cdigo, no obrigatria. Estas
so as tags para comentrios em pginas HTML. No entanto, recomendvel que se utilize
estas tags. Os navegadores mais antigos, tais como Internet Explorer 1.0, no reconhecem
VBScript; se no utilizarmos as tags de comentrio, o cdigo VBScript ser exibido como se
7 9
Captulo 2 Uma Introduo ao VBScript
fosse texto, o que no desejvel. Com a utilizao das tags de comentrio, garantimos que os
navegadores que no entendem VBScript, simplesmente ignorem o cdigo.
Na Listagem 2.13, temos um exemplo simples da insero de um script em um pgina HTML.
Listagem 2.13 Um exemplo simples de VBScript.
1. <HTML>
2 <HEAD>
3 <TITLE>Um exemplo simples de VBScript !!!</TITLE>
4 </HEAD>
5 <BODY>
6 <SCRIPT LANGUAGE=vbscript>
7 <!
8 x=Date()
9 MsgBox x
10 >
11 </SCRIPT>
12 <P>UM EXEMPLO SIMPLES DE VBScript !!!</P>
13 </BODY>
14 </HTML>
Nas linhas 8 e 9, que temos o cdigo VBScript, propriamente dito. No se preocupe com o
cdigo, neste momento. Neste e no prximo captulo, veremos detalhes sobre a utilizao de
funes, tais como Date( ) e MsgBox. Ao abrir esta pgina no Internet Explorer, ser aberta
uma janela, na qual exibida a data do sistema, conforme indicado na Figura 2.11.
Figura 2.1 1 : M ensagem exibida pelo cdigo VBScr ipt .
Declar ao e Tipo de Var ivel
No VBScript no obrigatria a declarao de variveis. Porm recomendvel que declaremos
todas as variveis, de tal forma que o cdigo fique mais claro e de fcil compreenso. Para
declararmos uma varivel, utilizamos o comando Dim, conforme exemplificado a seguir:
Criando Sites Dinmicos com ASP 3.0
8 0
Dim x
Dim nome
Dim teste
O formato geral para o comando Dim : Dim nome_da_varivel. Tambm podemos declarar
mais do que uma varivel, com um nico comando Dim. Para isto, basta separar as variveis,
com vrgula, conforme exemplificado a seguir:
Dim x,y,z
Dim nome
Dim teste1,teste2
IMPORTANTE
Observe que definimos o tipo de cada varivel. O tipo define quais dados podem ser
armazenados em uma varivel. Por exemplo, variveis que armazenam valores numricos, no
devem aceitar caracteres de texto. Variveis que armazenam datas, no devem aceitar datas
invlidas, como por exemplo 30/02/2000. Toda varivel no VBScript do tipo Variant, isto significa
que a varivel pode ser de qualquer tipo. O que define o tipo da varivel o valor que est
armazenado no momento. Existem funes de converso de tipo, conforme veremos mais adiante.
Tambm podemos utilizar variveis que no foram, explicitamente, declaradas com o comando
Dim. Com isso, a varivel criada na memria, no momento da sua utilizao.
Na Listagem 2.14, temos um exemplo simples de utilizao de variveis no declaradas
explicitamente.
Listagem 2.14 Utilizao de variveis no declaradas.
1 <HTML>
2 <HEAD>
3 <TITLE>Um exemplo simples de VBScript !!!</TITLE>
4 </HEAD>
5 <BODY>
6 <SCRIPT LANGUAGE=vbscript>
7 <!
8 a=5
9 b=2
10 c=a+b
11 Msgbox A varivel C vale: & c
12 >
13 </SCRIPT>
14 <P>Exemplo de utilizao de variveis.</P>
8 1
Captulo 2 Uma Introduo ao VBScript
Figura 2.1 2: M ensagem exibida pelo cdigo VBScr ipt .
Podemos fazer com que seja obrigatria a declarao de todas as variveis. Para isso, basta
utilizar o comando Option Explicit. Este comando deve ser inserido, bem no incio do bloco
de script, antes de qualquer procedimento. Veremos mais sobre procedimentos, no prximo
captulo. Caso voc utilize este comando, variveis no declaradas, sero simplesmente
ignoradas, no sendo gerada nenhuma mensagem de erro. Porm os valores que dependem
das variveis no declaradas, no sero corretamente calculados.
Na Listagem 2.15, acrescentamos a opo Option Explicit.
Listagem 2.15 Tornando obrigatria a declarao de variveis.
1 <HTML>
2 <HEAD>
3 <TITLE>Um exemplo simples de VBScript !!!</TITLE>
4 </HEAD>
5 <BODY>
6 <SCRIPT LANGUAGE=vbscript>
7 <!
8 Option Explicit
9 a=5
11 b=2
12 c=a+b
13 Msgbox A varivel C vale: & c
14 >
15 </SCRIPT>
16 <P>Exemplo de utilizao de variveis.</P>
17 </BODY>
18 </HTML>
15 </BODY>
16 </HTML>
Ao abrir esta pgina no Internet Explorer, ser aberta uma janela, conforme indicado na
Figura 2.12.
Criando Sites Dinmicos com ASP 3.0
8 2
Ao abrir esta pgina no Internet Explorer, no ser exibida a janela indicada na Figura 2.12;
isto porque as variveis a, b e c no foram declaradas. Uma vez que a declarao tornou-se
obrigatria, com a adio do comando Option Explicit, as variveis simplesmente no existem.
O Internet Explorer exibir somente o texto Exemplo de utilizao de variveis, conforme
indicado pela Figura 2.13.
Figura 2.1 3: As var iveis no declar adas for am ignor adas.
O tipo Variant formado de pequenas unidades, chamadas subtipos. Cada subtipo, identifica
de que maneira os dados so armazenados em uma varivel do tipo Variant. Por exemplo,
variveis do subtipo Integer so armazenadas de uma maneira diferente de variveis do subtipo
Long. Na Tabela 2.9, temos uma descrio dos principais subtipos.
Tabela 2.9 Subtipos do tipo Variant.
Subtipo Descrio
Empty O valor zero para variveis numricas ou uma string de
tamanho zero ( ), para variveis de texto.
Null A varivel no contm dados vlidos.
Boolean Contm variveis que somente podem assumir dois
valores: Verdadeiro ou Falso (True ou False).
Byte Valor inteiro, na faixa de 0 at 255.
Integer Valor inteiro, na faixa de -32768 at 32767.
Currency Valores na faixa de 923.337.203.685.447,5808 at
922.337.203.685.447,5807
8 3
Captulo 2 Uma Introduo ao VBScript
Fazendo Clculos e Compar aes
com o VBScr ipt Oper ador es
Para realizarmos clculos e comparaes entre variveis, podemos utilizar operadores. Neste
item estaremos tratando sobre operadores aritmticos e operadores de comparao.
Fazendo Clculos com os Oper ador es Ar it mt icos
Podemos realizar clculos, utilizando operadores no VBScript. Na Tabela 2.10, temos uma
descrio dos operadores que podemos utilizar.
Tabela 2.10 Operadores do VBScript.
Subtipo Descrio
Long Valor inteiro, na faixa de 2.147.483.648 at
2.147.483.647.
Date(Time) um nmero que representa a data entre 01 de Janeiro
do ano 100, at 31 de Dezembro de 9999 (olha o bug do
ano 10000 chegando).
String Texto de tamanho varivel, pode conter,
aproximadamente, dois bilhes de caracteres.
Object Pode conter um objeto qualquer, como um Controle
ActiveX, ou um Objeto COM+.
Error Pode conter um nmero de erro.
Operador Smbolo Descrio
Adio + Soma o valor de duas ou mais variveis.
Subtrao - Subtrao entre duas ou mais variveis.
Multiplicao * Multiplica os valores de duas ou mais variveis.
Diviso / Divide o valor de duas ou mais variveis.
Inteiro da Diviso \ Retorna a parte inteira, da diviso entre dois
nmeros.
Criando Sites Dinmicos com ASP 3.0
8 4
Na Listagem 2.16, temos um exemplo, demonstrando o uso destes diversos operadores.
Listagem 2.16 Exemplo de utilizao dos operadores aritmticos.
1 <HTML>
2 <HEAD>
3 <TITLE>Um exemplo simples do uso de Operadores Aritmticos !!!</TITLE>
4 </HEAD>
5 <BODY>
6 <SCRIPT LANGUAGE=vbscript>
7 <!
8 Option Explicit
9 Dim a
10 Dim b
11 Dim som, subtr, divis, mult, intdivs, expo, modul
12 a=25
13 b=3
14 som=a+b
15 subtr=a-b
16 divis=a/b
17 mult=a*b
18 intdivs=a\b
19 expo=a^b
20 modul= a mod b
21 Uso de MsgBox para exibir os resultados.
22 MsgBox Os nmeros so: & a & e & b & Chr(13)
23 MsgBox Soma: & som & Chr(13)& Subtrao: & subtr & Chr(13)
24 MsgBox Diviso: & divis & Chr(13)& Multiplicao: & mult & Chr(13)
25 MsgBox Diviso inteira: & intdivs & Chr(13)& Exponenciao: & expo & Chr(13)
26 MsgBox Resto da diviso: & modul
Operador Smbolo Descrio
Exponenciao ^ x^y o valor do nmero x, elevado na
potncia y.
Mdulo Mod Retorna o resto de uma diviso de dois nmeros.
8 5
Captulo 2 Uma Introduo ao VBScript
27 >
28 </SCRIPT>
29 <P>Exemplo de utilizao de Operadores Aritmticos.</P>
30 </BODY>
31 </HTML>
Neste exemplo, nas linhas de 14 a 20, utilizamos os operadores aritmticos, para realizar
uma srie de operaes com os valores atribudos s variveis a e b. Depois, da linha 22
at a 26, utilizamos a funo MsgBox, para exibir os resultados obtidos. O uso da funo
MsgBox merece alguns comentrios. Primeiro, utilizamos a funo MsgBox para exibir
mensagens em uma pequena janela, chamada de janela pop-up. Podemos exibir texto e tambm
valores de variveis. Quando temos que exibir diversos componentes, como um pouco de
texto, em seguida o valor de uma varivel, depois mais texto, e assim por diante, devemos
utilizar o operador de concatenao &. Este operador permite que as diversas partes sejam
exibidas como uma nica mensagem. Considere o exemplo da linha 22:
22 MsgBox Os nmeros so: & a & e & b & Chr(13)
Neste exemplo, primeiro, exibido o texto Os nmeros so: , logo em seguida o valor da
varivel a. Observe que as duas partes so concatenadas com o operador &. Depois concatenamos
o valor da varivel b, e finalmente utilizamos a funo Chr(13). A funo Chr(nmero) envia o
caractere correspondente ao nmero digitado entre parnteses. Este nmero o nmero do
caractere no padro ASCII (American Standard Caracter Interchange Information). No cdigo
ASCII, cada caractere possui um nmero associado; o nmero 13, associado ao <ENTER>.
Com isso, estamos enviando um <ENTER> para a caixa de mensagem, o que equivale a uma
troca de linha. Portanto, utilizamos o Chr(13) para simular um <ENTER>, de tal maneira que
os dados no saiam todos emendados, na mesma linha. Ao abrir a pgina da Listagem 2.16,
no Internet Explorer, o cdigo da linha 22, produz a mensagem da Figura 2.14.
Figura 2.1 4: M sgBox da linha 2 2 .
Ao clicar em OK, uma nova mensagem exibida, devido a funo MsgBox da linha 23. O
cdigo da linha 23, produz a mensagem da Figura 2.15.
Criando Sites Dinmicos com ASP 3.0
8 6
Figura 2.1 5: M sgBox da linha 2 3 .
Ao clicar em OK, uma nova mensagem exibida, devido a funo MsgBox da linha 24. O
cdigo da linha 24, produz a mensagem da Figura 2.16.
Figura 2.1 6: M sgBox da linha 2 4 .
Ao clicar em OK, uma nova mensagem exibida, devido a funo MsgBox da linha 25. O
cdigo da linha 25, produz a mensagem da Figura 2.17.
Figura 2.1 7: M sgBox da linha 2 5 .
Ao clicar em OK, uma nova mensagem exibida, devido a funo MsgBox da linha 26. O
cdigo da linha 26, produz a mensagem da Figura 2.18.
8 7
Captulo 2 Uma Introduo ao VBScript
Figura 2.1 8: M sgBox da linha 2 6 .
Com o uso de operadores, podemos realizar uma srie de operaes sobre as variveis existentes
no script.
Compar ando Valor es com os Oper ador es de Compar ao
Em determinadas situaes, existe a necessidade de efetuarmos comparaes entre os valores
de duas variveis ou expresses. Com base no resultado da comparao Verdadeiro ou Falso
, o nosso script pode seguir caminhos diferentes. Normalmente utilizamos comparaes,
nas estruturas de controle do script, tambm conhecidas como laos de controle. Para que
possamos estudar os operadores de comparao, vamos apresentar uma das estruturas de
controle mais simples que existem no VBScript, a estrutura If Then Else. Abaixo temos um
exemplo do funcionamento da estrutura If Then Else:
If x>y Then
Comandos a serem executados quando x for maior do que y
Else
Comandos a serem executados quando x for menor do que y
End If
Conforme podemos ver, a estrutura If Then Else bastante simples. Fazemos um teste no
incio da estrutura. Se o valor do teste for verdadeiro, executamos os comandos na seqncia,
caso contrrio, executamos os comandos aps o Else. Note que utilizamos o operador de
comparao maior do que >, no caso x>y, estamos testando se x maior do que y. Observe
que no exemplo acima, no sero executados comandos, caso x seja igual a y. Podemos utilizar
laos If Then Else mais complexos, como os do exemplo:
If x>y Then
Comandos a serem executados quando x for maior do que y
ElseIf x=y Then
Comandos a serem executados quando x for igual a y
Else
Comandos a serem executados quando x for menor do que y
End If
Criando Sites Dinmicos com ASP 3.0
8 8
Podemos utilizar tantos ElseIf, quantos forem necessrios.
Na Tabela 2.11, temos uma descrio dos operadores que podemos utilizar.
Tabela 2.11 Operadores de comparao do VBScript.
Na Listagem 2.17, temos um exemplo, demonstrando o uso destes diversos operadores.
Listagem 2.17 Exemplo de utilizao dos operadores de comparao.
1 <HTML>
2 <HEAD>
3 <TITLE>Exemplo de utilizao dos operadores de comparao.</TITLE>
4 </HEAD>
5 <BODY>
6 <SCRIPT LANGUAGE=vbscript>
7 <!
8 Option Explicit
9 Dim x,y,z,k
10 x=12
11 y=15
12 z=20
13 k=15
14 If x<y Then
15 MsgBox x menor do que y.
16 Else
Descrio Smbolo Descrio
Igualdade = igual a.
Desigualdade <> diferente de.
Maior que > maior do que.
Menor que < menor do que.
Maior ou igual >= maior ou igual a.
Menor ou igual <= menor ou igual a.
8 9
Captulo 2 Uma Introduo ao VBScript
17 MsgBox x maior do que y.
18 End If
19 If y<x Then
20 MsgBox y menor do que x
21 Else
22 MsgBox y maior do que x
23 End If
24 If y<=k Then
25 MsgBox y menor ou igual a k
26 Else
27 MsgBox y maior do que k
28 End If
29 If x<>z Then
30 MsgBox x e z so diferentes
31 End If
32 >
33 </SCRIPT>
34 <P>EXEMPLO DE OPERADORES DE COMPARAO:</P>
35 </BODY>
36 </HTML>
Ao carregarmos a pgina de exemplo da Listagem 2.17, no Internet Explorer, veremos uma
seqncia de mensagens, produzidas pela funo MsgBox. Na seqncia, descrevo cada uma
destas mensagens.
O cdigo das linhas 14 at 18 produz a mensagem indicada na Figura 2.19, pois x menor
do que y.
Figura 2.1 9: M sgBox pr oduzida pela linha 1 5 , uma vez
que x menor do que y.
Criando Sites Dinmicos com ASP 3.0
9 0
Ao clicar em OK, uma nova mensagem exibida, devido a funo MsgBox da linha 22. Como
o teste y<x falso, no executada a linha 20, mas sim a linha 22. O cdigo da linha 22
produz a mensagem da Figura 2.20.
Figura 2.20: M sgBox pr oduzida pela linha 2 2 ,
uma vez que y no menor do que x.
Ao clicar em OK, uma nova mensagem exibida, devido a funo MsgBox da linha 25. Como
o teste y<=k verdadeiro (pois os valores de y e de k so iguais), executada a linha 25. O
cdigo da linha 25 produz a mensagem da Figura 2.21.
Figura 2.21 : M sgBox pr oduzida pela linha 2 5 ,
uma vez que y igual a k.
Ao clicar em OK, uma nova mensagem exibida, devido a funo MsgBox da linha 30. Como o
teste x<>z verdadeiro, executada a linha 30, este cdigo produz a mensagem da Figura 2.22.
Figura 2.22: M sgBox pr oduzida pela linha 3 0 , uma
vez que x difer ent e de z.
9 1
Captulo 2 Uma Introduo ao VBScript
O uso de operadores de comparao amplia o leque de possibilidades para nossos scripts.
Devemos ter alguns cuidados quando comparamos variveis que possuem valores de tipos
diferentes, como por exemplo, nmero e texto. A Tabela 2.12 descreve o que acontece, quando
comparamos variveis com valores de tipos diferentes.
Tabela 2.12 Comparando valores de tipos diferentes.
Com a utilizao dos operadores aritmticos e de comparao, ampliamos bastante o leque
de opes na criao de scripts com o VBScript. No prximo item, veremos alguns detalhes
sobre Escopo de variveis.
O Escopo das Var iveis, no VBScr ipt
O escopo de uma varivel define em que partes do cdigo de um script a varivel pode ser
utilizada. Em VBScript, podemos ter dois escopos para as variveis:
Escopo de script: Uma varivel declarada dentro do script, mas fora de qualquer
procedimento. Com isso a varivel pode ser utilizada dentro de todo o bloco de cdigo
do script, inclusive dentro dos procedimentos, caso exista algum. Uma varivel
declarada em nvel de script, existe enquanto o mesmo estiver sendo executado. Quando
falamos de script, no um nico bloco de script, pois sabemos que uma pgina pode
conter mais do que um bloco. Uma varivel declarada em nvel de script, poder ser
utilizada em todos os blocos de script da pgina.
Comparao Resultado
Entre duas variveis com valores numricos. Comparao normal.
Entre duas variveis com valores de texto. efetuada uma comparao entre
valores de texto. Por exemplo Xuxa
maior do que Abel.
Uma das variveis possui um valor numrico O valor numrico sempre considerado
e a outra possui texto. menor do que o texto.
Uma das variveis possui um valor numrico Efetua uma comparao numrica, sem
e a outra esta vazia, atribuindo 0, para a valor.
varivel vazia.
Uma das variveis possui um valor de texto Efetua uma comparao de texto, sem
e a outra esta vazia, atribuindo texto de valor.
comprimento zero ( ), para a varivel vazia.
As duas variveis possuem um valor vazio. Ambas so consideradas iguais.
Criando Sites Dinmicos com ASP 3.0
9 2
Escopo de procedimento: A varivel somente pode ser utilizada dentro do procedimento
onde a mesma declarada. Se tentarmos utilizar a varivel fora do procedimento,
onde foi declarada, no teremos acesso a mesma. Uma varivel declarada em nvel de
procedimento existe enquanto o procedimento estiver sendo executado.
NOTA
Um procedimento um bloco de cdigo que pode ser chamado em qualquer ponto do script.
Ao chamarmos um procedimento, a execuo deslocada para dentro do procedimento. Aps
concludo o procedimento, a execuo segue com a linha seguinte que chamou o procedimento.
Veremos maiores detalhes sobre procedimentos e funes no final deste captulo.
Vamos analisar o exemplo da Listagem 2.18, para entendermos melhor este conceito de escopo
de uma varivel. Neste exemplo, tambm estaremos introduzindo um conceito muito
importante, o conceito de evento e procedimentos que executam cdigo em resposta a eventos.
Listagem 2.18 Exemplo para anlise do escopo de variveis.
1 <HTML>
2 <HEAD>
3 <TITLE>Analisando o escopo de variveis !!!</TITLE>
4 <SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>
5 <!
6 No evento onclick, do boto analisar,
7 chamamos o procedimento proc1.
8 Sub analisar_onclick
9 Call proc1
10 End Sub
11 >
12 </SCRIPT>
13 </HEAD>
14 <BODY>
15 <SCRIPT LANGUAGE=vbscript>
16 <!
17 As variveis declaradas abaixo
18 Sero visveis em todo o script
9 3
Captulo 2 Uma Introduo ao VBScript
19 Dim x, y
20 x=10
21 y=20
22 Agora vamos criar um procedimento
23 E declarar duas variveis dentro deste procedimento.
24 Estas variveis somente sero visveis,
25 Dentro deste procedimento.
26 Sub proc1()
27 Dim a, b
28 a=5
29 b=7
30 MsgBox x= & x & y= & y & a= & a & b= & b
31 End Sub
32 Agora vamos tentar utilizar os valores de a e b
33 Fora do procedimento proc1.
34 Observe que a varivel aux1 no calculada
35 corretamente, uma vez que os valores de a e b
36 no esto disponveis, fora do procedimento proc1.
37 aux1=a+b
38 MsgBox aux1= & aux1
39 >
40 </SCRIPT>
41 <P>EXEMPLO PARA ANLISE DO ESCOPO DE VARIVIES.</P>
42 <P>CLIQUE NO BOTO ANALISAR - >>
43 <INPUT id=analisar name=analisar type=button value=analisar></P>
44 </BODY>
45 </HTML>
Vamos analisar uma srie de detalhes sobre esta listagem.
Na linha 43, temos a tag INPUT, com type=button, esta tag insere um boto de
comando, no qual o usurio pode clicar. Na Figura 2.23, podemos ver a pgina com o
boto analisar.
Criando Sites Dinmicos com ASP 3.0
9 4
Figura 2.23: Bot o analisar, cr iado com a t ag < INPUT TYPE= BUTTON > .
Ao carregar esta pgina no Internet Explorer, sero executadas as linhas 37 e 38, pois
todo cdigo, que no estiver dentro de um procedimento, automaticamente executado
quando a pgina carregada. Este cdigo exibe o valor da varivel aux1. Porm,
conforme podemos notar na Figura 2.24, o valor exibido zero (e no 12 que seria a
soma de a=5 com b=7). Isto acontece porque as variveis a e b foram definidas
dentro do procedimento proc1, e somente existem quando o procedimento proc1 for
chamado. Neste caso, como no existem os valores, a varivel aux1 fica com o seu
valor inicial de quando foi declarada, que por padro do VBScript zero.
Figura 2.24: Var ivel aux1 , com seu valor zer ado.
Qualquer coisa que o usurio faa em uma pgina considerado um evento. Por
exemplo, quando o usurio clica no boto analisar, gerado o evento analisar_onclick.
Podemos escrever cdigo VBScript para qualquer evento, definido no modelo de eventos
do Internet Explorer. No nosso exemplo, nas linhas de 8 a 10, definimos cdigo em
9 5
Captulo 2 Uma Introduo ao VBScript
resposta ao evento onclick, do boto analisar. Quando o usurio clicar no boto analisar,
este evento gerado e o cdigo da linha 9 executado. Este cdigo chama o
procedimento proc1. Dentro do procedimento proc1, so definidas as variveis a e b
(linhas 27 a 29). Depois utilizado o comando MsgBox para exibir os valores das
variveis x, y, a e b. Como as variveis x e y foram declaradas em nvel de script, isto ,
fora de qualquer procedimento, as mesmas so acessveis em qualquer ponto do script.
Com isso a mensagem exibe os valores corretamente, conforme indicado na Figura
2.25. Veremos maiores detalhes sobre eventos e procedimentos no Captulo 4.
Figura 2.25: Var iveis em nvel de scr ipt so visveis em t oda a pgina.
Todas as linhas que iniciam com um apstrofe () so comentrios. Linhas de comentrios
servem para documentar nossos scripts, facilitando a interpretao dos mesmos.
Com esse exemplo foi possvel verificar, na prtica, o conceito de escopo (algumas vezes
chamado de visibilidade) das variveis. No prximo item, trataremos das estruturas e laos
de controle, que so elementos muito importantes na criao de scripts.
Est r ut ur as Par a Cont r ole de Fluxo em VBScr ipt
Para que possamos criar aplicaes com utilidade prtica, aplicadas na soluo de problemas
reais, precisamos poder controlar o fluxo de execuo de um script. No VBScript, temos
diversas estruturas que permitem um controle bastante eficaz do fluxo de execuo. Neste
item, estaremos estudando diversas destas estruturas.
Est r ut ur as de Deciso
Em um primeiro grupo, temos as chamadas estruturas de deciso. So estruturas que realizam
um teste lgico, e executam determinados comandos quando o teste resultar verdadeiro, ou
um conjunto diferente de comandos, quando o teste resultar falso. Agora passaremos a analisar
as estruturas de deciso, disponveis no VBScript.
Criando Sites Dinmicos com ASP 3.0
9 6
A Est r ut ur a If. . . Then
A estrutura If...Then uma das estruturas de deciso mais conhecidas. Toda linguagem
implementa esta estrutura. utilizada para executar determinados comandos, caso uma
condio seja verdadeira. A forma geral desta estrutura a seguinte:
If condio Then
Comandos a serem executados, caso a condio seja verdadeira.
End If
Uma condio testada; caso a condio seja verdadeira, um ou mais comandos podem ser
executados. Considere o exemplo da Listagem 2.19.
Listagem 2.19 Um exemplo simples da estrutura If...Then.
1 <SCRIPT LANGUAGE=vbscript>
2 <!
3 Dim x, y
4 x=10
5 y=15
6 If x<y Then
7 MsgBox x menor do que y
8 End If
9 >
10 </SCRIPT>
Neste exemplo, a mensagem x menor do que y, ser exibida, uma vez que o teste x<y
verdadeiro, conforme podemos constatar pelos valores atribudos s variveis x e y.
A Est r ut ur a If. . . Then. . . Else
A estrutura If...Then...Else, acrescenta mais uma possibilidade estrutura If...Then. utilizada
para executar determinados comandos, caso uma condio seja verdadeira, ou um conjunto
diferente de comandos, caso a condio seja falsa. A forma geral desta estrutura a seguinte:
If condio Then
Comandos a serem executados, caso a condio seja verdadeira.
Else
Comandos a serem executados, caso a condio seja falsa.
End If
9 7
Captulo 2 Uma Introduo ao VBScript
Uma condio testada; caso a condio seja verdadeira, um determinado comando, ou
conjunto de comandos ser executado; caso a condio seja falsa, um comando, ou conjunto
de comandos diferentes, ser executado. Considere o exemplo da Listagem 2.20.
Listagem 2.20 Um exemplo simples da estrutura If...Then...Else.
1 <SCRIPT LANGUAGE=vbscript>
2 <!
3 Dim x, y
4 x=15
5 y=10
6 If x<y Then
7 MsgBox x menor do que y
8 Else
9 MsgBox x maior do que y
10 End If
11 >
12 </SCRIPT>
Neste exemplo, a mensagem x maior do que y ser exibida, uma vez que o teste x<y
falso, conforme podemos constatar pelos valores atribudos s variveis x e y.
A Est r ut ur a If. . . Then. . . ElseIf. . . Else
A estrutura If...Then...ElseIf...Else nos d um poder maior, para testarmos diversas possibilida-
des. utilizada quando precisamos realizar mais do que um teste lgico. Neste caso, para cada
novo teste que se faa necessrio, utilizamos um ElseIf. A forma geral desta estrutura a seguinte:
If condio Then
Comandos a serem executados, caso a condio seja verdadeira.
ElseIf condio 2
Comandos a serem executados, caso a condio2 seja verdadeira.
ElseIf condio 3
Comandos a serem executados, caso a condio3 seja verdadeira.
...
ElseIf condio n
Comandos a serem executados, caso a condio n seja verdadeira.
Else
Comandos a serem executados, caso nenhuma das condies anteriores seja
verdadeira.
End If
Criando Sites Dinmicos com ASP 3.0
9 8
Uma condio testada; caso a condio seja verdadeira, um determinado comando, ou
conjunto de comandos ser executado; caso a condio seja falsa, podemos fazer um segundo
teste (condio 2). Caso a segunda condio seja verdadeira, um determinado comando, ou
conjunto de comandos ser executado, e assim por diante, para n condies. Caso nenhuma
das condies seja verdadeira, os comandos aps a clusula Else, sero executados. Considere
o exemplo da Listagem 2.21.
Listagem 2.21 Um exemplo simples da estrutura If...Then...ElseIf...Else.
1 <SCRIPT LANGUAGE=vbscript>
2 <!
3 Dim x, y
4 Dim z, k
5 Dim w, p
6 x=35
7 y=30
8 z=25
9 k=20
10 w=15
11 p=10
12 If x<y Then
13 MsgBox x menor do que y
14 ElseIf x<z Then
15 MsgBox x menor do que z
16 ElseIf x<k Then
17 MsgBox x menor do que k
18 ElseIf x<w Then
19 MsgBox x menor do que w
20 ElseIf x<p Then
21 MsgBox x menor do que p
22 Else
23 MsgBox x o maior dos nmeros
24 End If
25 >
26 </SCRIPT>
Neste exemplo, a mensagem x maior dos nmeros ser exibida, uma vez que todos os testes
falham (pois x o maior nmero). Ser executado o comando da linha 23, logo abaixo do Else.
Mas o que acontece, quando um dos ElseIf verdadeiro?
9 9
Captulo 2 Uma Introduo ao VBScript
Os teste vo sendo feitos. Quando o teste de um dos ElseIf for verdadeiro, os comandos abaixo
do ElseIf verdadeiro, sero executados e o lao ser encerrado. Em resumo, quando um dos
ElseIf apresentar um teste verdadeiros, os comandos relacionados sero executados, e os demais
no sero avaliados, seguindo a execuo para o primeiro comando, aps o End If.
A Est r ut ur a Select . . . Case
Quando precisamos realizar uma srie de testes, mais eficiente utilizarmos uma estrutura
Select...Case, do que utilizarmos uma srie de testes utilizando a estrutura If...Then...ElseIf.
O funcionamento da estrutura Select...Case bastante intuitivo. Considere o exemplo da
Listagem 2.22.
Listagem 2.22 Um exemplo simples da estrutura Select...Case.
1 <SCRIPT LANGUAGE=vbscript>
2 <!
3 Dim x
4 x=10
5 Select Case x
6 Case 2
7 MsgBox x vale 2 !
8 Case 4
9 MsgBox x vale 4 !
10 Case 6
11 MsgBox x vale 6 !
12 Case 8
13 MsgBox x vale 8 !
14 Case 10
15 MsgBox x vale 10 !
16 Case Else
17 MsgBox x no um nmero par, menor do que 12
18 End Select
19 >
20 </SCRIPT>
A estrutura Select Case x vai testar o valor de x. Em cada um dos Case, o valor de x est sendo
testado. Quando for encontrado um valor coincidente com o de x, os comandos abaixo deste
Case sero executados. No nosso exemplo, o comando MsgBox x vale 10 !, abaixo de Case
10, ser executado. O comando abaixo do Case Else somente ser executado, se todos os
testes anteriores falharem.
Criando Sites Dinmicos com ASP 3.0
1 0 0
O uso da estrutura Select...Case torna o cdigo mais eficiente e de mais fcil leitura.
Est r ut ur as de Repet io
Em determinadas situaes, precisamos repetir um ou mais comandos, um nmero especfico
de vezes, ou at que uma determinada condio torne-se verdadeira ou falsa. Para isso,
utilizamos as chamadas estruturas de repetio, ou laos. A partir de agora, estaremos
analisando as estruturas de repetio disponveis.
A Est r ut ur a For. . . Next
Utilizamos o lao For...Next para repetir um segmento de cdigo, um nmero determinado de
vezes. Utilizamos esta estrutura, quando j sabemos o nmero de vezes que uma determinada
seo de cdigo deve ser repetida. Neste tipo de estrutura, normalmente, utilizamos uma
varivel como contador. Este contador varia de um valor inicial at um valor final. O formato
geral desta estrutura o seguinte:
For contador=inicio to fim incremento
Comando1
Comando2
...
Comandon
Next
No incio a varivel contador tem o valor definido para um determinado valor. Em cada
passagem do lao, a varivel contador incrementada pelo valor definido em incremento.
Caso no seja definido o incremento, ser utilizado o padro 1.
Considere o exemplo da Listagem 2.23.
Listagem 2.23 Um exemplo simples da estrutura For...Next.
1 <SCRIPT LANGUAGE=vbscript>
2 <!
3 Dim x
4 x=10
5 Soma=0
6 Faz a soma dos dez primeiros nmeros maiores do que zero
7 For i=1 to x
8 Soma = Soma +i
1 0 1
Captulo 2 Uma Introduo ao VBScript
9 Next
10 MsgBox Valor da Soma = & Soma
11 >
12 </SCRIPT>
Neste exemplo, a varivel i inicia com o valor 1. Em cada passo, o valor de i acrescentado
varivel Soma. Como o incremento no foi definido, ser utilizado o padro que 1. Com
isso, ao final do lao For...Next, a varivel Soma ter armazenado o valor da soma dos dez
primeiros nmeros inteiros, conforme indicado pela Figura 2.26.
Figura 2.26: A soma dos dez pr imeir os nmer os int eir os.
Poderamos utilizar um valor de incremento diferente de 1, por exemplo, para obter a soma
somente dos nmeros mpares, menores do que 10. Considere o exemplo da Listagem 2.24.
Listagem 2.24 Um exemplo simples da estrutura For...Next.
1 <SCRIPT LANGUAGE=vbscript>
2 <!
3 Dim x
4 x=10
5 Soma=0
6 Faz a soma dos cinco primeiros nmeros mpares maiores do que zero
7 For i=1 to x Step 2
8 Soma = Soma +i
9 Next
10 MsgBox Valor da Soma = & Soma
11 >
12 </SCRIPT>
Com este script, obtemos o resultado indicado na Figura 2.27.
Criando Sites Dinmicos com ASP 3.0
1 0 2
Figura 2.27: A soma dos cinco pr imeir os nmer os mpar es.
A Est r ut ur a Do. . . Loop
Esta estrutura pode ser utilizada para repetir um trecho de cdigo, enquanto uma determinada
condio for verdadeira, ou at que uma determinada condio torne-se verdadeira. Podemos
utilizar dois operadores condicionais diferentes: While ou Until. Os operadores While ou
Until, podem ser utilizados de duas maneiras diferentes: no incio ou no final do lao. Com
isso temos quatro situaes distintas; vamos analisar cada uma delas a partir de agora.
A Est r ut ur a Do While Condio. . . Loop
Neste caso, estamos utilizando o operador condicional While, no incio do lao. O formato
geral, neste caso o seguinte:
Do While condio
Comando1
Comando2
...
Comandon
Loop
Nesta estrutura, enquanto a condio for verdadeira, o cdigo dentro do lao executado.
Quando a condio tornar-se falsa, o primeiro comando aps o final do lao ser executado.
Neste caso, se a condio for falsa j na primeira vez, o lao no ser executado nenhuma vez.
IMPORTANTE
O cdigo dentro do lao deve ser capaz de alterar a condio para Falso, quando for necessrio,
pois caso contrrio a condio ser sempre verdadeira, e os comandos dentro do lao ficaro
em execuo infinitamente, ou at o programa travar. A criao de laos infinitos, devido a
erros de programao, uma causa comum de travamentos.
1 0 3
Captulo 2 Uma Introduo ao VBScript
Considere o exemplo da Listagem 2.25.
Listagem 2.25 Um exemplo simples da estrutura de lao Do While Condio...Loop.
1 <SCRIPT LANGUAGE=vbscript>
2 <!
3 Dim x
4 x=10
5 Contador=1
6 Soma=0
7 Faz a soma dos dez primeiros nmeros maiores do que zero
8 Do While Contador <= x
9 Soma = Soma + Contador
10 Contador = Contador + 1
11 Loop
12 MsgBox Valor da Soma = & Soma
13 >
14 </SCRIPT>
Com esse script, obtemos o resultado indicado na Figura 2.28.
Figura 2.28: A soma dos dez pr imeir os nmer os int eir os.
Observe que dentro do lao, vamos incrementando o valor da varivel Contador, uma unidade
para cada passagem do lao. Com isso, quando o valor de Contador, atingir 11, o teste do
incio do lao torna-se falso, e o lao encerrado.
A Est r ut ur a Do. . . Loop While Condio
Neste caso, deslocamos o teste de condio para o final do lao. Com o teste no final do lao,
o cdigo dentro do lao, ser executado pelo menos uma vez, pois o teste somente feito no
Criando Sites Dinmicos com ASP 3.0
1 0 4
final, e continuar sendo executado, enquanto a condio for verdadeira. O formato geral,
neste caso o seguinte:
Do
Comando1
Comando2
...
Comandon
Loop While condio
Nesta estrutura, enquanto a condio for verdadeira, o cdigo dentro do lao executado.
Quando a condio tornar-se falsa, o primeiro comando aps o final do lao ser executado.
Neste caso, se a condio for falsa j na primeira vez, o lao ser executado uma nica vez.
IMPORTANTE
O cdigo dentro do lao deve ser capaz de alterar a condio para Falso, quando for necessrio,
pois caso contrrio a condio ser sempre verdadeira, e os comandos dentro do lao ficaro
em execuo, infinitamente, ou at o programa travar. A criao de laos infinitos, devido a
erros de programao, uma causa comum de travamentos.
Considere o exemplo da Listagem 2.26.
Listagem 2.26 Um exemplo simples da estrutura de lao Do... Loop While Condio.
1 <SCRIPT LANGUAGE=vbscript>
2 <!
3 Dim x
4 x=10
6 Contador=1
6 Soma=0
7 Faz a soma dos dez primeiros nmeros maiores do que zero
8 Do
9 Soma = Soma + Contador
10 Contador = Contador + 1
11 Loop While Contador <= x
12 MsgBox Valor da Soma = & Soma
13 >
14 </SCRIPT>
1 0 5
Captulo 2 Uma Introduo ao VBScript
Com esse script, obtemos o resultado indicado na Figura 2.29.
Figura 2.29: A soma dos dez pr imeir os nmer os int eir os.
Vamos modificar um pouco o nosso exemplo. Considere o exemplo mostrado na Listagem 2.27.
Listagem 2.27 Outro exemplo simples da estrutura de lao Do... Loop While Condio.
1 <SCRIPT LANGUAGE=vbscript>
2 <!
3 Dim x
4 x=10
7 Contador=11
6 Soma=0
7 O lao ser executado uma nica vez, pois a condio
8 Contador < x falsa.
9 Do
10 Soma = Soma + Contador
11 Contador = Contador + 1
12 Loop While Contador <= x
13 MsgBox Valor da Soma = & Soma
14 >
15 </SCRIPT>
Qual o valor ser exibido para a varivel Soma?
Muito simples. A condio Contador < x falsa, pois x=10 e Contador=12 (lembre que o
Contador foi incrementado de uma unidade na linha 11, antes do teste ser realizado). Neste
caso, o lao ser executado uma nica vez, pois o teste de condio est no final do lao.
Quando o lao executado, a linha 10 atribui o valor 11 para a varivel Soma. Com isso, o
valor exibido para a varivel Soma, ser 11, conforme indicado na Figura 2.30.
Criando Sites Dinmicos com ASP 3.0
1 0 6
Figura 2.30: Result ado obt ido, com uma nica execuo do lao.
A Est r ut ur a Do Unt il Condio. . . Loop
Neste caso, estamos utilizando o operador condicional Until, no incio do lao. O formato
geral, neste caso o seguinte:
Do Until condio
Comando1
Comando2
...
Comandon
Loop
Nesta estrutura, enquanto a condio for falsa, o cdigo dentro do lao executado. Quando a
condio tornar-se verdadeira, o primeiro comando aps o final do lao ser executado. Neste
caso, se a condio for verdadeira, j na primeira vez, o lao no ser executado nenhuma vez.
IMPORTANTE
O cdigo dentro do lao deve ser capaz de tornar a condio Verdadeira, quando for necessrio,
pois caso contrrio a condio ser sempre Falsa, e os comandos dentro do lao ficaro em
execuo, infinitamente, ou at o programa travar. A criao de laos infinitos, devido a erros
de programao, uma causa comum de travamentos.
Considere o exemplo da Listagem 2.27.
Listagem 2.28 Um exemplo simples da estrutura de lao Do Until Condio...Loop.
1 <SCRIPT LANGUAGE=vbscript>
2 <!
3 Dim x
4 x=10
8 Contador=1
1 0 7
Captulo 2 Uma Introduo ao VBScript
6 Soma=0
7 Faz a soma dos dez primeiros nmeros maiores do que zero
8 Do Until Contador > x
9 Soma = Soma + Contador
10 Contador = Contador + 1
11 Loop
12 MsgBox Valor da Soma = & Soma
13 >
14 </SCRIPT>
Com esse script, obtemos o resultado indicado na Figura 2.31.
Figura 2.31 : A soma dos dez pr imeir os nmer os int eir os.
Observe que, dentro do lao, vamos incrementando o valor da varivel Contador, uma unidade
para cada passagem do lao. Com isso, quando o valor de Contador atingir 11, o teste do
incio do lao torna-se Verdadeiro, e o lao encerrado.
A Est r ut ur a Do. . . Loop Unt il Condio
Neste caso, deslocamos o teste de condio para o final do lao. Com o teste no final do lao,
o cdigo dentro do lao, ser executado pelo menos uma vez, pois o teste somente feito no
final; e continuar sendo executado, enquanto a condio for Falsa. O formato geral, neste
caso, o seguinte:
Do
Comando1
Comando2
...
Comandon
Loop Until condio
Criando Sites Dinmicos com ASP 3.0
1 0 8
Nesta estrutura, enquanto a condio for Falsa, o cdigo dentro do lao executado. Quando a
condio tornar-se Verdadeira, o primeiro comando aps o final do lao ser executado. Neste
caso, se a condio for Verdadeira, j na primeira vez, o lao ser executado uma nica vez.
IMPORTANTE
O cdigo dentro do lao deve ser capaz de tornar a condio Verdadeira, quando for necessrio,
pois caso contrrio a condio ser sempre Falsa, e os comandos dentro do lao ficaro em
execuo, infinitamente, ou at o programa travar. A criao de laos infinitos, devido a erros
de programao, uma causa comum de travamentos.
Considere o exemplo da Listagem 2.28.
Listagem 2.29 Um exemplo simples da estrutura de lao Do... Loop Until Condio.
1 <SCRIPT LANGUAGE=vbscript>
2 <!
3 Dim x
4 x=10
9 Contador=1
6 Soma=0
7 Faz a soma dos dez primeiros nmeros maiores do que zero
8 Do
9 Soma = Soma + Contador
10 Contador = Contador + 1
11 Loop Until Contador > x
12 MsgBox Valor da Soma = & Soma
13 >
14 </SCRIPT>
Com esse script, obtemos o resultado indicado na Figura 2.32.
Figura 2.32: A soma dos dez pr imeir os nmer os int eir os.
1 0 9
Captulo 2 Uma Introduo ao VBScript
Vamos modificar um pouco o nosso exemplo. Considere o que mostrado na Listagem 2.30.
Listagem 2.30 Outro exemplo simples da estrutura de lao Do... Loop Until Condio.
1 <SCRIPT LANGUAGE=vbscript>
2 <!
3 Dim x
4 x=10
10 Contador=11
6 Soma=0
7 O lao ser executado uma nica vez, pois a condio
8 Contador >= x verdadeira.
9 Do
10 Soma = Soma + Contador
11 Contador = Contador + 1
12 Loop Until Contador >= x
13 MsgBox Valor da Soma = & Soma
14 >
15 </SCRIPT>
Qual o valor ser exibido para a varivel Soma?
Muito simples. A condio Contador >= x verdadeira, pois x=10 e Contador=12 (lembre
que o Contador foi incrementado de uma unidade, na linha 11, na primeira passagem do
lao). Neste caso, o lao ser executado uma nica vez, pois o teste de condio est ao final.
Quando o lao executado, a linha 10 atribui o valor 11 para a varivel Soma. Com isso, o
valor exibido para a varivel Soma, ser 11, indicado na Figura 2.33.
Figura 2.33: Result ado obt ido, com uma nica execuo do lao.
Criando Sites Dinmicos com ASP 3.0
1 1 0
Concluso
Neste captulo apresentamos diversos conceitos importantes, os quais sero utilizados ao
longo de todo livro.
Primeiro, definimos o que VBScript e fizemos uma reviso de HTML, principalmente das
tags para a criao de formulrios com HTML.
Depois, passamos a analisar os aspectos bsicos do VBScript. Vimos declarao de variveis,
o comando Option Explicit. Passamos a estudar questes como operadores aritmticos e
operadores lgicos de comparao. Tambm falamos sobre o escopo de variveis. Depois
passamos a tratar de estruturas de controle, onde vimos estruturas como If...Then,
If...Then...Else, Select....Case, etc.
Diversos exemplos foram apresentados com o objetivo de ilustrar os conceitos, facilitando a
compreenso.
No prximo captulo, estaremos analisando alguns aspectos mais avanados do VBScript,
tais como a utilizao de funes internas do VBScript, alm da criao de procedimentos.
1 1 1
Captulo 3 Funes, Procedimentos e Eventos com VBScript
Capt ul o 3
Funes, Procedimentos
e Eventos com VBScript
Criando Sites Dinmicos com ASP 3.0
1 1 2
Neste captulo, veremos uma srie de aspectos que vo alm do bsico do VBScript. Iniciaremos
falando um pouco mais sobre tipos de dados e funes para converso de tipos. Este tpico de
grande importncia, principalmente quando criamos pginas que efetuam clculos.
Depois passaremos a analisar uma srie de funes internas do VBScript. So funes que
fazem parte do VBScript, como por exemplo a funo Date( ), que retorna a data do sistema.
Na seqncia, aprenderemos a criar nossas prprias funes e sub-rotinas. Aprenderemos as
diferenas entre uma sub-rotina e uma funo, e quando utilizar uma ou outra.
Em seguida, trataremos de um assunto muito importante: a utilizao de eventos e o modelo de
eventos do Internet Explorer. Tambm falaremos sobre a diferena entre os modelos de eventos
dos dois principais navegadores do mercado o Internet Explorer e o Netscape Navigator.
Ento, mos obra. hora de aprendermos um pouco mais sobre VBScript, para, a partir do
Captulo 4, comearmos a tratar de ASP 3.0, utilizando os conhecimentos apresentados nestes
captulos iniciais.
NOTA
Os exemplos apresentados nas listagens deste captulo podem ser criados utilizando-se um
redator de texto, como o Bloco de notas, e salvando os arquivos com a extenso .htm. Depois
s abrir os mesmos no Internet Explorer e testar. Os nmeros das linhas, que aparecem nas
listagens, no devem ser digitados. Os mesmos foram includos, apenas para facilitar o
acompanhamento das explicaes de cada exemplo.
Tipos de Dados e Funes Par a Conver so de Tipos
Neste item, aprenderemos a determinar qual o tipo de dado que est armazenado em uma
varivel, bem como a converter valores de um tipo para outro, utilizando as funes para
converso de tipos.
Det er minando o Tipo de Dados Cont ido em uma Var ivel
Existem diversas funes, que permitem que seja determinado o tipo de valor contido em
uma varivel. Existem diversas aplicaes para este tipo de funo. Por exemplo, ao digitar
dados em um formulrio, podemos utilizar uma funo para determinar se os valores digitados
pelo usurio no apresentam problemas. Por exemplo, o usurio pode ter digitado, por engano,
texto em um campo que deve conter valores numricos.
1 1 3
Captulo 3 Funes, Procedimentos e Eventos com VBScript
A Funo IsAr r ay
Um Array um tipo especial de varivel, a qual pode armazenar diversos valores em uma
nica varivel. De uma forma simples, um Array um conjunto. Cada valor armazenado no
Array um elemento do conjunto. Por exemplo, poderamos criar um Array para armazenar
os nomes dos meses do ano. Com isso teramos um Array de 12 elementos.
Cada elemento de um Array acessado atravs do nome da varivel Array e de um ndice. O
ndice inicia em zero, e no em um. Por isso, se tivermos um Array de dez elementos, teremos
o elemento 0, o elemento 1, o elemento 2, e assim por diante, at o elemento 9. O fato do
ndice comear com 0 influencia na hora de declarar um Array. Para declarar um Array
chamado produtos, com 20 elementos, utilizaramos a seguinte declarao:
Dim produtos(19)
O 19 significa que temos 20 elementos (sempre um a mais do que o nmero que aparece na
declarao), isto , do elemento 0, indicado por produtos(0), at o elemento 20, indicado por
produtos(19).
Na Listagem 3.1, temos um exemplo simples de utilizao de Array.
Listagem 3.1 Utilizando um Array para armazenar os dias da semana.
1 <HTML>
2 <HEAD>
3 <TITLE>Utilizando uma varivel Array!!</TITLE>
4 </HEAD>
5 <BODY>
6 <P>EXEMPLO DE CRIAO E UTILIZAO DE ARRAYS.</P>
7 <SCRIPT LANGUAGE=vbscript>
8 <!
9 Declara um Array de sete posies
10 Como a primeira posio a posio zero,
11 Indicamos o tamanho como 6, o que significa
12 da posio 0 at a posio 6 = 7 elementos.
13 Dim Dias(6)
14 Atribumos valores para os dias da semana
Criando Sites Dinmicos com ASP 3.0
1 1 4
15 Dias(0)= Segunda-feira
16 Dias(1)= Tera-feira
17 Dias(2)= Quarta-feira
18 Dias(3)= Quinta-feira
19 Dias(4)= Sexta-feira
20 Dias(5)= Sbado
21 Dias(6)= Domingo
22 Agora utilizamos um lao For...Next
23 Para criar uma string, com o contedo
24 Do Array Dias.
25 For i=0 to 6
26 mensagem = mensagem & Dia: & i+1 & & Dias(i)& Chr(13)
27 Next
28 Utilizamos uma MsgBox, para exibir a mensagem
29 com o contedo do Array Dias.
30 MsgBox mensagem
31 >
32 </SCRIPT>
33 </BODY>
34 </HTML>
Ao carregar este exemplo, no Internet Explorer, ser exibida a janela mostrada na Figura 3.1.
Figura 3.1 : Um exemplo de ut ilizao de Ar r ay.
1 1 5
Captulo 3 Funes, Procedimentos e Eventos com VBScript
Utilizamos a funo IsArray, para determinar se uma varivel do tipo Variant (lembre que
todas as variveis do VBScript so do tipo Variant) est armazenando um Array.
Utilizamos a seguinte sintaxe:
IsArray(NomeDaVarivel)
A funo IsArray retorna verdadeiro se a varivel for um Array, e falso em caso contrrio.
Por exemplo, se adicionssemos, Listagem 3.1, o comando:
MsgBox IsArray(Dias)
o resultado seria o indicado na Figura 3.2.
Figura 3.2: A funo IsAr r ay r et or nando Ver dadeir o.
A Funo Var Type
Podemos utilizar a funo VarType para determinar o subtipo de uma varivel. Como todas as
variveis so do tipo Variant, o subtipo pode ser utilizado para determinar o tipo de dado
armazenado na varivel. Passamos, para a funo, o nome de uma varivel ou expresso. A
funo retorna um nmero inteiro que indica o subtipo da varivel.
A sintaxe da funo a seguinte:
VarType(NomeDaVarivel)
ou
VarType(expresso)
Na Tabela 3.1, temos os cdigos de retorno da funo VarType.
Tabela 3.1 Valores de retorno da funo VarType.
Valor Descrio
0 Vazio (no inicializado)
Criando Sites Dinmicos com ASP 3.0
1 1 6
Na Listagem 3.2, temos um exemplo de utilizao da funo VarType.
Listagem 3.2 Utilizando a funo VarType.
1 <HTML>
2 <HEAD>
3 <TITLE>Exemplo de uso da funo VarType!!!</TITLE>
4 </HEAD>
5 <BODY>
6 <P>EXEMPLO DE UTILIZAO DA FUNO VarType</P>
7 <SCRIPT LANGUAGE=vbscript>
8 <!
9 Dim x,y,z
Valor Descrio
1 Nulo (dados no vlidos)
2 Inteiro
3 Inteiro longo
4 Nmero de preciso simples
5 Nmero de preciso dupla
6 Monetrio
7 Data
8 Texto
9 Objeto de automao
10 Erro
11 Boleano
12 Variant (somente utilizado com Arrays de variantes)
13 Objeto para acesso a dados
17 Byte
8192 Array
1 1 7
Captulo 3 Funes, Procedimentos e Eventos com VBScript
10 Dim a, b
11 Dim c(20)
12 x=12
13 y=23.456
14 y=123456789
15 a=Este um valor de texto!
16 Utilizamos a funo Date( ), para capturar a data do sistema.
17 b=Date( )
18 mensagem = Tipo da varivel x: & Vartype(x) & Chr(13)
19 mensagem = mensagem & Tipo da varivel y: & Vartype(y) & Chr(13)
20 mensagem = mensagem & Tipo da varivel z: & Vartype(z) & Chr(13)
21 mensagem = mensagem & Tipo da varivel a: & Vartype(a) & Chr(13)
22 mensagem = mensagem & Tipo da varivel b: & Vartype(b) & Chr(13)
23 mensagem = mensagem & Tipo da varivel c: & Vartype(c) & Chr(13)
24 MsgBox mensagem
25 >
26 </SCRIPT>
27 </BODY>
28 </HTML>
Ao carregar este exemplo no Internet Explorer, obteremos o resultado indicado na Figura 3.3.
Figura 3.3: Ut ilizando a funo Var Type.
Criando Sites Dinmicos com ASP 3.0
1 1 8
Observe, principalmente, no tipo da varivel z, o qual retornou 0. Isto significa que a varivel
z est vazia, ou seja, no foi inicializada. Este resultado est coerente com a Tabela 3.1. Tambm
podemos salientar o retorno para a varivel b, o qual retornou 7, indicando que o valor
armazenado nesta varivel do tipo Data. Portanto, tambm est coerente com a Tabela 3.1,
uma vez que usamos a funo Date( ), para armazenar a data do sistema, na varivel b.
Finalmente observe o valor de retorno para a varivel c, o qual retornou 8192, indicando que
a varivel c um Array. Este resultado est coerente com a Tabela 3.1, e com a declarao da
linha 11 Dim c(20), a qual declarou a varivel c como sendo um Array.
Muitas so as aplicaes prticas para a funo VarType, dentre as quais podemos destacar a
validao dos dados digitados em um formulrio.
A Funo IsDat e
A funo IsDate recebe uma varivel ou expresso como argumento, e determina se a varivel
ou expresso uma data vlida, ou pode ser convertida para uma data vlida. Caso o argumento
passado seja uma data vlida, a funo retorna Verdadeiro, caso contrrio, retorna Falso.
Podemos utilizar esta funo, por exemplo, para verificar se o usurio digitou uma data vlida,
em um campo de um formulrio.
A sintaxe da funo IsDate a seguinte:
IsDate(NomeDaVarivel)
ou
IsDate(expresso)
Na Listagem 3.3, temos um exemplo de utilizao da funo IsDate.
Listagem 3.3 Utilizando a funo IsDate.
1 <HTML>
2 <HEAD>
3 <TITLE>Utilizando a funo IsDate!!</TITLE>
4 <SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>
5 <!
6 Sub verifica_onclick
7 If IsDate(Window.dataen.value) Then
8 MsgBox Voc digitou uma data vlida!
9 Else
10 MsgBox Data invlida, digite novamente!
11 window.dataen.value=
1 1 9
Captulo 3 Funes, Procedimentos e Eventos com VBScript
12 window.dataen.focus
13 End If
14 End Sub
15 >
16 </SCRIPT>
17 </HEAD>
18 <BODY>
19 <P>Exemplo de uso da funo IsDate</P>
20 <P>Digite a data de encerramento:
21 <INPUT id=dataen maxLength=10 name=dataen > (dd/mm/aaaa)
22 </P>
23 <P>Clique no boto para verificar se a data vlida:
24 <INPUT id=verifica name=verifica type=button value=Verificar data></P>
25 </BODY>
26 </HTML>
A seguir alguns comentrios sobre este exemplo.
No cdigo HTML do documento linha 17 25 , colocamos dois elementos de formulrio:
um campo de texto, que chamamos de dataen; e um boto de comando, do tipo Button, que
chamamos de verifica.
A Figura 3.4 mostra este documento aberto no Internet Explorer, onde o usurio digitou uma
data invlida, no nosso exemplo, o usurio digitou 30/02/2000.
Figura 3.4: O usur io digit ou uma dat a invlida.
Criando Sites Dinmicos com ASP 3.0
1 2 0
Aps digitar a data, o usurio clica no boto Verificar data, para testar se a data vlida.
Esta ao do usurio, gera o evento onclik deste boto. Observe que das linhas 6 a 13, definimos
um procedimento que responde ao evento onclick do boto verifica. O que define que este
procedimento atua em resposta ao evento onclick, do boto verifica, o nome do procedimento:
Sub verifica_onclick
Esta definio faz parte do modelo de objetos e eventos do Internet Explorer, a qual
analisaremos em maiores detalhes mais adiante, ainda neste captulo.
Dentro do procedimento verifica_onclick, utilizamos a funo IsDate, para verificar se a data
digitada pelo usurio valida. Se a data for vlida, simplesmente exibimos uma mensagem,
notificando que a data digitada vlida, conforme indicado na Figura 3.5.
Figura 3.5: A dat a digit ada pelo usur io vlida.
Caso a data no seja vlida, emitimos uma mensagem avisando linha 10. Na linha 11, voltamos
a utilizar o modelo de objetos do Internet Explorer. A expresso window.dataen.value significa:
o valor do campo dataen, da janela atual do navegador. Com este comando, estamos apagando
a data digitada pelo usurio. Na linha 12, utilizamos o mtodo focus, para posicionar o cursor
de volta no campo dataen. Com isso, quando o usurio clicar em OK, na janela da mensagem de
data invlida, o campo dataen ser apagado (linha 11) e o cursor posicionado no campo (linha
12), para que o usurio possa digitar uma nova data, conforme indicado na Figura 3.6.
Figura 3.6: Cur sor posicionado no campo dat aen.
1 2 1
Captulo 3 Funes, Procedimentos e Eventos com VBScript
A Funo IsEmpt y
A funo IsEmpty recebe uma varivel ou expresso como argumento, e determina se, em
algum momento, foi atribudo algum valor para a varivel ou expresso. Caso tenha sido
atribudo algum valor, a funo retorna Verdadeiro, caso contrrio, retorna Falso. Podemos
utilizar esta funo, por exemplo, para verificar se um campo de digitao obrigatria, como
por exemplo o nome, no foi deixado em branco.
A sintaxe da funo IsEmpty a seguinte:
IsEmpty(NomeDaVarivel)
ou
IsEmpty(expresso)
Na Listagem 3.4, temos um exemplo de utilizao da funo IsEmpty.
Listagem 3.4 Utilizando a funo IsEmpty.
1 <HTML>
2 <HEAD>
3 <TITLE>Utilizando a funo IsEmpty!!</TITLE>
4 <SCRIPT LANGUAGE=vbscript>
5 <!
6 Vamos declarar uma varivel x que nunca
7 ser utilizada no nosso script
8 Dim a, b, c
9 Dim x
10 a=10
11 b=23
12 c=a+b
13 If IsEmpty(x) Then
14 MsgBox A varivel x no foi utilizada!
15 End If
16 >
17 </SCRIPT>
18 </HEAD>
Criando Sites Dinmicos com ASP 3.0
1 2 2
19 <BODY>
20 <P>Exemplo de uso da funo IsEmpty</P>
21 <P> Clique no boto para verificar o nome digitado:
22 <INPUT id=verifica name=verifica type=button value=Verificar nome>
23 </P>
24 </BODY>
25 </HTML>
Ao abrir este documento, no Internet Explorer, voc recebe a mensagem indicada na Figura 3.7.
Figura 3.7: A var ivel x est vazia.
A Funo IsNull
A funo IsNull recebe uma varivel ou expresso como argumento, e determina se, em
algum momento, foi atribudo o valor Null para a varivel ou expresso. Se tiver sido atribudo
o valor Null, a funo retorna Verdadeiro, caso contrrio, retorna Falso. Para atribuirmos Null
para uma varivel, utilizamos a seguinte sintaxe:
NomeDaVarivel = Null
IMPORTANTE
Uma varivel com valor Null, no a mesma coisa que uma varivel com valor zero, ou uma
varivel de texto com tamanho zero. Quando atribudo o valor Null para a varivel, a mesma
continua existindo na memria, porm sem nenhum valor definido.
A sintaxe da funo IsNull a seguinte:
IsNull(NomeDaVarivel)
ou
IsNull(expresso)
1 2 3
Captulo 3 Funes, Procedimentos e Eventos com VBScript
Na Listagem 3.5, temos um exemplo de utilizao da funo IsNull.
Listagem 3.5 Utilizando a funo IsNull.
1 <HTML>
2 <HEAD>
3 <TITLE>Utilizando a funo IsNull!!</TITLE>
4 <SCRIPT LANGUAGE=vbscript>
5 <!
6 Vamos declarar uma varivel x, e atribuir
7 Null para a mesma.
8 Dim x
9 x = Null
10 If IsNull(x) Then
11 MsgBox A varivel x Nula!
12 End If
13 >
14 </SCRIPT>
15 </HEAD>
16 <BODY>
17 <P>Exemplo de uso da funo IsNull.</P>
18 </BODY>
19 </HTML>
Ao abrir este documento, no Internet Explorer, voc recebe a mensagem indicada na Figura 3.8.
Criando Sites Dinmicos com ASP 3.0
1 2 4
Figura 3.8: A var ivel x possui o valor Null.
A Funo IsNumer ic
A funo IsNumeric recebe uma varivel ou expresso como argumento, e determina se o
valor atribudo varivel ou expresso numrico, ou pode ser convertido para numrico.
Se o valor for numrico, ou puder ser convertido, a funo retorna Verdadeiro, caso contrrio,
retorna Falso.
A sintaxe da funo IsNumeric a seguinte:
IsNumeric(NomeDaVarivel)
ou
IsNumeric(expresso)
Na Listagem 3.6 temos um exemplo de utilizao da funo IsNumeric.
Listagem 3.6 Utilizando a funo IsNumeric.
1 <HTML>
2 <HEAD>
3 <TITLE>Utilizando a funo IsNumeric!!</TITLE>
4 <SCRIPT LANGUAGE=vbscript>
5 <!
6 Dim x,y,z
7 x=123
8 Atribuo um valor que no pode ser convertido
9 para numrico
10 y= Riachuelo - 80
1 2 5
Captulo 3 Funes, Procedimentos e Eventos com VBScript
11 z = Date()
12 mensagem = Valor de x: & x & numrico? & IsNumeric(x)& Chr(13)
13 mensagem = mensagem & Valor de y: & y & numrico? & IsNumeric(y)& Chr(13)
14 mensagem = mensagem & Valor de z: & z & numrico? & IsNumeric(z)
15 MsgBox mensagem
16 >
17 </SCRIPT>
18 </HEAD>
19 <BODY>
20 <P>Exemplo de uso da funo IsNumeric.</P>
21 </BODY>
22 </HTML>
Ao abrir este documento, no Internet Explorer, voc recebe a mensagem indicada na Figura 3.9.
Figura 3.9: Ut ilizando a funo IsNumer ic.
Cabe salientar a utilizao da funo Date( ), para capturar a data do sistema, e atribuir esta data
varivel z. Observe que esta data no foi considerada um valor numrico para a funo IsNumeric.
A Funo IsObject
A funo IsObject recebe uma varivel como argumento, e determina se o valor atribudo
varivel um objeto ActiveX. Se for, a funo retorna Verdadeiro, caso contrrio, retorna Falso.
Para exemplificarmos esta funo, faremos uso de uma pgina ASP, e iremos utilizar um dos
objetos do ASP. Falaremos mais sobre os objetos do ASP no Captulo 4.
Criando Sites Dinmicos com ASP 3.0
1 2 6
A sintaxe da funo IsObject a seguinte:
IsObject(NomeDaVarivel)
ou
IsObject(expresso)
Na Listagem 3.7 temos um exemplo de utilizao da funo IsObject.
Listagem 3.7 Utilizando a funo IsObject.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <BODY>
6 <P>Exemplo de utilizao da funo IsObject!</P>
7 <%
8 Set tiponav= Server.CreateObject(MSWC.BrowserType)
9 If IsObject(tiponav) Then
10 Response.Write A varivel tiponav um objeto
11 Else
12 Response.Write A varivel tiponav no um objeto.
13 End If
14 %>
15 </BODY>
16 </HTML>
IMPORTANTE
Como este um arquivo .asp, o mesmo no pode ser aberto localmente no Internet Explorer.
Toda pgina .asp interpretada no servidor, e o resultado do processamento, na forma de
HTML puro, devolvido para o navegador. Para testar um arquivo .asp, o mesmo precisa ser
salvo no servidor IIS e acessado utilizando-se o endereo para a pgina .asp.
Ao abrir este documento, no Internet Explorer, obtemos o resultado indicado na Figura 3.10.
1 2 7
Captulo 3 Funes, Procedimentos e Eventos com VBScript
Figura 3.1 0: Ut ilizando a funo IsObject .
Observe no campo endereo, que estamos acessando a pgina .asp, em um servidor, e no
localmente, conforme indicado pelo endereo: http://servidor/Chap3/IsObject.asp.
Funes Par a Conver so de Tipos
Neste item aprenderemos a utilizar as principais funes para converso de tipos. Existem
situaes em que um determinado tipo de dado deve ser convertido para outro. Por exemplo,
se tivermos um nmero, armazenado na forma de texto, precisamos convert-lo para inteiro
ou double, para que possamos realizar clculos com o mesmo.
Na seqncia, apresento as principais funes de converso, bem como um pequeno fragmento
de cdigo, exemplificando a utilizao de cada uma delas.
Funo Cbool
A funo Cbool converte uma varivel ou resultado de uma expresso para o subtipo Boolean.
Qualquer nmero, com exceo do zero, automaticamente convertido para Verdadeira. O
valor zero sempre convertido para Falso. O argumento desta funo no pode ser texto, caso
contrrio ser gerado um erro em tempo de execuo.
Observe esta linha de cdigo:
MsgBox Cbool(10>25) & Chr(13) & Cbool(3)
Criando Sites Dinmicos com ASP 3.0
1 2 8
Esta linha gera a mensagem indicada na Figura 3.11.
Figura 3.1 1 : A funo Cbool r et or na Ver dadeir o ou Falso.
A expresso 10>25 avaliada, como a expresso falsa, a funo Cbool retorna Falso. J no segundo
uso da funo Cbool, foi passado o parmetro 3 para a funo. Qualquer valor diferente de zero
(com exceo de texto) a funo interpreta como Verdadeiro, o que comprovado pela Figura 3.11.
Funo CByt e
A funo CByte converte uma varivel ou resultado de um expresso para o subtipo Byte. O
valor a ser convertido, deve estar na faixa aceitvel para o tipo byte, que vai de 0 a 255. Caso
o nmero esteja fora desta faixa, ser gerada uma mensagem de erro; e, se o argumento desta
funo for texto tambm ser gerada uma mensagem de erro, em tempo de execuo.
Observe esta linha de cdigo:
MsgBox CByte(10+34) & Chr(13) & CByte(35)
Esta linha gera a mensagem indicada na Figura 3.12.
Figura 3.1 2: A funo CByt e conver t e os valor es par a o subt ipo Byt e.
A expresso 10+34 calculada, e o resultado (44), convertido para o tipo Byte. A linha de
cdigo abaixo, ir gerar uma mensagem de erro, em tempo de execuo, pois o valor a ser
convertido para byte, est fora da faixa de 0 a 255.
MsgBox CByte(100+200)
1 2 9
Captulo 3 Funes, Procedimentos e Eventos com VBScript
Funo CCur
A funo CCur converte uma varivel, ou resultado de um expresso, para o subtipo Currency.
O argumento desta funo no pode ser Texto, caso contrrio ser gerado um erro.
Observe esta linha de cdigo:
MsgBox CCur(250.335677+324.3333) & Chr(13) & CCur(1250.326582)
Esta linha gera a mensagem indicada na Figura 3.13.
Figura 3.1 3: A funo CCur conver t e os valor es par a o subt ipo Cur r ency.
A expresso 250.335677+324.3333 calculada, e o resultado convertido para o tipo Currency.
Se passarmos um argumento de texto para a funo CCur ser gerado um erro de execuo,
conforme indicado na Figura 3.14.
Figura 3.1 4: Er r o ger ado ao passar um t ext o como ar gument o par a CCur.
Criando Sites Dinmicos com ASP 3.0
1 3 0
Funo CDat e
A funo CDate converte uma varivel ou resultado de um expresso para o subtipo Date. O
argumento desta funo deve estar em um formato que seja aceitvel para datas, caso contrrio
ser gerada uma mensagem de erro, em tempo de execuo.
Observe esta linha de cdigo:
MsgBox CDate(31/10/1980) & Chr(13) & CDate(23-01-2007)
Esta linha gera a mensagem indicada na Figura 3.15.
Figura 3.1 5: A funo CDat e conver t e os valor es par a o subt ipo Dat e.
A linha de cdigo abaixo ir gerar uma mensagem de erro, em tempo de execuo, conforme
indicado na Figura 3.16.
MsgBox CDate(31/02/1980)
Figura 3.1 6: Er r o ger ado ao passar um ar gument o com uma dat a invlida.
1 3 1
Captulo 3 Funes, Procedimentos e Eventos com VBScript
Funo CDbl
A funo CDbl converte uma varivel ou resultado de um expresso para o subtipo Double. O
argumento desta funo no pode ser do tipo texto, caso contrrio ser gerada uma mensagem
de erro, em tempo de execuo.
Observe esta linha de cdigo:
MsgBox CDbl(4.940651247E-17)
Esta linha gera a mensagem indicada na Figura 3.17.
Figura 3.1 7: A funo CDouble conver t e os valor es par a o subt ipo Double.
A linha de cdigo abaixo ir gerar uma mensagem de erro, em tempo de execuo, conforme
indicado na Figura 3.18.
MsgBox CDbl(Teste)
Figura 3.1 8: Er r o ger ado ao passar um ar gument o de t ipo invlido par a a funo Cdbl.
Criando Sites Dinmicos com ASP 3.0
1 3 2
Funo CInt
A funo CInt converte uma varivel ou resultado de um expresso para o subtipo Integer. O
argumento desta funo no pode ser do tipo texto, caso contrrio ser gerada uma mensagem
de erro, em tempo de execuo.
Observe esta linha de cdigo:
MsgBox CInt(32.36) & Chr(13) & CInt(20.35+40.45)
Esta linha gera a mensagem indicada na Figura 3.19.
Figura 3.1 9: A funo CInt conver t e os valor es par a o subt ipo Int eger.
A linha de cdigo abaixo ir gerar uma mensagem de erro, em tempo de execuo, conforme
indicado na Figura 3.20.
MsgBox CInt(Teste)
Figura 3.20: Er r o ger ado ao passar um ar gument o de t ipo invlido par a a funo CInt .
1 3 3
Captulo 3 Funes, Procedimentos e Eventos com VBScript
Funo CLng
A funo CLng converte uma varivel ou resultado de um expresso para o subtipo Long. O
argumento desta funo no pode ser do tipo texto, caso contrrio ser gerada uma mensagem
de erro, em tempo de execuo. O argumento tambm no pode estar fora da faixa admitida
pelo subtipo Long, caso contrrio ser gerada uma mensagem de erro, em tempo de execuo.
Observe esta linha de cdigo:
MsgBox CLng(3462315)
Esta linha gera a mensagem indicada na Figura 3.21.
Figura 3.21 : A funo CLng conver t e os valor es par a o subt ipo Long.
A linha de cdigo abaixo ir gerar uma mensagem de erro, em tempo de execuo, conforme
indicado na Figura 3.22.
MsgBox CLng(Teste)
Figura 3.22: Er r o ger ado ao passar um ar gument o de t ipo invlido par a a funo CLng.
Criando Sites Dinmicos com ASP 3.0
1 3 4
Funo CSng
A funo CSng converte uma varivel ou resultado de um expresso para o subtipo Single. O
argumento desta funo no pode ser do tipo texto, caso contrrio ser gerada uma mensagem
de erro, em tempo de execuo. O argumento tambm no pode estar fora da faixa admitida
pelo subtipo Single, caso contrrio ser gerada uma mensagem de erro, em tempo de execuo.
Observe esta linha de cdigo:
MsgBox CSng(3.1418256927)
Esta linha gera a mensagem indicada na Figura 3.23.
Figura 3.23: A funo CSng conver t e os valor es par a o subt ipo Single.
A linha de cdigo abaixo, ir gerar uma mensagem de erro, em tempo de execuo, conforme
indicado na Figura 3.24.
MsgBox CSng(Teste)
Figura 3.24: Er r o ger ado ao passar um ar gument o de t ipo invlido par a a funo CSng.
1 3 5
Captulo 3 Funes, Procedimentos e Eventos com VBScript
Funo CSt r
A funo CStr converte uma varivel ou resultado de um expresso para o subtipo String.
Observe esta linha de cdigo:
MsgBox CStr(12345 & hectares de terra)
Esta linha gera a mensagem indicada na Figura 3.25.
Figura 3.25: A funo CSt r conver t e os valor es par a o subt ipo St r ing.
Funes Int e Fix
As funes Int e Fix retornam somente a parte inteira de um determinado nmero. A diferena,
entre as duas funes, quando o nmero for negativo. Observe os exemplos abaixo:
Fix(-10.2) Retorna 10
Int(-10.2) Retorna 11
A funo Int, retorna, no caso de nmeros negativos, o primeiro nmero inteiro, menor ou igual
ao parmetro passado. No caso de 10.2, retornou 11. J Fix, retorna, no caso de nmeros negativos,
o primeiro inteiro, maior ou igual ao parmetro passado. No caso de 10.2, retornou 10.
Observe esta linha de cdigo:
MsgBox Fix (-7.35) & Chr(13) & MsgBox Int(-7.35)
Esta linha gera a mensagem indicada na Figura 3.26.
Figura 3.26: A difer ena ent r e Int e Fix, par a nmer os negat ivos.
Criando Sites Dinmicos com ASP 3.0
1 3 6
Com isso, terminamos a nossa apresentao sobre as principais funes para a converso de
tipos de dados. No prximo item, estaremos analisando mais algumas funes do VBScript,
para operaes com dados do tipo String e do tipo Data/Hora.
Out r as Funes do VBScr ipt Tr at ament o
de St r ing, Dat as e Funes M at emt icas
Neste item, aprenderemos a utilizar as principais funes do VBScript. Apresentaremos as
funes divididas em categorias, conforme a funcionalidade das mesmas. Estaremos tratando
das seguintes categorias:
Funes para manipulao de String.
Funes para manipulao de Data/Hora.
Funes matemticas.
Para uma referncia completa sobre todas as funes do VBScript, voc pode consultar o
seguinte endereo: http://msdn.microsoft.com/scripting.
Funes Par a Tr at ament o de St r ing
Veremos as principais funes para tratamento de String. Nos exemplos prticos, no final do
captulo, estaremos utilizando algumas destas funes.
Funo Asc
A funo Asc retorna o valor numrico do cdigo ASCII, para a primeira letra de uma String.
Considere o exemplo:
Asc(Ainda chovia)
Este exemplo de uso da funo retorna o valor 65, o qual o cdigo ASCII para a letra A
maiscula. Caso fosse a letra a minscula, o cdigo retornado seria 97.
Funo Chr
A funo Chr(nmero), recebe um nmero como parmetro, e retorna o caractere ASCII,
correspondente. Considere o exemplo:
Chr(65)
Este exemplo de uso da funo retorna o caractere A maisculo.
1 3 7
Captulo 3 Funes, Procedimentos e Eventos com VBScript
NOTA
At agora, utilizamos a funo Chr em alguns exemplos. Utilizamos o Chr(13) para simular
um ENTER, o que faz uma quebra de linha, nas mensagens montadas com o MsgBox.
Funo Len
Esta funo determina o tamanho da String que foi passada como parmetro para a funo.
Considere o exemplo:
MsgBox Len(Este um exemplo de uso da funo Len!!)
Este exemplo de uso da funo, retorna 41, conforme indicado na Figura 3.27.
Figura 3.27: Exemplo de uso da funo Len.
Funo LCase
Esta funo converte para minsculas a String que foi passada como parmetro para a funo.
Considere o exemplo:
MsgBox Lcase(ESTE UM EXEMPLO DE USO DA FUNO LCASE)
Este exemplo de uso da funo converte, o parmetro passado, para letras minsculas,
conforme indicado na Figura 3.28.
Figura 3.28: Exemplo de uso da funo LCase.
Criando Sites Dinmicos com ASP 3.0
1 3 8
Funo UCase
Esta funo converte para maisculas a String que foi passada como parmetro para a funo.
Considere o exemplo:
MsgBox Ucase(este um exemplo do uso da funo ucase!!)
Este exemplo de uso da funo converte, o parmetro passado, para letras maisculas, conforme
indicado na Figura 3.29.
Figura 3.29: Exemplo de uso da funo UCase.
Funo Lef t
Esta funo retorna um nmero especificado de caracteres, a partir do incio (Left Esquerda)
de uma String. importante salientar que espaos em branco tambm devem ser considerados.
O formato geral da funo o seguinte:
Left(String, n)
onde n o nmero de caracteres a retornar.
Considere o exemplo:
MsgBox Left(Jlio Cesar Fabris Battisti,5)
Este exemplo de uso da funo, retorna as cinco primeiras letras da String passada, neste
caso, retornar Jlio.
Vamos alterar um pouco o nosso exemplo:
MsgBox Left(Jlio Cesar Fabris Battisti,7)
Ir retornar: Jlio C. Observe que o espao em branco tambm considerado.
Funo Right
Esta funo retorna um nmero especificado de caracteres, a partir do final (Right Direita)
de uma String. importante salientar que espaos em branco tambm devem ser considerados.
1 3 9
Captulo 3 Funes, Procedimentos e Eventos com VBScript
O formato geral da funo o seguinte:
Right(String, n)
onde n o nmero de caracteres a retornar.
Considere o exemplo:
MsgBox Right(Jlio Cesar Fabris Battisti,6)
Este exemplo de uso da funo, retorna as seis ltimas letras da String passada, neste caso,
retornar ttisti.
Vamos alterar um pouco o nosso exemplo:
MsgBox Right(Jlio Cesar Fabris Battisti,10)
Ir retornar: s Battisti. Observe que o espao em branco tambm considerado.
Funo M id
Esta funo retorna um nmero especificado de caracteres, a partir de uma posio especificada
dentro da String. importante salientar que espaos em branco tambm devem ser
considerados.
O formato geral da funo o seguinte:
Mid(String, posicao_inicio, n)
onde posicao_inicio a posio a partir da qual devem ser retornados caracteres, e n o
nmero de caracteres a retornar.
Considere alguns exemplos:
Mid(Jlio Cesar Fabris Battisti,7,5)
Este exemplo de uso da funo, retorna, a partir da posio 7, cinco caracteres, neste caso,
retornar Cesar.
Mid(SANTA MARIA,3,7)
ir retornar NTA MAR. Observe que o espao em branco tambm considerado.
Um detalhe interessante, que podemos utilizar o retorno de uma funo, como parmetro
para outra funo. Considere o seguinte exemplo:
LCase(Mid(SANTA MARIA,3,7))
Criando Sites Dinmicos com ASP 3.0
1 4 0
Este exemplo retorna nta mar.
A funo Mid retira os caracteres NTA MAR, os quais so passados como parmetros para a
funo LCase, a qual converte os caracteres para minsculos.
Funo St r ing
Esta funo retorna um determinado caractere, um nmero especificado de vezes.
O formato geral da funo o seguinte:
String(n, Caracter)
onde n o nmero de vezes que o caractere deve ser repetido.
Considere o exemplo:
MsgBox String(35,*)
A Figura 3.30 mostra o resultado deste comando.
Figura 3.30: Exemplo de uso da funo St r ing.
Funes Par a Tr at ament o de Dat a e Hor a
Veremos as principais funes para tratamento de Data e Hora. Nos exemplos prticos, no
final do captulo, estaremos utilizando algumas destas funes.
Funo Dat e
Retorna a data corrente do sistema. No precisamos passar parmetros para esta funo.
Considere o exemplo abaixo:
MsgBox Data do Sistema: & Date( )
O resultado deste comando est indicado na Figura 3.31.
1 4 1
Captulo 3 Funes, Procedimentos e Eventos com VBScript
Figura 3.32: Exemplo de uso da funo Dat e.
Funo Time
Retorna a hora corrente do sistema. No precisamos passar parmetros para esta funo.
Considere o exemplo abaixo:
MsgBox Hora do Sistema: & Time( )
O resultado deste comando est indicado na Figura 3.32.
Figura 3.32: Exemplo de uso da funo Time.
Funo Day
Recebe como parmetro uma data, e retorna um nmero entre 1 e 31, indicando o dia do ms.
O formato geral o seguinte:
Day(data)
Considere o exemplo abaixo:
MsgBox Dia do ms: & Day(Date( ))
O resultado deste comando est indicado na Figura 3.33.
A funo Date( ) captura a data do sistema e passa como parmetro para a funo Day, que,
por sua vez, retorna apenas o dia do ms.
Criando Sites Dinmicos com ASP 3.0
1 4 2
Figura 3.33: Exemplo de uso da funo Day.
Funo M ont h
Recebe como parmetro uma data, e retorna um nmero entre 1 e 12, indicando o ms do
ano. O formato geral o seguinte:
Month(data)
Considere o exemplo abaixo:
MsgBox Ms do ano: & Month(Date( ))
O resultado deste comando est indicado na Figura 3.34.
Figura 3.34: Exemplo de uso da funo M ont h.
A funo Date( ) captura a data do sistema e passa como parmetro para a funo Month, que,
por sua vez, retorna apenas o ms do ano.
Funo Now
Retorna a hora e a data corrente do sistema. No precisamos passar parmetros para esta
funo. Considere o exemplo abaixo:
MsgBox Data e Hora do Sistema: & Now( )
O resultado deste comando est indicado na Figura 3.35.
1 4 3
Captulo 3 Funes, Procedimentos e Eventos com VBScript
Figura 3.35: Exemplo de uso da funo Now.
Funo M ont hName
Recebe como parmetro um nmero, indicativo do ms do ano (1 Janeiro, 2 Fevereiro, e assim
por diante), e um segundo parmetro que pode ser Verdadeiro ou Falso. Se o segundo parmetro
for Verdadeiro, o nome do ms ser exibido abreviadamente. O formato geral o seguinte:
MonthName(nmero_do_ms, abreviar)
Considere o exemplo abaixo:
MsgBox Ms do ano: & MonthName(Month(Date(),False)
O resultado deste comando est indicado na Figura 3.36.
Figura 3.36: Exemplo de uso da funo M ont hName.
A funo Date( ) captura a data do sistema e passa como parmetro para a funo Month. A
funo Month retorna o nmero do ms retornado pela data. Este nmero passado como
primeiro parmetro para a funo MonthName. O segundo parmetro definido em Falso, o
que significa que para exibir o nome do ms por extenso, isto , no abreviado.
Funo Hour
Recebe como parmetro uma hora, e retorna um nmero entre 0 e 23, indicando o hora do
dia. O formato geral o seguinte:
Hour(horrio)
Criando Sites Dinmicos com ASP 3.0
1 4 4
Considere o exemplo abaixo:
MsgBox Hora do sistema: & Hour(Time( ))
O resultado deste comando est indicado na Figura 3.37.
Figura 3.37: Exemplo de uso da funo Hour.
A funo Time( ) captura a hora do sistema e passa como parmetro para a funo Hour, que,
por sua vez, retorna apenas a hora do dia.
A funo Dat eDiff
Esta funo pode ser utilizada para determinar o nmero de intervalos (em dias, trimestres,
semestres, anos, etc.), entre duas datas. A sintaxe desta funo o seguinte:
DateDiff(intervalo, data1, data2)
O parmetro intervalo uma String que diz que tipo de intervalo vamos calcular. Por exemplo,
este parmetro que define se queremos calcular o nmero de dias, ou o nmero de meses
entre duas datas. Na Tabela 3.2, temos os valores possveis para o parmetro intervalo.
Tabela 3.2 Valores para o parmetro intervalo.
Valor Descrio
yyyy Anos
q Trimestres
m Meses
y Dias do ano (o mesmo que dias)
d Dias
w Semanas
ww Semanas do ano (o mesmo que semanas)
1 4 5
Captulo 3 Funes, Procedimentos e Eventos com VBScript
A ttulo de exemplo, vamos calcular o nmero de meses, desde o descobrimento do Brasil,
at 31 de Dezembro de 1999. Para isso, utilizaramos o seguinte comando:
MsgBox Meses desde o descobrimento: & DateDiff(m,22/04/1500,31/12/1999)
O resultado deste comando pode ser conferido na Figura 3.38.
Valor Descrio
h Horas
n Minutos
s Segundos
Figura 3.38: Exemplo de uso da funo Dat eDiff.
Vamos modificar um pouco o nosso exemplo, e calcular o nmero de horas desde o
descobrimento. Para isto, podemos utilizar o seguinte comando:
MsgBox Nmero aproximado de horas, desde o descobrimento: & DateDiff(h,22/04/
1500,31/12/1999)
O resultado deste comando pode ser conferido na Figura 3.39.
Figura 3.39: O nmer o apr oximado de hor as, desde o descobr iment o do Br asil.
A Funo Dat eAdd
Esta funo pode ser utilizada para determinar uma data futura, com base em uma data
fornecida, o tipo de perodo a ser acrescentado (dias, meses, anos, etc.), e o nmero de perodos
a serem acrescentados. A sintaxe desta funo a seguinte:
Criando Sites Dinmicos com ASP 3.0
1 4 6
DateAdd(intervalo, nmero_de_intervalos, data)
O parmetro intervalo uma String que diz que tipo de intervalo vamos acrescentar. Por
exemplo, este parmetro que define se queremos acrescentar um nmero especificado de
dias, meses, anos, etc. Na Tabela 3.3, temos os valores possveis para o parmetro intervalo.
Tabela 3.3 Valores para o parmetro intervalo.
A ttulo de exemplo, vamos calcular a data em que tivemos um perodo de 1.000 meses, aps
o descobrimento do Brasil. Para isso, utilizaramos o seguinte comando:
MsgBox Mil meses aps o descobrimento foi em: & DateAdd(m,1000,22/04/1500)
O resultado deste comando pode ser conferido na Figura 3.40.
Valor Descrio
yyyy Anos
q Trimestres
m Meses
y Dias do ano (o mesmo que dias)
d Dias
w Semanas
ww Semanas do ano (o mesmo que semanas)
h Horas
n Minutos
s Segundos
Figura 3.40: Exemplo de uso da funo Dat eAdd.
Vamos modificar um pouco o nosso exemplo, e calcular em que data teremos passado um
milho de dias aps o descobrimento.
1 4 7
Captulo 3 Funes, Procedimentos e Eventos com VBScript
MsgBox Um milho de dias aps o descobrimento em : & DateAdd(d,1000000,22/04/1500)
O resultado deste comando pode ser conferido na Figura 3.41.
Figura 3.41 : Em 1 9 /0 3 /4 2 3 8 , o Br asil complet ar um milho de dias.
Funo Year
Recebe como parmetro uma data, e retorna um nmero indicativo do ano. O formato geral
o seguinte:
Year(data)
Considere o exemplo abaixo:
MsgBox Ano atual: & Year(Date( ))
O resultado deste comando est indicado na Figura 3.42.
Figura 3.42: Exemplo de uso da funo Year.
A funo Date( ) captura a data do sistema e passa como parmetro para a funo Year, a qual
por sua vez, retorna apenas o ano.
Funo WeekDay
Recebe como parmetros uma data, e um parmetro opcional, que indica qual o primeiro dia da
semana. Se este parmetro for omitido, o primeiro dia da semana ser considerado domingo. O
valor para o primeiro dia da semana numrico: 1 domingo, 2 segunda-feira, e assim por diante.
WeekDay(data, prim_dia_semana.)
Criando Sites Dinmicos com ASP 3.0
1 4 8
Considere o exemplo abaixo:
MsgBox Dia da semana: & WeekDay(31/12/1999)
O resultado deste comando est indicado na Figura 3.43.
Figura 3.43: Exemplo de uso da funo WeekDay.
O valor 6 indica que foi uma sexta-feira, o que confere com o calendrio.
Poderamos determinar que o primeiro dia da semana a segunda-feira (2). Com isso o nosso
exemplo, ficaria assim:
MsgBox Dia da semana: & WeekDay(31/12/1999,2)
O resultado deste comando est indicado na Figura 3.44.
Figura 3.44: Definindo a segunda- feir a como o pr imeir o dia da semana.
O valor 5 indica que foi uma sexta-feira, pois agora a segunda-feira passou a ser o dia 1, a
tera-feira o dia 2, e assim por diante. Novamente confere com o calendrio.
Funo WeekDayName
Recebe como parmetro um nmero, indicativo do dia da semana, e um segundo parmetro
que pode ser Verdadeiro ou Falso. Se o segundo parmetro for Verdadeiro, o nome do dia da
semana ser exibido abreviadamente. O formato geral o seguinte:
WeekDayName(nmero_do_dia, abreviar)
1 4 9
Captulo 3 Funes, Procedimentos e Eventos com VBScript
Considere o exemplo abaixo:
MsgBox Dia da semana: & WeekDayName(6,False)
O resultado deste comando est indicado na Figura 3.45.
Figura 3.45: Exemplo de uso da funo WeekDayName.
Funes Par a Clculos M at emt icos
Veremos as principais funes para efetuar clculos matemticos. Nos exemplos prticos, no
final do captulo, estaremos utilizando algumas destas funes.
Na Tabela 3.4, temos a descrio das principais funes matemticas, disponveis no VBScript.
Tabela 3.4 Funes para clculos matemticos.
Funo Descrio
Abs(n) Retorna o valor absoluto (sem sinal) do nmero n.
Atn(n) Retorna o valor do arco, cuja tangente o nmero n. O
nmero n deve ser fornecido em radianos.
Cos(n) Retorna o coseno do nmero n. O nmero n deve ser
fornecido em radianos.
Exp(n) Retorna o nmero e (logaritmo neperiano e=2,7183),
elevado no nmero n.
Log(n) Retorna o logaritmo natural de um nmero n.
Rnd(n) Retorna um nmero aleatrio entre 0 e 1.
Sgn(n) Retorna um nmero inteiro, indicando o sinal do
nmero n. Retorna 1 para nmeros negativos e 1 para
nmeros positivos.
Criando Sites Dinmicos com ASP 3.0
1 5 0
NOTA
Para converter graus para radianos, multiplique o valor em graus por (3.14), e divida o
resultado por 180.
Na Tabela 3.5, temos alguns exemplos de utilizao das funes matemticas do VBScript.
Tabela 3.5 Alguns exemplos de utilizao das funes matemticas.
Funo Descrio
Sin(n) Retorna o seno do nmero n. O nmero n deve ser
fornecido em radianos.
Sqr(n) Retorna a raiz quadrada do nmero n.
Tan(n) Retorna a tangente do nmero n. O nmero n deve ser
fornecido em radianos.
Com isso, encerramos a apresentao das principais funes do VBScript. Para uma referncia
completa, voc pode consultar o site http://msdn.microsoft.com/scripting, ou os CDs da
assinatura do MSDN (Microsoft Developer Network). Junto com o Visual Studio 6.0 fornecida
uma cpia do MSDN.
Exemplo Valor de retorno
Abs(-2350) 2350
Atn(2) 1,1071487177
Cos(0) 1
Exp(1) 2,71828182845905
Log(1000) 6,90775527898214
Rnd*10 Gera um nmero aleatrio entre 0 e 10.
Sgn(-235) Retorna 1, pois o nmero negativo.
Sin(0) Retorna 0
Sqr(400) Retorna 20
Tan(0) Retorna 0
1 5 1
Captulo 3 Funes, Procedimentos e Eventos com VBScript
Cr iando Suas Pr pr ias Funes e Pr ocediment os
Neste item, aprenderemos a criar nossas prprias funes e sub-rotinas. O princpio, por trs
da criao de funes e sub-rotinas, o de reaproveitamento de cdigo e facilidade de
manuteno do programa. Imagine que estejamos criando uma pgina para clculos
financeiros, por exemplo, depreciao contbil. Vamos supor que, em diversos pontos do
nosso script, seja necessria a realizao do clculo de depreciao. Poderamos colocar o
cdigo que faz o clculo, em cada um dos pontos, onde o mesmo seja necessrio. Porm esta
no a melhor maneira de criarmos nosso script. Imagine, por exemplo, quando fosse
necessrio alterar a maneira de realizar os clculos. Teramos que repassar todo o script,
procurando os pontos onde o cdigo est, e fazer as alteraes. Sem contar que estaramos
criando um script bastante longo, dependendo do nmero de clculos necessrios.
Para resolver estes problemas, poderamos criar uma funo ou sub-rotina que faz os clculos
de depreciao. Depois, em cada local onde precisamos fazer os clculos, s chamar a
funo (ou sub-rotina), para fazer os clculos. Quando fosse necessria a alterao da
metodologia de clculo, era s alterar a funo (ou sub-rotina) e pronto! Os novos clculos
passaro a ser feitos com base na nova metodologia. Isto poupa esforo, reduz o nmero de
linhas do script, facilita a manuteno do mesmo, alm de reduzir a possibilidade de erros.
Agora chegada a hora de aprendermos a criar funes e sub-rotinas.
NOTA
Um termo que pode aparecer procedimento. Um procedimento um grupo de instrues
que pode ser chamado pelo nome atribudo a ele. Neste contexto, funes e sub-rotinas so
tipos de procedimentos.
Cr iando e Ut ilizando Sub- r ot inas
Uma sub-rotina um grupo de comandos que podem ser executados, simplesmente atravs
da chamada do nome da Sub-rotina. Podemos passar um ou mais argumentos para uma Sub-
rotina. Quando a mesma chamada, a execuo desloca-se para dentro da Sub-rotina e executa
todos os comandos. Depois, a execuo do script continua, com o comando seguinte ao que
chamou a Sub-rotina.
A sintaxe para declarao de uma sub-rotina a seguinte:
Sub Nome_da_Sub-rotina(argumento1, argumento2, ..., argumenton)
Comando1
Comando2
...
Comandon
End Sub
Criando Sites Dinmicos com ASP 3.0
1 5 2
Uma sub-rotina pode, ou no, conter argumentos. Caso sejam necessrios argumentos, os
mesmos sero passados quando a Sub-rotina for chamada, e devem ser passados, na mesma
ordem em que foram definidos.
DICA
Quando voc criar Sub-rotinas, procure utilizar nomes que descrevam a funo que ela tem.
Com isso voc torna o entendimento do cdigo mais fcil para quem for utiliz-lo.
Considere o seguinte exemplo de declarao de uma Sub-rotina:
Sub Calcula_imposto(salario, desconto, extras)
Comando1
Comando2
...
Comandon
End Sub
Neste caso, declaramos uma Sub-rotina chamada Calcula_imposto, a qual espera receber trs
parmetros: salario, desconto e extras. Os parmetros devem ser fornecidos nesta ordem,
para que a Sub-rotina funcione corretamente.
Uma vez criada a Sub-rotina, podemos cham-la, simplesmente digitando o nome, ou
utilizando a palavra Call, mais o nome da Sub-rotina. Nos exemplos abaixo, temos dois mtodos
de chamada da Sub-rotina Calcula_imposto:
Calcula_imposto(1500,23,125)
ou
Call Calcula_imposto(1500,23,125)
Observe que os parmetros so passados dentro do parnteses.
Tambm poderamos declarar uma Sub-rotina sem parmetros. Neste caso posso simplesmente
no utilizar os parnteses aps o nome da Sub-rotina, ou utilizar um par de parnteses, sem
nada dentro, conforme indicado abaixo:
Sub Nome_da_Sub-rotina
Comando1
Comando2
...
Comandon
End Sub
ou
1 5 3
Captulo 3 Funes, Procedimentos e Eventos com VBScript
Sub Nome_da_Sub-rotina( )
Comando1
Comando2
...
Comandon
End Sub
Por exemplo, poderamos criar uma Sub-rotina que exibe uma caixa de mensagem com a data
do sistema e a hora, no formato indicado na Figura 3.46.
Figura 3.46: Exibindo a dat a e a hor a em uma caixa de mensagem.
Poderamos criar todos os comandos necessrios, para exibir a hora e a data neste formato, cada
vez que a exibio fosse necessria. Porm mais prtico criar uma Sub-rotina que faz este trabalho.
Cada vez que precisarmos exibir a data e a hora neste formato, s chamarmos a Sub-rotina.
Na Listagem 3.8, temos o cdigo da Sub-rotina exibe_data_hora, a qual faz a exibio da data
e da hora, no formato proposto pela Figura 3.46.
Listagem 3.8 A Sub-rotina exibe_data_hora.
1 Sub exibe_data_hora
2 mes_atual=Month(Date())
3 mes_nome=MonthName(mes_atual,False)
Criando Sites Dinmicos com ASP 3.0
1 5 4
4 mensagem = Ano atual: & Year(Date()) & Chr(13)
5 mensagem = mensagem & Ms atual: & mes_nome & Chr(13)
6 mensagem = mensagem & Hoje dia: & Day(Date())& Chr(13)
mensagem = mensagem & Chr(13) & *************** & Chr(13)& Chr(13)
7 hora_atual = Hour(Time())
8 minuto_atual = Minute(Time())
9 segundo_atual = Second(Time())
10 mensagem = mensagem & Hora atual: & hora_atual & chr(13)
11 mensagem = mensagem & Minuto atual: & minuto_atual & chr(13)
12 mensagem = mensagem & Segundo atual: & segundo_atual
13 MsgBox mensagem
14 End Sub
Agora, cada vez que for necessrio exibir a data e a hora nos formatos do exemplo, basta
chamar a Sub-rotina exibe_data_hora, utilizando um dos seguintes comandos:
Call exibe_data_hora
ou
exibe_data_hora
Cr iando e Ut ilizando Funes
Uma funo um grupo de comandos que podem ser executados, simplesmente atravs da
chamada do nome da Funo. Podemos passar um ou mais argumentos para uma Funo, e
quando a mesma chamada, a execuo desloca-se para dentro da Funo e executa todos os
comandos. Depois, a execuo do script continua, com o comando seguinte ao que chamou a
Funo. A diferena da Funo para a Sub-rotina, que a primeira sempre retorna um valor
para o comando que a chamou.
A sintaxe para declarao de uma Funo a seguinte:
Function Nome_da_Funo(argumento1, argumento2, ..., argumenton)
Comando1
Comando2
...
Comandon
End Function
1 5 5
Captulo 3 Funes, Procedimentos e Eventos com VBScript
Uma Funo pode, ou no, conter argumentos. Caso sejam necessrios argumentos, os mesmos
sero passados quando a Funo for chamada, e devem ser passados, na mesma ordem em
que foram definidos.
DICA
Quando voc criar Funo, procure utilizar nomes que descrevam os objetivos da Funo.
Com isso voc torna o entendimento do cdigo mais fcil para quem for utiliz-lo.
Considere o seguinte exemplo de declarao de uma Funo:
Function Converte_para_dolar(valor_em_real, cotacao_dolar)
Comando1
Comando2
...
Comandon
End Function
Neste caso, declaramos uma Funo chamada Converte_para_dolar, a qual espera receber
dois parmetros: um valor em real e a cotao do dlar.
Uma vez criada a Funo, devemos cham-la, em um comando de atribuio, isto , o valor retornado
pela funo, deve ser atribudo a uma varivel, ou exibido atravs de um comando como MsgBox.
No exemplo abaixo, estamos atribuindo o valor de retorno da funo, varivel valor_dolar.
valor_dolar = Converte_para_dolar (1500,1.81)
Tambm poderamos exibir o valor retornado pela funo, utilizando o comando MsgBox,
conforme indicado a seguir:
MsgBox Valor em dlar: & Converte_para_dolar (1500,1.81)
Observe que os parmetros so passados dentro dos parnteses, e na mesma ordem definida
quando da criao da funo.
Tambm poderamos declarar uma Funo, sem parmetros. Neste caso posso simplesmente
no utilizar os parnteses aps o nome da Funo, ou utilizar um par de parnteses, sem nada
dentro, conforme indicado a seguir:
Function Nome_da_Funo
Comando1
Comando2
...
Comandon
End Function
Criando Sites Dinmicos com ASP 3.0
1 5 6
ou
Function Nome_da_Funo( )
Comando1
Comando2
...
Comandon
End Function
Por exemplo, vamos criar uma Funo que converte um valor de um ngulo de graus para
radianos. Depois a utilizaremos dentro de um lao For...Next, para exibir o valor em radianos,
para os ngulos de 0 a 20 graus.
Na Listagem 3.9, temos o exemplo de um script onde foi criada a funo CRad, que converte
um valor em graus para radianos. Depois utilizamos um lao For para exibir, atravs de uma
caixa de mensagem, os valores em radianos, para os ngulos de 0 a 20 graus.
Listagem 3.9 A Funo CRad Converte valores de graus para radianos.
1 <HTML>
2 <HEAD>
3 <TITLE>Exemplo de criao de Funo CRad.</TITLE>
4 </HEAD>
5 <BODY>
6 <SCRIPT LANGUAGE=vbscript>
7 <!
8 Criao da funo CRad.
9 Function CRad(valor_graus)
10 CRad = (valor_graus*3.14)/180
11 End Function
12 For i=0 to 20
13 mensagem = mensagem & Angulo: & i & Valor em Radianos: &
FormatNumber(CRad(i),5)& Chr(13)
14 Next
15 MsgBox mensagem
1 5 7
Captulo 3 Funes, Procedimentos e Eventos com VBScript
16 >
17 </SCRIPT>
18 <P>Converte de graus para radianos.</P>
19 </BODY>
20 </HTML>
Observe que, dentro da Funo, atribumos varivel CRad um determinado valor. isso
que caracteriza uma Funo. Dentro de seu cdigo, devemos atribuir a uma varivel que
tenha o mesmo nome da Funo, um determinado valor. Este valor que ser o valor de
retorno da Funo.
Tambm cabe salientar o uso da funo FormatNumber, dentro do lao For. Essa funo
utilizada para formatar a maneira como um nmero exibido. Neste caso, utilizamos a funo
FormatNumber, para limitar o nmero de casas decimais, a cinco casas depois da vrgula.
Em cada passada do lao For...Next chamamos a funo CRad, para fazer a converso de
graus para radianos. O valor retornado pela funo CRad, passado para a funo
FormatNumber, para ser formatado com apenas cinco casas decimais.
OBSERVAO
A linha 13 est sendo exibida em duas linhas, por questes de espao. Quando for criar este
script, todo o contedo da linha 13, deve ser digitado em uma nica linha.
Tr abalhando com Event os no VBScr ipt
Com o Internet Explorer, temos um conjunto de objetos a nossa disposio. Cada um destes
objetos possui um conjunto de eventos, para os quais podemos criar cdigo.
Um evento uma ao realizada pelo usurio em uma pgina. Por exemplo, quando o usurio
clica com o mouse, em um boto de comando, gerado o evento onclick deste boto. Para
cada evento, existe uma Sub-rotina associada, para a qual podemos criar cdigo em resposta
ao evento. Por exemplo, quando o usurio clica em um boto de comando, podemos colocar
cdigo no evento onclick deste boto, que valida os dados digitados pelo usurio. Caso algum
dado esteja com problemas, uma mensagem de erro exibida, solicitando que o usurio
corrija os dados com problema.
No Modelo de Objetos do Internet Explorer, temos quatro objetos que podem responder a eventos:
Criando Sites Dinmicos com ASP 3.0
1 5 8
Window.
Document.
Form.
Element.
Para criar procedimentos que respondam a eventos utilizamos o seguinte formato:
<SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>
<!
Sub NomeDoObjeto_NomeDoEvento
Comando1
Comando2
...
Comandon
End Sub
>
</SCRIPT>
O nome da Sub-rotina que define a qual evento a mesma ir responder. O padro para o
nome da Sub-rotina : NomeDoObjeto_NomeDoEvento.
Na Listagem 3.10, temos um exemplo de utilizao do evento Onload, do objeto Window.
Este evento, conforme o prprio nome sugere, ocorre quando a pgina carregada. Observe
que o nome da Sub-rotina : Window_onload, o que conforme descrito, significa o evento
Onload do objeto Window.
Listagem 3.10 O evento Onload do objeto Window.
1 <HTML>
2 <HEAD>
3 <TITLE>Exemplo de eventos.</TITLE>
4 <SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>
5 <!
6 Sub Window_onload
7 MsgBox A pgina est sendo carregada!!
8 End Sub
9 >
1 5 9
Captulo 3 Funes, Procedimentos e Eventos com VBScript
10 </SCRIPT>
11 </HEAD>
12 <BODY>
13 <P>Exemplo de utilizao do evento onload do objeto Window.</P>
14 </BODY>
15 </HTML>
Ao ser carregada esta pgina, o evento Onload do objeto Window disparado, e o cdigo da
Sub-rotina Window_onload executado. Com isso exibida uma caixa de mensagem, conforme
indicado na Figura 3.47.
Figura 3.47: Caixa de dilogo cr iada pelo event o Window_ onload.
Pr incipais Event os dos Objet os do Int er net Explor er
O objeto Window o objeto de mais alto nvel. Ele representa a janela do Internet Explorer e
todos os seus elementos. Existem diversos eventos disponveis para o objeto Window, conforme
descrito na Tabela 3.6.
Tabela 3.6 Os eventos do objeto Window.
Evento Descrio
Onbeforeunload Ocorre quando a janela est para ser fechada.
Onblur Ocorre quando a janela perde o foco.
Onerror Ocorre quando um erro gerado na janela.
Onfocus Ocorre quando a janela recebe o foco.
Onhelp Ocorre quando pressionada a tecla F1.
Criando Sites Dinmicos com ASP 3.0
1 6 0
Na Listagem 3.11, temos cdigo definido para os eventos Window_onload, Window_onhelp
e Window_onunload.
Listagem 3.11 Utilizando alguns eventos do objeto Window.
1 <HTML>
2 <HEAD>
3 <TITLE>Exemplo de eventos.</TITLE>
4 <SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>
5 <!
6 Sub Window_onload
7 MsgBox A pgina est sendo carregada!!
8 End Sub
9 Sub Window_onhelp
10 MsgBox Voc pressionou a tecla F1!!
11 End Sub
12 Sub Window_onunload
13 MsgBox Voc est fechando este documento!!!
14 End Sub
15 >
16 </SCRIPT>
17 </HEAD>
18 <BODY>
19 <P>Exemplo de utilizao de eventos do objeto Window.</P>
20 </BODY>
21 </HTML>
Evento Descrio
Onload Ocorre quando a janela est sendo carregada.
Onresize Ocorre quando a janela redimensionada.
Onscroll Ocorre quando o usurio rola atravs do
contedo da janela.
Onunload Ocorre quando a janela fechada.
1 6 1
Captulo 3 Funes, Procedimentos e Eventos com VBScript
NOTA
Ao pressionar F1, ser exibida a mensagem indicada na Figura 3.48, e logo em seguida ser
aberta uma janela com a Ajuda do Internet Explorer, conforme indicado na Figura 3.49, uma
vez que F1 a tecla padro de Ajuda no Windows.
Figura 3.48: M ensagem exibida pelo event o Window_ onhelp.
Figura 3.49: Janela com a Ajuda do Int er net Explor er.
O objeto Document representa todo o contedo existente dentro do objeto Window. Existem
diversos eventos disponveis para o objeto Document, conforme descrito na Tabela 3.7.
Criando Sites Dinmicos com ASP 3.0
1 6 2
Tabela 3.7 Os eventos do objeto Documento.
Evento Descrio
Onafterupdate Ocorre aps os dados terem sido enviados para o servidor
Web. Por exemplo, quando a pgina possui um formulrio, no
qual o usurio preenche os campos e depois clica no boto
Enviar, enviando os dados para o servidor Web. Este, na
verdade, um evento que ocorre no objeto Form, mas como
o objeto Form est contido no objeto Document, o objeto
Documento tambm capaz de responder a este evento.
Onbeforeupdate Ocorre antes que os dados tenham sido enviados para o
servidor Web. Por exemplo, quando a pgina possui um
formulrio, no qual o usurio preenche os campos e
depois clica no boto Enviar, enviando os dados para o
servidor Web. Este, na verdade, um evento que ocorre
no objeto Form, mas como o objeto Form est contido no
objeto Document, o objeto Document tambm capaz de
responder a este evento.
Onclick Ocorre cada vez que o usurio clica no documento.
Ondblclick Ocorre quando o usurio d um clique duplo no
documento.
Ondragstart Ocorre quando o usurio comea a arrastar algum
elemento no documento.
Onhelp Ocorre quando o usurio pressiona a tecla F1.
OnKeyDown Ocorre quando uma tecla pressionada, com exceo de
algumas teclas especiais, como Alt, por exemplo.
OnKeyPress Ocorre quando qualquer tecla pressionada, inclusive as
teclas especiais.
OnKeyUp Ocorre quando uma tecla, que estava pressionada, liberada.
Onmousedown Ocorre quando um boto do mouse pressionado.
Onmousemove Ocorre quando o mouse movimentado sobre o documento.
Onmouseup Ocorre quando um boto, que estava pressionado, liberado.
Onselectstart Ocorre quando um elemento do documento selecionado.
1 6 3
Captulo 3 Funes, Procedimentos e Eventos com VBScript
Agora vamos listar os principais eventos do objeto Form. O objeto Form criado com a tag
<FORM> </FORM>. Podemos ter mais do que um objeto Form em um documento, desde
que os mesmos possuam nomes diferentes. Existem diversos eventos disponveis para o objeto
Form, conforme descrito na Tabela 3.8.
Tabela 3.8 Os eventos do objeto Form.
Evento Descrio
Onafterupdate Ocorre aps os dados terem sido enviados para o servidor
Web. Por exemplo, quando a pgina possui um formulrio,
no qual o usurio preenche os campos e depois clica no
boto Enviar, enviando os dados para o servidor Web.
Onbeforeupdate Ocorre antes que os dados tenham sido enviados para o
servidor Web. Por exemplo, quando a pgina possui um
formulrio, no qual o usurio preenche os campos e
depois clica no boto Enviar, enviando os dados para o
servidor Web.
Onclick Ocorre cada vez que o usurio clica no formulrio.
Ondblclick Ocorre quando o usurio d um clique duplo no formulrio.
Ondragstart Ocorre quando o usurio comea a arrastar algum
elemento no formulrio.
Onhelp Ocorre quando o usurio pressiona a tecla F1.
OnKeyDown Ocorre quando uma tecla pressionada, com exceo de
algumas teclas especiais, como Alt, por exemplo.
OnKeyPress Ocorre quando qualquer tecla pressionada, inclusive as
teclas especiais.
OnKeyUp Ocorre quando uma tecla, que estava pressionada, liberada.
Onmousedown Ocorre quando um boto do mouse pressionado.
Onmousemove Ocorre quando o mouse movimentado sobre o
formulrio.
Onmouseout Ocorre quando o usurio move o mouse para fora da rea
do formulrio.
Onmouseover Ocorre quando o mouse movimentado sobre o
formulrio.
Criando Sites Dinmicos com ASP 3.0
1 6 4
Agora vamos listar os principais eventos do objeto Element. O objeto Element, representa
qualquer controle ou elemento visvel que possa ser colocado em uma pgina. Podemos ter
mais do que um objeto Element em um documento, sendo que cada objeto identificado pelo
seu nome. No podemos ter dois elementos com o mesmo nome. Existem diversos eventos
disponveis para o objeto Element, conforme descrito na Tabela 3.9.
Tabela 3.9 Os eventos do objeto Element.
Evento Descrio
Onmouseup Ocorre quando um boto, que estava pressionado,
liberado.
Onselectstart Ocorre quando um elemento do formulrio selecionado.
Onsubmit Ocorre quando o usurio clica no boto Enviar do formulrio.
Onreset Ocorre quando o usurio clica no boto Reset do formulrio.
Evento Descrio
Onafterupdate Ocorre aps os dados terem sido enviados para o servidor
Web. Por exemplo, quando a pgina possui um formulrio,
no qual o usurio preenche os campos e depois clica no
boto Enviar, enviando os dados para o servidor Web.
Onbeforeupdate Ocorre antes que os dados tenham sido enviados para o
servidor Web. Por exemplo, quando a pgina possui um
formulrio, no qual o usurio preenche os campos e
depois clica no boto Enviar, enviando os dados para o
servidor Web.
Onblur Ocorre quando o elemento perde o foco.
Onchange Ocorre quando os dados do elemento so alterados. Por
exemplo, quando alteramos o valor de um campo de
texto, em um formulrio.
Onclick Ocorre cada vez que o usurio clica no elemento.
Ondblclick Ocorre quando o usurio d um clique duplo no elemento.
Ondragstart Ocorre quando o usurio comea a arrastar um elemento
pela primeira vez.
1 6 5
Captulo 3 Funes, Procedimentos e Eventos com VBScript
Apenas para exemplificar a utilizao de eventos, vamos criar uma pgina onde temos uma
caixa de seleo. Nesta caixa de seleo temos trs opes: Axcel Books, Developers Magazine
e Microsoft. Quando o usurio seleciona uma destas opes, o Internet Explorer,
automaticamente, carrega a pgina relacionada.
A Figura 3.50, mostra a pgina de exemplo.
Para tornar esta lista dinmica, utilizamos o modelo de eventos e cdigo VBScript, conforme
indicado na Listagem 3.12.
Evento Descrio
Onfocus Ocorre quando o elemento recebe o foco.
Onhelp Ocorre quando o usurio pressiona a tecla F1.
OnKeyDown Ocorre quando uma tecla pressionada, com exceo de
algumas teclas especiais, como Alt, por exemplo.
OnKeyPress Ocorre quando qualquer tecla pressionada, inclusive
as teclas especiais.
OnKeyUp Ocorre quando uma tecla, que estava pressionada, liberada.
Onmousedown Ocorre quando um boto do mouse pressionado.
Onmousemove Ocorre quando o mouse movimentado sobre o formulrio.
Onmouseout Ocorre quando o usurio move o mouse para fora da rea
do formulrio.
Onmouseover Ocorre quando o mouse movimentado sobre o formulrio.
Onmouseup Ocorre quando um boto, que estava pressionado, liberado.
Onresize Ocorre quando o elemento redimensionado.
Onselectstart Ocorre quando um elemento selecionado.
Onsubmit Ocorre quando o usurio clica no boto Enviar do formulrio.
Onselect Ocorre quando o usurio termina de selecionar os dados de
um controle de entrada, como uma caixa de texto, por exemplo.
Criando Sites Dinmicos com ASP 3.0
1 6 6
Figura 3.50: Cr iando uma list a de navegao.
Listagem 3.12 Criando uma lista de navegao dinmica.
1 <HTML>
2 <HEAD>
3 <TITLE></TITLE>
4 <SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>
5 <!
6 Sub navega_onchange
7 window.navigate window.navega.value
8 End Sub
9 >
10 </SCRIPT>
11 </HEAD>
12 <BODY>
13 <P>Selecione uma opo na lista, para ir pgina selecionada:</P>
14 <P>
15 <SELECT id=navega name=navega>
16 <OPTION selected value=Informativo>Selecione uma opo na lista</OPTION>
1 6 7
Captulo 3 Funes, Procedimentos e Eventos com VBScript
17 <OPTION value=http://www.axcel.com.br>Axcel Books Editora</OPTION>
18 <OPTION value=http://www.developers.com.br>Developers Magazine</OPTION>
19 <OPTION value=http://www.microsoft.com>Microsoft</OPTION>
20 SELECT>
21 </P>
22 </BODY>
23 </HTML>
Para tornar a lista dinmica, utilizamos o evento onchange, do controle Navega. O controle
navega uma caixa de combinao. Para maiores informaes sobre criao de formulrio
com HTML, consulte o Captulo 2. Utilizamos o evento navega_onchange, o qual acontece
toda vez que um elemento da lista for selecionado.
Vejam que com uma nica linha de cdigo, tornamos a lista dinmica. A linha de cdigo foi
a seguinte:
window.navigate window.navega.value
A primeira parte utiliza o mtodo Navigate do objeto Window. Este mtodo utilizado para
carregar uma pgina no Internet Explorer. O mtodo Navigate espera receber um nico
parmetro, que o endereo da pgina que deve ser carregada. Este parmetro obtido a
partir da propriedade value do controle Navega. Cada opo da caixa de combinao possui
um valor associado. Por exemplo, quando o usurio seleciona Microsoft, a propriedade value
definida como http://www.microsoft.com, e este parmetro passado para o mtodo
window.navigate, fazendo com que seja carregada a pgina da Microsoft. Este o comportamen-
to desejado para a nossa pgina, ou seja, quando uma opo selecionada, a pgina associada
a ela, deve ser carregada no Internet Explorer.
IMPORTANTE
Estamos utilizando o modelo de objetos e de eventos do Internet Explorer. O Nestcape Navigator
possui um modelo de objetos diferente do modelo do Internet Explorer. Por isso, scripts
desenvolvidos para o modelo do Internet Explorer, podem no funcionar corretamente no Netscape.
Concluso
Neste captulo, abordamos diversos tpicos importantes do VBScript. Iniciamos pelas funes
para determinao do subtipo de uma varivel, bem como funes para converso de subtipos.
Depois passamos a tratar de outras funes, tais como as para tratamento de texto, data e hora
e funes matemticas. Estas funes so utilizadas na criao de aplicaes prticas e so
de grande ajuda.
Criando Sites Dinmicos com ASP 3.0
1 6 8
Em seguida, aprendemos a criar e utilizar Sub-rotinas e Funes, conhecendo as vantagens
de sua utilizao.
Na parte final do captulo, tratamos sobre o modelo de objetos do Internet Explorer e os
principais eventos associados a cada um dos objetos. Para quem procura maiores informaes
sobre este assunto, sugiro o seguinte endereo: http://msdn.microsoft.com/scripting.
A partir do prximo captulo estaremos aprendendo a utilizar a tecnologia ASP na criao de
pginas e sites dinmicos. O contedo apresentado nestes captulos iniciais de fundamental
importncia para a aprendizagem de ASP, e formam a base para o restante do livro.
1 6 9
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
Capt ul o 4
A Tecnologia ASP e o Modelo
de Objetos do ASP 3.0
Criando Sites Dinmicos com ASP 3.0
1 7 0
Int r oduo
Vamos iniciar, a partir deste captulo, a nossa jornada rumo a aprendizagem da tecnologia de
Active Server Pages ASP 3.0. Passaremos ao aprendizado de uma srie de conceitos importantes,
os quais so utilizados na construo de pginas dinmicas e aplicativos para a Web.
Iniciaremos o captulo com uma apresentao detalhada sobre a tecnologia ASP, para que
possam ser solucionadas quaisquer dvidas, que por ventura o leitor ainda tenha a respeito
do que exatamente esta tecnologia e do que necessrio para utiliz-la.
Em seguida, passaremos ao estudo do Modelo de Objetos do ASP 3.0, apresentando uma
viso geral sobre o Modelo de Objetos e a funo de cada um dos objetos existentes.
Feitas as devidas apresentaes, passaremos a estudar alguns objetos do ASP 3.0, sempre
ilustrando os conceitos apresentados com exemplos prticos e de fcil assimilao. Nos
exemplos procuro ilustrar a forma de utilizao de cada um dos objetos, de modo que os
mesmos possam ser facilmente, adaptados para uso nas aplicaes que se esteja desenvolvendo.
NOTA
Os objetos, que no forem tratados neste captulo, sero vistos nos demais captulos deste livro.
Finalizaremos o captulo com alguns exemplos mais elaborados, onde procuro apresentar
diversas utilizaes prticas para os objetos da tecnologia ASP 3.0.
Ent endendo e Ut ilizando ASP
Quando comeamos a utilizar ASP, surgem algumas dvidas a respeito desta tecnologia. Conhecer
os diversos objetos, mtodos e comandos importante, porm igualmente importante conhecer
o funcionamento de uma pgina ASP. Para isso temos que responder s seguintes perguntas:
Como e onde uma pgina ASP processada?
O que uma pgina ASP retorna para o navegador do cliente?
O que preciso para criar e acessar pginas ASP?
Vamos s respostas.
1 7 1
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
Como e Onde uma Pgina ASP Pr ocessada?
Primeiro devemos lembrar que o que caracteriza uma pgina como sendo uma pgina ASP
a extenso .asp. Isto significa que nossas pginas devem ter a extenso .asp e no .htm ou
.html, normalmente utilizadas para pginas HTML estticas. Por exemplo, quando o usurio
digita um endereo como o seguinte:
http://www.abc.com.br/compras.asp
o servidor identifica a pgina como sendo uma pgina ASP, devido a extenso .asp.
Uma vez identificada, a pgina ASP processada pelo servidor Web (que pode ser o IIS ou o
Personal Web Server). O servidor, aps identificar a pgina ASP, passa a mesma para uma DLL
chamada ASP.DLL. O cdigo contido nesta DLL analisa toda a pgina ASP, linha por linha, em
busca de linhas de cdigo ASP, o qual executado. Aps executado todo o cdigo existente na
pgina, o resultado, no formato de uma pgina HTML simples, enviado para o navegador do
cliente. Este processo detalhado na Figura 4.1 e explicado em seguida.
Figura 4.1 : O pr ocessament o de uma pgina ASP.
Abaixo descrevemos, detalhadamente, os passos indicados na Figura 4.1.
1. O usurio digita o endereo ou clica em um link para uma pgina ASP, como por
exemplo www.abc.com.br/catalogo/precos.asp. O pedido do usurio enviado para o
servidor Web, que no nosso exemplo o IIS Internet Information Services.
1 ) www. abc. com. br /page1 . asp
1 ) www. abc. com. br /page2 . asp
Client e
Ser vidor Web IIS
2 ) Ident ifica que uma pgina ASP.
3 ) Passa o pr ocessament o par a ASP. DLL
4 ) Int er pr et a e execut a o cdigo exist ent e.
5 ) Ret or na um r esult ado no for mat o HTM L. Client e
Criando Sites Dinmicos com ASP 3.0
1 7 2
2. O servidor identifica que o pedido para uma pgina que contm cdigo ASP, pois a
extenso da pgina .asp. No exemplo da Figura 4.1 um dos clientes solicita a pgina
page1.asp e o outro a pgina page2.asp.
3. Uma vez identificada como uma pgina ASP, o servidor Web passa o processamento da
pgina para o interpretador ASP (que no caso a DLL ASP.DLL, normalmente instalada
no diretrio winnt\System32\inetsrv, o qual o diretrio de instalao do IIS).
4. O interpretador passa linha por linha da pgina ASP. Sempre que for encontrado cdigo
ASP, o mesmo interpretado e executado.
5. Aps todo o cdigo ter sido executado, o resultado do processamento enviado para o
navegador do cliente, no formato de uma pgina HTML padro. importante detalhar
bastante este ponto, pois existem muitas confuses e interpretaes errneas a respeito
do mesmo. Vamos fazer isso no prximo item.
Com isso podemos responder a pergunta do item: como e onde uma pgina ASP processada?
Uma pgina ASP processada no servidor Web (IIS ou Personal Web Server) pelo interpretador
ASP (ASP.DLL). O interpretador percorre a pgina, linha por linha, interpretando e executando
todo o cdigo existente na pgina.
Agora vamos detalhar um pouco mais sobre o que a pgina ASP retorna para o navegador
do cliente.
O que uma Pgina ASP Ret or na Par a o Navegador do Client e?
Quando o usurio digita o endereo ou clica em um link para uma pgina ASP, por exemplo
www.abc.com.br/page1.asp, a pgina page1.asp interpretada e o cdigo ASP executado.
Enquanto a pgina est sendo executada nada retornado para o cliente (embora possamos
ter um certo controle sobre isso, fazendo com que a pgina seja exibida medida que a
mesma vai sendo interpretada e executada. Aprenderemos a fazer este controle mais adiante.).
Aps o processamento da pgina, o resultado retornado para o navegador do cliente. Nunca
demais repetir que o que enviado para o navegador do cliente apenas cdigo HTML
padro, resultante do processamento da pgina ASP. Isso pode facilmente ser comprovado.
No Internet Explorer 5.0 ou superior, basta que o usurio selecione o comando Exibir/Cdigo
fonte, no menu de Opes. Isto ir exibir o cdigo fonte da pgina que enviada para o
navegador do cliente. Uma observao atenta suficiente para verificar que o resultado
apenas cdigo HTML. Vamos exemplificar este fato. Considere a pgina ASP, extremamente
simples, da Listagem 4.1.
1 7 3
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
Listagem 4.1 Uma pgina ASP simples list4-1.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <BODY>
6 <H1>EXEMPLO DE PGINA ASP</H1>
7 <%
8 Response.Write Toda pgina ASP interpretada <BR>
9 Response.Write e executada no servidor WEB !!!<BR>
10 Response.Write O resultado que retorna para o navegador<BR>
11 Response.Write do cliente, cdigo HTML padro.
12 %>
13 </BODY>
14 </HTML>
Ao acessar esta pgina ASP, o servidor Web interpreta e executa todo o cdigo existente. No
nosso exemplo, o cdigo ASP inicia na linha 7 e termina na linha 12. Relembrando o que
vimos no Captulo 1: toda seo de cdigo ASP inicia com <% e termina com %>.
O resultado, gerado pela pgina ASP, cdigo HTML padro, o qual enviado para o navegador
do cliente. A Figura 4.2, mostra a pgina list4-1.asp sendo acessada no Internet Explorer.
Figura 4.2: Acessando a pgina list 4 - 1 . asp.
Criando Sites Dinmicos com ASP 3.0
1 7 4
Se escolhermos o comando Exibir/Cdigo fonte, veremos o resultado indicado na Figura 4.3,
o que nada mais do que cdigo HTML. Isto comprova o que foi descrito neste item.
Figura 4.3: Cdigo HTM L r esult ant e do pr ocessament o da pgina ASP.
Apenas para esclarecer,vamos ver qual o cdigo ASP que gerou a seguinte linha de cdigo HTML:
Toda pgina ASP interpretada <BR>
Esta linha de cdigo HTML resultado da execuo da seguinte linha de cdigo ASP:
Response.Write Toda pgina ASP interpretada <BR>
Ao executar esta linha de cdigo ASP, o interpretador encontra o comando Response.Write. O
interpretador sabe que para enviar para o navegador do cliente, tudo o que estiver entre aspas,
pois o comando Response.Write foi criado justamente para enviar um determinado texto para o
navegador do cliente (seria melhor dizer: O mtodo Write do objeto Response, ao invs de
Response.Write, mas falaremos mais sobre objetos e seus mtodos durante todo este captulo).
Neste exemplo, simplesmente estamos utilizando o comando Response.Write para enviar o
cdigo HTML para o cliente. A tag <BR> a utilizada para quebra de linha: BR Break Row.
Outro detalhe interessante a ser observado que temos cdigo HTML fora da seo de cdigo
ASP. Na listagem 4.1, a linha 6 <H1>EXEMPLO DE PGINA ASP</H1> cdigo HTML.
Neste caso estamos utilizando a tag <H1> para criar o cabealho do documento, conforme
indicado na Figura 4.2. Este cdigo HTML, que no gerado por comandos ASP, enviado
diretamente para o navegador do cliente, quando a pgina ASP acessada.
1 7 5
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
Veja que a possibilidade de alternar trechos de cdigo HTML, com trechos de cdigo ASP,
dentro de uma mesma pgina ASP, nos d uma grande flexibilidade. As partes da pgina que
no apresentam natureza dinmica, podem ser criadas simplesmente utilizando cdigo HTML.
Outras partes que necessitam ser dinamicamente criadas, quer seja atravs da realizao de
clculos ou atravs do acesso a campos de uma tabela de um banco de dados, podem ser
criadas utilizando cdigo ASP. Alm disso podemos ter vrias sees de cdigo ASP dentro
de uma mesma pgina. Para iniciar uma seo utilizo <% e para finalizar a seo utilizo %>.
Posso colocar cdigo HTML entre as diversas sees de cdigo ASP. Com isso vou criando a
pgina utilizando HTML nos pontos estticos e ASP nos pontos que precisam ser dinmicos.
O que Pr eciso Par a Cr iar e Acessar Pginas ASP?
Uma pgina ASP gravada no servidor, no formato de um arquivo de texto comum, no qual
colocamos cdigo HTML e cdigo ASP, conforme descrito anteriormente. Por isso, posso
utilizar um redator de texto, como por exemplo o Bloco de Notas, para criao de pginas
ASP. Uma vez criado o arquivo .asp, basta salv-lo em uma pasta no servidor Web e pronto, o
mesmo j pode ser acessado pelo navegador do cliente.
Tambm existem ferramentas grficas que facilitam a criao de aplicaes para a Web,
utilizando a tecnologia ASP. Uma ferramenta, desenvolvida pela prpria Microsoft, o
Microsoft Visual Interdev, o qual est, atualmente, na sua verso 6.0.
Como descrito anteriormente, uma pgina ASP interpretada e executada no servidor Web.
Como servidor Web devemos utilizar o IIS Internet Information Services 5.0 (o qual faz
parte do Windows 2000 Server), ou o Personal Web Server, para Windows 95 ou Windows 98.
No existe, por exemplo, um interpretador ASP para o servidor Web Apache, ou para o Domino
da Lotus. Para maiores informaes sobre os servidores Web que suportam ASP, consulte a
Introduo deste livro.
Podemos acessar pginas ASP utilizando qualquer navegador disponvel (Internet Explorer,
Netscape Navigator, Mosaic, etc.). Isto possvel pelo fato de que uma pgina ASP interpreta-
da e executada no servidor Web, retornando apenas cdigo HTML padro. Qualquer navegador
capaz de exibir o contedo do cdigo HTML de retorno. Com isso a utilizao de pginas
ASP independe do navegador do cliente, o que passa a ser uma preocupao a menos para
quem desenvolve as pginas.
O fato de uma pgina ASP ser interpretada e executada no servidor Web traz inmeras
vantagens, conforme j descrevemos, porm traz a desvantagem de no poder ser testada
localmente. Isto significa que voc no pode simplesmente gravar uma pgina ASP em uma
pasta do seu computador e tentar acess-la atravs do seu navegador. Fazendo isso, todo o
cdigo ASP ser, simplesmente, ignorado. Para que uma pgina ASP seja processada
Criando Sites Dinmicos com ASP 3.0
1 7 6
corretamente, a mesma precisa estar armazenada em um servidor como o IIS, onde existe o
interpretador ASP. A pgina deve ser acessada utilizando-se o protocolo HTTP, isto , ou voc
digita o endereo da pgina, como por exemplo http://www.abc.com.br/page1.asp, ou clica
em um link que aponta para a pgina ASP gravada no servidor Web.
Uma das novidades da tecnologia ASP 3.0 que podemos ter pginas com a extenso .asp,
sem que as mesmas contenham cdigo ASP. Por exemplo, posso ter uma pgina .asp que
contm apenas cdigo HTML. Quando esta pgina solicitada, o servidor Web passa a
solicitao para o interpretador ASP (ASP.DLL). A primeira coisa que o interpretador faz
verificar se existe algum cdigo a ser interpretado e executado. Caso no exista cdigo ASP, a
pgina enviada de volta para o IIS, o qual retorna a pgina para o navegador do cliente. Com
este procedimento o interpretador no precisa passar a pgina, linha por linha. Isto torna a
execuo das pginas bem mais rpida.
Caso a pgina possua cdigo ASP, o cdigo interpretado e executado, e o resultado do
processamento retornado para o IIS. Ser inserido o cdigo HTML, retornado pelo processador
ASP, nos pontos especficos da pgina, e o IIS enviar, depois, a pgina resultante no formato
HTML para o navegador do cliente. Com isso posso criar todas as pginas com a extenso
.asp, mesmo aquelas que no iro conter cdigo ASP. Caso sejam necessrias mudanas nas
pginas, posso inserir o cdigo ASP, sem que precise alterar os links do site, pois as extenses
das pginas no precisaro ser alteradas (isso aconteceria somente se tivssemos criado as
pginas como .htm e depois trocado a extenso para .asp quando fosse necessrio inserir
cdigo ASP nas pginas).
Objet os do ASP 3 . 0
Com a tecnologia ASP 3.0 temos acesso a uma srie de objetos e mtodos que fazem parte do
prprio ASP. Estes objetos e mtodos fornecem diversas funcionalidades necessrias criao
de pginas dinmicas. Como exemplo, temos um objeto chamado Request, o qual pode ser
utilizado para processar as informaes que o usurio preenche em um formulrio. Temos
tambm um objeto Response, do qual j utilizamos o mtodo Write na Listagem 4.1, o qual
utilizado para retornar informaes para o navegador do cliente, alm de vrios outros.
Neste item faremos uma apresentao genrica sobre o Modelo de Objetos do ASP 3.0, bem
como uma breve descrio de cada objeto. Nos demais itens deste captulo estaremos tratando,
em detalhes, de cada um destes objetos. Estudaremos os objetos atravs de exemplos prticos
de utilizao dos mesmos.
1 7 7
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
Uma Viso Ger al do M odelo de Objet os do ASP 3 . 0
O Modelo de Objetos do ASP 3.0 apresenta os seguintes objetos:
Response
Request
Application
Session
Server
ASPError (este novidade do ASP 3.0).
Cada um destes objetos pode possuir os seguintes elementos:
Methods (Mtodos)
Collections (Colees)
Properties (Propriedades)
Events (Eventos)
Chamamos um mtodo de um objeto para que o mesmo realize uma determinada ao. De
maneira geral, sem nos preocuparmos em sermos precisos em relao teoria de Orientao
a Objetos, poderamos dizer que: Um mtodo um comportamento ou ao realizada por
um objeto. Por exemplo, quando utilizamos o mtodo Write do objeto Response
(Response.Write), o comportamento esperado que o mtodo Write envie o texto fornecido
entre aspas, para o servidor Web, que por sua vez envia para o navegador do cliente.
Conforme pode ser constatado pela Listagem 4.1, para chamarmos um mtodo de um objeto,
utilizamos a seguinte sintaxe:
Nome_do_objeto.Nome_do_mtodo parmetros
Observe o exemplo da Figura 4.4.
Figura 4.4: Ut ilizando o mt odo Wr it e do objet o Response.
Mt odo
Objet o Par met r o
Res pons e.Wr it e "Objet os do ASP 3.0!!!"
Criando Sites Dinmicos com ASP 3.0
1 7 8
Uma propriedade de um objeto define uma caracterstica ou atributo do mesmo. Por exemplo,
temos a propriedade ScriptTimeout, a qual define o tempo mximo em que o cdigo ASP
pode ficar sendo executado em uma pgina, antes que o servidor cancele a execuo e retorne
uma mensagem de erro. O valor padro de 90 segundos. O exemplo seguinte define esta
propriedade para 5 minutos (300 segundos):
Server.ScriptTimeout = 300
Observe que as propriedades de um objeto so chamadas da mesma maneira que os mtodos,
isto :
Nome_do_objeto.Nome_da_propriedade = valor
Uma coleo contm um ou mais valores, os quais podem ser acessados pelo cdigo ASP. Por
exemplo, a coleo Form, do objeto Request, contm os nomes e valores de todos os controles de
um formulrio cujos dados foram passados para processamento da pgina ASP. Lembre que isto
feito atravs do atributo Action da tag FORM, alm disso o atributo Method deve ser definido
em POST. Para maiores detalhes sobre os atributos Action e Method, consulte o Captulo 2.
Figura 4.5: O M odelo de Objet os do ASP 3 . 0 .
Um evento uma determinada ao que acontece, e para a qual podemos escrever cdigo
ASP em resposta. Por exemplo, o objeto Session contm um evento OnStart, que ocorre quando
um usurio estabelece uma sesso com uma pgina ASP antes que uma requisio do usurio
1 7 9
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
seja executada. Podemos utilizar este evento para iniciar variveis ou rodar qualquer outro
cdigo que seja necessrio. Voc j deve ter entrado em um site onde necessrio preencher
um formulrio de cadastramento. Da prxima vez que voc entra no site, voc recebe uma
mensagem dizendo Bem vindo Fulano de tal!. Como que o site sabe que voc, ou pelo
menos o seu computador, que est entrando no site? A pgina utiliza o evento Session.OnStart
para ler informaes que foram gravadas no seu computador, normalmente na forma de um
Cookie e determinar quem est acessando a pgina.
Na Figura 4.5, temos uma viso geral de todos os Objetos, seus mtodos, colees, eventos e
propriedades. No restante deste captulo, estaremos aprendendo a utilizar os objetos Response
e Request. Os demais objetos sero vistos ao longo do livro.
O Objet o Request
Com o objeto Request podemos ter acesso a diversas informaes fornecidas pelo cliente ao
acessar uma pgina ASP, ou ao preencher dados em um formulrio e envi-los. Podemos ter
acesso a informaes a respeito do navegador que o cliente est utilizando, quais os Cookies
gravados no computador do usurio, qual Certificado Digital o usurio est utilizando e muitas
outras informaes importantes.
A partir de agora passaremos a estudar os principais mtodos, colees e propriedades do
objeto Request. Analisaremos os diversos aspectos deste objeto, atravs da utilizao de alguns
exemplos prticos.
Colees do Objet o Request
O objeto Request possui diversas colees. Uma coleo nada mais do que uma estrutura de
dados. Nesta estrutura de dados temos diversos valores, e a cada um deles est associada
uma chave de identificao, a qual pode ser utilizada para acessar o valor contido na coleo.
Atravs das colees do objeto Request, podemos ter acesso a diversas informaes do cliente,
como por exemplo, os dados que digita em um formulrio.
A Coleo For m do Objet o Request
Para estudar esta coleo, vamos fazer uma reviso rpida sobre a maneira como os dados
digitados em um formulrio so passados para o servidor para processamento.
Considere o formulrio da Listagem 4.2.
Criando Sites Dinmicos com ASP 3.0
1 8 0
Listagem 4.2 Um formulrio HTML simples list4-2.htm.
1 <HTML>
2 <HEAD>
3 <TITLE>Formulrio para Cadastro de Clientes !!</TITLE>
4 </HEAD>
5 <BODY>
6 <P><STRONG>Formulrio para Cadastro de Clientes:</STRONG></P>
7 <P>Digite os dados solicitados e clique no boto Enviar.</P>
8 <FORM action=list4-2.asp method=post>
9 <P>Nome: <INPUT id=nome maxLength=50 name=nome></P>
10 <P>Rua: <INPUT id=rua maxLength=35 name=rua ></P>
11 <P>Cidade: <INPUT id=cidade maxLength=30 name=cidade></P>
12 <P>e-mail: <INPUT id=email maxLength=50 name=email></P>
13 <P>Carto Crdito:
14 <INPUT id=cartao name=cartao type=radio value=Visa>Visa
15 <INPUT id=cartao name=cartao type=radio value=Master Card>Master Card
16 <INPUT id=cartao name=cartao type=radio value=Outros>Outros</P>
17 <P>
18 <INPUT id=enviar name=enviar type=submit value=Enviar>
19 <INPUT id=limpar name=limpar type=reset value=Reset>
20 </P>
21 </FORM>
22 </BODY>
23 </HTML>
Ao acessarmos o arquivo da Listagem 4.2, no Internet Explorer, obtemos o resultado indicado
na Figura 4.6.
Para maiores detalhes sobre a construo de formulrios HTML, veja o Captulo 2.
Observe que cada campo possui as propriedades id e name iguais. Definimos estas duas
propriedades para de manter a padronizao. Para os objetos do ASP, o que realmente utilizado
a propriedade name, a qual identifica cada um dos campos de um formulrio.
Observe que o atributo method do formulrio, na linha 8, foi definido como post. Quando
utilizamos o mtodo post, os dados digitados no formulrio so enviados em uma conexo
separada, fazendo com que os mesmos no fiquem visveis na linha de endereo do navegador.
1 8 1
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
Alm disso o mtodo post permite que mais informaes sejam enviadas, do que se
estivssemos utilizando o mtodo get. Falaremos um pouco mais sobre as diferenas entre os
mtodos post e get, no prximo item.
Figura 4.6: O for mulr io da List agem 4 . 2 .
O atributo action do formulrio, na linha 8, foi definido como list4-2.asp. Isto significa que a
pgina ASP list4-2.asp que vai processar os dados enviados pelo formulrio. Neste caso
digitamos somente o nome da pgina porque a pgina HTML, que contm o formulrio, e a
pgina ASP, que ir processar os dados digitados no formulrio, esto na mesma pasta do
servidor Web. Poderia acontecer da pgina ASP estar, inclusive, em um outro servidor. Neste
caso devemos digitar o endereo completo da pgina ASP, como por exemplo:
<FORM action=http://www.abc.com.br/Capitulo4/list4-2.asp method=post>
Ao clicar no boto Enviar, os dados digitados no formulrio so passados para a pgina list4-
2.asp. Precisamos de uma maneira de acessar estes dados. A coleo que nos permite ter
acesso a estes dados a coleo Form do objeto Request.
Criando Sites Dinmicos com ASP 3.0
1 8 2
IMPORTANTE
A coleo Form somente utilizada quando o atributo method do formulrio definido como
post. Quando o mtodo for definido como get, conforme veremos mais adiante, devemos utilizar
a coleo QueryString, ao invs da coleo Form.
A maneira de acessar os dados exemplificada abaixo:
Request.Form(Nome_do_Campo)
Onde Nome_do_Campo o valor definido no atributo name de cada um dos campos do
formulrio. Por exemplo, o campo nome, na Listagem 4.2, tem a sua propriedade name definida
como nome. Para acessar o valor digitado no campo nome, utilizaramos o seguinte comando:
Request.Form(nome)
Na Listagem 4.3, temos um exemplo para a pgina list4-2.asp, a qual simplesmente informa
ao usurio quais os valores que ele digitou em cada um dos campos. Para isso, utilizamos a
coleo Form do objeto Request.
Listagem 4.3 A pgina ASP list4-2.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <BODY>
6 <h2> Voc digitou os seguintes dados !!</h2>
7 <P>Nome:
8 <%
9 =Request.Form(nome)
10 %>
11 </P>
12 <p>Rua:
13 <%
14 =Request.Form(rua)
15 %>
16 </p>
17 <p>Cidade:
1 8 3
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
18 <%
19 =Request.Form(cidade)
20 %>
21 </p>
22 <p>E-mail:
23 <%
24 =Request.Form(email)
25 %>
26 </p>
27 <p>Carto de Crdito:
28 <%
29 =Request.Form(cartao)
30 %>
31 </p>
32 <P><A href=list4-2.htm>Clique aqui para voltar ao formulrio</A></P>
33 </BODY>
34 </HTML>
Observe que vamos alternando trechos de cdigo HTML com trechos de cdigo ASP. Vamos
analisar o seguinte trecho de cdigo:
7 <P>Nome:
8 <%
9 =Request.Form(nome)
10 %>
11 </P>
Na linha 7, aberta uma tag de pargrafo <P>. Dentro deste pargrafo colocado o texto
Nome:. Na linha 8 aberto um trecho de cdigo ASP, e utilizo a coleo Form do objeto
Request para ter acesso ao valor digitado no campo nome. No nosso exemplo, a linha 9
simplesmente retorna o texto digitado no campo nome do formulrio. Este nome colocado
logo aps Nome:. Finalmente na linha 11 fechado o pargrafo. O resultado deste trecho de
cdigo que retorna para o usurio o seguinte (supondo que no campo nome tenha sido
digitado Jlio Cesar Fabris Battisti):
<P>Nome: Jlio Cesar Fabris Battisti</P>
Na Figura 4.7, temos o retorno da pgina list4-2.asp, para os dados de exemplo indicados na
Figura 4.6.
Criando Sites Dinmicos com ASP 3.0
1 8 4
Figura 4.7: O r et or no da pgina list 4 - 2 . asp.
Observe que, com o uso da coleo Form, podemos ter acesso a todos os campos do formulrio.
A maneira como a pgina list4-2.asp foi construda ir funcionar bem, porm poderemos ter
alguns problemas. Por exemplo, vamos supor que por algum motivo, o nome de um dos
campos do formulrio precise ser alterado. Caso isso acontea, precisaramos alterar a pgina
ASP, pois a coleo Form, utiliza a propriedade name do campo, para ter acesso ao contedo
do mesmo.
Podemos contornar esta dificuldade utilizando uma estrutura de controle que permite percorrer
todos os itens de uma coleo. Percorreremos os itens da coleo Form capturando o nome do
campo e o valor do mesmo. Com isso se o nome de algum campo mudar, a mudana ser
detectada cada vez que a pgina ASP for chamada, pois o nome do campo no estar fixado
dentro do prprio arquivo ASP, como ocorre na Listagem 4.3.
A estrutura de controle que permite percorrer todos os elementos de uma coleo possui a
seguinte estrutura:
For Each membro In Nome_da_Coleo
Comando1
1 8 5
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
Comando2
...
Comandon
Next
Com a estrutura For Each...Next, conseguimos percorrer todos os membros de uma coleo.
Considere o seguinte exemplo:
<%
For Each Item in Request.Form
=Item
Next
%>
Neste caso estaremos listando todos os nomes dos campos do formulrio, atravs da utilizao
da estrutura For Each...Next.
Agora vamos utilizar a estrutura For Each...Next para rescrever a nossa pgina ASP de uma
maneira mais genrica, conforme indicado na Listagem 4.4.
Listagem 4.4 A pgina ASP list4-2-2.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <BODY>
6 <H2> Voc digitou os seguintes dados !!</H2>
7 <%
8 For Each Item in Request.Form %>
9 <P>
10 <%=Item%>
11 :
12 <%=Request.Form(Item)%>
13 </P>
14 <% Next %>
15 <P><A href=list4-2.htm>Clique aqui para voltar ao formulrio</A></P>
16 </BODY>
17 </HTML>
Criando Sites Dinmicos com ASP 3.0
1 8 6
Esta pgina produz o mesmo resultado que a pgina ASP da Listagem 4.3, porm vejam como
o cdigo bem menor. Alm disso este cdigo funciona sempre, mesmo que o nome de
algum dos campos do formulrio seja alterado. Para testar este cdigo basta salvar esta listagem
com o nome de list4-2-2.asp e alterar a pgina list4-2.htm. No atributo action da tag <FORM>
troque action=list4-2.asp por action=list4-2-2.asp.
Tambm interessante notar que fomos alternando trechos de cdigo HTML com cdigo
ASP. Por exemplo, as linhas 7 e 8 so cdigo ASP, onde iniciado o lao For Each...Next. Na
linha 9 abrimos uma tag de pargrafo. Na linha 10 exibido o nome do campo, atravs da
utilizao de <% = Item%>. Na linha 11 colocamos o sinal : que vai ficar entre o nome do
campo e o valor digitado no campo. Na linha 12 exibido o valor digitado no campo do
formulrio, cujo atributo nome foi exibido pela linha 10. A linha 13 fecha a tag de pargrafo
e, finalmente, a linha 14 encerra o lao For Each...Next. Observe que o lao foi aberto em uma
seo de cdigo e fechado em outra, o que nos d uma grande flexibilidade.
A Coleo Quer ySt r ing do Objet o Request
Utilizamos a coleo QueryString quando o formulrio utilizar o mtodo get ao invs do
mtodo post. Quando utilizamos o mtodo get, os dados so passados para o servidor, junto
com a URL de endereo. Vamos alterar o formulrio da Listagem 4.2, para que o mesmo
utilize o mtodo get ao invs do mtodo post. Tambm vamos alterar o atributo action, para
que o mesmo chame a pgina ASP formget.asp, para processar os dados digitados no
formulrio. Com estas modificaes, teremos o formulrio indicado na Listagem 4.5.
Listagem 4.5 Um formulrio HTML simples formget.htm.
1 <HTML>
2 <HEAD>
3 <TITLE>Formulrio para Cadastro de Clientes !! </TITLE>
4 </HEAD>
5 <BODY>
6 <P><STRONG>Formulrio para Cadastro de Clientes:</STRONG></P>
7 <P>Digite os dados solicitados e clique no boto Enviar.</P>
8 <FORM action=formget.asp method=get>
9 <P>Nome: <INPUT id=nome maxLength=50 name=nome></P>
10 <P>Rua: <INPUT id=rua maxLength=35 name=rua ></P>
11 <P>Cidade: <INPUT id=cidade maxLength=30 name=cidade></P>
12 <P>e-mail: <INPUT id=email maxLength=50 name=email></P>
1 8 7
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
13 <P>Carto Crdito:
14 <INPUT id=cartao name=cartao type=radio value=Visa>Visa
15 <INPUT id=cartao name=cartao type=radio value=Master Card>Master Card
16 <INPUT id=cartao name=cartao type=radio value=Outros>Outros</P>
17 <P>
18 <INPUT id=enviar name=enviar type=submit value=Enviar>
19 <INPUT id=limpar name=limpar type=reset value=Reset>
20 </P>
21 </FORM>
22 </BODY>
23 </HTML>
Ao acessarmos o arquivo da Listagem 4.5, no Internet Explorer, obtemos o resultado indicado
na Figura 4.8.
Figura 4.8: O for mulr io da List agem 4 . 5 .
Criando Sites Dinmicos com ASP 3.0
1 8 8
Para criar o arquivo formget.asp, basta pegar o cdigo da Listagem 4.4 e trocar Request.Form
por Request.QueryString. Com isso teremos o cdigo da Listagem 4.6.
Listagem 4.6 A pgina ASP formget.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <BODY>
6 <H2> Voc digitou os seguintes dados !!</H2>
7 <%
8 For Each Item in Request.QueryString %>
9 <P>
10 <%=Item%>
11 :
12 <%=Request.QueryString(Item)%>
13 </P>
14 <% Next %>
15 <P><A href=formget.htm>Clique aqui para voltar ao formulrio</A></P>
16 </BODY>
17 </HTML>
Esta pgina fornece o retorno indicado na Figura 4.9. Observe que o resultado praticamente
o mesmo da Figura 4.7, porm com a diferena de que os dados foram passados atravs do
endereo de chamada da pgina.
No campo endereo temos o seguinte:
http://servidor/Capitulo4/formget.asp?nome=J%FAlio+Cesar+Fabris+Battisti&rua=Sinimbu+-
+456&cidade=Boqueir%E3o+do+Le%E3o&email=batisti@hotmail.com&cartao=Outros&enviar=Submit
Observe que os dados foram passados dentro da prpria URL. Caracteres especiais, como o u
com acento agudo, so substitudos. Observe que o nome Jlio foi substitudo por J%FAlio,
ou seja, o foi substitudo por %FA. Tambm podemos observar que todo espao em branco
foi substitudo pelo sinal +, e assim por diante. Neste caso a coleo QueryString sabe tratar
estes caracteres especiais e exibi-los corretamente, conforme indicado pela Figura 4.9.
O mtodo get possui limitaes quanto a quantidade de informaes que o mesmo pode
passar para o servidor. Esta limitao est em torno de 1.000 caracteres, conforme definio
1 8 9
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
do protocolo HTTP. Alm disso, toda a informao passada ser visvel na URL, o que em
muitas situaes no desejado.
Figura 4.9: O r et or no da pgina for mget . asp.
por isso que hoje, na maioria dos casos, utilizamos o mtodo post, que no tem as mesmas
limitaes do mtodo get. Algumas aplicaes antigas, com alguns scripts CGI, podem ter
sido desenvolvidos para usar o mtodo get, neste caso os mesmos no funcionaro com o
mtodo post. No restante deste livro, estaremos utilizando o mtodo post.
Alguns Campos que M er ecem Consider aes Especiais
Um dos campos de formulrios que merecem consideraes especiais o grupo de Check
Box. Quando temos um grupo de Check Box, um ou mais itens do grupo podem ser
selecionados. Neste caso precisamos determinar qual ou quais itens foram selecionados e
qual o valor associado a cada um deles. Observe a Listagem 4.7.
Criando Sites Dinmicos com ASP 3.0
1 9 0
Listagem 4.7 Modificando o formulrio formget.htm.
1 <HTML>
2 <HEAD>
3 <TITLE>Formulrio para Cadastro de Clientes !! </TITLE>
4 </HEAD>
5 <BODY>
6 <P><STRONG>Formulrio para Cadastro de Clientes:</STRONG></P>
7 <P>Digite os dados solicitados e clique no boto Enviar.</P>
8 <FORM action=formget.asp method=get>
9 <P>Nome: <INPUT id=nome maxLength=50 name=nome></P>
10 <P>Rua: <INPUT id=rua maxLength=35 name=rua ></P>
11 <P>Cidade: <INPUT id=cidade maxLength=30 name=cidade></P>
12 <P>e-mail: <INPUT id=email maxLength=50 name=email></P>
13 <P>Carto Crdito:
14 <INPUT id=cartao name=cartao type=radio value=Visa>Visa
15 <INPUT id=cartao name=cartao type=radio value=Master Card>Master Card
16 <INPUT id=cartao name=cartao type=radio value=Outros>Outros</P>
17 <P>
18 <INPUT id=enviar name=enviar type=submit value=Enviar>
19 <INPUT id=limpar name=limpar type=reset value=Reset>
20 </P>
21 <P>
22 <INPUT id=estado name=estado type=checkbox value=SP>SP
23 <INPUT id=estado name=estado type=checkbox value=RJ>RJ
24 <INPUT id=estado name=estado type=checkbox value=RS>RS
25 <INPUT id=estado name=estado type=checkbox value=SC>SC
26 <INPUT id=estado name=estado type=checkbox value=PR>PR
27 </P>
21 </FORM>
22 </BODY>
23 </HTML>
1 9 1
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
Ao acessarmos o arquivo da Listagem 4.7, no Internet Explorer, obtemos o resultado indicado
na Figura 4.10.
Figura 4.1 0: Um gr upo de Check Box foi adicionado ao for mulr io.
Ao clicar no boto Enviar receberemos os resultados indicados na Figura 4.11. Observe que a
nossa pgina ASP formget.asp j processou corretamente os resultados.
Um detalhe que devemos observar que os valores associados a cada um dos Check Box
marcados o valor do atributo value. Se este atributo no tiver sido definido, ser exibido On
para cada um dos Check Box marcados. Observe, na Listagem 4.7, que o atributo name o
mesmo para todos os Check Box do grupo. justamente isto que caracteriza um grupo de
Check Box, todos possuem o mesmo valor para a propriedade name.
Criando Sites Dinmicos com ASP 3.0
1 9 2
Figura 4.1 1 : O r esult ado dos Check Box mar cados j exibido cor r et ament e.
Quando a pgina ASP recebe os dados, ela recebe os valores selecionados, todos no nome do
grupo. Por exemplo o seguinte cdigo:
<% =Request.QueryString(estado)%>
produziria uma sada com o valor dos Check Box selecionados. Caso mais do que um Check Box
tenha sido selecionado, os valores sero exibidos separados por vrgula, conforme indicado abaixo:
SP, RS, PR
Com isso dizemos que o elemento estado, da coleo QueryString, possui valores mltiplos.
Existem situaes em que pode ser necessrio acessar um destes valores individualmente.
Isto possvel, pois cada um dos valores possui uma propriedade de ndice associada. O
primeiro valor selecionado possui ndice 1, o segundo possui ndice 2 e assim por diante.
1 9 3
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
IMPORTANTE
No caso de um grupo de Check Box, os ndices no so associados ordem com que os Check
Box so apresentados no formulrio, mas sim em relao a quantos so selecionados. Se
tivermos 2 Check Box selecionados, somente teremos o ndice 1 e o ndice 2. O ndice 1 ligado
ao primeiro Check Box selecionado que aparece no formulrio. O ndice 2 ligado ao prximo
Check Box do grupo que aparecer selecionado, e assim por diante.
Caso quisssemos acessar somente o valor do primeiro Check Box selecionado, utilizaramos
o seguinte cdigo:
<% =Request.QueryString(estado)(1) %>
Observe a utilizao do ndice (1) aps o nome do campo. Com isso estou pedindo para que
seja retornado apenas o valor do primeiro Check Box selecionado. Este cdigo retornaria
somente SP, no nosso exemplo.
NOTA
Estas mesmas consideraes so vlidas para elementos do tipo Caixa de seleo e Caixa de
combinao.
A Coleo Ser ver Var iables do Objet o Request
A coleo ServerVariables possui valores que so somente de leitura, isto , no podemos
modificar os valores desta coleo. So valores enviados atravs da requisio do navegador do
cliente, dentro do cabealho do protocolo HTTP, e alguns valores existentes no servidor Web.
Podemos acessar o valor de uma determinada varivel utilizando a seguinte sintaxe:
Request.ServerVariables(Nome_da_Varivel)
Por exemplo, o seguinte cdigo retorna o nmero IP do computador do cliente:
<%=Request.ServerVariables(remote_addr)%>
Na Tabela 4.1, temos uma descrio das principais variveis disponveis.
Tabela 4.1 Variveis de ambiente acessveis atravs da coleo ServerVariables.
Nome Descrio
ALL_HTTP Retorna todos os cabealhos HTTP enviados pelo cliente.
ALL_RAW Captura todos os cabealhos, da maneira como foram
enviados pelo cliente.
Criando Sites Dinmicos com ASP 3.0
1 9 4
Na Listagem 4.8, utilizamos o lao For Each...Next, para exibir todos os valores contidos na
coleo ServerVariables.
Listagem 4.8 Exibindo os valores contidos na coleo ServerVariables variables.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
Nome Descrio
AUTH_TYPE Retorna o tipo de autenticao utilizado pelo servidor
Web.
AUTH_USER Retorna o nome do usurio autenticado no servidor Web.
CERT_COOKIE Retorna um identificador nico, ligado ao certificado
do cliente.
CERT_FLAGS Mostra se o certificado do cliente vlido.
PATH_INFO Retorna informaes sobre o caminho relativo
pgina que est sendo exibida.
PATH_TRANSLATED Retorna informaes sobre o caminho fsico (por
exemplo: c:\inetpu\wwroot\page1.asp), relativo
pgina que est sendo exibida.
QUERY_STRING Retorna os valores de um formulrio passados atravs
do mtodo get.
REMOTE_ADDR Retorna o endereo IP da mquina do cliente.
REMOTE_HOST Retorna o nome da mquina do cliente.
REQUEST_METHOD Retorna o mtodo utilizado para a requisio da
pgina: post ou get.
SERVER_PORT Retorna a porta TCP na qual a requisio foi feita. Por
padro, o servidor Web atende requisies na porta 80.
SERVER_PROTOCOL Retorna a verso e o nome do protocolo de requisio,
por exemplo HTTP 1.1.
SERVER_SOFTWARE Retorna o nome e a verso do servidor HTTP.
URL Retorna a poro bsica da URL.
1 9 5
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
5 <BODY>
6 <TABLE border=2>
7 <%For Each Variavel in Request.ServerVariables %>
8 <TR>
9 <TD>
10 <% =Variavel %>
11 =</TD>
12 <TD>
13 <% =Request.ServerVariables(Variavel) %>
14 &nbsp;</TD></TR>
15 <%Next%>
16 </BODY>
17 </HTML>
Com este cdigo simples conseguimos exibir todo o contedo da coleo ServerVariables.
Observe, na Listagem 4.8, que utilizamos algumas tags HTML para a construo de tabelas.
Estas tags foram utilizadas apenas para melhorar a aparncia do documento resultante. Para
cada varivel exibimos o nome da varivel (linha 10) e o valor contido na varivel (linha 13).
Na linha 14, utilizamos &nbsp. Este um caractere especial para o HTML e utilizado para
que o navegador do cliente exiba as clulas da tabela, mesmo quando estas estiverem vazias.
O Internet Explorer no exibe os contornos de uma clula, caso no exista nenhum contedo
na mesma, o que torna o resultado final pouco elegante. Na Figura 4.12, podemos ver a parte
final do resultado do processamento do documento variables.asp.
Figura 4.1 2: Exibindo o cont edo da coleo Ser ver Var iables.
Criando Sites Dinmicos com ASP 3.0
1 9 6
Observe a varivel SERVER_SOFTWARE, a qual exibe o valor Microsoft-IIS/5.0, indicando
que esta pgina est armazenada em um servidor Windows 2000, com servidor Web IIS 5.0.
Um pequeno exemplo prtico: vamos supor que voc deseja construir uma pgina que somente
deve ser acessada por pessoas de uma determinada rede. Os computadores da Internet utilizam
um protocolo chamado TCP/IP. Todo computador que faz parte da rede deve possuir um
nmero IP, e no podem existir dois computadores com o mesmo nmero IP. O nmero IP
um nmero no seguinte formato:
10.200.120.135
162.233.140.72
So quatro nmeros separados por um ponto. O valor mximo de cada nmero 249, ou seja,
no posso ter um endereo IP 10.300.210.143. O 300 um valor invlido em termos de nmero
IP. Parte do nmero IP identifica a rede a qual pertence o computador e outra parte identifica
o nmero do computador dentro da rede. Esta fora do escopo deste livro uma discusso mais
ampla sobre o protocolo TCP/IP, mas existem excelentes fontes de referncia na Internet.
Voc pode comear pelos sites da CISCO (www.cisco.com) e 3COM (www.3com.com).
Vamos supor que somente devem acessar a nossa pgina computadores cujo endereo IP
comea com 10.204.123 (que exatamente o nmero da rede que utilizo em minha casa),
sendo que o quarto nmero no importa. Neste caso estamos admitindo que os trs primeiros
nmeros identificam a rede (10.204.123) e o ltimo nmero identifica o computador dentro
da rede. Neste caso, quero construir uma pgina que somente permita acesso a computadores
da rede 10.204.123. Vamos ver como se faz isto?
O algoritmo que utilizaremos o descrito a seguir.
Utilizaremos a varivel REMOTE_ADDR para capturar o nmero IP do computador que est
tentando acessar a nossa pgina.
Depois utilizaremos funes do VBScript para capturar apenas a parte do endereo da rede
(trs primeiros nmeros), e comparo este valor com o valor 10.204.123.
Caso o valor esteja OK, o acesso ao restante da pgina liberado, caso contrrio o usurio ser
direcionado para um outra pgina, a qual contm uma mensagem dizendo que o mesmo no
tem permisso para acessar a pgina desejada.
A cdigo que implementa o nosso algoritmo mostrado na Listagem 4.9.
Listagem 4.9 Um exemplo prtico de uso da coleo ServerVariables filtro.asp.
1 <%@ Language=VBScript %>
2 <HTML>
1 9 7
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
3 <HEAD>
4 </HEAD>
5 <BODY>
6 <%
7 Captura o nmero IP do computador do Cliente
8 Dim ip_cliente
9 Dim num_rede
10 ip_cliente=Request.ServerVariables(REMOTE_ADDR)
11 Utilizo a funo Left para extrair apenas
12 os 10 primeiros caracteres, os quais devem
13 ser iguais a 10.204.123
14 num_rede=Left(ip_cliente,10)
15 Agora comparo o nmero de rede do cliente com
16 o nmero de rede permitido
17 If num_rede=10.204.123" Then
18 Response.Write <P>Parabns !!!</P>
19 Response.Write <P>VOC CONSEGUIU ACESSAR ESTA PGINA,<BR> PORQUE O SEU
20 Response.Write COMPUTADOR<BR> FAZ PARTE DA REDE<BR> %>
21 <%=num_rede%>
22 <% Response.Write </P> %>
23 <% Else
24 Response.Redirect(erro.htm)
25 End If
26 %>
27 </BODY>
28 </HTML>
Ao acessar esta pgina de um computador que faz parte da rede 10.204.123, receberemos a
pgina indicada na Figura 4.13.
Criando Sites Dinmicos com ASP 3.0
1 9 8
Figura 4.1 3: Usur ios da r ede 1 0 . 2 0 4 . 1 2 3 t m per misso de acesso.
Ao acessar esta pgina de um computador que no faz parte da rede 10.204.123, receberemos
a mensagem de erro indicada na Figura 4.14.
Figura 4.1 4: Usur ios for a da r ede 1 0 . 2 0 4 . 1 2 3 no t m per misso de acesso.
1 9 9
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
NOTA
Na linha 24 utilizamos o mtodo Redirect do objeto Response (Response.Redirect) para
redirecionar o usurio para uma outra pgina (erro.htm), caso o mesmo no fizesse parte da
rede 10.204.123. Falaremos mais sobre o objetos Response e seus mtodos ainda neste captulo.
A Coleo Cookies do Objet o Request
Esta coleo contm os valores de todos os Cookies enviados pelo navegador do cliente,
juntamente com a requisio da pgina ASP. Conforme descrevemos anteriormente, Cookies
so pequenos arquivos que so gravados no computador do usurio. A informao contida
nestes Cookies, normalmente, utilizada para o site poder identificar o usurio na prxima
vez que for acessado. Quando o usurio acessa uma determinada pgina, o navegador envia,
junto com a requisio da pgina, todos os Cookies relacionados com o site que est sendo
acessado. Cada Cookie pode conter um ou mais valores, e podem existir um ou mais Cookies
associados ao site acessado. Todos os valores de todos os Cookies so acessveis atravs da
coleo Cookies do objeto Request. Estes valores so somente para leitura, isto , no podem
ser modificados. Os Cookies so gravados utilizando o mtodo Cookies do objeto Response.
Veremos o objeto Response em mais detalhes ainda neste captulo. A ttulo de exemplo,
vamos considerar a pgina da Listagem 4.10.
Listagem 4.10 Criando um Cookie no computador do usurio CreateCookie.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <BODY>
6 <p>ESTA PGINA CRIA UM COOKIE CHAMADO TESTE_COOKIE</p>
7 <%
8 Response.Cookies(TESTE_COOKIE)(Nome)= Jlio Battisti
9 Response.Cookies(TESTE_COOKIE)(Cidade)= Boqueiro do Leo
10 Response.Cookies(TESTE_COOKIE)(Data)= Date()
11 %>
12 </BODY>
13 </HTML>
A pgina da Listagem 4.10 cria um Cookie chamado TESTE_COOKIE. Dentro deste Cookie
so gravados trs campos ou chaves, conforme indicado na Tabela 4.2.
Criando Sites Dinmicos com ASP 3.0
2 0 0
Na Figura 4.15, temos o resultado do acesso pgina da Listagem 4.10.
Tabela 4.2 Valores gravados no Cookie TESTE_COOKIE.
Campo/Chave Valor
Nome Jlio Battisti
Cidade Boqueiro do Leo
Data 3/7/1999
Figura 4.1 5: Cr iando um Cookie no comput ador do usur io.
Observe que o endereo desta pgina, no nosso exemplo : http://servidor/Capitulo4/
CreateCookie.asp. Conforme descrevemos anteriormente, o Cookie associado com o domnio
no qual reside a pgina. No nosso exemplo, todas as pginas que estiverem em http://servidor
podero acessar informaes deste Cookie.
Para acessar as informaes do Cookie, podemos utilizar a coleo Cookies do objeto Request,
conforme indicado na Listagem 4.11.
Listagem 4.11 Acessando os valores gravados no Cookie TESTE_COOKIE getCookie.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
2 0 1
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
5 <BODY>
6 <B><FONT COLOR=BLUE> Seja bem vindo:
7 <%Response.Write Request.Cookies (TESTE_COOKIE)(Nome)& <br>%>
8 </FONT></B>
9 <%
10 Response.Write Valores presentes em Cookies & <br>
11 Response.Write Request.Cookies (TESTE_COOKIE)(Nome)& <br>
12 Response.Write Request.Cookies (TESTE_COOKIE)(Cidade)& <br>
13 Response.Write Request.Cookies (TESTE_COOKIE)(Data)& <br>
14 %>
15 <P>&nbsp;</P>
16 </BODY>
17 </HTML>
Observe que a sintaxe para acessar os valores da coleo Cookie a seguinte:
Request.Cookies(Nome_do_Cookie) (Nome_da_chave)
Por exemplo, a linha de cdigo:
11 Response.Write Request.Cookies (TESTE_COOKIE)(Nome)& <br>
acessa o valor da chave nome, do Cookie TESTE_COOKIE. Este valor retornado para o
navegador do cliente pelo mtodo Write do objeto Response.
Na Figura 4.16, temos o resultado do acesso pgina da Listagem 4.11.
Figura 4.1 6: Acessando os valor es, ut ilizando a coleo Cookies do objet o Request .
Criando Sites Dinmicos com ASP 3.0
2 0 2
Tambm podemos utilizar a estrutura For Each...Next para percorrer todos os valores de um
determinado Cookie, exibindo o nome das chaves e o valor associado cada chave, conforme
indicado na Listagem 4.12.
Listagem 4.12 Utilizando a estrutura For Each...Next, para acessar as chaves do Cookie
TESTE_COOKIE forCookie.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <BODY>
6 <I><B><FONT COLOR=RED><P>Valores de Cookies:</P></FONT></B></I>
7 <%
8 For Each Chave in Request.Cookies(TESTE_COOKIE)
9 Response.Write Chave & :
10 Response.Write Request.Cookies(TESTE_COOKIE)(Chave) & <BR>
11 Next
12 %>
13 </BODY>
14 </HTML>
Na Figura 4.17, temos o resultado do acesso pgina da Listagem 4.12.
Figura 4.1 7: Ut ilizando a est r ut ur a For Each. . . Next par a acessar t odas as
chaves do Cookie TESTE_ COOKIE.
2 0 3
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
A Coleo Client Cer t ificat e do Objet o Request
Com a necessidade de serem efetuadas operaes seguras atravs da Internet, foi criada a
tecnologia de Certificados Digitais. Um Certificado funciona como uma espcie de carteira
de identidade do usurio ou do site que est sendo acessado, e pode conter diversas
informaes, tais como nome, e-mail, endereo, telefone, etc.
Quando o usurio acessa uma determinada pgina, o navegador envia informaes sobre seu
Certificado Digital, caso possua um. Para acessar as informaes sobre o Certificado Digital
do Cliente, podemos utilizar a coleo ClientCertificate do objeto Request.
A sintaxe para utilizarmos a coleo ClientCertificate a seguinte:
Request.ClientCertificate(Chave[Subchave])
Onde temos:
Chave: o nome do campo do certificado a ser acessado. Por exemplo, o campo
ValidForm retorna a data a partir da qual o certificado vlido; o campo ValidUntil,
determina a data de expirao do Certificado; e assim por diante. A cdigo da linha
abaixo ir exibir a data de expirao do Certificado do cliente:
Response.Write Seu Certificado expira em:
Response.Write Request.ClientCertificate(ValidUntil)
Pr opr iedade do Objet o Request
O objeto Request apresenta uma nica propriedade: TotalBytes. Esta propriedade informa o
nmero total de bytes enviados pelo navegador do cliente. Esta informao est ligada a
utilizao do mtodo post, para enviar as informaes digitadas em um formulrio. A sintaxe
bastante simples, conforme indicado no exemplo seguinte.
total_bytes = Request.TotalBytes
Na Listagem 4.13 temos um exemplo da utilizao da propriedade TotalBytes. Este exemplo
uma pequena modificao do exemplo da Listagem 4.4, onde inclumos cdigo para informar
quantos bytes foram enviados pela requisio do usurio (linhas 7 at 9).
Listagem 4.13 Utilizando a propriedade TotalBytes do objeto Request TotalBytes.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <BODY>
6 <B><P>A sua requisio enviou o seguinte quantitativo de bytes para o servidor:</B></P>
Criando Sites Dinmicos com ASP 3.0
2 0 4
7 <%
8 Response.Write Request.TotalBytes
9 %>
10 <H2> Voc digitou os seguintes dados !!</H2>
11 <%
12 For Each Item in Request.Form %>
13 <P>
14 <%=Item%>
15 =
16 <%=Request.Form(Item)%>
17 </P>
18 <% Next %>
19 <P><A href=list4-2.htm>Clique aqui para voltar ao formulrio</A></P>
20 </BODY>
21 </HTML>
O cdigo da linha 8 informa quantos bytes foram enviados pelo navegador do cliente.
M t odo do Objet o Request
O objeto Request apresenta um nico mtodo: BinaryRead(quantidade_de_bytes). Este mtodo
utilizado para capturar um determinado nmero de bytes, do total de bytes que foram
enviados pela requisio do cliente, atravs do mtodo post. O nmero de bytes a ser capturado
definido pelo parmetro quantidade_de_bytes. No podemos utilizar este mtodo na mesma
pgina ASP em que utilizamos Request.Form, ou utilizamos a coleo Request.Form, ou o
mtodo BinaryRead. A sintaxe para utilizao deste mtodo a seguinte:
tantos_bytes = Request.BinaryRead(tantos_bytes).
O exemplo abaixo coloca os 100 primeiros bytes enviados pelo cliente, na varivel 100_bytes:
100_bytes = Request.BinaryRead(100)
Na Listagem 4.14 temos um exemplo onde tentamos utilizar a propriedade BinaryRead e a
coleo Request.Form, na mesma pgina.
Listagem 4.14 No podemos utilizar Request.BinaryRead e Request.Form na mesma
pgina BinaryRead.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
2 0 5
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
5 <BODY>
6 <P>No podemos utilizar Request.BinaryRead e</P>
7 <P>Request.Form na mesma pgina!</P>
8 <%
9 Dim vinte_bytes
10 vinte_bytes=Request.BinaryRead(20)
11 Esta linha ir gerar um erro.
12 Nome=Request.Form(Nome)
13 %>
14 </BODY>
15 </HTML>
Ao tentarmos acessar esta pgina, receberemos a mensagem de erro indicada na Figura 4.18.
Figura 4.1 8: M ensagem de er r o.
Com isso, encerramos o estudo do objeto Request. Vimos todos as colees, propriedades e
mtodos do objeto Request, lembrando que o mesmo no possui nenhum evento. Com a
utilizao do objeto Request, podemos ter acesso a diversas informaes enviadas pelo cliente,
como por exemplo, informaes enviadas atravs do preenchimento de um formulrio.
Criando Sites Dinmicos com ASP 3.0
2 0 6
No prximo item passaremos ao estudo do objeto Response. Os demais objetos do Modelo de
Objetos do ASP 3.0 sero estudados em outros captulos deste livro.
O Objet o Response
Utilizamos o objeto Response para retornar o resultado do processamento de uma pgina ASP,
para o navegador do cliente. Conforme descrito anteriormente, o resultado retornado cdigo
HTML puro. Podemos utilizar o objeto Response para montar uma pgina de retorno, por
exemplo, com os resultados de uma pesquisa em um banco de dados. Nos exemplos do final
deste captulo, teremos uma introduo ao acesso bancos de dados, atravs de pginas ASP.
Tambm podemos utilizar o objeto Response para gravar Cookies no computador do cliente.
A partir de agora passaremos a estudar os principais mtodos, colees e propriedades do
objeto Response. Analisaremos os diversos aspectos do objeto atravs da utilizao de alguns
exemplos prticos.
Coleo do Objet o Response
O objeto Response possui uma nica coleo: Cookies. Esta coleo utilizada para gravar
informaes no equipamento do cliente. Estas informaes so conhecidas como Cookies.
Existem diversas aplicaes prticas para os Cookies. Por exemplo, quando estamos fazendo
compras em um site de Comrcio Eletrnico, vamos escolhendo os itens a serem comprados.
Quando selecionamos um determinado item, adicionamos o mesmo lista de compras. Ao
sairmos da pgina da lista de compras para selecionarmos mais itens, precisamos guardar a
informao sobre os itens j selecionados, caso contrrio esta informao ser perdida e
somente seria possvel adquirir um item por vez. Muitos bancos de dados gravam a informao
da lista de compras em um banco de dados no servidor e as informaes sobre a identificao
do usurio em um Cookie, na mquina do usurio. Com isso, quando o usurio volta lista
de compras, identificado atravs da leitura das informaes contidas no Cookie, as quais
so utilizadas para pesquisar o banco de dados e exibir sua lista de compras. Outra abordagem
seria gravar os itens da compra em um Cookie, e enviar estas informaes para o servidor,
somente quando o usurio finalizar a compra. As possibilidades so variadas, depende da
necessidade de cada aplicao.
Outro detalhe importante que devemos conhecer quando o navegador envia para o servidor,
um Cookie gravado no cliente. Cada Cookie est associado com um determinado domnio.
Por exemplo, a primeira vez que voc acessa o site http://www.abc.com, vamos supor que seja
gravado um Cookie no seu computador. Toda vez que voc acessar uma pgina no domnio
www.abc.com, as informaes contidas neste Cookie sero enviadas para o site, mesmo que
a pgina que esteja sendo acessada no utilize estas informaes. Quando voc acessa, por
2 0 7
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
exemplo, a pgina: http://www.abc.com/cadastro/index.asp, as informaes contidas no Cookie
associado ao domnio www.abc.com sero enviadas para o servidor, mesmo que a pgina
index.asp no utilize estas informaes. Podemos ter mais do que um Cookie associado com
um determinado domnio. Neste caso, todos os Cookies associados com o domnio sero
enviados quando uma pgina deste domnio for acessada.
A pgina que cria o Cookie tambm pode determinar a qual domnio o mesmo est relacionado,
podendo inclusive precisar que o Cookie somente esteja relacionado com uma determinada
rea do site. Por exemplo, posso determinar que o Cookie somente seja enviado para o servidor
quando forem acessadas pginas da seguinte rea: http://www.abc.com/cadastro. Tambm
podemos definir uma data de expirao para o Cookie. Vamos estudar estas possibilidades
atravs de exemplos prticos.
Na Listagem 4.15, temos um exemplo de criao de um Cookie chamado Cliente.
Listagem 4.15 Criando um Cookie associado ao domnio http://servidor
CriandoCookie.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <BODY>
6 <B>
7 <P>Esta pgina cria um Cookie associado ao domnio
8 http://servidor. Toda vez que uma pgina do domnio
9 http://servidor for acessada, as informaes contidas
10 neste Cookie sero enviadas.
11 </B>
12 </P>
13 <%
14 Cria um Cookie chamado Cliente
15 Response.Cookies(Cliente)(Nome)= Jlio Battisti
16 Response.Cookies(Cliente)(Endereco)=Boqueiro do Leo
17 Response.Cookies(Cliente)(Email)=juliobattisti@hotmail.com
18 Response.Cookies(Cliente)(Cartao)=ABC
19 Response.Cookies(Cliente)(Preferencial)=Sim
20 %>
21 <P><FONT COLOR=BLUE>
Criando Sites Dinmicos com ASP 3.0
2 0 8
22 O Cookie Cliente foi criado com sucesso. <br>
23 Foram adicionadas as seguintes informaes:
24 </FONT></P>
25 <%
26 Exibe os valores gravados no Cookie Cliente.
27 For Each Chave in Request.Cookies(Cliente)
28 Response.Write Chave & :
29 Response.Write Request.Cookies(Cliente)(Chave) & <BR>
30 Next
31 %>
32 </BODY>
33 </HTML>
Na Figura 4.19, temos o resultado do acesso pgina da Listagem 4.15.
Figura 4.1 9: O Cookie Client e foi gr avado com sucesso.
Conforme descrito anteriormente, podemos definir o domnio, ou uma rea do site, ao qual o
Cookie est associado, bem como a data para expirao. Para isso utilizamos os comandos
abaixo indicados.
Para definir o domnio ao qual o Cookie est associado:
Response.Cookies(Nome_do_Cookie).domain=URL do domnio
EX: Response.Cookies(Cliente).domain=http://servidor
2 0 9
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
Para associar o Cookie apenas com uma determinada rea do site:
Response.Cookies(Nome_do_Cookie).path=caminho virtual
EX: Response.Cookies(Cliente).path=/cadastro
Assim, estou dizendo que o Cookie somente deve ser enviado quando o usurio acessar pginas
que esto dentro do seguinte endereo: http://servidor/cadastro, como por exemplo: http://
servidor/cadastro/index.asp ou http://servidor/cadastro/carros.asp. Se voc quiser que o Cookie
seja enviado para qualquer pgina do site, utilize o seguinte comando:
Response.Cookies(Cliente).path=/
Para definir uma data de expirao para o Cookie:
Response.Cookie(Nome_do_Cookie).expires=#data#
EX: Response.Cookie(Cliente).expires=#31/12/2000#
Neste exemplo, estou definindo a data de expirao do Cookie para 31 de Dezembro de 2000.
Se no for definida uma data de expirao para o Cookie, o mesmo ser eliminado quando o
usurio fechar o navegador.
IMPORTANTE
Em verses anteriores do ASP, o cdigo para criar Cookies deveria ser colocado no cabealho
do documento, antes da tag <BODY>. Isso era necessrio, porque o Cookie deveria ser criado,
antes que qualquer contedo fosse enviado para o navegador do cliente. Isso porque, nas
verses anteriores do ASP, o contedo ia sendo enviado para o cliente medida em que a
pgina era processada. No ASP 3.0, o contedo somente enviado quando toda a pgina foi
processada com sucesso, ou quando for utilizado o comando Response.Flush. Este
comportamento pode ser controlado atravs da habilitao ou no de buffer para a pgina,
conforme veremos mais adiante neste captulo.
Na Listagem 4.16, temos um exemplo definindo algumas caractersticas do Cookie Cliente2.
Listagem 4.16 Criando um Cookie Cliente2 CriandoCliente2.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <BODY>
6 <B><P>Esta pgina cria um Cookie associado ao caminho
7 http://servidor/Capitulo4.
8 Toda vez que uma pgina do caminho
9 http://servidor/Capitulo4, ou um dos
Criando Sites Dinmicos com ASP 3.0
2 1 0
10 seus subdiretrios, for acessada, as informaes
11 contidas neste Cookie sero enviadas.
12 </B></P>
13 <%
14 Cria um Coockie chamado Cliente2
15 E define algumas propriedades adicionais
16 Response.Cookies(Cliente2).domain=http://servidor
17 Response.Cookies(Cliente2).path=/Capitulo4"
18 Response.Cookies(Cliente2).expires=#31/12/2000#
19 Response.Cookies(Cliente2)(Nome)= Jlio Battisti
20 Response.Cookies(Cliente2)(Endereco)=Boqueiro do Leo
21 Response.Cookies(Cliente2)(Email)=juliobattisti@hotmail.com
22 Response.Cookies(Cliente2)(Cartao)=ABC
23 Response.Cookies(Cliente2)(Preferencial)=Sim
24 %>
25 <P><FONT COLOR=BLUE>
26 O Cookie Cliente2 foi criado com sucesso. <br>
27 Foram adicionadas as seguintes informaes:
28 </FONT></P>
29 <%
30 For Each Chave in Request.Cookies(Cliente)
31 Response.Write Chave & :
32 Response.Write Request.Cookies(Cliente)(Chave) & <BR>
33 Next
34 %>
35 </BODY>
36 </HTML>
Na Figura 4.20, temos o resultado do acesso pgina da Listagem 4.20.
O Cookie Cliente2 um Cookie com mltiplos valores, isto , temos armazenado diversos
campos de informao, tais como: Nome, Endereo, Email, etc. Tambm podemos ter os
chamados Cookies simples, os quais contm um nico valor. O seguinte cdigo cria um
Cookie simples:
Response.Cookies(Cliente)=Jlio Battisti
Ns podemos utilizar o atributo HasKeys, para determinar se um Cookie possui um nico
valor ou possui mltiplos valores. Considere a seguinte linha de cdigo:
Response.Write Response.Cookies(Cliente2).HasKeys
2 1 1
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
Figura 4.20: O Cookie Client e2 foi gr avado com sucesso.
Caso o Cookie Cliente2 possua mltiplos valores, esta linha de cdigo retorna Verdadeiro,
caso contrrio retorna Falso.
Agora passaremos ao estudo das propriedades do objeto Response.
Pr opr iedades do Objet o Response
O objeto Response possui diversas propriedades, as quais so utilizadas para definir algumas
caractersticas da comunicao entre o servidor Web e o navegador do cliente. A correta
utilizao destas propriedades permite um controle refinado sobre a maneira como as
informaes so enviadas do servidor Web para o navegador do cliente.
A Pr opr iedade Buffer do Objet o Response
Esta propriedade do tipo Boolean, isto , pode ser definida como Verdadeiro (True) ou Falso
(False). Os comportamentos desta propriedade, de acordo com o seu valor, so os seguintes:
Verdadeiro (True): Quando esta propriedade for definida como Verdadeiro, o servidor
Web somente enviar contedo para o navegador do cliente depois que todo o cdigo
ASP da pgina for executado; isto , medida que a pgina for sendo processada, o
Criando Sites Dinmicos com ASP 3.0
2 1 2
resultado do processamento mantido em um Buffer do servidor Web. Aps todo o
cdigo da pgina ter sido processado, o contedo do Buffer enviado para o navegador
do cliente. Este o comportamento padro no ASP 3.0. Tambm possvel enviar o
contedo j processado para o navegador do cliente, a qualquer momento, utilizando-
se os mtodos Response.Flush ou Response.End. Falaremos mais sobre estes dois
mtodos no prximo item.
Falso (False): Quando a propriedade Buffer for definida como Falso, medida em que
a pgina for sendo processada, o contedo ser enviado para o navegador do cliente;
isto , o contedo processado no fica armazenado em um Buffer no servidor Web.
Esta propriedade deve ser definida antes que qualquer contedo tenha sido enviado para o
navegador do cliente. O cdigo da Listagem 4.17 mostra onde o local mais indicado para
definirmos esta propriedade.
Listagem 4.17 Definindo a propriedade Buffer do objeto Response.
1 <%@ Language=VBScript %>
2 <% Response.Buffer=False%>
3 <HTML>
4 <HEAD>
5 </HEAD>
6 <BODY>
7 <P>Documento com Buffer desabilitado</P>
8 </BODY>
9 </HTML>
Observe que devemos utilizar as expresses em ingls: True, para Verdadeiro, e False, para
Falso. Tambm no devemos esquecer que, por padro, no ASP 3.0, esta propriedade definida
como True. Em situaes onde devemos efetuar algum processamento, tais como clculos ou
pesquisas em banco de dados, antes de enviar a pgina para o navegador do cliente
interessante mantermos a propriedade Buffer em seu valor padro True. Em situaes onde
no sejam necessrios processamentos deste tipo, podemos desabilitar o Buffer definindo
esta propriedade como False.
A Pr opr iedade CacheCont r ol do Objet o Response
Hoje em dia muito comum a utilizao de servidores Proxy para acesso a Internet. As
diversas mquinas da Rede Local acessam a Internet atravs deste servidor. Com isso, possvel
aumentar a segurana de mecanismos do prprio servidor. Uma das funes que o servidor
Proxy pode executar o Cache de pginas. Quando algum acessa uma determinada pgina,
uma cpia da mesma gravada no Cache do servidor Proxy. O servidor armazena pginas
HTML em Cache para que solicitaes repetidas da mesma pgina possam ser retornadas
2 1 3
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
com rapidez e eficincia aos navegadores. Na prxima vez que algum for acessar esta pgina,
e a mesma estiver no Cache, no existe necessidade de carregar novamente a pgina da Internet.
A cpia que est no Cache enviada para o navegador do cliente. O uso de Cache no servidor
Proxy agiliza o acesso, principalmente, s pginas mais utilizadas.
Por padro, o ASP instrui servidores Proxy a no armazenarem a prpria pgina ASP em cache
(embora imagens, mapas de imagens, miniaplicativos e outros itens aos quais a pgina faz
referncia sejam armazenados em Cache). Voc pode permitir o armazenamento de determinadas
pginas em Cache usando a propriedade Response.CacheControl. Com o uso da propriedade
CacheControl podemos definir se uma pgina ASP deve ou no ser mantida no Cache do servidor
Proxy. Este controle nos oferecido devido natureza dinmica das pginas ASP, as quais
mudam constantemente. Caso uma pgina tenha sido colocada no Cache do servidor Proxy, o
usurio corre o risco de estar recebendo uma verso desatualizada da pgina.
Esta propriedade deve ser definida antes que qualquer contedo tenha sido enviado para o
navegador do cliente. O cdigo da Listagem 4.18 mostra onde o local mais indicado para
definirmos esta propriedade.
Listagem 4.18 Definindo a propriedade CacheControl do objeto Response.
1 <%@ Language=VBScript %>
2 <% Response.CacheControl=Public%>
3 <HTML>
4 <HEAD>
5 </HEAD>
6 <BODY>
7 <P>Definindo a propriedade CacheControl do objeto Response.</P>
8 </BODY>
9 </HTML>
Esta propriedade pode assumir os seguintes valores:
Public: Permite que a pgina ASP seja armazenada no Cache do servidor Proxy.
Private: Faz com que a pgina ASP no seja armazenada no Cache do servidor Proxy.
A Pr opr iedade Char Set do Objet o Response
Quando o servidor envia informaes para o cliente, antes de mandar o contedo da pgina
propriamente dito, enviado um cabealho (Header) de informaes. Neste cabealho existem
diversas definies importantes, tais como o tipo de contedo que est sendo enviado. Uma
das informaes contidas neste cabealho qual o conjunto de caracteres a ser utilizado para
exibir o contedo enviado. Para ter uma noo exata do que significa um conjunto de caracteres
Criando Sites Dinmicos com ASP 3.0
2 1 4
basta observar as diferenas entre uma pgina desenvolvida para o idioma Portugus e outra
para ser exibida no idioma Chins ou Japons.
Esta propriedade deve ser definida antes que qualquer contedo tenha sido enviado para o
navegador do cliente. O cdigo da Listagem 4.19 mostra onde o local mais indicado para
definirmos esta propriedade.
Listagem 4.19 Definindo a propriedade Charset do objeto Response.
1 <%@ Language=VBScript %>
2 <% Response.Charset(ISO-LATIN-1)%>
3 <HTML>
4 <HEAD>
5 </HEAD>
6 <BODY>
7 <P>Definindo a propriedade Charset do cabealho do documento.</P>
8 </BODY>
9 </HTML>
IMPORTANTE
Todas as propriedades que alteram alguma caracterstica do cabealho do documento devem
ser definidas antes que qualquer contedo visvel seja enviado para o navegador do cliente.
Por isso, o local mais indicado para definir estas propriedades antes da abertura da tag
<BODY>, que onde realmente comea o contedo que compor a pgina a ser enviada.
A Pr opr iedade Cont ent Type do Objet o Response
Esta propriedade define o tipo de contedo que ser enviado para o cliente. Os tipos de
contedo so definidos por um padro conhecido como MIME-type. A propriedade
ContentType informa ao navegador qual o tipo de contedo que o mesmo dever receber.
Apenas para exemplificar, vamos citar alguns dos tipos mais conhecidos:
text/html: Define o arquivo como sendo do tipo texto, com contedo de cdigo HTML.
o tipo padro, isto , se no for definido outro tipo, este ser o utilizado.
image/gif: O navegador espera receber um arquivo de imagem do tipo .gif.
image/jpg: O navegador espera receber um arquivo de imagem do tipo .jpg.
Esta propriedade deve ser definida antes que qualquer contedo tenha sido enviado para o
navegador do cliente. O cdigo da Listagem 4.20 mostra onde o local mais indicado para
definirmos esta propriedade.
2 1 5
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
Listagem 4.20 Definindo a propriedade ContentType do objeto Response.
1 <%@ Language=VBScript %>
2 <% Response.ContentType = text/html %>
3 <HTML>
4 <HEAD>
5 </HEAD>
6 <BODY>
7 <P>Definindo a propriedade ContentType para o cabealho do documento.</P>
8 </BODY>
9 </HTML>
A Pr opr iedade Expir es do Objet o Response
A propriedade Expires especifica o tempo decorrido antes que uma pgina armazenada no
Cache de um navegador perca a validade. Se o usurio retornar para a mesma pgina antes
dela expirar, a verso armazenada em Cache ser exibida.
A sintaxe para esta propriedade a seguinte:
Response.Expires=Nmero
onde Nmero especificado em minutos.
Quando a pgina .asp chama Response.Expires, o IIS cria um cabealho HTTP indicando a
hora no servidor. Se a hora do sistema do cliente anterior hora do sistema do servidor
(caso o cliente ou servidor no tenham uma configurao de hora precisa ou haja diferenas
de fuso horrio) a configurao do parmetro como 0 no ter o efeito de expirar a pgina
imediatamente. Voc pode usar a propriedade Response.ExpiresAbsolute (veja prximo item)
para obter a expirao imediata de uma pgina. Alm disso, pode usar um nmero negativo
para a propriedade Expires. Por exemplo:
<% Response.Expires = -1 %>
expirar a resposta imediatamente.
NOTA
Se existirem vrias chamadas para Response.Expires em uma nica pgina, o servidor usar
o perodo de tempo mais curto.
Esta propriedade deve ser definida antes que qualquer contedo tenha sido enviado para o
navegador do cliente. O cdigo da Listagem 4.21 mostra onde o local mais indicado para
definirmos esta propriedade.
Criando Sites Dinmicos com ASP 3.0
2 1 6
Listagem 4.21 Definindo a propriedade Expires do objeto Response.
1 <%@ Language=VBScript %>
2 <% Response.Expires = 1440 %>
3 <HTML>
4 <HEAD>
5 </HEAD>
6 <BODY>
7 <P>Definindo a propriedade Expires para o cabealho do documento.</P>
8 </BODY>
9 </HTML>
Neste exemplo estou definindo em um dia (1.440 minutos) o tempo de expirao para a
pgina. Para forar uma nova requisio para o servidor Web, a cada solicitao da pgina,
podemos utilizar o seguinte cdigo:
<% Response.Expires = 0 %>
Com isso a pgina expira imediatamente. Na prxima requisio do cliente, a pgina ser
novamente carregada a partir do servidor. Isto garante que sempre a ltima verso da pgina
ser enviada do servidor Web para o navegador do cliente.
A Pr opr iedade Expir esAbsolut e do Objet o Response
A propriedade ExpiresAbsolute especifica a data e a hora na qual uma pgina armazenada
em Cache em um navegador expira. Se o usurio retornar para a mesma pgina antes dessa
data e hora, a verso em Cache ser exibida. Se uma hora no for especificada, a pgina
expirar meia-noite desse dia. Se uma data no for especificada, a pgina expirar na hora
determinada no dia que o script for executado.
A sintaxe para esta propriedade a seguinte:
Response.ExpiresAbsolute =#[data] [hora]#
NOTA
Se essa propriedade for definida mais de uma vez em uma pgina, a data ou hora de expirao
mais prxima atual ser usada. Se tentarmos definir a data de expirao como uma data
que j passou, a data e hora atuais sero utilizadas como de expirao.
Esta propriedade deve ser definida antes que qualquer contedo tenha sido enviado para o
navegador do cliente. O cdigo da Listagem 4.22 mostra onde o local mais indicado para
definirmos esta propriedade.
2 1 7
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
Listagem 4.22 Definindo a propriedade ExpiresAbsolute do objeto Response.
1 <%@ Language=VBScript %>
2 <% Response.ExpiresAbsolute=#May 29,2002 18:30:35# %>
3 <HTML>
4 <HEAD>
5 </HEAD>
6 <BODY>
7 <P>Definindo a propriedade ExpiresAbsolute para o cabealho do documento.</P>
8 </BODY>
9 </HTML>
NOTA
Observe que a data e a hora devem estar entre os caracteres #.
A Pr opr iedade IsClient Connect ed do Objet o Response
A propriedade IsClientConnected uma propriedade somente de leitura que indica se o
cliente foi desconectado do servidor.
A sintaxe para esta propriedade a seguinte:
Response.IsClientConnected ( )
IMPORTANTE
Essa propriedade permite que voc tenha um maior controle sobre as circunstncias nas quais
o cliente pode ter se desconectado do servidor. Por exemplo, se um longo perodo de tempo tiver
decorrido entre o momento de uma solicitao do cliente e o momento em que o servidor
respondeu, talvez seja benfico garantir que o cliente ainda esteja conectado antes de continuar
a processar o script.
Esta propriedade retorna True (Verdadeiro) ou False (Falso). Se o cliente continua conectado
a propriedade retorna True, caso contrrio retorna False.
O cdigo da Listagem 4.23 mostra um exemplo de utilizao desta propriedade.
Listagem 4.23 Utilizando a propriedade IsClientConnected do objeto Response.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
Criando Sites Dinmicos com ASP 3.0
2 1 8
5 <BODY>
7 <P>Exemplo de utilizao da propriedade IsClientConnected.</P>
8 <% If Response.IsClientConnected( ) Then
9 Response.Write O Cliente continua conectado.
10 Else
11 Response.Write O Cliente foi desconectado.
12 End If
13 %>
14 </BODY>
15 </HTML>
A Pr opr iedade PICS do Objet o Response
Um rtulo PICS Platform for Internet Content Selection (Plataforma para Seleo de Contedo
da Internet) um rtulo que define uma pgina em termos do seu contedo, tais como:
Infantil
Sexo
Violncia
Estes rtulos podem ser utilizados para classificar a informao da Internet. Os principais
navegadores do mercado permitem que seja ativado um Supervisor de Contedo com a
definio de uma senha. Para alterar as definies do Supervisor de Contedo, somente com
o conhecimento da senha. Pais podem usar este Supervisor de Contedo para evitar que os
filhos tenham acesso a sites com contedo de sexo explcito ou violncia.
A sintaxe para esta propriedade a seguinte:
Response.PICS(PICSLabel)
IMPORTANTE
A propriedade PICS insere qualquer seqncia de caracteres no cabealho, independente dela
representar ou no um rtulo PICS vlido.
Exemplo:
<% Response.PICS((PICS-1.1 <http://www.rsac.org/ratingv01.html> labels on &
chr(34) & 1997.01.05T08:15-0500 & chr(34) & until & chr(34) & 1999.12.31T23:59-
0000 & chr(34) & ratings (v 0 s 0 l 0 n 0))) %>
2 1 9
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
NOTA
Para maiores informaes sobre a Classificao de Contedo consulte os sites www.rsac.org ou
os www.w3.org, ou o livro Internet Explorer 5.0 Resource Kit.
A informao do cabealho PICS enviada para o navegador do cliente. Com base na
classificao da pgina e das configuraes do navegador, o contedo da pgina pode no ser
exibido, como no exemplo de pais que bloqueiam o acesso a sites de sexo.
A Pr opr iedade St at us do Objet o Response
A propriedade Status define a mensagem que ser enviada para o cliente, dentro do cabealho
HTTP da resposta. Esta mensagem pode ser utilizada para indicar um erro ou o processamento
com sucesso da requisio do usurio. Os valores de Status so definidos na especificao HTTP.
A sintaxe para esta propriedade a seguinte:
Response.Status = DescrioDoStatus
Exemplo:
<% Response.Status = 410 Unauthorized %>
ou
<% Response.Status = 404 Not Found %>
Abaixo temos uma descrio das principais mensagens de status de erro:
400 Bad Request
410 Unauthorized Login Failed
404 Not Found
414 Request URL Too Long
500 Internal Server Error
501 Not Implemented
Com isso encerramos o estudo das propriedades do objeto Response. Agora passaremos ao
estudo dos mtodos do objeto Response.
M t odos do Objet o Response
O objeto Response possui diversos mtodos, os quais permitem o controle sobre o contedo
que ser enviado para o cliente. Um mtodo, conforme j descrito anteriormente, realiza uma
Criando Sites Dinmicos com ASP 3.0
2 2 0
determinada ao. Por exemplo, j utilizamos inmeras vezes o mtodo Write do objeto Response.
Este mtodo utilizado para enviar contedo do servidor Web para o navegador do cliente.
O M t odo AddHeader do Objet o Response
O mtodo AddHeader adiciona um cabealho HTML com um valor especificado. Esse mtodo
sempre adiciona um novo cabealho HTTP resposta. Ele no substituir um j existente de
mesmo nome. Uma vez que um cabealho tenha sido adicionado, ele no poder ser removido.
NOTA
Este mtodo pouco utilizado, se outro mtodo Response fornecer a funcionalidade necessria,
recomendvel que voc o utilize.
Como o protocolo HTTP requer que os cabealhos sejam enviados antes do contedo, em
geral, voc deve modificar todos os cabealhos enviados antes que seu script ASP gere alguma
sada. No IIS 4.0, isso significava que era necessrio chamar AddHeader no script antes que
alguma sada (como aquela gerada pelo cdigo HTML ou pelo mtodo Write) fosse enviada ao
cliente, normalmente antes da tag <BODY>. No IIS 5.0, com ASP 3.0, o Buffer ativado por
padro, conforme descrito anteriormente. Portanto, voc pode chamar o mtodo AddHeader
em qualquer ponto do script, desde que o Buffer no tenha sido desativado
(Response.Buffer=False) e que ele preceda todas as chamadas para Flush.
O cdigo da Listagem 4.24 mostra um exemplo de utilizao deste mtodo.
Listagem 4.24 Utilizando o mtodo AddHeader do objeto Response.
1 <%@ Language=VBScript %>
2 <% Response.AddHeader AVISO IMPORTANTE , Servidor Indisponvel %>
3 <HTML>
4 <HEAD>
5 </HEAD>
6 <BODY>
7 <P>Exemplo de utilizao do mtodo AddHeader.</P>
8 </BODY>
9 </HTML>
O M t odo AppendToLog do Objet o Response
Todo servidor Web mantm um arquivo de Log. Neste arquivo so gravadas diversas
informaes, tais como o nmero IP da mquina do cliente, a pgina que o mesmo est
acessando, a hora de acesso, etc. Estas informaes podem ser utilizadas para, por exemplo,
2 2 1
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
gerar estatsticas de acesso. No IIS 5.0 podemos configurar quais tipos de informao devem
ser gravadas no Log. Alm disso, temos o mtodo AppendToLog, o qual adiciona uma seqncia
de caracteres ao final da entrada de Log do servidor Web. Voc pode cham-lo vrias vezes
em uma seo do script. Cada vez que o mtodo chamado, ele anexa a seqncia de caracteres
especificada entrada existente.
Este mtodo utiliza a seguinte sintaxe:
Response.AppendToLog seqncia de caracteres
O cdigo da Listagem 4.25 mostra um exemplo de utilizao deste mtodo.
Listagem 4.25 Utilizando o mtodo AppendToLog do objeto Response.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <BODY>
6 <P>Exemplo de utilizao do mtodo AppendToLog.</P>
7 <% Response.AppendToLog Incio da pgina. %>
8 <P>Contedo da Pgina.</P>
9 <% Response.AppendToLog Final da pgina %>
10 </BODY>
11 </HTML>
Este exemplo adiciona os textos Incio da pgina e Final da pgina ao Log do IIS.
O M t odo Binar yWr it e do Objet o Response
O mtodo BinaryWrite grava as informaes especificadas na sada HTTP atual sem nenhum
caractere de converso. Esse mtodo til para gravar informaes que no so seqncias
de caracteres como dados binrios requeridos por um aplicativo personalizado, ou quando
preciso enviar qualquer tipo de dado que no seja do tipo text/html.
Este mtodo apresenta a seguinte sintaxe:
Response.BinaryWrite dados
Considere o exemplo abaixo:
<% Response.BinaryWrite dados_enviar %>
Criando Sites Dinmicos com ASP 3.0
2 2 2
Onde dados_enviar pode ser um objeto que contm, por exemplo, um trecho de vdeo no
formato .avi.
O M t odo Clear do Objet o Response
O mtodo Clear limpa todas as sadas HTML armazenadas no Buffer. No entanto, este mtodo
limpa apenas o contedo do corpo da resposta; ele no limpa os cabealhos.
Utilizamos a seguinte sintaxe para o mtodo Clear:
Response.Clear
ou
Response.Clear( )
IMPORTANTE
Esse mtodo causar um erro de tempo de execuo se Response.Buffer no tiver sido definido
para True, isto , se no houver contedo no Buffer, a chamada ao mtodo Response.Clear
causar um erro.
O cdigo da Listagem 4.26 mostra um exemplo de utilizao deste mtodo quando o Buffer
est desabilitado, isto ir gerar a mensagem de erro indicada na Figura 4.21. Este erro causado
por termos desabilitado o Buffer (Response.Buffer=False) e mesmo assim tentar utilizar o
mtodo Response.Clear.
Listagem 4.26 Utilizando o mtodo Response.Clear ErroClear.asp.
1 <%@ Language=VBScript %>
2 <% Response.Buffer = False %>
3 <HTML>
4 <HEAD>
5 </HEAD>
6 <BODY>
7 <P>A prxima linha ir gerar um erro.</P>
8 <% Response.Clear %>
9 </BODY>
10 </HTML>
2 2 3
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
Figura 4.21 : Er r o causado pelo uso do mt odo Response. Clear.
O mt odo End do Objet o Response
O mtodo End faz com que o servidor Web pre o processamento do script e retorne o resultado
atual. O contedo restante do arquivo no ser processado.
Utilizamos a seguinte sintaxe:
Response.End
ou
Response.End( )
Coment r ios
Se Response.Buffer tiver sido definido para True (o que o padro no ASP 3.0), a chamada de
Response.End liberar o Buffer. Se voc no deseja que a sada retorne para o usurio, deve
chamar primeiro Response.Clear, conforme indicado no exemplo abaixo:
<%
Response.Clear
Response.End
%>
Criando Sites Dinmicos com ASP 3.0
2 2 4
O M t odo Flush do Objet o Response
O mtodo Flush envia, imediatamente, a sada armazenada no Buffer do servidor. Esse mtodo
causar um erro de tempo de execuo se Response.Buffer tiver sido definido para False.
Utilizamos a seguinte sintaxe:
Response.Flush
ou
Response.Flush( )
O cdigo da Listagem 4.27 mostra um exemplo de utilizao deste mtodo quando o Buffer
est desabilitado, isto ir gerar a mensagem de erro indicada na Figura 4.22. Este erro causado
por termos desabilitado o Buffer (Response.Buffer=False) e depois de desabilit-lo tentamos
utilizar o mtodo Response.Flush.
Figura 4.22: Er r o causado pelo uso do mt odo Response. Flush.
Listagem 4.27 Utilizando o mtodo Response.Flush ErroFlush.asp.
1 <%@ Language=VBScript %>
2 <% Response.Buffer = False %>
3 <HTML>
4 <HEAD>
5 </HEAD>
2 2 5
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
6 <BODY>
7 <P>A prxima linha ir gerar um erro.</P>
8 <% Response.Flush( ) %>
9 </BODY>
10 </HTML>
O M t odo Redir ect do Objet o Response
O mtodo Redirect faz com que o navegador tente acessar a pgina passada como parmetro
para o mtodo. Por exemplo, podemos utilizar o mtodo Redirect para carregar uma pgina
personalizada, dependendo das opes que o usurio preencheu em um determinado formulrio.
A sintaxe para este mtodo a seguinte:
Response.Redirect URL
Como exemplo, vamos supor que o usurio preencheu um formulrio onde existe um campo
chamado Destino. Este campo pode ter um dos seguintes valores:
Brasil
Canad
EUA
Europa
Outros
Com base no valor selecionado neste campo, voc deseja enviar o usurio para uma pgina
personalizada para cada caso. Na listagem 4.28 temos um exemplo de cdigo que soluciona o
problema proposto.
Listagem 4.28 Utilizando o mtodo Response.Redirect.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <BODY>
6 <P>Aguarde Redirecionando...</P>
7 <%
8 Vai_para = Request.Form(Destino)
9 Select Case Vai_para
10 Case Brasil
Criando Sites Dinmicos com ASP 3.0
2 2 6
11 Response.Redirect http://www.abc.com/brasil
12 Case Canad
13 Response.Redirect http://www.abc.com/canada
14 Case EUA
15 Response.Redirect http://www.abc.com/eua
16 Case Europa
17 Response.Redirect http://www.abc.com/europa
18 Case Outros
19 Response.Redirect http://www.abc.com/outros
20 End Select
21 %>
22 </BODY>
23 </HTML>
O M t odo Wr it e do Objet o Response
J utilizamos o mtodo Write inmeras vezes. Este mtodo utilizado para enviar uma
seqncia de caracteres para a sada HTML, enviada para o navegador do cliente. Esta seqn-
cia de caracteres pode ser texto comum, tags HTML, valor de variveis calculadas pela pgina
ASP ou at mesmo valores de campos de dados em um banco de dados. Em resumo, podemos
dizer que o mtodo Write utilizado para montar a pgina HTML que retorna para o usurio.
A sintaxe para o mtodo bastante simples:
Response.Write Contedo
O seguinte exemplo envia texto para a sada HTML, que enviada para o cliente:
Response.Write Bem vindos tecnologia de Pginas Dinmicas.
No prximo exemplo, alm do texto, enviamos uma tag HTML de quebra de linha:
Response.Write Utilizao do mtodo Write <BR>
Assim, o seguinte contedo enviado para o navegador do cliente:
Utilizao do mtodo Write <BR>
O texto Utilizao do mtodo Write exibido e a tag <BR> reconhecida como sendo uma
tag HTML que orienta o navegador a fazer uma quebra de linha.
Com certeza este o mtodo que mais utilizaremos ao longo deste livro.
Agora encerramos o estudo do objeto Response, do qual estudamos todos os mtodos,
propriedades e a coleo Cookies. A partir de ento, passaremos a analisar alguns exemplos
prticos de utilizao do contedo visto at agora.
2 2 7
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
Alguns Exemplos Pr t icos de Aplicao
Neste item veremos alguns exemplos prticos de aplicao do contedo visto at o momento.
Sero propostos alguns problemas e, para resolv-los, utilizaremos o conhecimento aprendido,
com a utilizao dos objetos ASP j apresentados, alm de elementos da linguagem VBScript.
Tambm precisaremos dos conhecimentos de HTML introduzidos no Captulo 2.
Exemplo 1 : Validao dos Dados de um For mulr io
Descrio do problema: vamos supor que tenhamos um formulrio para cadastro dos nossos
clientes em um banco de dados. Alguns campos deste formulrio so de preenchimento
obrigatrio, isto , no podem ficar em branco ou conter valores nulos. Caso o usurio deixe
um ou mais destes campos sem preencher, devemos retornar o formulrio para o cliente,
indicando qual ou quais campos de preenchimento obrigatrio no foram preenchidos. Ao
voltar o formulrio para o cliente, no podemos fazer com que ele tenha que preencher todos
os campos novamente, mas somente os que estiverem faltando. Portanto, o formulrio voltar
para o cliente, mantendo os valores que ele j preencheu, apenas indicando quais campos
obrigatrios no foram preenchidos.
NOTA
Na prtica os valores preenchidos no formulrio deveriam ser armazenados em um banco de
dados como o Microsoft SQL Server 7.0 ou o Microsoft Access 2000. Como ainda no aprendemos
a trabalhar com banco de dados, vamos apenas validar os dados digitados. Caso o usurio
tenha digitado todos os dados corretamente, apenas informaremos que os dados foram digitados
com sucesso e exibiremos os valores. No prximo captulo estaremos tratando sobre a conexo
de pginas ASP com bancos de dados.
Na Listagem 4.29 temos o formulrio que o usurio dever preencher. Neste formulrio, so
de preenchimento obrigatrio os seguintes campos:
Nome
Rua
Cidade
Bairro
email
CPF
Criando Sites Dinmicos com ASP 3.0
2 2 8
Listagem 4.29 Formulrio para cadastro do cliente exemplo-1.htm.
1 <HTML>
2 <HEAD>
3 <TITLE>Formulrio para Cadastro de Clientes !!</TITLE>
4 </HEAD>
5 <BODY>
6 <P><STRONG>Formulrio para Cadastro de Clientes:</STRONG></P>
7 <P>Digite os dados solicitados e clique no boto Enviar.</P>
8 <FORM action=exemplo-1.asp method=post>
9 <P>Nome: <INPUT id=nome maxLength=50 name=nome>(*)</P>
10 <P>Rua: <INPUT id=rua maxLength=35 name=rua >(*)</P>
11 <P>Cidade: <INPUT id=cidade maxLength=30 name=cidade>(*)
12 Bairro: <INPUT id=Bairro maxLength=20 name=Bairro></P>
13 <P>e-mail: <INPUT id=email maxLength=50 name=email>(*)
14 Fone:<INPUT id=fone maxLength=15 name=fone></P>
15 <P>CPF: <INPUT id=cpf maxLength=11 name=cpf>(*)
16 <FONT size=2><STRONG>(Digite sem o ponto e sem o trao)
17 </STRONG></FONT></P>
18 <P>Carto Crdito:
19 <INPUT id=cartao name=cartao type=radio value=Visa>Visa
20 <INPUT id=cartao name=cartao type=radio value=Master Card>Master Card
21 <INPUT id=cartao name=cartao type=radio value=Outros>Outros
22 </P>
23 <P><INPUT id=enviar name=enviar type=submit value=Enviar>
24 <INPUT id=limpar name=limpar type=reset value=Reset>
25 <BR>
26 (*)->Campos de digitao obrigatria.<BR></P>
27 </FORM>
28 </BODY>
29 </HTML>
Ao visualizarmos este formulrio no Internet Explorer, obtemos o resultado mostrado na Figura 4.23.
Observe, na linha 8, que o atributo action, da tag FORM definido como exemplo-1.asp.
Agora precisamos criar a pgina exemplo-1.asp, a qual vai processar os dados digitados no
formulrio quando o usurio clicar no boto Enviar. A pgina exemplo-1.asp deve verificar se
todos os campos obrigatrios foram digitados. Em caso afirmativo a pgina informar os
valores digitados pelo usurio, caso contrrio, o formulrio ser enviado de volta, indicando
quais os campos obrigatrios que no foram preenchidos. Alm disso ao enviar o formulrio
de volta para o usurio, os valores digitados pelo usurio sero preservados, evitando que
seja preciso digitar todos os campos novamente.
2 2 9
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
Figura 4.23: O for mulr io par a cadast r o de client es.
Existem diversas maneiras e algoritmos diferentes para solucionar este problema. Na Listagem
4.30 apresentamos uma soluo para o problema proposto.
Listagem 4.30 Fazendo a validao dos dados obrigatrios exemplo-1.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <BODY>
6 <%
7 Inicia a verificao para saber se todos
8 os campos obrigatrios foram preenchidos.
9 Atribui os campos obrigatrios variveis.
10 nome = Request.Form(nome)
11 rua = Request.Form(rua)
12 cidade = Request.Form(cidade)
Criando Sites Dinmicos com ASP 3.0
2 3 0
13 email = Request.Form(email)
14 cpf = Request.Form(CPF)
15 Verifica se os campos obrigatrios foram preenchidos.
16 Qualquer dado obrigatrio que no tenha sido preenchido,
17 definir a varivel faltou_dado em Sim.
18 If (nome=)Then
19 mensagem_nome=Preencha o campo Nome:
20 faltou_dado=Sim
21 faltou_nome=Sim
22 End If
23 If (rua=)Then
24 mensagem_rua=Preencha o campo Rua:
25 faltou_dado=Sim
26 faltou_rua=Sim
27 End If
28 If (cidade=)Then
29 mensagem_cidade=Preencha o campo Cidade:
30 faltou_dado=Sim
31 faltou_cidade=Sim
32 End If
33 If (email=)Then
34 mensagem_email=Preencha o campo email:
35 faltou_dado=Sim
36 faltou_email=Sim
37 End If
38 If (cpf=)Then
39 mensagem_cpf=Preencha o campo CPF:
40 faltou_dado=Sim
41 faltou_cpf=Sim
42 End If
43 Caso todos os campos obrigatrios tenham sido
44 preenchidos, apenas informo os valores digitados.
45 If faltou_dado<>Sim Then
2 3 1
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
46 Response.Write <P>Voc digitou os seguintes dados !</P>
47 Response.Write <HR>
48 For Each Dado in Request.Form %>
49 <P>
50 <% =Dado %>
51 :
52 <%=Request.Form(Dado)%>
53 </P>
54 <%Next
55 End If
56 Caso algum dado obrigatrio no tenha sido digitado
57 Envia o formulrio de volta para o cliente,
58 preservando os valores que o mesmo j digitou.
59 Observe que utilizamos Response.Write para ir
60 recriando todo o formulrio.
61 Tambm observe que o formulrio enviado de volta
62 na pgina exemplo-1.asp e que o atributo action
63 da tag FORM definido como exemplo-1.asp, ou seja
64 a pgina exemplo-1.asp chama a si mesma aps o
65 usurio clicar no boto Enviar.
66 Esta uma tcnica bastante interessante.
67 Antes de enviar o formulrio, informamos quais
68 os campos obrigatrio que no foram preenchidos.
69 If faltou_nome=Sim Then
70 Response.Write O campo Nome deve ser preenchido. <BR>
71 End If
72 If faltou_rua=Sim Then
73 Response.Write O campo Rua deve ser preenchido. <BR>
74 End If
75 If faltou_cidade=Sim Then
76 Response.Write O campo Cidade deve ser preenchido. <BR>
77 End If
78 If faltou_email=Sim Then
79 Response.Write O campo email deve ser preenchido. <BR>
Criando Sites Dinmicos com ASP 3.0
2 3 2
80 End If
81 If faltou_cpf=Sim Then
82 Response.Write O campo CPF deve ser preenchido. <BR>
83 End If
84 Comeo a reenviar o formulrio para o usurio.
85 %>
86 <P><B>Formulrio para Cadastro de Clientes:</B></P>
87 <P>Digite os dados solicitados e clique no boto Enviar.</P>
88 <FORM action=exemplo-1.asp method=post id=form1 name=form1>
89 <% Response.Write Caso queira alterar algum dado, digite no formulrio abaixo.
90 If faltou_nome=Sim Then
91 Response.Write <P>Nome: <INPUT id=nome maxLength=50 name=nome
size=50>(*)</P>
92 Else
93 Response.Write <P>Nome: <INPUT id=nome maxLength=50 name=nome
size=50 value= & Chr(34)& Request.Form(nome) & Chr(34) & >(*)</P>
94 End If
95 If faltou_rua=Sim Then
96 Response.Write <P>Rua: <INPUT id=rua maxLength=35 name=rua size=35>
(*)</P>
97 Else
98 Response.Write <P>Rua: <INPUT id=rua maxLength=35 name=rua size=35
value= & Chr(34)& Request.Form(rua) & Chr(34) & >(*)</P>
99 End If
100 If faltou_cidade=Sim Then
101 Response.Write <P>Cidade: <INPUT id=cidade maxLength=30
name=cidade size=18>(*)
102 Else
103 Response.Write <P>Cidade: <INPUT id=cidade maxLength=30
name=cidade size=18 value= & Chr(34) &
Request.Form(cidade) & Chr(34) & >(*)
104 End If
2 3 3
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
105 Response.Write Bairro:<INPUT id=bairro maxLength=25 name=bairro
value= & Chr(34) & Request.Form(bairro) & Chr(34) & ></P>
106 If faltou_email=Sim Then
107 Response.Write <P>Email: <INPUT id=email maxLength=35
name=email size=19>(*)</P>
108 Else
109 Response.Write <P>Email: <INPUT id=email maxLength=30
name=email size=19 value= & Chr(34)& Request.Form(email)
& Chr(34) & >(*)
110 End If
111 Response.Write Fone:<INPUT id=fone maxLength=15 name=fone
value= & Chr(34) & Request.Form(fone) & Chr(34) & ></P>
112 If faltou_cpf=Sim Then
Response.Write <P>CPF: <INPUT id=cpf maxLength=11 name=cpf
size=11>(*)
113 Else
114 Response.Write <P>CPF: <INPUT id=cpf maxLength=11 name=cpf
size=11 value= & Chr(34)& Request.Form(cpf) & Chr(34) & >(*)
115 End If
116 Response.Write <FONT size=2><B>(Digite sem o ponto e sem o trao)
</B></FONT></P>
117 Response.Write <P>Carto Crdito:
118 If Request.Form(cartao)=Visa Then
119 Response.Write <INPUT id=cartao name=cartao type=radio
value=Visa checked>Visa
120 Else
121 Response.Write <INPUT id=cartao name=cartao type=radio value=Visa>Visa
122 End If
121 If Request.Form(cartao)=Master Card Then
122 Response.Write <INPUT id=cartao name=cartao type=radio value=
& Chr(34) & Master Card & Chr(34)& checked>Master Card
123 Else
124 Response.Write <INPUT id=cartao name=cartao type=radio value=
& Chr(34) & Master Card & Chr(34)& checked>Master Card
125 End If
Criando Sites Dinmicos com ASP 3.0
2 3 4
126 If Request.Form(cartao)=Outros Then
127 Response.Write <INPUT id=cartao name=cartao type=radio
value=Outros checked>Outros
128 Else
129 Response.Write <INPUT id=cartao name=cartao type=radio value=
Outros>Outros</P>
130 End If
131 Response.Write <P><INPUT id=enviar name=enviar type=submit value=Enviar>
132 Response.Write <INPUT id=limpar name=limpar type=reset value=Reset>
133 Response.Write <BR>
134 Response.Write (*)->Campos de digitao obrigatria.</P>
135 Neste ponto encerro a montagem do formulrio
136 %>
137 </FORM>
138 </BODY>
139 </HTML>
Algumas observaes sobre a Listagem 4.30:
Linhas de cdigo como a do seguinte exemplo:
111 Response.Write Fone:<INPUT id=fone maxLength=15 name=fone
value= & Chr(34) & Request.Form(fone) & Chr(34) & ></P>
devem ser digitadas em uma nica linha. A linha aparece dividida por questes de espao
para exibio, quando for digitar esta linha, digite-a como uma linha nica.
O exemplo foi desenvolvido de maneira que o cdigo fosse de fcil compreenso, alm
disso foram inseridas diversas linhas de comentrio para facilitar o acompanhamento
do exemplo proposto. Cabe lembrar que, para criarmos uma linha de comentrio,
devemos iniciar a mesma com o sinal de apstrofe.
Observe o seguinte fragmento de cdigo:
18 If (nome=)Then
19 mensagem_nome=Preencha o campo Nome:
20 faltou_dado=Sim
21 faltou_nome=Sim
22 End If
Neste fragmento, estamos testando se o campo obrigatrio nome foi preenchido. Caso o
mesmo no tenha sido preenchido, definimos a varivel faltou_dado como sendo igual a
2 3 5
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
Sim. Tambm definimos a varivel faltou_nome como sendo igual a Sim. Este procedimento
repetido para os demais campos obrigatrios. Desta forma, qualquer campo obrigatrio que
esteja faltando, ir definir a varivel faltou_dado como sendo igual a Sim. Estas variveis
sero utilizadas mais adiante para informar quais campos obrigatrios esto faltando, e caso
nenhum esteja faltando, para informar os valores digitados pelo usurio.
Observe o seguinte fragmento de cdigo:
45 If faltou_dado<>Sim Then
46 Response.Write <P>Voc digitou os seguintes dados !</P>
47 Response.Write <HR>
48 For Each Dado in Request.Form %>
49 <P>
50 <% =Dado %>
51 =
52 <%=Request.Form(Dado)%>
53 </P>
54 <%Next
55 End If
Neste fragmento, verificamos se no faltou nenhum dado (faltou_dado<>Sim), em caso
afirmativo, simplesmente exibimos os dados digitados pelo usurio. Veja que utilizamos a
estrutura For Each...Next para percorrer todos os valores do formulrio.
A partir da linha 69 comeo a enviar mensagens, informando os campos de
preenchimento obrigatrio que no foram digitados. Considere o fragmento abaixo:
69 If faltou_nome=Sim Then
70 Response.Write O campo Nome deve ser preenchido. <BR>
71 End If
Neste caso, se o campo nome no foi digitado, envio a seguinte mensagem: O campo Nome
deve ser preenchido.
A partir da linha 90:
90 If faltou_nome=Sim Then
verifico um a um os campos obrigatrios para ver qual ou quais esto faltando. Caso o campo
esteja faltando, emito uma mensagem dizendo que o mesmo deve ser digitado, caso contrrio
crio o campo do formulrio e defino o seu valor conforme digitado pelo usurio. Observe o
fragmento de cdigo abaixo:
90 If faltou_nome=Sim Then
91 Response.Write <P>Nome: <INPUT id=nome maxLength=50 name=nome
size=50>(*)</P>
92 Else
Criando Sites Dinmicos com ASP 3.0
2 3 6
93 Response.Write <P>Nome: <INPUT id=nome maxLength=50 name=nome
size=50 value= & Chr(34)& Request.Form(nome) & Chr(34) & >(*)</P>
94 End If
Primeiro (linha 90), testamos se o nome no foi digitado. Em caso afirmativo criamos o campo
nome, em branco. Isto feito pela linha 91:
91 Response.Write <P>Nome: <INPUT id=nome maxLength=50 name=nome
size=50>(*)</P>
Esta linha envia o texto entre aspas para o navegador do cliente:
<P>Nome: <INPUT id=nome maxLength=50 name=nome size=50>(*)</P>
E este justamente o cdigo HTML que cria o campo nome e define os seus atributos. Veja
que estamos utilizando Response.Write para recriar o formulrio HTML original.
Caso o campo tenha sido preenchido, criamos o campo novamente com o cuidado de j preench-
lo com o valor digitado previamente pelo usurio. Isto feito pelo cdigo abaixo:
93 Response.Write <P>Nome: <INPUT id=nome maxLength=50 name=nome
size=50 value= & Chr(34)& Request.Form(nome) & Chr(34) & >(*)</P>
Veja que esta instruo Response.Write um pouco mais complexa. A instruo formada
por diversas partes, sendo que cada parte concatenada pelo operador &. Na primeira parte
enviado o texto:
<P>Nome: <INPUT id=nome maxLength=50 name=nome size=50 value=
A segunda parte Chr(34) envia um sinal de aspas (). Depois do sinal de aspas, usamos
Request.Form(nome) para capturar o nome digitado pelo usurio. Vamos supor que o usurio
tenha digitado Jos da Silva no campo nome. Neste ponto, o nosso comando estaria assim:
<P>Nome: <INPUT id=nome maxLength=50 name=nome size=50 value=Jos da Silva
Depois enviamos mais um sinal de aspas, Chr(34), e a parte final >(*)</P>. Com isso o
cdigo enviado por este comando o seguinte:
<P>Nome: <INPUT id=nome maxLength=50 name=nome size=50 value=Jos da Silva>(*)</P>
que justamente o cdigo HTML necessrio para criar o campo Nome e definir o seu valor
conforme o valor digitado pelo usurio. Um detalhe importante a salientar a utilizao do
Chr(34) antes e depois do nome do usurio. Precisamos envolver o nome digitado entre aspas,
pois caso contrrio o nome seria truncado no primeiro espao em branco. Se o usurio digitasse
Jos da Silva, sem as aspas seria retornado apenas Jos. Tudo o que vier depois do primeiro espao
em branco ser ignorado, por isso que utilizamos uma sinal de aspas antes e outro depois.
Veja que com a utilizao de cdigo ASP vamos recriando o formulrio original. Alm disso
mesclamos diversos trechos de cdigo ASP com HTML. Perceba que dentro do cdigo ASP podemos
utilizar todos os recursos da linguagem VBScript, ou seja, as possibilidades so variadas.
2 3 7
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
Agora vamos a alguns exemplos de utilizao da nossa aplicao. Na figura 4.24, temos um
exemplo onde o formulrio original foi aberto no Internet Explorer e o usurio preencheu
todos os campos, isto , no deixou de preencher nenhum campo obrigatrio.
Figura 4.24: O usur io pr eencheu t odos os campos.
Ao clicar no boto Enviar os dados so enviados para a pgina exemplo-1.asp. Como todos os
campos obrigatrios foram preenchidos, a pgina simplesmente exibe os valores digitados
pelo usurio, conforme mostrado na Figura 4.25.
Figura 4.25: A pgina ASP infor ma os valor es digit ados.
Criando Sites Dinmicos com ASP 3.0
2 3 8
Alm de informar os valores digitados, a pgina retorna o formulrio com os dados digitados
pelo usurio. Caso o usurio queira alterar algum valor digitado s fazer as alteraes
necessrias e clicar no boto Enviar. O formulrio aparece abaixo da informao dos valores
digitados, mais no final da pgina, conforme indicado na Figura 4.26.
Figura 4.26: O usur io pode alt er ar os valor es digit ados.
Vamos testar uma outra situao do nosso aplicativo. Suponhamos que o usurio deixe de preencher
um dos campos obrigatrios. No exemplo da Figura 4.27, o usurio no preenche o campo Cidade.
Figura 4.27: O usur io no pr eencheu um campo obr igat r io.
2 3 9
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
Figura 4.28: For mulr io infor mando que o campo Cidade obr igat r io.
Exemplo 2 : For mulr io Par a Clculo de Impost o
Descrio do problema: vamos supor que tenhamos um formulrio para pedido de mercadorias.
O usurio preenche o formulrio com os produtos desejados e clica em um boto Calcular.
Este boto chama uma pgina ASP que retorna o formulrio de pedidos mais o valor do frete
e do imposto, bem como o valor total do pedido. Vamos supor que, por motivos de simplicidade,
somente so possveis entregas para os estados do RS, PR, SC, SP e RJ. Sendo que o imposto
e a taxa de frete diferente para cada um destes estados.
Tabela 4.3 Valores de frete e imposto para cada estado.
Neste caso, ao clicar no boto Enviar, o usurio recebe uma pgina contendo uma mensagem
que avisa que o campo Cidade de preenchimento obrigatrio, e contendo o formulrio
somente com o campo Cidade em branco para que o mesmo seja preenchido, conforme
indicado pela Figura 4.28.
Estado Frete (R$) Imposto (%)
RS 3,50 12
PR 4,50 11
Criando Sites Dinmicos com ASP 3.0
2 4 0
O frete nico para o pedido, independente do nmero de itens. O imposto ser calculado
sobre o total da Nota, sem contar o valor do frete, isto , sobre o valor total das mercadorias.
O nosso pedido permitir a entrada de at trs produtos. Tambm faremos uso de tabelas para
facilitar o layout da pgina.
Na Listagem 4.31 temos o formulrio de pedidos.
Listagem 4.31 Formulrio de pedidos exemplo-2.htm.
1 <HTML>
2 <HEAD>
3 <TITLE>Pedido de mercadorias.</TITLE>
4 </HEAD>
5 <BODY>
6 <P><B>FORMULRIO DE PEDIDOS:</B></P>
7 <P>Digite at trs produtos a serem entregues.</P>
8 <P>
9 <FORM action=exemplo-2.asp method=post>
10 <TABLE align=left bgColor=gray border=1 cellPadding=1 cellSpacing=1 width=75%>
11 <TR>
12 <TD>Descrio</TD>
13 <TD>Pr. Unit.</TD>
14 <TD>Quant.</TD>
15 <TD>Subtotal</TD>
16 </TR>
17 <TR>
18 <TD><INPUT id=prod1 name=prod1></TD>
19 <TD><INPUT id=unit1 name=unit1 style=HEIGHT: 22px; WIDTH: 37px></TD>
Estado Frete (R$) Imposto (%)
SC 4,20 13
SP 5,50 17
RJ 5,50 14
2 4 1
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
20 <TD><INPUT id=quant1 name=quant1 style=HEIGHT: 22px; WIDTH: 37px></TD>
21 <TD><INPUT id=valor1 name=valor1 style=HEIGHT: 22px; WIDTH: 51px></TD>
22 </TR>
23 <TR>
24 <TD><INPUT id=prod2 name=prod2></TD>
25 <TD><INPUT id=unit2 name=unit2 style=HEIGHT: 22px; WIDTH: 37px></TD>
26 <TD><INPUT id=quant2 name=quant2 style=HEIGHT: 22px; WIDTH: 37px></TD>
27 <TD><INPUT id=valor2 name=valor2 style=HEIGHT: 22px; WIDTH: 51px></TD>
28 </TR>
29 <TR>
30 <TD><INPUT id=prod3 name=prod3></TD>
31 <TD><INPUT id=unit3 name=unit3 style=HEIGHT: 22px; WIDTH: 37px></TD>
32 <TD><INPUT id=quant3 name=quant3 style=HEIGHT: 22px; WIDTH: 37px></TD>
33 <TD><INPUT id=valor3 name=valor3 style=HEIGHT: 22px; WIDTH: 51px></TD>
34 </TR>
35 </TABLE>
36 <P><INPUT id=enviar name=enviar type=submit value=Calcular Total></P>
37 <SELECT id=estado name=estado>
38 <OPTION selected value=>Estado -></OPTION>
39 <OPTION value=RS>RS</OPTION>
40 <OPTION value=SC>SC</OPTION>
41 <OPTION value=PR>PR</OPTION>
42 <OPTION value=SP>SP</OPTION>
43 <OPTION value=RJ>RJ</OPTION>
44 </SELECT>
45 </P>
46 </FORM>
47 </BODY>
48 </HTML>
Na Figura 4.29, podemos ver este formulrio no Internet Explorer.
Criando Sites Dinmicos com ASP 3.0
2 4 2
Figura 4.29: For mulr io par a pr eenchiment o do pedido.
Agora vamos criar a pgina ASP (exemplo2-asp) que faz o clculo de cada item individual-
mente, depois calcula o total dos trs itens e, finalmente, aplica o imposto e o frete de acordo
com o estado selecionado pelo cliente. Aps fazer os clculos a pgina ASP retorna os valores
fornecidos pelo usurio mais os clculos realizados.
Na Listagem 4.32 temos o cdigo para a pgina exemplo-2.asp. Sempre lembrando que
procuramos desenvolver o cdigo pensando na facilidade do entendimento. Diversas solues
diferentes poderiam ser adotadas, com a obteno do mesmo resultado.
Listagem 4.32 A pgina ASP para clculo do total do pedido.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <BODY>
6 <%
7 Response.Write <B>VALORES TOTAIS PARA O SEU PEDIDO:</B><BR>
2 4 3
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
8 Crio uma varivel para o subtotal de cada produto.
9 If Request.Form(unit1)<> Then
10 subtot1=CSng(Request.Form(unit1))*Csng(Request.Form(quant1))
11 Else
12 subtot1=0
13 End If
14 If Request.Form(unit2)<> Then
15 subtot2=CSng(Request.Form(unit2))*Csng(Request.Form(quant2))
16 Else
17 subtot2=0
18 End If
19 If Request.Form(unit3)<> Then
20 subtot3=CSng(Request.Form(unit3))*Csng(Request.Form(quant3))
21 Else
22 subtot3=0
23 End If
24 total_inicial=subtot1+subtot2+subtot3
25 Agora acrescento o imposto e o frete com base no estado.
26 Select Case Request.Form(estado)
27 Case RS
28 total_imposto=total_inicial+total_inicial*0.12
29 total_geral=total_imposto+3.50
30 valor_frete=3.50
31 Case SC
32 total_imposto=total_inicial+total_inicial*0.13
33 total_geral=total_imposto+4.20
34 valor_frete=4.20
35 Case PR
36 total_imposto=total_inicial+total_inicial*0.11
37 total_geral=total_imposto+4.50
38 valor_frete=4.50
39 Case SP
Criando Sites Dinmicos com ASP 3.0
2 4 4
40 total_imposto=total_inicial+total_inicial*0.17
41 total_geral=total_imposto+5.50
42 valor_frete=5.50
43 Case RJ
44 total_imposto=total_inicial+total_inicial*0.14
45 total_geral=total_imposto+5.50
46 valor_frete=5.50
47 End Select
48 A partir de agora comeo a devolver a pgina
49 com os valores digitados pelo usurio, mais
50 os valores calculados.
51 %>
52 <FORM action=exemplo-2.asp method=post id=form1 name=form1>
53 <TABLE align=left bgColor=gray border=1 cellPadding=1 cellSpacing=1 width=75%>
54 <TR>
55 <TD>Descrio</TD>
56 <TD>Pr. Unit.</TD>
57 <TD>Quant.</TD>
58 <TD>Subtotal</TD>
59 </TR>
60 <TR>
61 <TD><INPUT id=prod1 name=prod1 value= <%=Request.Form(prod1)%> ></TD>
62 <TD><INPUT id=unit1 name=unit1 value= <%=Request.Form(unit1)%>
style=HEIGHT: 22px; WIDTH: 37px></TD>
63 <TD><INPUT id=quant1 name=quant1 value=<%=Request.Form(quant1)%>
style=HEIGHT: 22px; WIDTH: 37px></TD>
64 <TD align=right ><B><%=subtot1%></B></TD>
65 </TR>
66 <TR>
67 <TD><INPUT id=prod2 name=prod2 value= <%=Request.Form(prod2)%> ></TD>
68 <TD><INPUT id=unit2 name=unit2 value= <%=Request.Form(unit2)%>
style=HEIGHT: 22px; WIDTH: 37px></TD>
2 4 5
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
69 <TD><INPUT id=quant2 name=quant2 value=<%=Request.Form(quant2)%>
style=HEIGHT: 22px; WIDTH: 37px></TD>
70 <TD align=right ><B><%=subtot2%></B></TD>
71 </TR>
72 <TR>
73 <TD><INPUT id=prod3 name=prod3 value= <%=Request.Form(prod3)%> ></TD>
74 <TD><INPUT id=unit3 name=unit3 value= <%=Request.Form(unit3)%>
style=HEIGHT: 22px; WIDTH: 37px></TD>
75 <TD><INPUT id=quant3 name=quant3 value=<%=Request.Form(quant3)%>
style=HEIGHT: 22px; WIDTH: 37px></TD>
76 <TD align=right ><B><%=subtot3%></B></TD>
77 </TR>
78 <%
79 Agora monto uma linha para o total de produtos.
80 Uma linha para o valor do frete.
81 Uma linha para o valor do imposto.
82 Uma linha para o total geral.
83 %>
84 <TR>
85 <TD>TOTAL PROD.->></TD>
86 <TD></TD>
87 <TD></TD>
88 <TD align=right><% =FormatNumber(subtot1+subtot2+subtot3,2)%></TD>
89 </TR>
90 <TR>
91 <TD>IMPOSTO ->></TD>
92 <TD></TD>
93 <TD></TD>
94 <TD align=right><% =FormatNumber(total_imposto-total_inicial,2)%></TD>
95 </TR>
96 <TR>
97 <TD>FRETE ->></TD>
98 <TD></TD>
99 <TD></TD>
Criando Sites Dinmicos com ASP 3.0
2 4 6
100 <TD align=right><% =FormatNumber(valor_frete,2)%></TD>
101 </TR>
102 <TR>
103 <TD>TOTAL GERAL ->></TD>
104 <TD></TD>
105 <TD></TD>
106 <TD align=right><% =FormatNumber(total_geral,2)%></TD>
107 </TR>
108 </TABLE>
109 <A HREF=exemplo-2.htm>Clique aqui para voltar a pgina de Pedidos.</A>
110 </BODY>
111 </HTML>
Algumas observaes sobre a Listagem 4.31:
Linhas de cdigo como a do seguinte exemplo:
74 <TD><INPUT id=unit3 name=unit3 value= <%=Request.Form(unit3)%>
style=HEIGHT: 22px; WIDTH: 37px></TD>
devem ser digitadas em uma nica linha. A linha aparece dividida por questes de espao
para exibio; quando for digit-la, digite-a como uma linha nica.
O exemplo foi desenvolvido de maneira que o cdigo fosse de fcil compreenso, alm
disso foram inseridas diversas linhas de comentrio para facilitar o acompanhamento
do exemplo proposto. Cabe lembrar que para criarmos uma linha de comentrio
devemos iniciar a mesma com o sinal de apstrofe.
Observe que utilizamos diversos elementos da linguagem VBScript, tais como a
estrutura Select Case...End Select, para calcular o imposto e o frete, com base no Estado
selecionado pelo cliente. Utilizamos tambm a funo Csng para converter os valores
de Preo Unitrio e Quantidade em valores numricos, de tal forma que fosse possvel
realizar clculos com estes valores. Utilizamos a funo FormatNumber para formatar
os valores calculados, de tal forma a exibir os valores com duas casas decimais, conforme
mostrado no fragmento de cdigo a seguir:
<% =FormatNumber(valor_frete,2)%>
Agora vamos a um exemplo de utilizao da nossa aplicao. Na figura 4.30, temos um exemplo
onde o formulrio de pedidos foi aberto no Internet Explorer e o usurio preencheu o pedido
com trs produtos. O estado selecionado foi SP.
2 4 7
Captulo 4 A Tecnologia ASP e o Modelo de Objetos do ASP 3.0
Figura 4.30: Pr eenchendo os dados do pedido.
Ao clicar no boto Calcular Total ser chamada a pgina exemplo-2.asp, a qual faz os clculos
e exibe os resultados, conforme indicado na Figura 4.31.
Figura 4.31 : Result ados calculados par a o pedido.
Criando Sites Dinmicos com ASP 3.0
2 4 8
Com isso comprovamos que a nossa pgina, para clculo do Total do Pedido, est funcionando
corretamente.
Concluso
Neste captulo aprendemos aspectos fundamentais do ASP 3.0.
Primeiro, aprendemos exatamente o que uma pgina ASP, onde a mesma processada e
qual o resultado que retorna para o navegador do cliente. Depois tivemos uma viso geral
sobre o Modelo de Objetos do ASP 3.0.
Em seguida fizemos um estudo completo sobre os objetos Request e Response. Estudamos
todas as colees, mtodos e propriedades destes objetos. Para cada elemento apresentado
foram colocados exemplos de cdigo, facilitando o entendimento.
Na parte final do captulo apresentamos dois exemplos mais elaborados, onde utilizamos
diversos conceitos apresentados at o momento, tais como o conhecimento dos objetos Request
e Response e da linguagem VBScript.
Mas, para que nossos exemplos assumam um aspecto mais profissional, precisamos aprender
a acessar bancos de dados a partir de pginas ASP. Este o assunto do Captulo 5. Ento,
vamos l, sem mais demoras.
2 4 9
Captulo 5 Conectando Pginas ASP com Bancos de Dados
Capt ul o 5
Conectando Pginas ASP
com Bancos de Dados
Criando Sites Dinmicos com ASP 3.0
2 5 0
Estamos vivendo na Era da Informao. Os aplicativos, quer sejam os tradicionais quer sejam
aplicativos para a Web, so todos ligados informaes de bancos de dados. Quando voc faz
o cadastro em um site de Comrcio Eletrnico, os dados fornecidos so armazenados em um
banco de dados. Da prxima vez que voc visitar o site, estas informaes podero ser
recuperadas a partir deste banco de dados. Quando ligamos para a companhia telefnica
para reclamar, o atendente pede que seja informado o nosso cdigo de cliente. atravs deste
cdigo que as informaes sobre o cliente so recuperadas, a partir do banco de dados da
empresa. Existem incontveis exemplos de aplicaes que usam bancos de dados, no
importando se este est residente em um Mainframe ou em um servidor de Rede que roda um
servidor de banco de Dados, como o Microsoft SQL Server 2000. Devemos salientar a
importncia e a necessidade da utilizao de banco de dados para o armazenamento de um
volume cada vez maior de informaes, sendo que estas informaes e sua correta utilizao
so de fundamental importncia para a empresa.
Durante muito tempo, os bancos de dados residiam em computadores de grande porte, os
conhecidos Mainframe. Depois veio uma onda de descentralizao, na qual a grande estrela
eram as Redes Locais de microcomputadores, com bancos de dados em servidores de Rede.
Esta foi a poca da criao das aplicaes em duas camadas, no tradicional modelo Cliente-
Servidor. Com o avano do modelo Web e da Internet, surgiu a necessidade do desenvolvimento
de aplicaes Web com conexo a banco de dados. Hoje esta necessidade est mais do que
justificada: no existe aplicao Web que no faa conexo com bancos de dados. Desde um
simples formulrio para consulta ao CEP at aplicaes mais complexas de cotao eletrnica
de preos, todas necessitam de acesso a bancos de dados.
Neste captulo aprenderemos a utilizar a tecnologia ASP 3.0 para conectar nossas pginas com
banco de dados. Iniciaremos por uma reviso de dois conceitos muito importantes:
Modelo Relacional de dados.
Linguagem SQL Structured Query Language.
Uma vez revistos estes conceitos partiremos para a conexo de pginas ASP com bancos de
dados utilizando os objetos do ASP. Uma vez estabelecida a conexo aprenderemos a utilizar
objetos do ASP que recuperam informaes do banco de dados. Diversos exemplos prticos
sero apresentadospara facilitar o entendimento dos conceitos apresentados. Tambm veremos
como inserir informaes em um Banco de dados, a partir de um formulrio HTML.
Para facilitar o acompanhamento dos exemplos apresentados, estaremos utilizando um banco
de dados do Microsoft Access.
Este captulo fornece a base necessria para conectar pginas ASP com bancos de dados,
alm da reviso dos conceitos bsicos relativos a bancos de dados e linguagem SQL. No
prximo captulo estaremos abordando diversos aspectos avanados em relao a utilizao
de bancos de dados com pginas ASP.
2 5 1
Captulo 5 Conectando Pginas ASP com Bancos de Dados
Uma Reviso dos Conceit os Bsicos de Banco de Dados
Neste item iremos revisar alguns conceitos bsicos sobre bancos de dados. Estes conceitos
so importantes para o projeto, a criao e a correta utilizao dos bancos de dados.
Em muitas situaes teremos que conectar nossas pginas ASP com bancos de dados j
existentes, neste caso precisamos conhecer os conceitos aqui apresentados, para podermos
otimizar sua utilizao.
Em outras situaes teremos que criar o banco de dados a ser utilizado pela aplicao
Web. Neste caso, os conceitos apresentados neste item auxiliam na criao de um banco
de dados melhor estruturado e otimizado, tanto em termos de espao de armazenamento,
quanto da qualidade e disponibilidade das informaes nele contidas. Revisaremos os
seguintes conceitos:
Entidades e Atributos.
Chave Primria.
Relacionamentos entre Entidades (Tabelas).
Integridade Referencial.
Normalizao de Tabelas.
Ent idades e At r ibut os
Toda informao de um banco de dados armazenada em Tabelas, que tambm so chamadas
de Entidades. Por exemplo, poderamos ter uma tabela Clientes, onde seriam armazenadas
informaes sobre os diversos clientes.
Sobre cada um dos clientes poderamos armazenar informaes tais como: Nome, Rua, Bairro,
Telefone, CEP, Data de Nascimento, etc. Essas diversas caractersticas de cada cliente so os
atributos do cliente, muitas vezes chamados de Campos da entidade Cliente. O conjunto de
todos os atributos de um cliente e os valores dos mesmos forma o Registro do cliente. Com
isso teremos a tabela constituda por um conjunto de registros (uma linha completa com
informaes sobre o cliente) e cada registro formado por um conjunto de atributos (Nome,
Endereo, etc.).
Resumindo:
Entidade ou Tabela Conjunto de Registros.
Campos ou Atributos Caractersticas individuais da Entidade.
Considere o exemplo da Figura 5.1, onde temos uma tabela Cliente com os seus diversos
campos (atributos):
Criando Sites Dinmicos com ASP 3.0
2 5 2
Figura 5.1 : A ent idade ( t abela) Client es e seus diver sos at r ibut os ( campos) .
No exemplo da Figura 5.1, temos uma entidade Clientes e seus diversos atributos Cdigo
do Cliente, Nome da Empresa, Nome do Contato, Cargo do Contato, Endereo, etc. Em cada
linha temos um conjunto de atributos e seus valores. Cada linha forma um registro. Cada
coluna um atributo da tabela Clientes.
Um dos grandes desafios em se projetar um banco de dados com sucesso a correta determinao
das entidades que existiro, bem como dos atributos de cada uma delas.
Chave Pr imr ia
O conceito de Chave Primria fundamental para o correto entendimento do funcionamento
de um banco de dados. Vamos procurar entender o que significa um campo ser a chave
primria de uma tabela.
Ao definirmos um campo como sendo uma chave primria, estamos informando ao banco de
dados que no podem existir dois registros com o mesmo valor de chave primria, ou seja, os
valores neste campo precisam ser nicos. Por exemplo, se defino o campo Nmero da
Identidade da tabela Clientes como sendo uma chave primria, estou dizendo ao banco de
dados que no podem existir dois clientes com o mesmo valor neste campo. Na prtica, estou
garantindo que no podem ser cadastrados dois clientes com o mesmo Nmero de Identidade.
Em outras palavras poderamos dizer que o campo chave primria identifica de maneira
nica cada registro de uma tabela, isto , de posse do valor da chave primria somente
localizaremos um registro com determinado valor neste campo.
2 5 3
Captulo 5 Conectando Pginas ASP com Bancos de Dados
Figura 5.2: O campo Cdigo do Client e uma chave pr imr ia.
Um detalhe importante que a chave primria pode ser formada pela combinao de mais de
um campo. Podem existir casos em que um nico campo no capaz de atuar como chave
primria, pelo fato do mesmo apresentar valores repetidos. Nestes casos podemos definir
uma combinao de dois ou mais campos para ser a nossa chave primria. Lembre-se que
uma tabela pode ter somente uma chave primria, seja ela simples ou composta.
Relacionament os Ent r e Tabelas
Na prtica, em um banco de dados existem diversas tabelas, como por exemplo: Clientes,
Produtos, Pedidos, Detalhes do Pedido, etc. Embora as informaes estejam separadas em
cada uma das tabelas, na prtica devem existir relacionamentos entre elas.
Por exemplo: um pedido feito para um cliente e neste pedido podem existir diversos itens,
os quais so armazenados na tabela Detalhes do Pedido. Alm disso cada pedido tem um
nmero nico, e um mesmo cliente pode fazer diversos pedidos.
Este um conceito muito importante, pois, conforme veremos mais adiante, os conceitos de
Integridade Referencial e Normalizao esto diretamente ligados ao conceito de chave primria.
Na Figura 5.2 vemos um exemplo da tabela Clientes onde o campo Cdigo do Cliente definido
como uma chave primria. Observe que no existem dois clientes com o mesmo cdigo.
Criando Sites Dinmicos com ASP 3.0
2 5 4
Em um banco de dados precisamos de uma maneira para representar estes relacionamentos,
da vida real, em termos das tabelas e atributos. Isto possvel com a utilizao de relacionamen-
tos entre tabelas, os quais podem ser de trs tipos:
Um para Um
Um para Vrios
Vrios para Vrios
Relacionament o do Tipo Um Par a Um
Esta relao existe quando os campos que se relacionam so ambos chaves primrias em suas
respectivas tabelas. Cada um dos campos no apresenta valores repetidos. Na prtica existem
poucas situaes onde utilizaremos um relacionamento deste tipo.
Um exemplo poderia ser o seguinte: imagine uma escola com um cadastro de alunos na
tabela Alunos. Apenas uma pequena parte deles participa da Banda da escola. Por questes
de projeto do banco de dados, podemos optar por criar uma segunda tabela Alunos da Banda,
a qual pode se relacionar com a tabela Alunos atravs de um relacionamento Um para Um.
Cada aluno somente cadastrado uma vez na tabela Alunos e uma nica vez na tabela Alunos
da Banda. Poderamos utilizar o campo Matrcula do Aluno como o campo que relaciona as
duas tabelas.
Na tabela Alunos da Banda poderamos colocar apenas o Nmero da Matrcula do aluno,
alm das informaes a respeito do instrumento que ele toca, tempo de banda, etc. Quando
for necessrio buscar as informaes tais como nome, endereo, etc., as mesmas podem ser
recuperadas atravs do relacionamento existente entre as duas tabelas, evitando, com isso,
que a mesma informao (Nome, Endereo, etc.) tenha que ser duplicada nas duas tabelas, o
que diminui a probabilidade de erros de digitao.
Na Figura 5.3 vemos o exemplo de um relacionamento do tipo Um para Um entre as tabelas
Alunos e Alunos da Banda.
Figura 5.3: Um r elacionament o do t ipo Um par a Um.
2 5 5
Captulo 5 Conectando Pginas ASP com Bancos de Dados
Relacionament o do Tipo Um Par a Vr ios
Este, com certeza, o tipo de relacionamento mais comum entre duas tabelas. Uma das
tabelas (o lado Um do relacionamento) possui um campo que a chave primria e a outra
tabela (o lado Vrios) se relaciona atravs de um campo cujos valores relacionados podem se
repetir vrias vezes.
Considere o exemplo entre a tabela Clientes e Pedidos. Cada Cliente somente cadastrado
uma nica vez (por isso o campo Cdigo do Cliente uma chave primria, indicando que no
podem existir dois clientes com o mesmo cdigo); portanto a tabela Clientes ser o lado Um
do relacionamento. Porm cada cliente pode fazer diversos pedidos, por isso que o Cdigo do
Cliente poder aparecer vrias vezes na tabela Pedidos, tantas vezes quantos forem os pedidos
que o cliente tiver feito. Por isso que temos um relacionamento do tipo Um para Vrios entre
a tabela Clientes e Pedidos, atravs do campo Cdigo do Cliente, indicando que um mesmo
cliente pode realizar diversos pedidos.
Na Figura 5.4 vemos um exemplo de um relacionamento Um para Vrios entre as tabelas
Clientes e Pedidos, atravs do campo Cdigo do Cliente.
Figura 5.4: Um r elacionament o do t ipo Um par a Vr ios.
No lado Um do relacionamento o campo definido como uma chave primria (campo
CdigoDoCliente na tabela Clientes) e no lado Vrios no (campo CdigoDoCliente na tabela
Pedidos), indicando que no lado Vrios o Cdigo do Cliente pode se repetir vrias vezes, uma
vez que um mesmo cliente pode fazer diversos pedidos.
Relacionament o do Tipo Vr ios par a Vr ios
Este tipo de relacionamento ocorre em uma situao onde, em ambos os lados do relacionamen-
to, os valores poderiam se repetir. Vamos considerar o caso entre Produtos e Pedidos. Posso
ter vrios Pedidos nos quais aparece um determinado produto, alm disso vrios Produtos
podem aparecer no mesmo Pedido. Esta uma situao em que temos um relacionamento do
tipo Vrios para Vrios: Vrios produtos podem aparecer em Vrios pedidos.
Criando Sites Dinmicos com ASP 3.0
2 5 6
Na prtica no temos como implementar um relacionamento deste tipo, devido a uma srie
de problemas que este procedimento implicaria. Por exemplo, na tabela Pedidos teramos
que repetir o Nmero do Pedido, Nome do Cliente, Nome do Funcionrio, Data do Pedido,
etc. para cada item do Pedido.
Para evitar este tipo de problema bastante comum quebrarmos um relacionamento do tipo
Vrios para Vrios em dois relacionamento do tipo Um para Vrios. Isso feito atravs da criao
de uma nova tabela, a qual fica com o lado Vrios dos relacionamentos. No nosso exemplo
poderamos criar a tabela Detalhes do Pedido, onde ficam armazenadas as informaes sobre os
diversos itens de cada pedido. Ento, ao invs de termos um relacionamento do tipo Vrios para
Vrios, teremos dois relacionamentos do tipo Um para Vrios, conforme indicado na Figura 5.5.
Figura 5.5: Quebr ando um r elacionament o Vr ios par a Vr ios.
Esta situao em que um relacionamento Vrios para Vrios quebrado em dois relaciona-
mentos do tipo Um para Vrios bastante comum. Diversas vezes utilizamos esta tcnica
para eliminar uma srie de problemas no banco de dados, tais como informao repetida e
inconsistncia de dados.
Agora que j conhecemos os tipos de relacionamentos existentes, no prximo item veremos o
conceito de Integridade Referencial como uma maneira de garantir a consistncia dos dados.
Int egr idade Refer encial
A Integridade Referencial utilizada para garantir a integridade dos dados entre as tabelas
relacionadas, evitando inconsistncias dos dados, bem como repeties desnecessrias.
Por exemplo, existe um relacionamento do tipo Um para Vrios entre a tabela Clientes e a
tabela Pedidos (um cliente pode fazer vrios pedidos). Com a Integridade Referencial, o banco
de dados no permite que seja cadastrado um pedido para um cliente ainda no cadastrado.
Tambm podemos garantir o seguinte:
2 5 7
Captulo 5 Conectando Pginas ASP com Bancos de Dados
Quando o cdigo de um cliente for alterado na tabela Clientes, o banco de dados atualiza,
automaticamente, todos os Cdigos do Cliente na tabela Pedidos, de tal maneira que
no fiquem registros rfos, isto , registros de Pedidos com um cdigo de cliente que
no existe mais na tabela Clientes. Esta ao conhecida como Propagar atualizao
dos campos relacionados.
Quando um cliente for excludo da tabela Clientes, podemos pedir para que o banco
de dados exclua, na tabela Pedidos, todos os pedidos do cliente que est sendo excludo.
Essa opo conhecida como Propagar excluso dos registros relacionados e pode
ser habilitada ou no, dependendo da especificao do banco de dados. Caso seja
necessrio manter todo o histrico de compras do cliente, por exemplo, esta opo no
deve ser habilitada. Com isso, quando o cliente for eliminado da tabela Clientes, os
seus pedidos continuaro gravados na tabela Pedidos.
Essas opes so definidas no momento da criao das tabelas e dos relacionamentos entre as
tabelas do banco de dados.
A opo de Propagar atualizao dos campos relacionados utilizada na maioria das situaes,
j a opo de Propagar excluso dos registros relacionados deve ser estudada, caso a caso.
Nor malizao de Tabelas
O conceito de Normalizao foi criado no incio da dcada de 70.
O objetivo da Normalizao evitar os problemas provocados por falhas no projeto do banco de
dados, bem como eliminar a mistura de assuntos e as correspondentes redundncias de dados.
Uma regra de ouro que devemos observar durante a elaborao do projeto de banco de dados
a de No misturar assuntos em uma mesma tabela.
Por exemplo na tabela Clientes devemos colocar somente campos relacionados com o assunto
Clientes. No devemos misturar campos relacionados com outros assuntos, tais como Pedidos,
Produtos, etc. Essa mistura de assuntos em uma mesma tabela acaba por gerar repetio
desnecessria dos dados bem como inconsistncia dos mesmos.
O processo de Normalizao aplica uma srie de regras sobre as entidades de um banco de
dados, para verificar se as mesmas esto corretamente projetadas. Embora existam cinco Formas
Normais (ou regras de Normalizao), na prtica usamos um conjunto de trs Formas Normais.
Com freqncia, aps a aplicao das regras de Normalizao, algumas tabelas acabam se dividindo
em duas ou mais, o que no final gera um nmero maior de tabelas do que o originalmente existente.
Este processo causa a simplificao dos atributos de uma tabela, colaborando para a estabilidade
do modelo, reduzindo-se consideravelmente as necessidades de manuteno.
Criando Sites Dinmicos com ASP 3.0
2 5 8
Vamos estudar e entender o processo de Normalizao na prtica, atravs de exemplos.
Pr imeir a For ma Nor mal
Uma tabela est na Primeira Forma Normal quando seus atributos no contm Grupos de Repetio.
Por isso dizemos que uma tabela que possui Grupos de Repetio no est na Primeira Forma
Normal. Considere a tabela indicada na Figura 5.6.
Figura 5.6: Uma t abela que no est na Pr imeir a For ma Nor mal.
Podemos notar que uma tabela com esta estrutura apresentaria diversos problemas. Por
exemplo, se um casal tiver mais de um filho, teramos que digitar o nome do pai e o nome da
me diversas vezes, tantas quantas forem os filhos. Isso forma um Grupo de Repetio. Alm
do mais, pode ser que por erro de digitao o nome dos pais no seja digitado exatamente
igual todas as vezes, o que pode acarretar problemas na hora de fazer pesquisas ou emitir
relatrios. Este problema ocorre porque misturamos assuntos em uma mesma tabela.
Colocamos as informaes dos pais e dos filhos em uma mesma tabela.
A resoluo para este problema simples: criamos uma tabela separada para a informao
dos pais e relacionamos a tabela Pais com a tabela Filhos atravs de um relacionamento do
tipo Um para Vrios, ou seja, Um casal pode ter Vrios filhos.
Esta soluo indicada na Figura 5.7.
As duas tabelas resultantes desse processo de Normalizao, Pais e Filhos, esto na Primeira
Forma Normal; a tabela original, a qual misturava informaes de Pais e Filhos, no estava na
Primeira Forma Normal.
2 5 9
Captulo 5 Conectando Pginas ASP com Bancos de Dados
Figura 5.7: As t abelas Pais e Filhos est o na Pr imeir a For ma Nor mal.
Segunda For ma Nor mal
Ocorre quando a chave primria composta por mais de um campo. Neste caso, devemos
observar se todos os campos que no fazem parte da chave primria dependem de todos os
campos que a compem. Se algum campo depender somente de parte da chave composta,
ento este campo deve pertencer a outra tabela.
Observe o exemplo indicado na tabela da Figura 5.8.
Figura 5.8: Uma t abela que no est na Segunda For ma Nor mal.
A chave primria composta formada pela combinao dos campos NmeroDaMatrcula e
CdigoDoCurso. O campo Avaliao depende tanto do CdigoDoCurso quanto do
NmeroDaMatrcula, porm o campo DescrioDoCurso, depende apenas do CdigoDoCurso.
Com isso temos um campo que no faz parte da chave primria e depende apenas de um dos
campos que a compem, por isso dizemos que esta tabela no est na Segunda Forma Normal.
A resoluo para este problema tambm simples: dividimos a tabela, que no est na Segunda
Forma Normal, em duas outras tabelas, conforme indicado pela Figura 5.9, sendo que as duas
tabelas resultantes esto na Segunda Forma Normal.
Criando Sites Dinmicos com ASP 3.0
2 6 0
Figura 5.9: Duas t abelas na Segunda For ma Nor mal.
NOTA
A distino entre a Segunda e a Terceira Formas Normais, que veremos no prximo item,
muitas vezes confusa. A Segunda Forma Normal, na maioria das vezes, est ligada a ocorrncia
de chaves primrias compostas.
Ter ceir a For ma Nor mal
Na definio dos campos de uma entidade podem ocorrer casos em que um campo no seja
dependente diretamente da chave primria, ou de parte dela, mas sim dependente de um
outro atributo constante na tabela e que no a chave.
Quando isto ocorre, dizemos que a tabela no est na Terceira Forma Normal, conforme
indicado pela tabela da Figura 5.10.
Figura 5.1 0: Uma t abela que no est na Ter ceir a For ma Nor mal.
Observe que o campo DescrioDoCurso depende apenas do campo CdigoDoCurso, o qual no
faz parte da chave primria. Por isso dizemos que esta tabela no est na Terceira Forma Normal.
A soluo para este caso tambm simples. Novamente basta dividir a tabela em duas outras,
conforme indicado pela Figura 5.11. As duas tabelas resultantes esto na Terceira Forma Normal.
2 6 1
Captulo 5 Conectando Pginas ASP com Bancos de Dados
Figura 5.1 1 : Duas t abelas na Ter ceir a For ma Nor mal.
IMPORTANTE
Com isso podemos concluir que, como resultado do processo de Normalizao, iremos obter
um nmero maior de tabelas, porm sem problemas de redundncia e inconsistncia dos
dados, ou com estes problemas minimizados.
Passos Par a Pr ojet ar um Banco de Dados
Neste item iremos apresentar os passos bsicos para projetar um banco de dados. Aplicaremos
os conhecimentos sobre Entidades, Atributos, Relacionamentos, Chave Primria e Normalizao.
Um banco de dados bem projetado fornece um acesso conveniente s informaes desejadas.
Com uma boa estrutura, gasta-se menos tempo na construo do banco de dados e, ao mesmo
tempo, assegura-se resultados mais rpidos e precisos.
Et apas na Est r ut ur ao de um Banco de Dados
Determinar qual o objetivo do banco de dados. Isto ajuda na determinao de quais os
dados devem ser armazenados.
Determinar as tabelas necessrias. Aps definirmos o objetivo do banco de dados, as
informaes devem ser definidas e separadas em assuntos diferentes, tais como Clientes,
Empregados, Pedidos, pois cada um ir compor uma tabela no banco de dados.
Determinar os campos necessrios em cada tabela. Definir quais informaes devem
ser mantidas em cada tabela. Por exemplo, a tabela Clientes poderia ter um campo
para o Cdigo do Cliente, outro para o Nome do Cliente e assim por diante.
Determinar, em cada tabela, qual ou quais campos sero utilizados como chave primria.
Esta uma etapa importante para a definio dos relacionamentos que vem a seguir.
Determinar os relacionamentos. Decidir como os dados de uma tabela se relacionam
com os dados de outras tabelas. Por exemplo, clientes podem fazer vrios pedidos.
fornecedores podem fornecer vrios produtos, etc.
Criando Sites Dinmicos com ASP 3.0
2 6 2
Refinar a estrutura do banco de dados. Antes de inserir muitos dados, ou at mesmo
antes de inserir qualquer dado, verificar se a estrutura contm erros, isto , verificar se
os resultados obtidos so os desejados. Isto, freqentemente, pode ser obtido atravs do
processo de Normalizao. Caso necessrio, deve-se alterar a estrutura do banco de dados.
Dicas Par a Det er minao dos Campos em uma Tabela
Relacionar diretamente cada campo ao assunto da tabela. Se um campo descreve o
assunto de uma tabela diferente, este campo deve pertencer a outra tabela. O mesmo
acontece quando uma informao se repete em diversas tabelas. Este um indcio de
que existem campos desnecessrios em algumas tabelas.
No incluir dados derivados ou calculados. No recomendado armazenar o resultado
de clculos nas tabelas. O correto que o clculo seja executado quando necessitarmos
do resultado.
Incluir todas as informaes necessrias. Como fcil esquecer informaes
importantes, deve-se ter em mente todas as informaes coletadas desde o incio do
processo e verificar se com elas possvel obter todos os resultados desejados.
Armazenar todas as informaes separadamente. Existe uma tendncia em armazenar
informaes em um nico campo, por exemplo o nome do curso e o tempo de durao
em um mesmo campo. Como as duas informaes foram combinadas em um nico
campo, ficar difcil conseguir um relatrio classificado pelo tempo de durao dos
cursos, por exemplo.
Como Escolher o Campo que Ser a Chave Pr imr ia?
Um bom Sistema Gerenciador de Banco de Dados (SGBD) aquele que encontra e nos fornece,
rapidamente, todas as informaes necessrias que nele estejam armazenadas, mesmo que
em diferentes tabelas. Para que isto seja possvel necessrio incluir um campo ou conjunto
de campos que identifiquem de modo nico cada registro de uma tabela. Esta informao
chamada Chave Primria, conforme descrito anteriormente. Deve-se ter certeza que este campo
(ou conjunto de campos) seja sempre diferente para cada registro, por no ser permitido
valores duplicados em um campo de chave primria.
Ao escolher campos de chave primria, considere os seguintes detalhes:
No permitido duplicidade de valores ou nulos (informaes desconhecidas). Caso
no exista um identificador nico para uma determinada tabela, pode-se usar um campo
que numere os registros seqencialmente.
Pode-se utilizar o valor deste campo para encontrar registros.
2 6 3
Captulo 5 Conectando Pginas ASP com Bancos de Dados
O tamanho da chave primria afeta a velocidade das operaes, portanto, para um
melhor desempenho, devemos utilizar o menor tamanho que acomode os valores
necessrios para armazenar no campo.
Noes Bsicas da Linguagem
SQL St r uct ur ed Quer y Language
Em diversas situaes estaremos utilizando a linguagem SQL em nossas pginas ASP. Para
recuperar dados, inserir novas informaes ou, at mesmo, para atualizar informaes em
um banco de dados, estaremos utilizando a linguagem SQL. Por isso que importante
conhecermos os aspectos bsicos desta linguagem, conforme veremos neste item.
Int r oduo
Na Figura 5.12 temos um exemplo de uma instruo SQL. Embora possa parecer complexa, em
um primeiro momento, veremos que a linguagem SQL bastante simples e de fcil aprendizado.
Figura 5.1 2: Um exemplo de inst r uo SQL.
Uma instruo SQL descreve o conjunto de dados que voc deseja recuperar (campos, de
quais tabelas, critrios, classificao, expresses calculadas, etc.).
Todas as instrues SQL so conduzidas com um nico comando que contm uma descrio
completa da informao exigida. Ao escrever uma instruo SQL, voc no deve se preocupar
em como os dados so recuperados, mas somente com o contedo do conjunto de dados.
Esse o principal benefcio do mtodo SQL.
Criando Sites Dinmicos com ASP 3.0
2 6 4
Lembre-se que o SQL um padro genrico para expresses de consulta em banco de dados.
Embora a maior parte das verses do SQL compartilhe elementos bsicos, elas no so
idnticas. O Access SQL usa algumas palavras-chave que voc no encontra em outras verses
do SQL. Tambm existem pequenas diferenas entre o Microsoft Access e o Microsoft SQL
Server, conforme iremos salientar durante este captulo.
Veremos atravs de exemplos a utilizao das principais palavras-chave do SQL para a
construo de expresses SQL para pesquisa em banco de dados.
A Inst r uo SELECT
Esta com certeza, a instruo SQL mais importante; no existe pesquisa que no utilize esta
instruo. Agora vamos conhec-la em detalhes.
A instruo Select utilizada para especificar quais os campos de quais tabelas faro parte da
consulta, quais critrios de pesquisa sero utilizados, qual a ordem de classificao, etc.
A sintaxe simplificada da instruo conforme indicado abaixo:
SELECT
campo1, campo2, campo3
FROM nome_da_tabela
[WHERE condio ]
[GROUP BY nome_do_campo ]
[HAVING ... ]
[ORDER BY... ]
Na Tabela 5.1 temos uma descrio destes elementos.
Tabela 5.1 Os principais elementos da instruo Select.
Elemento Descrio
campo1, campo2 ... campon Nome dos campos a serem retornados a partir
de uma ou mais tabelas.
nome_da_tabela Nome da tabela a partir da qual os dados devem
ser recuperados.
WHERE Permite que sejam especificados
critrios de pesquisa.
GROUP BY Podemos agrupar os resultados em
torno de um ou mais campos de dados.
2 6 5
Captulo 5 Conectando Pginas ASP com Bancos de Dados
Vamos analisar alguns exemplos prticos de utilizao da linguagem SQL.
Exemplo 1
Criar uma instruo SQL que retorne o campo NmeroDoPedido, o campo DataDoPedido, o
campo Frete e o campo PasDeDestino da tabela Pedidos.
SELECT Pedidos.NmeroDoPedido, Pedidos.DataDoPedido, Pedidos.PasDeDestino,
Pedidos.Frete FROM Pedidos;
Toda instruo SQL deve terminar com um ponto e vrgula (;), conforme indicado no Exemplo 1.
Observe que os nomes dos campos esto separados por vrgula, alm disso estamos utilizando o
nome completo, isto : Nome_da_tabela.Nome_do_campo. Tambm poderamos utilizar o
comando, sem o nome da tabela antes do nome do campo, conforme indicado no seguinte comando:
SELECT NmeroDoPedido, DataDoPedido, PasDeDestino, Frete FROM Pedidos;
IMPORTANTE
Somente obrigatria a utilizao do nome da tabela antes do nome do campo quando o
mesmo campo existir em duas ou mais tabelas que fazem parte da instruo SQL. Por exemplo,
imagine que estejamos escrevendo uma instruo SQL para criar uma listagem com o cdigo
e o nome do cliente, bem como todos os pedidos efetuados pelo cliente. Acontece que o Cdigo
do Cliente, no nosso exemplo, existe nas duas tabelas: Clientes e Pedidos. Neste caso devemos
especificar o nome da tabela, antes do nome do campo.
Elemento Descrio
Por exemplo, em um relatrio de vendas anuais,
posso ter os resultados agrupados por ms, com
a soma das vendas do ms logo aps a listagem
de vendas do ms.
HAVING Especifica critrios para serem utilizados
juntamente com Group By.
ORDER BY Podemos ordenar os resultados obtidos com
base em um ou mais campos de dados. Por
exemplo, podemos ordenar uma listagem de
vendas em ordem alfabtica do nome do cliente
ou do nome do vendedor.
Criando Sites Dinmicos com ASP 3.0
2 6 6
Exemplo 2
Alterar a instruo SQL anterior para que os registros sejam classificados em ordem crescente
pelo valor do Frete.
SELECT NmeroDoPedido, DataDoPedido, PasDeDestino, Frete FROM Pedidos
ORDER BY Frete;
Observe a utilizao da clusula ORDER BY Frete para classificar os registros em ordem
crescente. A classificao em ordem crescente a padro . Quando formos classificar em ordem
decrescente, precisamos especificar a palavra DESC, conforme indicado no seguinte comando:
SELECT NmeroDoPedido, DataDoPedido, PasDeDestino, Frete FROM Pedidos
ORDER BY Frete DESC;
Exemplo 3
Agora vamos comear a inserir condies. Muitas vezes as condies so chamadas de filtro;
uma vez estabelecida uma condio, somente os registros que atendem a condio especificada
sero retornados. Desta forma a condio atua como se fosse um filtro. Neste exemplo vamos
alterar a instruo SQL anterior para que sejam exibidos somente os pedidos cujo PasDeDestino
seja Brasil.
SELECT NmeroDoPedido, DataDoPedido, PasDeDestino, Frete FROM Pedidos
WHERE PasDeDestino=Brasil
ORDER BY Frete;
Observe a utilizao da clusula WHERE para filtrar somente os pedidos cujo PasDeDestino seja
Brasil. Como o campo PasDeDestino um campo do tipo texto, o valor do critrio (Brasil) tem
que vir entre aspas. Se fosse um campo do tipo data, o valor do critrio teria que vir delimitado
pelo sinal #, por exemplo #01/01/1995#. Vamos trabalhar um pouco mais com a clusula WHERE.
Exemplo 4
Altere a instruo SQL anterior para que sejam exibidos somente os pedidos para o Brasil ou
Alemanha como PasDeDestino.
SELECT NmeroDoPedido, DataDoPedido, PasDeDestino, Frete FROM Pedidos
WHERE (((Pedidos.PasDeDestino)=Brasil Or (Pedidos.PasDeDestino)=Alemanha))
ORDER BY Frete;
Observe a utilizao da clusula OR ligando os dois critrios. Lembre que a clusula OR
retorna um registro se o PasDeDestino atender a um dos dois critrios, ou seja, se for Brasil
ou se for Alemanha, o registro ser selecionado, isto exatamente o que desejamos: todos os
pedidos para o Brasil ou para a Alemanha.
2 6 7
Captulo 5 Conectando Pginas ASP com Bancos de Dados
Exemplo 5
Altere a instruo SQL anterior, retirando o critrio para PasDeDestino. Adicione um critrio
para NmeroDoPedido maior do que 10500, retire a classificao do campo Frete a classifique
pelo campo NmeroDoPedido.
SELECT NmeroDoPedido, DataDoPedido, PasDeDestino, Frete FROM Pedidos
WHERE NmeroDoPedido>10500
ORDER BY NmeroDoPedido;
Observe a clusula WHERE utilizando o operador de comparao maior do que (>) e a
classificao atravs da clusula ORDER BY no campo NmeroDoPedido.
Podemos ver, atravs dos exemplos, que a linguagem SQL no to difcil como pode parecer
primeira vista. Observe que a sintaxe da linguagem bastante intuitiva e orientada a extrao
de dados atravs das consultas.
Vamos continuar analisando alguns exemplos de aplicao da linguagem SQL com a utilizao
de recursos mais avanados.
Exemplo 6
Alterar a instruo SQL anterior, e adicionar um critrio de tal maneira que somente sejam
exibidos os pedidos para o ano de 1995. Tirar o critrio do campo NmeroDoPedido.
SELECT NmeroDoPedido, DataDoPedido, PasDeDestino, Frete FROM Pedidos
WHERE ((Year([DataDoPedido])=1995))
ORDER BY NmeroDoPedido;
Observe a utilizao da funo Year (Ano) para extrairmos apenas o ano do campo DataDoPedido a
fim de especificarmos como critrio o Ano=1995. Tambm a clusula ORDER BY foi mantida,
classificando a listagem em ordem crescente pelo nmero do pedido. A utilizao de funes junto
com os comando SQL nos fornece inmeras possibilidades de refinamento em nossas consultas.
Exemplo 7
Alterar a instruo SQL anterior, para que sejam exibidos somente os pedidos no perodo de 01/
01/1995 at 31/07/1995 e que tenham como PasDeDestino Brasil, Argentina, Alemanha ou Canad.
SELECT NmeroDoPedido, DataDoPedido, PasDeDestino, Frete FROM Pedidos
WHERE (((DataDoPedido) Between #1/1/95# And #8/31/95#)
AND
((PasDeDestino) In (Brasil,Argentina,Alemanha,Canad)))
ORDER BY Pedidos.NmeroDoPedido;
Criando Sites Dinmicos com ASP 3.0
2 6 8
Observe a utilizao de vrios critrios em diferentes campos. Colocamos critrios nos campos
DataDoPedido e PasDeDestino. Os critrios de dois ou mais campos so ligados atravs do
operador AND, indicando que um registro deve atender ambos os critrios para ser selecionado.
Tambm temos a utilizao dos operadores Between (Entre) para selecionar as datas dentre
um determinado intervalo e do operador In (Em) para selecionar o campo PasDeDestino que
seja igual a um dos valores apresentados na lista. Observe tambm que os valores de data
vem delimitados pelos marcadores #, conforme descrito anteriormente. A utilizao dos
parnteses visa facilitar o entendimento da instruo e facilitar a avaliao da expresso.
IMPORTANTE
Algumas destas funcionalidades podem necessitar de pequenas alteraes para funcionar em
nossas pginas ASP, conforme veremos mais adiante neste captulo.
Exemplo 8
Criar uma instruo SQL que retorne os campos NmeroDoPedido, DataDoPedido,
DataDeEntrega, Frete e PasDeDestino da tabela Pedidos. Criar uma coluna adicional que calcula
o nmero de dias entre a DataDeEntrega e a DataDoPedido. Chamar esta coluna de Dias_Ped_Entr.
SELECT NmeroDoPedido, DataDoPedido, DataDeEntrega, PasDeDestino, Frete,
[DataDeEntrega]-[DataDoPedido] AS Dias_Ped_Entr FROM Pedidos
WHERE (((DataDoPedido) Between #1/1/95# And #8/31/95#)
AND
((PasDeDestino) In (Brasil,Argentina,Alemanha,Canad)))
ORDER BY Pedidos.NmeroDoPedido;
Veja que a coluna calculada [DataDeEntrega]-[DataDoPedido] est junto com a listagem dos
campos no incio da instruo SELECT. Alm disso foi utilizada a palavra AS para atribuir
um nome (apelido) para esta coluna calculada. Este nome o que ser utilizado para fazer
referncia coluna, no nosso cdigo ASP.
Voc tambm pode classificar a listagem em ordem crescente ou decrescente de um campo
calculado. Por exemplo, se voc quisesse classificar a listagem do item anterior, em ordem
crescente, do nmero de dias entre a DataDeEntrega e a DataDoPedido, bastaria utilizar a
seguinte instruo SQL:
SELECT NmeroDoPedido, DataDoPedido, DataDeEntrega, PasDeDestino, Frete,
[DataDeEntrega]-[DataDoPedido] AS Dias_Ped_Entr
FROM Pedidos
WHERE (((DataDoPedido) Between #1/1/95# And #8/31/95#)
AND
((PasDeDestino) In (Brasil,Argentina,Alemanha,Canad)))
ORDER BY [DataDeEntrega]-[DataDoPedido];
2 6 9
Captulo 5 Conectando Pginas ASP com Bancos de Dados
Exemplo 9
Alterar a instruo SQL anterior, eliminando os critrios para a DataDoPedido e para o
PasDeDestino. Colocar um novo critrio para PasDeDestino, onde sejam exibidos apenas os
pedidos cujo PasDeDestino tem a primeira letra na faixa de A at M. Utilize o operador Like.
SELECT NmeroDoPedido, DataDoPedido, DataDeEntrega, PasDeDestino, Frete,
[DataDeEntrega]-[DataDoPedido] AS Dias_Ped_Entr
FROM Pedidos
WHERE ((PasDeDestino) Like [A-M]%))
ORDER BY PasDeDestino;
Observe a utilizao do operador Like (Como) como critrio de pesquisa para esta consulta.
Nunca demais salientar que a utilizao das instrues SQL juntamente com as funes de
operadores como o Like, nos fornece um amplo conjunto de possibilidades. O caractere %
utilizado como um caractere curinga. Por exemplo, se especificarmos o seguinte critrio:
WHERE NomeDoCliente Like Joo%
sero retornados todos os registros para Clientes cujo nome inicia com Joo. O caractere
curinga % significa, em termos simples, qualquer coisa, ou seja, o critrio especifica que o
nome inicie com Joo, no importando (qualquer coisa) o que vier depois.
IMPORTANTE
Aqui cabe um aviso importante para os usurios do Microsoft Access. No Microsoft Access, o
caractere curinga o *, j na construo de pginas ASP, utilizamos como caractere curinga o
%, o qual tambm utilizado no Microsoft SQL Server.
At agora estivemos trabalhando com instrues que selecionam registros de uma nica tabela.
Porm bastante comum criarmos instrues SQL baseadas em duas ou mais tabelas. Quando
criamos instrues SQL que buscam dados em duas ou mais tabelas, dizemos que est sendo
feito um Join entre as duas tabelas. Normalmente este Join (ou ligao) feito atravs de um
campo comum s duas tabelas. Por exemplo, NmeroDoPedido na tabela Pedidos e
NmeroDoPedido na tabela Detalhes do Pedido. Outro exemplo, CdigoDoCliente na tabela
Pedidos e CdigoDoCliente na tabela Clientes. Pode acontecer de termos consultas que
trabalham com trs ou mais tabelas, neste caso teremos diversos Joins.
Agora passaremos e explorar na prtica, atravs de exemplos, a construo de instrues
SQL que trabalham com duas ou mais tabelas.
Criando Sites Dinmicos com ASP 3.0
2 7 0
Exemplo 1 0
Criar uma instruo SQL que selecione os seguintes campos:
NmeroDoPedido da tabela Pedidos.
DataDoPedido da tabela Pedidos.
PasDeDestino da tabela Pedidos.
Frete da tabela Pedidos.
CdigoDoProduto, PreoUnitrio e quantidade da tabela DetalhesdoPedido.
Alm disso, as tabelas Pedidos e DetalhesdoPedido esto relacionadas atravs do campo
NmeroDoPedido, atravs de um relacionamento do tipo Um para Vrios. Classificar a listagem
em ordem crescente do NmeroDoPedido.
Para resolver este exemplo podemos utilizar a seguinte instruo SQL:
SELECT Pedidos.NmeroDoPedido, Pedidos.DataDoPedido, Pedidos.PasDeDestino,
Pedidos.Frete, DetalhesdoPedido.CdigoDoProduto, DetalhesdoPedido.PreoUnitrio,
DetalhesdoPedido.Quantidade
FROM Pedidos
INNER JOIN
DetalhesdoPedido
ON Pedidos.NmeroDoPedido=DetalhesdoPedido.NmeroDoPedido
ORDER BY Pedidos.NmeroDoPedido;
Primeiro devemos observar que, pelo fato de estarmos tratando com dados de duas tabelas,
estamos utilizando a nomenclatura completa, isto , Nome_da_tabela.Nome_do_campo.
Observe a utilizao da clusula INNER JOIN, ligando as tabelas Pedidos e DetalhesdoPedido,
atravs do campo NmeroDoPedido, conforme especificado na clusula ON, onde temos o seguinte:
ON Pedidos.NmeroDoPedido=DetalhesdoPedido.NmeroDoPedido
Observe que esta listagem ir trazer vrios registros para cada pedido, tantos quantos forem
os itens de cada pedido.
E se, ao invs do CdigoDoProduto, ns quisermos que seja exibida a descrio do produto?
Em primeiro lugar, esta informao encontra-se na tabela Produtos, logo teremos que adicionar
a tabela nossa consulta, a qual ir se ligar tabela DetalhesDoPedido atravs do campo
CdigoDoProduto. Logo, teremos mais um Join.
Aps adicionar a tabela Produtos e substituir o campo CdigoDoProduto pelo campo
NomeDoProduto, a nossa instruo SQL deve ficar conforme indicado no seguinte comando:
SELECT Pedidos.NmeroDoPedido, Pedidos.DataDoPedido, Pedidos.PasDeDestino, Pedidos.
Frete, Produtos.NomeDoProduto, DetalhesdoPedido.PreoUnitrio,
DetalhesdoPedido.Quantidade
2 7 1
Captulo 5 Conectando Pginas ASP com Bancos de Dados
FROM Produtos
INNER JOIN (Pedidos INNER JOIN DetalhesdoPedido ON Pedidos.NmeroDoPedido=Detalhesdo
Pedido.NmeroDoPedido) ON Produtos.CdigoDoProduto=DetalhesdoPedido.CdigoDoProduto
ORDER BY Pedidos.NmeroDoPedido;
Observe que neste caso temos um INNER JOIN dentro do outro. Dentro do parnteses feita
a ligao entre as tabelas Pedidos e DetalhesdoPedido, atravs do campo NmeroDoPedido, e
externamente feita a ligao entre as tabelas Produtos e DetalhesdoPedido, atravs do campo
NmeroDoPedido.
Podemos utilizar diversos nveis de INNER JOIN, embora esta no seja uma prtica
recomendada, pois se aumentarmos muito os nveis de INNER JOIN, podemos ter pesquisas
mais lentas, em conseqncia do aumento da complexidade das mesmas. At trs ou quatro
nveis considerado normal, acima disso preciso repensar a maneira de construir a consulta.
Exemplo 1 1
Alterar a instruo SQL do item anterior para que somente sejam exibidos os pedidos para os
produtos cujo NomeDoProduto inicie com uma letra na faixa de A at J. Tirar a classificao
do campo NmeroDoPedido e classificar em ordem crescente do campo NomeDoProduto.
SELECT Pedidos.NmeroDoPedido, Pedidos.DataDoPedido, Pedidos.PasDeDestino,
Pedidos.Frete, Produtos.NomeDoProduto, DetalhesdoPedido.PreoUnitrio,
DetalhesdoPedido.Quantidade
FROM Pedidos
INNER JOIN (Produtos INNER JOIN DetalhesdoPedido ON
Produtos.CdigoDoProduto=DetalhesdoPedido.CdigoDoProduto)
ON Pedidos.NmeroDoPedido=DetalhesdoPedido.NmeroDoPedido
WHERE (((Produtos.NomeDoProduto) Like [A-J]*))
ORDER BY Produtos.NomeDoProduto;
Observe, alm dos dois INNER JOIN, a utilizao da clusula WHERE com o operador Like
para especificar o critrio desejado.
At este momento estivemos construindo instrues SQL que executam consultas no banco
de dados. Especificamos quais campos sero exibidos, critrios de filtragem para estes campos
e uma ordem de classificao. A partir de agora aprenderemos a utilizar instrues SQL para
a construo de outros tipos de instrues SQL, as quais realizam alteraes e incluses em
tabelas de banco de dados.
Criando Sites Dinmicos com ASP 3.0
2 7 2
A Inst r uo UPDATE
A instruo UPDATE utilizada para alterar informaes em um banco de dados. Podemos
criar um formulrio onde o usurio pode alterar os seus dados cadastrais. Primeiro os dados
so recuperados a partir do banco de dados, em seguida as alteraes so enviadas de volta
para o banco de dados, atravs de uma instruo UPDATE. Vamos estudar esta instruo
atravs de exemplos, assim como fizemos com a instruo SELECT.
Exemplo 1
Criar uma instruo SQL que aumenta o PreoUnitrio em 20 % na tabela DetalhesdoPedido,
devido a um ajuste na moeda e uma desvalorizao em relao ao Dlar.
UPDATE DetalhesdoPedido
SET PreoUnitrio = PreoUnitrio*1.2;
Observe a simplicidade da instruo SQL. Utilizamos uma instruo UPDATE, seguida do
nome da tabela onde ser feita a atualizao. Em seguida uma instruo SET com a expresso
de atualizao para aumentar em 20 % o PreoUnitrio.
Vamos alterar a instruo anterior, para incluir um critrio na consulta de atualizao.
Exemplo 2
Alterar a instruo SQL do item anterior para que somente sejam aumentados os registros
cujo PreoUnitrio for maior ou igual a R$ 20,00.
UPDATE DetalhesdoPedido
SET PreoUnitrio = PreoUnitrio*1.2
WHERE PreoUnitrio>=20;
Apenas foi adicionada uma clusula WHERE, para atualizar apenas os registros cujo
PreoUnitrio seja maior ou igual a R$ 20,00.
Exemplo 3
Alterar a instruo SQL do exemplo anterior para que somente sejam aumentados os registros cujo
PreoUnitrio for maior ou igual a R$ 20,00 e cujo NmeroDoPedido seja menor do que 10500.
UPDATE DetalhesdoPedido
SET PreoUnitrio = PreoUnitrio*1.2
WHERE (((PreoUnitrio)>=20)
AND
((NmeroDoPedido)<10500));
2 7 3
Captulo 5 Conectando Pginas ASP com Bancos de Dados
Observe que utilizamos critrios em dois campos (PreoUnitrio e NmeroDoPedido) e que
estes critrios esto ligados por um operador AND, o que significa que um registro, somente
ser atualizado se ele atender aos dois critrios ao mesmo tempo (PreoUnitrio maior ou
igual a 20 e NmeroDoPedido menor do que 10500). Se o registro atender a apenas uma das
condies, o mesmo no ter o seu PreoUnitrio atualizado.
Vamos refinar um pouco mais a nossa consulta de atualizao. Vamos fazer com que somente
sejam atualizados os pedidos para o ano da DataDoPedido igual a 1995, e ainda iremos manter
os critrios adicionados at agora.
Exemplo 4
Alterar a instruo SQL do exemplo anterior para incluir um critrio para que o ano da
DataDoPedido seja 1995. Voc ter que incluir a tabela Pedidos, uma vez que o campo
DataDoPedido, encontra-se nesta tabela.
UPDATE Pedidos INNER JOIN DetalhesdoPedido
ON Pedidos.NmeroDoPedido = DetalhesdoPedido.NmeroDoPedido
SET DetalhesdoPedido.PreoUnitrio = PreoUnitrio*1.2
WHERE (((DetalhesdoPedido.PreoUnitrio)>=20)
AND
((DetalhesdoPedido.NmeroDoPedido)<10500)
AND
(Year([DataDoPedido])=1995));
Temos diversos detalhes interessantes a observar nesta instruo SQL. Primeiro um INNER
JOIN relacionando as tabelas Pedidos e DetalhesdoPedido, atravs do campo NmeroDoPedido.
Isso mostra que perfeitamente possvel utilizar um INNER JOIN dentro de uma consulta de
atualizao. Segundo, temos a utilizao da funo Year para extrair apenas o ano do campo
DataDoPedido e compar-lo com o critrio 1995.
Novamente, a utilizao de operadores e funes nos fornece uma grande flexibilidade em
termos de construo de nossas consultas.
A Inst r uo INSERT
A instruo INSERT utilizada para gravar registros em uma tabela de um banco de dados. Por
exemplo, quando o usurio preenche os dados de um formulrio de cadastro e os envia para
uma pgina ASP, podemos utilizar a instruo INSERT para os inserir em um banco de dados.
Vamos analisar alguns exemplos.
Criando Sites Dinmicos com ASP 3.0
2 7 4
Exemplo 1
Este exemplo cria um novo registro na tabela Funcionrios:
INSERT INTO Funcionrios (Nome, Sobrenome, Cargo) VALUES (Paulo, Braga,
Estagirio);
Esta instruo insere um registro na tabela Funcionrios com os seguintes dados:
Nome: Paulo
Sobrenome: Braga
Cargo: Estagirio
Exemplo 2
Este exemplo seleciona todos os estagirios de uma tabela Estagirios que tenham sido
contratados h mais de 30 dias e adiciona os registros selecionados tabela Funcionrios.
INSERT INTO Funcionrios
SELECT Estagirios.* FROM Estagirios
WHERE DataDaContratao < Hoje() - 30;
Observe que utilizamos a funo Hoje( ) para capturar a data do sistema e subtramos 30,
para obter apenas os funcionrios contratados a mais do que 30 dias.
A Inst r uo DELETE
A instruo DELETE utilizada para excluir registros de um banco de dados. Vamos supor
que voc tenha desenvolvido uma aplicao Web para agenda eletrnica, onde o usurio
pode cadastrar contatos, endereos, telefones e compromissos. Podemos criar uma pgina
ASP que permite ao usurio eliminar dados que no sejam mais necessrios na agenda. Neste
caso podemos fazer uso da instruo DELETE. Vamos a um exemplo prtico.
Exemplo 1
Criar uma instruo SQL que elimine todos os pedidos da tabela Pedidos cujo PasDeDestino
seja a Alemanha.
DELETE Pedidos.PasDeDestino
FROM Pedidos
WHERE (((Pedidos.PasDeDestino)=Alemanha));
A instruo to simples, que praticamente dispensa comentrios. A nica recomendao
importante que no devemos utilizar uma instruo DELETE, sem a utilizao de uma
2 7 5
Captulo 5 Conectando Pginas ASP com Bancos de Dados
clusula WHERE. Utilizar um DELETE sem uma clusula WHERE significa que estaremos
eliminando todos os registros da tabela.
Agora que j revisamos os aspectos bsicos relacionados a bancos de dados e linguagem SQL,
chegou o momento de aprendermos a conectar nossas pginas ASP com bancos de dados.
Uma Viso Ger al de ADO e OLE DB
A Microsoft vem h muito tempo desenvolvendo tecnologias que permitam acesso s mais
variadas fontes de dados, quer sejam dados estruturados em bancos de dados tradicionais,
como o Microsoft SQL Server, dados nos formatos mais tradicionais, como os armazenados
em Mainframes, at dados no estruturados, como mensagens de correio eletrnico e arquivos
com contedo multimdia, como sons e imagem. A expresso por trs deste esforo conhecida
como Acesso Universal aos Dados ou UDA do ingls Universal Data Access.
Porm, na tentativa de disponibilizar o Acesso Universal aos Dados, muitas tecnologias foram
criadas, causando uma certa confuso e at desconforto para quem trabalha com desenvolvimento
de aplicaes. Isso porque, a cada nova tecnologia anunciada, um novo ciclo de aprendizado se
inicia, sem contar que muitas vezes a comunicao entre as diferentes tecnologias no exatamente
a esperada. Neste mundo de tecnologias j nos deparamos com siglas como:
DAO Data Access Objects.
RDS Remote Data Access.
ADO Activex Data Object.
ODBC Open Database Conectivity.
OLE DB.
normal que o desenvolvedor fique um pouco confuso com esta sopa de letrinhas. Mais
importante do que decorar o significado de cada sigla entender a tecnologia que fornece
acesso aos dados e saber utiliz-las corretamente. Hoje, a tecnologia mais utilizada, e
recomendada pela Microsoft, a dobradinha ADO/OLE DB. A utilizao de ODBC bastante
forte e deve se manter por um bom perodo. Por isso, analisaremos estas duas opes neste
captulo, e muitas vezes estaremos utilizando as duas ao mesmo tempo; mas isto ser mais
adiante, agora vamos procurar entender um pouco melhor estas tecnologias.
Um Pouco Sobr e ODBC Open Dat abase Conect ivit y
ODBC um padro da indstria de informtica para acesso a bancos de dados estruturados.
Um banco de dados estruturado utiliza o tradicional modelo Relacional, onde temos tabelas
Criando Sites Dinmicos com ASP 3.0
2 7 6
e relacionamentos entre tabelas. So exemplos de bancos de dados estruturados: o Microsoft
SQL Server, Oracle, Microsoft Access, Sybase, DB2 da IBM, etc.
ODBC uma interface que permite que os aplicativos acessem qualquer base de dados para
a qual existe um driver ODBC. Utilizando ODBC, podemos criar pginas ASP que acessem
dados para os quais existam drives ODBC, de uma maneira simples e rpida.
Com a utilizao de ODBC, podemos criar aplicaes que se tornam independentes do sistema
de banco de dados que est sendo utilizado. Por exemplo, desenvolvemos uma aplicao para
acessar uma fonte de dados ODBC. A fonte de dados ODBC est ligada a um banco de dados do
Microsoft Access. Em determinado momento resolvemos migrar do Microsoft Access para o
Microsoft SQL Server. Sem problemas. Basta alterar nossa fonte de dados ODBC para que a
mesma passe a referenciar o banco de dados no Microsoft SQL Server e pronto! A nossa aplicao
passa a utilizar a nova fonte de dados de maneira transparente, atravs do driver ODBC.
Na Figura 5.13, temos uma viso geral do acesso aos dados utilizando ODBC.
Figura 5.1 3: ODBC par a acesso a dados.
Para que uma fonte ODBC possa ser utilizada a mesma precisa ser previamente criada,
utilizando-se o Gerenciador ODBC, o qual acessvel atravs das Ferramentas administrativas
do menu Programas. Agora aprenderemos a criar fontes de dados ODBC. Ao desenvolver o
aplicativo, o desenvolvedor far referncia a fonte ODBC criada. A ttulo de exemplo, iremos
criar duas fontes, uma para um banco de dados Microsoft Access 97 e outra para um banco
de dados Microsoft SQL Server 2000 Beta 2.
Cr iando uma Font e ODBC Par a um Banco de Dados do M icr osof t Access 9 7
Vamos criar uma fonte para um banco de dados do Microsoft Access 97. Utilizaremos uma
base de exemplo que j vem com o Microsoft Access 97 nwind.mdb. No nosso exemplo esta
fonte estar localizada em C:\Meus documentos.
Aplicao Web
Ger enciador ODBC
Dr iver ODBC
SQL Ser ver
Dr iver ODBC
M icr osof t Access
Dr iver ODBC
Or acle
2 7 7
Captulo 5 Conectando Pginas ASP com Bancos de Dados
IMPORTANTE
Dependendo da verso do ODBC instalado em seu computador, as telas apresentadas podem
ser um pouco diferentes das aqui apresentadas.
Para criar uma fonte ODBC chamada nwind:
1. Abra o Gerenciador de fontes ODBC (Iniciar/Programas/Ferramentas administrativas/
Fontes da dados (ODBC).
2. Surge a janela indicada na Figura 5.14.
Figura 5.1 4: O Ger enciador de font es ODBC.
3. Uma fonte de dados chamada de DSN Data Source Name, a qual pode ser de trs tipos:
User DSN
System DSN
File DSN
No nosso caso estaremos trabalhando, sempre, com System DSN.
Criando Sites Dinmicos com ASP 3.0
2 7 8
NOTA
Para maiores informaes sobre os diferentes tipos de DSN consulte o site http://
msdn.microsoft.com.
4. D um clique na guia System DSN.
5. Surge a janela indicada na Figura 5.15.
Figura 5.1 5: Cr iando uma font e do t ipo Syst em DSN.
6. D um clique no boto Add, para criar uma nova fonte ODBC.
7. Surge uma janela perguntando qual o tipo de banco de dados que voc deseja acessar.
Selecione Drive do Microsoft Access (*.mdb), conforme indicado na Figura 5.16.
2 7 9
Captulo 5 Conectando Pginas ASP com Bancos de Dados
Figura 5.1 6: Selecionando o banco de dados a ser usado.
8. D um clique no boto Concluir. aberta a janela Configurar ODBC para Microsoft
Access, conforme indicado na Figura 5.17.
Figura 5.1 7: Definies par a a font e ODBC par a o M icr osof t Access.
9. Nesta janela devemos fornecer diversas informaes, tais como o nome para a fonte
ODBC, a localizao do arquivo .mdb, etc.
10. No campo Nome da fonte de dados, digite nwind.
Criando Sites Dinmicos com ASP 3.0
2 8 0
11. No campo Descrio digite Fonte de dados Access.
12. A janela Configurar ODBC para Microsoft Access deve estar conforme indicado na
Figura 5.18.
Figura 5.1 8: Definindo a font e ODBC.
14. D um clique no boto Selecionar. Utilizamos este boto para selecionar o arquivo
.mdb que ser relacionado fonte ODBC que est sendo criada.
15. Surge a janela Selecionar banco de dados.
16. Navegue at a pasta onde est o arquivo .mdb. No nosso exemplo vamos navegar at a
pasta Meus documentos do drive C:, e dentro da pasta Meus documentos vou selecionar
nwind.mdb, conforme indicado na Figura 5.19.
17. D um clique no boto OK e voc estar de volta janela Configurar ODBC para
Microsoft Access.
18. D um clique no boto OK para fechar esta janela.
19. Voc estar de volta janela do Gerenciador de fontes ODBC, com a fonte ODBC nwind
j criada, conforme indicado pela Figura 5.20.
2 8 1
Captulo 5 Conectando Pginas ASP com Bancos de Dados
Figura 5.1 9: Selecionando o ar quivo C: \M eus document os\nwind. mdb.
Figura 5.20: Font e ODBC nwind j cr iada.
NOTA
Estaremos utilizando esta fonte ODBC em diversos exemplos deste livro.
Criando Sites Dinmicos com ASP 3.0
2 8 2
Cr iando uma Font e ODBC Par a um Banco de Dados do M icr osof t SQL Ser ver 2 0 0 0
Vamos criar uma fonte para um banco de dados do Microsoft SQL Server 2000. Utilizaremos
o banco de dados de exemplo que j vem com o Microsoft SQL Server 2000 pubs. No nosso
exemplo, o nome do servidor SQL SERVIDOR. Caso voc esteja trabalhando em um servidor
com um nome diferente, utilize o nome do servidor no qual voc est trabalhando.
IMPORTANTE
Dependendo da verso do ODBC instalado em seu computador, as telas apresentadas podem
ser um pouco diferentes das aqui apresentadas.
Para criar uma fonte ODBC chamada sqlpubs:
1. Abra o Gerenciador de fontes ODBC (Iniciar/Programas/Ferramentas administrativas/
Fontes da dados (ODBC).
2. D um clique na guia System DSN.
3. D um clique no boto Add para criar uma nova fonte ODBC.
4. Surge uma janela perguntando qual o tipo de banco de dados que voc deseja acessar.
Selecione SQL Server, conforme indicado na Figura 5.21.
Figura 5.21 : Definindo uma font e par a o SQL Ser ver.
2 8 3
Captulo 5 Conectando Pginas ASP com Bancos de Dados
5. D um clique no boto Concluir. aberta a janela Create a New Data Source to SQL
Server, conforme indicado na Figura 5.22.
Figura 5.22: Definies par a a font e ODBC par a o SQL Ser ver.
6. Nesta janela devemos fornecer diversas informaes, tais como o nome para a fonte
ODBC, o nome do servidor, etc.
7. No campo Name digite sqlpubs.
8. No campo Description digite Fonte de dados SQL Server.
9. Na lista Server, selecione o nome do Servidor SQL a ser utilizado.
10. A janela Create a New Data Source to SQL Server deve estar conforme indicado na
Figura 5.23.
11. D um clique no boto Avanar para ir para a prxima etapa.
12. Aceite as opes selecionadas e d um clique no boto Avanar, indo para a terceira etapa.
13. Surge a janela indicada na Figura 5.24.
14. Em um servidor SQL Server podem existir diversos bancos de dados. Neste caso
precisamos definir a qual banco de dados a nossa fonte ODBC ir conectar-se.
15. Marque a opo Change the default database to.
16. Na lista abaixo desta opo selecione pubs, conforme indicado na Figura 5.25.
Criando Sites Dinmicos com ASP 3.0
2 8 4
Figura 5.23: Definies par a a font e ODBC.
Figura 5.24: Definindo a qual banco de dados a font e ODBC ir conect ar - se.
2 8 5
Captulo 5 Conectando Pginas ASP com Bancos de Dados
Figura 5.25: Fazendo conexo com o Banco de dados pubs.
17. D um clique no boto Avanar para ir para a ltima etapa.
18. Nesta etapa podemos definir diversas opes, tais como:
O idioma para as mensagens do SQL Server.
Se devemos ou no utilizar criptografia dos dados para aumentar a segurana.
Se devemos utilizar as configuraes regionais tais como hora, data e formato para
nmeros em geral e para valores monetrios.
19. Selecione as opes conforme indicado na Figura 5.26.
Figura 5.26: Finalizando a configur ao da font e ODBC.
Criando Sites Dinmicos com ASP 3.0
2 8 6
20. D um clique no boto Concluir para finalizar a criao da fonte ODBC.
21. Surge a janela ODBC Microsoft SQL Server Setup, a qual informa as diversas opes
selecionadas, conforme indicado na Figura 5.27.
Figura 5.27: Resumo das opes selecionadas par a a font e ODBC.
22. Nesta janela podemos clicar no boto Test Data Source..., para verificar se a conexo
com o banco de dados est OK.
23. D um clique neste boto.
24. Deve surgir uma janela indicando que o teste foi realizado com sucesso, conforme
indicado na Figura 5.28.
25. D um clique em OK para fechar a janela de teste.
26. D um clique em OK para fechar a janela de resumo.
27. Voc estar de volta janela do Gerenciador de fontes ODBC, com a fonte ODBC sqlpubs
j criada, conforme indicado pela Figura 5.29.
28. D um clique em OK para fechar o Gerenciador de fontes ODBC.
NOTA
Estaremos utilizando esta fonte ODBC em diversos exemplos deste livro.
2 8 7
Captulo 5 Conectando Pginas ASP com Bancos de Dados
Figura 5.28: Test e indicando que a conexo est OK.
Figura 5.29: Font e ODBC sqlpubs j cr iada.
Criando Sites Dinmicos com ASP 3.0
2 8 8
Agora que j sabemos um pouco sobre ODBC vamos falar sobre OLE DB.
Um Pouco Sobr e OLE DB e ADO
OLE DB uma nova tecnologia, baseada na tecnologia COM da Microsoft, para acesso a bases
de dados. Uma das grandes novidades trazidas pela tecnologia OLE DB a possibilidade de
acesso a bases no estruturadas, como por exemplo arquivos de mensagens de correio
eletrnico, arquivos de texto, e bancos de dados de documentos como o Lotus Notes ou o
Microsoft Exchange. Alm disso, a tecnologia OLE DB foi construda tendo a performance
como uma de suas diretivas.
Diferente do ODBC, no existe um driver OLE DB para cada fonte de dado. Na tecnologia
OLE DB, o conector para uma fonte de dados chamado de OLE DB Provider. Por exemplo,
existe um OLE DB Provider para Microsoft Access, um para Microsoft SQL Server, um OLE
DB Provider para mensagens de correio do Microsoft Exchange, um para bancos de dados
Oracle e assim por diante.
OLE DB a tecnologia preferencial, segundo a Microsoft, para acesso a dados estruturados ou
no. Em diversos documentos e manuais oficiais da Microsoft, existem referncias a utilizao
de OLE DB como a tecnologia a ser utilizada para acesso a qualquer fonte de dados.
Muitos usurios pensam que OLE DB veio para substituir completamente o padro ODBC. Na
verdade, isto pode at acontecer daqui a algum tempo. Porm, na prtica, existe um OLE DB
Provider para ODBC. Com isso, utilizando OLE DB podemos ter acesso a qualquer fonte de
dados ODBC. O ODBC funciona como se fosse um subconjunto de OLE DB, uma vez que OLE
DB fornece acesso a todas as fontes de dados ODBC (utilizando o OLE DP Provider para ODBC),
mais as fontes de dados no estruturadas para as quais existem OLE DB Provider disponveis.
Na Figura 5.30, temos uma viso geral do acesso a fontes de dados, utilizando OLE DB.
Veja que possvel o acesso a qualquer fonte de dados ODBC. Tambm possvel o acesso
sem a utilizao de ODBC, utilizando-se o OLE DB Provider adequado para cada situao.
Quanto estamos utilizando OLE DB temos a figura da fonte de dados e do consumidor de
dados. Um OLE DB Provider a fonte de dados, j o aplicativo o consumidor de dados. No
prximo item criaremos pginas ASP que acessam dados de um arquivo do Microsoft Access.
Com isso, nossas pginas ASP atuaro como consumidores de dados.
Porm, OLE DB, na verdade, uma API (Application Programming Interface) baseada na
tecnologia COM da Microsoft. Utilizar diretamente uma API algo que requer conhecimentos
avanados de programao, tais como o domnio das linguagens C e C++. Embora seja factvel
utilizar diretamente OLE DB, muito pouco produtivo, alm de exigir profissionais com
conhecimentos avanados de programao.
2 8 9
Captulo 5 Conectando Pginas ASP com Bancos de Dados
Figura 5.30: Acessando font es de dados com OLE DB.
Para solucionar o problema de utilizao direta de OLE DB foi criada uma camada adicional
de programao, a qual conhecida como ADO ActiveX Data Objects. Com a utilizao de
ADO temos acesso a uma srie de objetos e seus mtodos. A utilizao dos objetos ADO
bem mais simples do que a utilizao direta da API OLE DB. Com a utilizao de ADO, a
produtividade do desenvolvedor aumenta bastante, pois seus objetos so de fcil aprendizagem
e utilizao, principalmente para quem j programa em Visual Basic. Quando utilizamos um
objeto ADO, o prprio objeto sabe como converter a chamada feita em ADO, para comandos
que a API OLE DB entende e capaz de executar.
Neste livro, sempre que formos fazer acesso a bases de dados, estaremos utilizando objetos
ADO. Por exemplo, quando estabelecemos uma conexo com um banco de dados, estaremos
utilizando o objeto Connection; para extrair informaes de uma tabela estaremos utilizando
um objeto chamado Recordset e assim por diante.
Na Figura 5.31, representamos o acesso a dados atravs de ADO, o qual se comunica com a
API OLE DB.
IMPORTANTE
Com isso, terminamos nosso estudo sobre os aspectos tericos necessrios ao entendimento da
conexo de pginas ASP com bancos de dados. A partir do prximo item estaremos aprendendo,
na prtica, a escrever pginas ASP que fazem conexo com banco de dados. Grande parte do
nosso trabalho ser estudar os objetos, mtodos, propriedades e eventos da tecnologia ADO.
Nunca demais salientar que ADO a forma de acesso a dados indicada pela Microsoft. No
OLE DB
Jet
Pr ovider
Jet
Pr ovider
Exchange
Ser ver
Pr ovider
Ger enciador ODBC
M icr osof t
Access
M icr osof t
SQL
Ser ver
M icr osof t
Exchange
Ser ver
M icr osof t
Access
M icr osof t
SQL
Ser ver
ORACLE
OLE DB Providers
Drivers ODBC
Dr iver ODBC
SQL Ser ver
Dr iver ODBC
M icr osof t Access
Dr iver ODBC
Or acle
Font es de dados: Est r ut ur adas e No est r ut ur adas.
Criando Sites Dinmicos com ASP 3.0
2 9 0
site msdn.microsoft.com existem diversos documentos que ensinam como migrar de outras
tecnologias mais antigas (como DAO, por exemplo), para a tecnologia ADO/OLE DB. Alm
disso, a Microsoft vem anunciando que as tecnologias mais antigas (como DAO e RDO) sero
descontinuadas, isto , sero substitudas por ADO.
Figura 5.31 : Acessando font es de dados com ADO/OLE DB.
Outro ponto importante a salientar que ADO no somente para uso em aplicaes Web.
Podemos utilizar ADO para qualquer aplicao, como as tradicionais aplicaes Cliente/
Servidor de duas camadas desenvolvidas em Visual Basic ou qualquer outra linguagem com
suporte a ADO/OLE DB.
Uma Viso Ger al do M odelo de Objet os ADO
Neste item ser apresentada uma viso geral do Modelo de Objetos do ADO. Nos demais itens
deste captulo e do prximo captulo iremos aprender a utilizar diversos objetos deste modelo,
medida que forem apresentados exemplos prticos. Na Figura 5.32 temos uma viso geral
dos principais objetos do Modelo de Objetos ADO.
OLE DB
Jet
Pr ovider
Jet
Pr ovider
Exchange
Ser ver
Pr ovider
Ger enciador ODBC
M icr osof t
Access
M icr osof t
SQL
Ser ver
M icr osof t
Exchange
Ser ver
M icr osof t
Access
M icr osof t
SQL
Ser ver
ORACLE
OLE DB Providers
Drivers ODBC
Dr iver ODBC
SQL Ser ver
Dr iver ODBC
M icr osof t Access
Dr iver ODBC
Or acle
Font es de dados: Est r ut ur adas e No est r ut ur adas.
ADO
2 9 1
Captulo 5 Conectando Pginas ASP com Bancos de Dados
Figura 5.32: O M odelo de Objet os ADO.
Abaixo uma descrio resumida dos principais objetos:
Connection: Este objeto utilizado para estabelecer uma conexo com uma fonte de
dados, seja atravs de um Driver ODBC ou de um OLE DB Provider. O primeiro passo
para acessar uma fonte de dados estabelecer uma conexo com esta fonte. Uma vez
estabelecida esta conexo, podemos utilizar outros objetos para extrair, alterar, inserir
dados ou qualquer outra operao que seja permitida pela fonte de dados. Quando
estabelecemos a conexo, tambm podemos passar informaes de autenticao, tais
como o nome do usurio e senha, de tal forma que seja dado acesso aos dados de
acordo com as permisses de cada usurio. Por exemplo, podem existir usurios que
devem ter permisso somente para leitura dos dados; j outros usurios podem
necessitar de permisso para leitura e alterao.
Um detalhe importante a ser salientado que a criao de uma conexo com um banco de
dados, atravs da utilizao do objeto Connection, no obrigatria. Podemos utilizar
diretamente os objetos Command, Recordset e Record, pois cada vez que utilizarmos um
destes objetos, uma conexo ser automaticamente criada. Porm, pode ser mais prtica a
criao explcita de uma conexo, principalmente em situaes em que muitos comandos
so executados contra a fonte de dados. Neste caso a criao de uma conexo, com a utilizao
do objeto Connection, pode melhorar o desempenho da aplicao Web.
Connect ion
Command
Recor dset
Recor d
St r eam
Field Fields
Fields Field
Pr oper t ies Pr oper t y
Pr oper t ies Pr oper t y
Pr oper t ies Pr oper t y
Par amet er s Par amet er
Er r or s Er r or
Criando Sites Dinmicos com ASP 3.0
2 9 2
Command: Este objeto pode ser utilizado para executar um comando (uma instruo
SQL por exemplo) em uma fonte de dados. Podemos utilizar este objeto para efetuar
uma consulta em um banco de dados e retornar o resultado em um objeto Recordset.
Tambm podemos utilizar este objeto para alterar a estrutura de um banco de dados,
desde que tenhamos permisso para isso.
Recordset: Este objeto representa um conjunto de registros obtidos a partir de um
banco de dados. Este conjunto de registros pode, por exemplo, ter sido retornado devido
a uma operao do objeto Command. Todo objeto Recordset formado por linhas e
colunas, como se fosse uma tabela de um banco de dados.
Record: Este objeto representa uma nica linha (ou seja, um nico registro) de um
objeto Recordset.
Stream: Este objeto utilizado para manipular dados no estruturados, normalmente
organizados em formas de rvores hierrquicas. Pode ser utilizado para acessar
informaes de um sistema de arquivos ou um sistema de correio eletrnico.
Cada um destes objetos apresenta uma srie de mtodos, propriedades, eventos e colees.
Iniciaremos o estudo de cada objeto com uma apresentao rpida de cada um destes
elementos. medida que formos utilizando estes mtodos, propriedades, eventos e colees,
apresentaremos maiores detalhes sobre cada um deles.
IMPORTANTE
Na maioria das situaes utilizamos os objetos Connection e Recordset juntos em uma mesma
pgina. No prximo item iremos estudar o objeto Connection, porm j fazendo uso do objeto
Recordset nos exemplos prticos. No item a seguir ser apresentado apenas o bsico sobre o
objeto Recordset. Na parte final do captulo e nos prximos captulos estudaremos maiores
detalhes sobre o objeto Recordset.
O Objet o Connect ion
Conforme descrevemos anteriormente, o primeiro passo para conectar uma pgina ASP com
uma fonte de dados, estabelecer uma conexo com a fonte de dados. Para estabelecermos
esta conexo utilizamos o objeto Connection.
Ao estabelecermos uma conexo estamos informando para a nossa pgina ASP uma srie de
detalhes que a mesma necessita para poder acessar os dados. Utilizando o objeto Connection
podemos definir qual o OLE DB Provider a ser utilizado, qual a fonte de dados e demais
informaes, tais como nome de usurio e senha, caso sejam necessrios.
Na Tabela 5.2 temos uma breve descrio dos principais mtodos do objeto Connection.
2 9 3
Captulo 5 Conectando Pginas ASP com Bancos de Dados
Mtodo Descrio
BeginTrans Inicia uma nova transao. Falaremos mais sobre Transaes
no Captulo 12.
Cancel Cancela a execuo assncrona dos comandos Execute e
Open.
Close Fecha uma conexo que esteja aberta e quaisquer objetos
que sejam dependentes desta conexo.
CommitTrans Salva as alteraes que foram feitas e encerra a transao
corrente.
Execute Executa um consulta, um comando ou uma instruo SQL
e retorna um objeto do tipo Recordset. Pode, por exemplo,
ser utilizado para obter uma listagem de vendas de
um banco de dados, ou qualquer outra listagem podendo
ser obtida a partir de uma instruo SQL.
Open Abre uma conexo com uma fonte de dados. Feito isso,
comandos podem ser executados atravs desta conexo.
OpenSchema Utilizado para obter informao sobre a estrutura de uma
fonte de dados, tais como as definies de tabelas e
relacionamentos de um banco de dados relacional.
RoolbackTrans Cancela quaisquer alteraes que tenham sido feitas pela
transao e finaliza a transao.
Tabela 5.2 Os principais mtodos do objeto Connection.
Na Tabela 5.3 temos uma breve descrio das principais propriedades do objeto Connection.
Tabela 5.3 As principais propriedades do objeto Connection.
Propriedade Descrio
Attributes Indica uma ou mais caractersticas de um objeto
Connection. Retorna um valor Long.
CommandTimeout Indica o tempo mximo de execuo de um comando.
Caso o comando demore mais do que o tempo definido
nesta propriedade, ser gerado um erro. O valor padro
30 segundos.
Criando Sites Dinmicos com ASP 3.0
2 9 4
Propriedade Descrio
ConnectionString Contm todas as informaes utilizadas para
estabelecer a conexo com a fonte de dados.
ConnectionTimeout Indica o tempo mximo para tentativa de estabelecer
uma conexo. Caso a conexo no seja estabelecida
em um tempo menor ou igual ao definido em
ConnectionTimeout, a conexo ser encerrada e um
erro gerado. Por padro este valor definido em 15
segundos.
CursorLocation Define ou retorna a localizao do cursor, se no
servidor ou no cliente. Iremos falar um pouco mais
sobre cursores no prximo captulo.
DefaultDatabase Indica qual o banco de dados padro para um objeto
Connection. Por exemplo, quando estamos conectando
com um servidor SQL precisamos definir qual a base
de dados que ser acessada. Fazemos isso definindo
qual o banco de dados padro, atravs da utilizao
da propriedade DefaultDatabase.
Errors Contm todos os objetos Error criados em resposta a
falhas envolvendo o provedor de dados. Falaremos
mais sobre o objeto Error no Captulo 11.
IsolationLevel Define o nvel de isolamento das transaes para um
objeto Connection. Voltaremos a este assunto no
Captulo 12.
Mode Indica as permisses disponveis para modificao de
dados atravs de uma conexo.
Properties Contm todos os objetos Property de um determinado
objeto Connection.
Provider Retorna o nome do Provedor para uma determinada
conexo.
State Indica se a conexo est aberta ou fechada.
Version Retorna a verso da tecnologia ADO. Por exemplo,
2.0 ou 2.5.
2 9 5
Captulo 5 Conectando Pginas ASP com Bancos de Dados
Na Tabela 5.4 temos uma breve descrio dos principais eventos do objeto Connection.
Tabela 5.4 Os principais eventos do objeto Connection.
O Pr imeir o Exemplo
Neste item vamos utilizar o conhecimento que j temos para criar uma pgina ASP que conecta
o banco de dados Nwind e mostra uma listagem de clientes com as seguintes informaes:
Cdigo do Cliente (CodigoDoCliente)
Cargo (Cargo)
Endereo (Endereco)
Telefone (Fone)
NOTA
O nome entre parnteses o nome do campo na tabela clientes do banco de dados Nwind.
Caso voc esteja utilizando outro banco de dados ou outra tabela, utilize os nomes de campo
adequados. O banco de dados Nwind um banco de exemplo que instalado juntamente com
o Microsoft Access.
Evento Descrio
BeginTransComplete Ocorre aps o trmino de uma operao
BeginTrans.
CommitTransComplete Ocorre aps o trmino de uma operao
CommitTrans.
ConnectComplete Ocorre aps o incio de uma conexo.
Disconnect Ocorre aps o trmino de uma conexo.
ExecuteComplete Ocorre aps o trmino da execuo de um comando.
InfoMessage Ocorre sempre que a operao ConnectionEvent
ocorre com sucesso e uma informao adicional
retornada pelo provedor de dados.
RollBackTransComplete Ocorre aps a execuo da operao RollbackTrans.
WillConnect Ocorre antes do incio de uma conexo.
WillExecute Ocorre antes que um comando pendente seja
executado em uma determinada conexo.
Criando Sites Dinmicos com ASP 3.0
2 9 6
Figura 5.33: A t abela Client es do banco de dados Nwind.
Pode acontecer que a estrutura do Nwind esteja em ingls. Os nomes dos campos aparecem
com CustomerID, City, Address e assim por diante. Utilize os nomes conforme os mesmos se
apresentam na sua cpia do banco de dados Nwind.mdb.
Na Listagem 5.1 apresentamos uma pgina ASP que faz a conexo com o banco de dados Nwind
e exibe uma listagem de clientes. Logo aps explicaremos cada um dos comandos utilizados.
Listagem 5.1 Uma pgina ASP que conecta com o banco de dados Nwind clientes.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 <TITLE>Listagem de Clientes</TITLE>
5 </HEAD>
6 <BODY>
7 <H1>
8 <FONT color=navy>Clientes da Empresa ABC Ltda.</FONT>
9 </H1>
10 <%
11 O Primeiro passo criar a conexo com o banco de dados
12 Para isto crio um objeto do tipo Connection
Na Figura 5.33 podemos ver a estrutura da tabela Clientes que est sendo utilizada no nosso
exemplo.
2 9 7
Captulo 5 Conectando Pginas ASP com Bancos de Dados
13 Cria um objeto do tipo ADODB.Connection
14 Set conn = Server.CreateObject(ADODB.Connection)
15 Agora abro uma conexo com a fonte ODBC nwind
16 criada anteriormente.
17 conn.Open nwind
18 O prximo passo criar uma instruo SQL
19 a qual utilizada para criar a listagem de clientes.
20 inst_sql=SELECT Clientes.CodigoCliente, Clientes.Cargo, Clientes.Endereco,
Clientes.Fone FROM Clientes
21 Esta instruo SQL retorna os campos CodigoCliente, Cargo,
22 Endereco e Fone, da tabela Clientes.
23 Agora criamos um objeto RecordSet.
24 Este objeto ir executar a instruo SQL e
25 receber o resultado da consulta.
26 Set Clientes = Server.CreateObject(ADODB.Recordset)
27 Agora executamos a instruo SQL
28 retornando os registros da tabela Clientes.
29 Clientes.Open inst_sql, conn, 3, 3
30 Os dois ltimos parmetros sero discutidos
31 no prximo captulo.
32 Neste ponto j tenho todos os registros retornados
33 pela instruo SQL. Estes registros esto armazenados
34 no objeto Clientes, que um objeto do tipo Recordset.
35 Agora passo a montar a pgina que ser retornada para o
36 navegador do cliente. Vamos montar uma tabela com o
37 resultado da consulta.
38 %>
Criando Sites Dinmicos com ASP 3.0
2 9 8
39 <P>
40 <HR>
41 <TABLE bgColor=gray border=1 borderColor=navy cellPadding=1 cellSpacing=1
width=100%>
42 <TR>
43 <TD align=middle bgColor=gray>Cdigo</TD>
44 <TD align=middle bgColor=gray>Cargo</TD>
45 <TD align=middle bgColor=gray>Endereo</TD>
46 <TD align=middle bgColor=gray>Fone</TD>
47 </TR>
48 <%
49 Inicio um Loop para percorrer todos os registros
50 do RecordSet Clientes, exibindo um registro em
51 cada linha da tabela.
52 Do Until Clientes.eof %>
53 <TR>
54 <TD align=middle bgColor=gray><%=Clientes.Fields(CodigoCliente)%></TD>
55 <TD align=middle bgColor=gray><%=Clientes.Fields(Cargo)%></TD>
56 <TD align=middle bgColor=gray><%=Clientes.Fields(Endereco)%></TD>
57 <TD align=middle bgColor=gray><%=Clientes.Fields(Fone)%></TD>
58 </TR>
59 <%
60 Clientes.MoveNext
61 Loop %>
62 </TABLE>
63 </P>
64 <HR>
65 </BODY>
66 </HTML>
2 9 9
Captulo 5 Conectando Pginas ASP com Bancos de Dados
Ao carregar esta pgina no Internet Explorer, o usurio recebe uma listagem conforme indicado
na Figura 5.34.
Figura 5.34: A list agem de client es do banco de dados Nwind.
Antes de comentarmos esta listagem gostaria de salientar a natureza dinmica das pginas
criadas com ASP. Neste exemplo, qualquer alterao que seja feita na tabela Clientes, ser
exibida na listagem de clientes, na prxima vez que o usurio carregar a pgina Clientes.asp.
Isto acontece porque a listagem montada, a partir do banco de dados, cada vez que a pgina
carregada. Com isso ao carregar a pgina, todos os dados existentes na tabela Clientes sero
exibidos. Por isso que dizemos que a pgina criada dinamicamente, ou seja, cada vez que a
pgina solicitada, o cdigo ASP estabelece a conexo com o banco de dados, solicita a
listagem de clientes e apresenta a listagem no formato de uma tabela, conforme definimos.
Agora vamos s explicaes a respeito do cdigo da Listagem 5.1. Embora existam diversos
comentrios na prpria listagem, cabe aqui alguns esclarecimentos. Vamos detalhar diversos
trechos de cdigo desta listagem, pois estaremos utilizando estas tcnicas ao longo do livro.
Criando Sites Dinmicos com ASP 3.0
3 0 0
Trecho 1: Considere o seguinte trecho de cdigo:
14 Set conn = Server.CreateObject(ADODB.Connection)
Esta linha cria um objeto Connection chamado conn. Poderamos utilizar qualquer nome
vlido para este objeto. Um ponto importante a salientar a utilizao da instruo Set.
Sempre que formos criar um objeto (Connection, Recordset, etc.), devemos usar a instruo
Set. Se no utilizarmos esta instruo na criao de objetos, obteremos um erro na hora de
carregar a pgina.
Tambm importante observarmos o seguinte:
Server.CreateObject(ADODB.Connection)
Este cdigo cria um objeto no servidor, que do tipo ADODB.Connection, ou seja, uma conexo
ADO para banco de dados.
Aps a execuo deste comando, um objeto Connection foi criado, porm o mesmo ainda no
faz referncia a nenhum banco de dados especfico.
Trecho 2: Considere o seguinte trecho de cdigo:
15 Agora abro uma conexo com a fonte ODBC nwind
16 criada anteriormente.
17 conn.Open nwind
Na linha 17 estou associando a conexo conn com uma fonte ODBC nwind. Lembrando que
esta fonte ODBC foi criada previamente. Caso voc esteja utilizando uma fonte ODBC diferente,
utilize o nome adequado. Esta associao feita atravs do mtodo Open, do objeto Connection.
A partir deste momento, a minha conexo conn est associada ao banco de dados Nwind,
conforme definido pela fonte ODBC nwind.
Uma vez estabelecida a conexo hora de recuperar dados, isto , registros, a partir do banco
de dados. Isto feito pelo seguinte trecho de cdigo:
Trecho 3: Considere o seguinte trecho de cdigo.
20 inst_sql=SELECT Clientes.CodigoCliente, Clientes.Cargo,
Clientes.Endereco, Clientes.Fone FROM Clientes
21 Esta instruo SQL retorna os campos CodigoCliente, Cargo,
22 Endereco e Fone, da tabela Clientes.
23 Agora criamos um objeto RecordSet.
24 Este objeto ir executar a instruo SQL e
25 receber o resultado da consulta.
3 0 1
Captulo 5 Conectando Pginas ASP com Bancos de Dados
26 Set Clientes = Server.CreateObject(ADODB.Recordset)
27 Agora executamos a instruo SQL
28 retornando os registros da tabela Clientes.
29 Clientes.Open inst_sql, conn, 3, 3
30 Os dois ltimos parmetros sero discutidos
31 no prximo captulo.
Na linha 20, criamos uma varivel chamada inst_sql, a qual contm a instruo SQL que ser
executada no banco de dados Nwind. Observe que uma instruo SQL bastante simples, a
qual, basicamente, seleciona os campos CodigoCliente, Cargo, Endereco e Fone da tabela
Clientes do banco de dados Nwind.
Uma vez definida a instruo SQL, partimos para a criao de um objeto RecordSet. A criao
do objeto RecordSet, chamado Clientes, feita na linha 26. Poderamos ter escolhido qualquer
nome para este objeto. Observe a utilizao da instruo Set. Como estamos criando um
objeto (do tipo RecordSet), devemos utilizar a instruo Set.
Agora devemos executar a instruo SQL para que o objeto Recordset contenha os registros
retornados pela instruo. Isto feito pelo seguinte cdigo:
29 Clientes.Open inst_sql, conn, 3, 3
Neste caso utilizamos o mtodo Open do objeto RecordSet Clientes. O primeiro parmetro
a instruo SQL a ser utilizada inst_sql. O segundo parmetro o nome da conexo a ser
utilizada conn. O terceiro e quatro parmetros definem comportamentos para o objeto
RecordSet, tais como se possvel mover-se para frente e para trs, avanando e voltando
pelos registros, se os registros retornados so apenas para leitura ou para leitura e alteraes
e assim por diante. Estudaremos estas opes no prximo captulo.
Bem, neste momento j temos um objeto RecordSet chamado Clientes, o qual possui uma
srie de registros obtidos a partir da tabela Clientes do banco de dados Nwind. Cada registro
possui quatro campos, conforme foi definido pela nossa instruo SQL que somente retorna
os campos CodigoCliente, Cargo, Endereco e Fone.
Trecho 4: Considere o seguinte trecho de cdigo.
41 <TABLE bgColor=gray border=1 borderColor=navy cellPadding=1
cellSpacing=1
width=100%>
42 <TR>
43 <TD align=middle bgColor=gray>Cdigo</TD>
Criando Sites Dinmicos com ASP 3.0
3 0 2
44 <TD align=middle bgColor=gray>Cargo</TD>
45 <TD align=middle bgColor=gray>Endereo</TD>
46 <TD align=middle bgColor=gray>Fone</TD>
47 </TR>
52 Do Until Clientes.eof %>
53 <TR>
54 <TD align=middle bgColor=gray><%=Clientes.Fields
(CodigoCliente)%></TD>
55 <TD align=middle bgColor=gray><%=Clientes.Fields(Cargo)%></TD>
56 <TD align=middle bgColor=gray><%=Clientes.Fields(Endereco)%></
TD>
57 <TD align=middle bgColor=gray><%=Clientes.Fields(Fone)%></TD>
58 </TR>
59 <%
60 Clientes.MoveNext
61 Loop %>
62 </TABLE>
Uma vez que o RecordSet Clientes foi criado com sucesso, hora de criarmos uma tabela que
exibe os dados do objeto RecordSet. Comeamos criando a primeira linha da tabela, a qual ir
conter o ttulo das colunas. Isto feito pelo seguinte cdigo:
41 <TABLE bgColor=gray border=1 borderColor=navy cellPadding=1 cellSpacing=1
width=100%>
42 <TR>
43 <TD align=middle bgColor=gray>Cdigo</TD>
44 <TD align=middle bgColor=gray>Cargo</TD>
45 <TD align=middle bgColor=gray>Endereo</TD>
46 <TD align=middle bgColor=gray>Fone</TD>
47 </TR>
Observe que para criar o cabealho da tabela, utilizamos cdigo HTML puro. Veja que estamos
criando uma tabela com quatro colunas. Vamos exibir um registro por linha, como cada registro
possui quatro campos, precisamos de uma tabela com quatro colunas. Esta tabela ter tantas
linhas quantos forem os registros do objeto Clientes.
A construo do corpo da tabela feita com o seguinte trecho de cdigo:
52 Do Until Clientes.eof %>
53 <TR>
54 <TD align=middle bgColor=gray><%=Clientes.Fields(CodigoCliente)%></TD>
3 0 3
Captulo 5 Conectando Pginas ASP com Bancos de Dados
55 <TD align=middle bgColor=gray><%=Clientes.Fields(Cargo)%></TD>
56 <TD align=middle bgColor=gray><%=Clientes.Fields(Endereco)%></TD>
57 <TD align=middle bgColor=gray><%=Clientes.Fields(Fone)%></TD>
58 </TR>
59 <%
60 Clientes.MoveNext
61 Loop %>
62 </TABLE>
Na linha 52, iniciamos um lao Do Until Condio... Loop. Como condio utilizamos a propriedade
Eof do objeto Clientes. O lao continua sendo executado at que a condio Clientes.eof se torne
Verdadeira. Esta condio somente ir tornar-se Verdadeira quando o indicador de registro j
estiver alm do ltimo registro. Com isso, o lao somente ser encerrado depois que tivermos
percorrido todos os registros do objeto Clientes, que exatamente o que queremos.
Para cada registro criada uma nova linha na tabela. Isto feito pelo seguinte trecho de cdigo:
53 <TR>
54 <TD align=middle bgColor=gray><%=Clientes.Fields(CodigoCliente)%></TD>
55 <TD align=middle bgColor=gray><%=Clientes.Fields(Cargo)%></TD>
56 <TD align=middle bgColor=gray><%=Clientes.Fields(Endereco)%></TD>
57 <TD align=middle bgColor=gray><%=Clientes.Fields(Fone)%></TD>
58 </TR>
Observe o seguinte fragmento de cdigo:
<%=Clientes.Fields(CodigoCliente)%>
Este fragmento retorna o valor do campo CodigoCliente do registro atual do Recordset Clientes.
Com isso vamos preenchendo cada coluna com os respectivos valores. A primeira coluna com o
campo CodigoCliente, a segunda com o campo Cargo, e assim por diante. Neste caso, utilizamos a
coleo Fields do RecordSet Clientes, a qual nos d acesso aos campos individuais de cada registro.
As linhas seguintes so de grande importncia:
59 <%
60 Clientes.MoveNext
61 Loop %>
62 </TABLE>
Se no colocssemos a linha 60, esta pgina ASP entraria em Loop infinito e somente o primeiro
registro seria exibido repetidamente, at congelar a pgina. Quando criamos um objeto RecordSet,
por padro, o indicador de registro posicionado no primeiro registro. Utilizamos o mtodo
MoveNext para mover o indicador para o prximo registro. Com isso, a cada passagem do lao Do
Criando Sites Dinmicos com ASP 3.0
3 0 4
Until, o indicador posicionado no prximo registro, at o momento em que todos os registros
foram percorridos. Se no houvesse esta linha, o indicador ficaria sempre no primeiro registro e
o lao nunca seria encerrado, pois a condio Clientes.eof seria sempre verdadeira, impedindo o
encerramento do lao. A linha 62 simplesmente a tag HTML de fechamento da tabela.
M odificando um Pouco o Nosso Exemplo
Vamos fazer uma pequena modificao no exemplo anterior, com o objetivo de salientar a
importncia de conhecermos a linguagem SQL. Conforme podemos observar pela Figura 5.34,
a listagem foi exibida na mesma ordem em que encontrava-se na tabela Clientes, isto ,
ordenada pelo campo CodigoCliente. Mas, vamos supor que fosse necessria uma listagem
ordenada pelo campo Cargo. Como faramos isso?
Muito simples, basta modificar a instruo SQL para incluir a ordenao. Isto feito,
modificando-se a linha 20 da Listagem 5.1. A nova instruo SQL, j ordenando pelo campo
Cargo ficaria assim:
20 inst_sql=SELECT Clientes.CodigoCliente, Clientes.Cargo, Clientes.Endereco,
Clientes.Fone FROM Clientes ORDER BY Clientes.Cargo
Feita esta alterao, ao acessarmos esta pgina no Internet Explorer, obteremos o resultado
indicado na Figura 5.35.
Figura 5.35: A list agem de client es do banco de dados Nwind, or denada pelo campo Car go.
3 0 5
Captulo 5 Conectando Pginas ASP com Bancos de Dados
Observe que uma simples modificao na instruo SQL j produz os resultados desejados.
Tambm poderamos sugerir outra alterao. Vamos supor que foi solicitado que retirssemos
o campo Fone e inclussemos o campo Fax. Esta mudana tambm extremamente simples.
Bastaria alterar as seguintes linhas:
A instruo SQL na linha 20 ficaria assim:
20 inst_sql=SELECT Clientes.CodigoCliente, Clientes.Cargo,
Clientes.Endereco, Clientes.Fax FROM Clientes ORDER BY Clientes.Cargo
O cabealho da quarta coluna, na linha 46 ficaria assim:
46 <TD align=middle bgColor=gray>Fax</TD>
Na linha 57 basta trocar o nome do campo de Fone para Fax, conforme indicado:
57 <TD align=middle bgColor=gray><%=Clientes.Fields(Fax)%></TD>
Com estas trs alteraes, obteremos os resultados indicados na Figura 5.36.
Figura 5.36: A list agem de client es do banco de dados Nwind, com o campo Fax.
Com a utilizao de SQL e ASP fica fcil fazer alteraes em nossas pginas.
A partir do prximo item estudaremos mais detalhes sobre o objeto Connection. Ainda neste
captulo, aprenderemos a criar um formulrio onde o usurio pode digitar um critrio e
pesquisar registros que atendam ao critrio digitado. Conforme descrito, continuaremos
Criando Sites Dinmicos com ASP 3.0
3 0 6
fazendo uso de objetos RecordSet, embora somente iremos estudar os mesmos, em detalhes,
no prximo captulo.
Um Pouco M ais Sobr e o Objet o Connect ion
Neste item iremos testar algumas propriedades e mtodos do objeto Connection. importante
conhecermos estes mtodos e propriedades, pois o objeto Connection de fundamental
importncia para a conexo de pginas ASP com bancos de dados.
Considere o exemplo da Listagem 5.2.
Listagem 5.2 As propriedades do objeto Connection propconn.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 <TITLE>Propriedades do Objeto Connection!!</TITLE>
5 </HEAD>
6 <BODY>
7 <H3>
8 <FONT color=navy>Tabela com as propriedades do objeto Connection !!!
9 </FONT>
10 </H3>
11 <%
12 Cria um objeto do tipo ADODB.Connection
13 Set obj_conn=Server.CreateObject(ADODB.Connection)
14 Agora abro uma conexo com a fonte ODBC nwind
15 criada anteriormente.
16 obj_conn.Open nwind
17 O prximo passo criar uma instruo SQL
18 inst_sql=SELECT Clientes.CodigoCliente, Clientes.Cargo, Clientes.Endereco,
Clientes.Fax FROM Clientes ORDER BY Clientes.Cargo
3 0 7
Captulo 5 Conectando Pginas ASP com Bancos de Dados
19 Esta instruo SQL retorna os campos CodigoCliente, Cargo,
20 Endereco e Fax, da tabela Clientes.
21 Agora passamos a exibir as propriedades da
22 conexo obj_conn, em uma tabela de duas colunas.
23 Agora passo a montar a pgina que ser retornada para o
24 navegador do cliente. Vamos montar uma tabela com as
25 propriedades da conexo obj_conn
26 %>
27 <P>
28 <HR>
29 <TABLE bgColor=gray border=1 borderColor=navy cellPadding=1 cellSpacing=1
width=100%>
30 <TR>
31 <TD align=middle bgColor=gray>Propriedade</TD>
32 <TD align=middle bgColor=gray>Valor</TD>
33 </TR>
34 <TR>
35 <TD align=middle bgColor=gray>Attributes</TD>
36 <TD align=middle bgColor=gray><%=obj_conn.Attributes %></TD>
37 </TR>
38 <TR>
39 <TD align=middle bgColor=gray>CommandTimeout</TD>
40 <TD align=middle bgColor=gray><%=obj_conn.CommandTimeout %></TD>
41 </TR>
42 <TR>
43 <TD align=middle bgColor=gray>ConnectionString</TD>
44 <TD align=middle bgColor=gray><%=obj_conn.ConnectionString %></TD>
45 </TR>
46 <TR>
47 <TD align=middle bgColor=gray>ConnectinTimeout</TD>
48 <TD align=middle bgColor=gray><%=obj_conn.ConnectionTimeout %></TD>
49 </TR>
Criando Sites Dinmicos com ASP 3.0
3 0 8
50 <TR>
51 <TD align=middle bgColor=gray>CursorLocation</TD>
52 <TD align=middle bgColor=gray><%=obj_conn.CursorLocation %></TD>
53 </TR>
54 <TR>
55 <TD align=middle bgColor=gray>DefaultDatabase</TD>
56 <TD align=middle bgColor=gray><%=obj_conn.DefaultDatabase %></TD>
57 </TR>
58 <TR>
59 <TD align=middle bgColor=gray>IsolationLevel</TD>
60 <TD align=middle bgColor=gray><%=obj_conn.IsolationLevel %></TD>
61 </TR>
62 <TR>
63 <TD align=middle bgColor=gray>Provider</TD>
64 <TD align=middle bgColor=gray><%=obj_conn.Provider %></TD>
65 </TR>
66 <TR>
67 <TD align=middle bgColor=gray>State</TD>
68 <TD align=middle bgColor=gray><%=obj_conn.State %></TD>
69 </TR>
70 <TR>
71 <TD align=middle bgColor=gray>Version</TD>
72 <TD align=middle bgColor=gray><%=obj_conn.Version %></TD>
73 </TR>
74 </TABLE>
75 <% obj_conn.Close %>
76 </P>
77 <HR>
78 </BODY>
79 </HTML>
Ao acessarmos esta pgina, utilizando o Internet Explorer, obtemos o resultado indicado na
Figura 5.37.
3 0 9
Captulo 5 Conectando Pginas ASP com Bancos de Dados
Figura 5.37: As pr incipais pr opr iedades do objet o Connect ion.
Agora vamos detalhar alguns aspectos do cdigo da Listagem 5.2:
Estamos utilizando a mesma conexo utilizada no exemplo anterior, a qual utiliza a
fonte ODBC nwind.
Outro aspecto a ser salientado a forma como utilizamos as propriedades do objeto
Connection:
<%=obj_conn.CommandTimeout %>
Este trecho de cdigo ASP retorna o valor da propriedade CommandTimeout do objeto
obj_conn, o qual por sua vez um objeto Connection. A sintaxe para acessar as propriedades
a mesma para qualquer objeto, conforme indicado abaixo:
Nome_do_objeto.Nome_da_propriedade
Algumas propriedades so somente para leitura, isto , somente podemos verificar o
valor da propriedade. Como exemplo de propriedades que so apenas para leitura,
podemos citar as propriedades State e Version.
Outras propriedades so para leitura e escrita, isto , alm de acessarmos o valor atual
da propriedade, podemos alter-lo. A ttulo de exemplo, vamos supor que quisssemos
Criando Sites Dinmicos com ASP 3.0
3 1 0
alterar a propriedade ConnectionTimeout para 200 segundos, ao invs de manter o
padro que 15 segundos. Para isto, bastaria que utilizssemos o seguinte comando:
obj_conn.ConnectionTimeout = 200
NOTA
Cuidado! A propriedade ConnectionTimeout deve ser definida antes da conexo ser aberta com
a utilizao do mtodo Open, caso contrrio ser gerado um erro e a pgina no ser carregada.
Observe a propriedade ConnectionString, cujo valor para o nosso exemplo o seguinte:
Provider=MSDASQL.1;Data Source=nwind;Extended Properties=DSN=nwind;
DBQ=C:\MEUS DOCUMENTOS\NWIND.MDB;DriverId=281;
FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;
Estes valores so obtidos a partir da fonte ODBC nwind.
IMPORTANTE
Uma dvida que muitos usurios tm sobre a obrigatoriedade ou no de utilizarmos ODBC. A
utilizao de uma fonte ODBC no obrigatria, podemos montar uma conexo OLE DB diretamente
para qualquer fonte de dados. Basta, para isso, montar a String de conexo correta e pass-la
como um parmetro para o mtodo Open da conexo, que ir referenciar, diretamente, a fonte de
dados, sem a necessidade de uma fonte ODBC estar configurada.
Agora vamos fazer alguns comentrios sobre os valores padro de algumas propriedades.
A propriedade CursorLocation pode apresentar os valores indicados na Tabela 5.5.
Tabela 5.5 Valores da propriedade CursorLocation.
Valor Descrio
1 No utiliza os servios de cursor. Falaremos mais sobre
cursores no prximo captulo.
2 Este o valor padro, conforme pode ser comprovado na
Figura 5.37. Com este valor so utilizados os servios de
cursor do provedor de dados, isto , no lado do Servidor.
3 Utiliza cursor no Cliente.
3 1 1
Captulo 5 Conectando Pginas ASP com Bancos de Dados
Por ltimo gostaria de salientar a utilizao do mtodo Close, para fechar a conexo,
conforme indicado no seguinte trecho de cdigo:
75 <% obj_conn.Close %>
Agora vamos explorar mais um exemplo de utilizao da conexo de pginas ASP com banco
de dados.
Cr iando um For mulr io Par a Pesquisa
Vamos aprender mais alguns detalhes, atravs da utilizao de um exemplo bastante comum
no dia-a-dia.
Problema: Criar um formulrio, onde o usurio possa digitar o nmero do produto e clicar em
um boto Pesquisar. Ao clicar neste boto chamada uma pgina ASP (definida no atributo
action da tag FORM), que conecta com o banco de dados Nwind.mdb, atravs da fonte ODBC
nwind e exibe as informaes da tabela Produtos, para o produto cujo cdigo foi digitado no
formulrio de pesquisa. A pgina ASP deve ter um formulrio para o usurio digitar outro
cdigo e clicar em um boto Pesquisar para buscar as informaes de outro produto. Neste
caso, ao clicar no boto Pesquisar da pgina ASP, a prpria pgina ser chamada (atravs da
definio do atributo action da tag FORM). A pgina ASP far a pesquisa para o novo cdigo
digitado e exibir o produto correspondente.
Soluo: Para solucionar este problema, temos duas etapas:
A criao da pgina HTML com o formulrio de pesquisa.
A criao da pgina ASP para responder a requisio do formulrio de pesquisa.
Valor Descrio
0 Indica que a conexo est fechada.
1 Indica que a conexo est aberta.
2 Indica que a conexo est sendo efetuada.
4 Indica que est sendo executado um comando atravs da
conexo.
8 Indica um resultado sendo retornado, como por exemplo,
os registros de um Recordset.
A propriedade State pode apresentar os valores indicados na Tabela 5.6.
Tabela 5.6 Valores da propriedade State.
Criando Sites Dinmicos com ASP 3.0
3 1 2
Cr iando a Pgina HTM L com o For mulr io de Pesquisa
A criao desta pgina extremamente simples, utilizando os conhecimentos que foram
apresentados at o momento.
Na Listagem 5.3 temos o cdigo para criao do formulrio de pesquisa.
Listagem 5.3 O formulrio de pesquisa para o usurio digitar o cdigo do produto
produto.htm.
1 <HTML>
2 <HEAD>
3 <TITLE>Pesquisa de Produtos !!!</TITLE>
4 </HEAD>
5 <BODY>
6 <P><FONT color=navy>
7 <B>PESQUISA DE PRODUTOS.</B>
8 </FONT>
9 </P>
10 <FORM action=produto.asp method=post>
11 <P><FONT color=#000080><B>Digite o Cdigo (de 1 a 77):
12 <INPUT id=codigo maxLength=2 name=codigo size=5>
13 </B>
14 </FONT></P>
15 <P><B><FONT color=#000080>
16 <INPUT id=pesquisar name=pesquisar type=submit value=Clique aqui para pesquisar
o produto !! >
17 </FONT>
18 </B>
19 </P>
20 </FORM>
21 </BODY>
22 </HTML>
3 1 3
Captulo 5 Conectando Pginas ASP com Bancos de Dados
Ao visualizarmos este formulrio no Internet Explorer, obtemos o resultado indicado na
Figura 5.38.
Figura 5.38: O for mulr io par a pesquisa do pr odut o.
NOTA
Estamos pedindo para que seja digitado um nmero entre 1 e 77 pois estes so os dados
existentes para produtos no banco de dados Nwind.mdb. Porm, vamos fazer um teste: iremos
digitar um cdigo 95 e mandar pesquisar. A nossa pgina ASP detectar que no existe nenhum
produto com este cdigo e avisar que nenhum produto foi encontrado para o cdigo digitado.
Cr iando a Pgina ASP Par a Pesquisar no Banco de Dados
A criao desta pgina apresenta alguns elementos novos, ainda no apresentados at o momento.
Na Listagem 5.4 temos o cdigo para criao da pgina ASP. Aps a Listagem apresentaremos
os esclarecimentos necessrios.
Listagem 5.4 A pgina ASP para pesquisar no banco de dados produto.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 <TITLE>Pesquisa de Produto !!</TITLE>
5 </HEAD>
Criando Sites Dinmicos com ASP 3.0
3 1 4
6 <BODY>
7 <H2>
8 <FONT color=navy>Resultado para a Pesquisa.</FONT>
9 </H2>
10 <P><FONT color=navy>
11 <B>PESQUISA DE PRODUTOS.</B>
12 </FONT>
13 </P>
14 <FORM action=produto.asp method=post id=form1 name=form1>
15 <P><FONT color=#000080><B>Digite o Cdigo (de 1 a 77):
16 <INPUT id=codigo maxLength=2 name=codigo size=5>
17 </B>
18 </FONT></P>
19 <P><B><FONT color=#000080>
20 <INPUT id=pesquisar name=pesquisar type=submit value=Clique aqui para pesquisar
o produto !! >
21 </FONT>
22 </B>
23 </P>
24 </FORM>
25 <%
26 O primeiro passo criar a conexo com o banco de dados
27 Para isto crio um objeto do tipo Connection
28 Cria um objeto do tipo ADODB.Connection
29 Set conn=Server.CreateObject(ADODB.Connection)
30 Agora abro uma conexo com a fonte ODBC nwind
31 criada anteriormente.
32 conn.Open nwind
33 O prximo passo criar uma instruo SQL
34 sqlbuscaproduto =SELECT * FROM Produtos where ProductID= &
Request.Form(codigo)
35 Esta instruo SQL retorna o produto cujo cdigo
3 1 5
Captulo 5 Conectando Pginas ASP com Bancos de Dados
36 igual ao cdigo digitado no formulrio de pesquisa.
37 Agora criamos um objeto RecordSet.
38 Este objeto ir executar a instruo SQL e
39 receber o resultado da consulta.
40 Set Produto = Server.CreateObject(ADODB.Recordset)
41 Agora executamos a instruo SQL
42 Produto.Open sqlbuscaproduto, conn, 3, 3
43 Os dois ltimos parmetros sero discutidos
44 no prximo captulo.
45 Agora retorno as informaes do produto encontrado.
46 Caso no tenha sido encontrado nenhum produto, informo.
47 %>
48 <HR>
49 <%
50 If Produto.RecordCount = 0 Then
51 Response.Write Nenhum produto foi encontrado para o cdigo:
52 Response.Write Request.Form(codigo) & <BR>
53 Response.Write Tente pesquisar um outro cdigo !
54 Response.Write <HR>
55 Else
56 Response.Write <B>DADOS DO PRODUTO:</B><BR>
57 Response.Write Cdigo: & produto.Fields(ProductID) & <BR>
58 Response.Write Nome: & produto.Fields(ProductName) & <BR>
59 Response.Write Cd. Fornec.: & produto.Fields(SupplierID) & <BR>
60 Response.Write Cd. Categ.: & produto.Fields(CategoryID) & <BR>
61 Response.Write Preo Unit.: & produto.Fields(UnitPrice) & <BR>
62 Response.Write Estoque: & produto.Fields(UnitsInStock) & <BR>
63 Response.Write <HR>
64 End If
65 %>
66 </BODY>
67 </HTML>
Criando Sites Dinmicos com ASP 3.0
3 1 6
Agora vamos testar o nosso exemplo. Na figura 5.39 temos o formulrio de pesquisa carregado,
onde o usurio digitou o cdigo 32.
Figura 5.39: Pesquisando o pr odut o cujo cdigo 3 2 .
Ao clicarmos no boto Clique aqui para pesquisar o produto !!, retornado o resultado
indicado na Figura 5.40.
Figura 5.40: O r esult ado da pesquisa par a o pr odut o com cdigo 3 2 .
3 1 7
Captulo 5 Conectando Pginas ASP com Bancos de Dados
Observe que no prprio formulrio do resultado, colocamos a opo do usurio entrar com
um novo cdigo para fazer outra pesquisa, conforme havamos proposto na apresentao
deste problema.
Agora vamos fazer o seguinte teste: vamos digitar um cdigo para um produto que no existe
e clicar fazer a pesquisa. Por exemplo, digite o cdigo 89 e clique no boto de pesquisa. Voc
obter o resultado indicado na Figura 5.41.
Observe que, alm de informar que o produto no foi encontrado, informado qual o cdigo
que foi digitado.
Agora vamos fazer alguns comentrios sobre a Listagem 5.4.
Figura 5.41 : Result ados par a a pesquisa de um pr odut o que no exist e.
O primeiro ponto a comentar a construo da instruo SQL na linha 34.
34 sqlbuscaproduto =SELECT * FROM Produtos where ProductID= &
Request.Form(codigo)
Nesta construo estamos utilizando a clusula Where para especificar um critrio. Ao executar a
pgina ASP, o cdigo Request.Form(Cdigo) substitudo pelo valor digitado pelo usurio. Vamos
supor que o usurio digitou 32 para o cdigo. Neste caso a nossa instruo SQL ficaria assim:
SELECT * FROM Produtos where ProductID=32
que justamente, a instruo que retorna o produto cujo cdigo igual ao digitado no
formulrio de pesquisa. Esta uma tcnica bastante til, pois inmeras vezes precisamos
construir instrues semelhantes a esta em nossas aplicaes Web.
Criando Sites Dinmicos com ASP 3.0
3 1 8
Um detalhe que devemos levar em considerao quando o critrio a ser pesquisado do
tipo texto. Neste caso, devemos colocar o critrio entre apstrofes. Para fazer isso utilizamos
a funo Chr(39) (39 o cdigo ASCII para o apstrofe) antes e depois do critrio, pois se
digitarmos o cdigo diretamente na pgina ASP, ser gerado um erro em tempo de execuo.
No exemplo a seguir ilustrada esta tcnica, onde estamos especificando um critrio para o
campo Cidade, o qual do tipo texto:
sqlbuscaproduto =SELECT * FROM Clientes where Cidade= & Chr(39)
Request.Form(Cidade) & Chr(39).
Observe o Chr(39) antes e depois do critrio.
Tambm gostaria de comentar o seguinte trecho de cdigo:
50 If Produto.RecordCount = 0 Then
51 Response.Write Nenhum produto foi encontrado para o cdigo:
52 Response.Write Request.Form(codigo) & <BR>
53 Response.Write Tente pesquisar um outro cdigo !
54 Response.Write <HR>
55 Else
56 Response.Write <B>DADOS DO PRODUTO:</B><BR>
57 Response.Write Cdigo: & produto.Fields(ProductID) & <BR>
58 Response.Write Nome: & produto.Fields(ProductName) & <BR>
59 Response.Write Cd. Fornec.: & produto.Fields(SupplierID) & <BR>
60 Response.Write Cd. Categ.: & produto.Fields(CategoryID) & <BR>
61 Response.Write Preo Unit.: & produto.Fields(UnitPrice) & <BR>
62 Response.Write Estoque: & produto.Fields(UnitsInStock) & <BR>
63 Response.Write <HR>
64 End If
Neste caso utilizamos a propriedade RecordCount do objeto Recordset. Caso esta propriedade
seja igual a zero, significa que nenhum registro foi encontrado. Neste caso, informamos ao
usurio que nenhum produto foi encontrado.
Caso tenha sido encontrado algum produto, retornamos os dados sobre o Produto, o que
feito na parte Else do lao If..Then...Else.
No prximo captulo iremos tratar de algumas tcnicas mais avanadas de pesquisa.
Concluso
Neste captulo foram apresentados diversos conceitos fundamentais para a utilizao de banco
de dados com pginas ASP.
3 1 9
Captulo 5 Conectando Pginas ASP com Bancos de Dados
Comeamos com uma reviso do Modelo Relacional de banco de dados, onde vimos conceitos
como Entidades, Atributos, Chave Primria, relacionamentos e Normalizao. Em seguida
fizemos uma rpida reviso da linguagem SQL que, conforme descrito anteriormente, de
fundamental importncia em se tratando de banco de dados.
Na seqncia, vimos as tecnologias para acesso a fontes de dados; conceitos como ODBC, OLE
DB e ADO e a maneira como os mesmos se relacionam. Tambm aprendemos a criar uma fonte
ODBC para um banco de dados do Microsoft Access e do Microsoft SQL Server 2000.
Depois estudamos o Modelo de Objetos do ADO, onde vimos em detalhes o objeto Connection.
Nos exemplos de aplicao vimos como conectar uma pgina ASP para exibir uma listagem a
partir de uma tabela de um banco de dados do Microsoft Access. Tambm aprendemos alguns
detalhes sobre o objeto Recordset, que ser melhor detalhado no prximo captulo.
Para finalizar o captulo foi apresentado um exemplo no qual o usurio digita um critrio e
efetuada uma pesquisa em uma tabela do banco de dados, com base no critrio digitado
pelo usurio.
3 2 1
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
Capt ul o 6
Bancos de Dados com ASP
Conceitos Avanados Parte I
Criando Sites Dinmicos com ASP 3.0
3 2 2
Int r oduo
Neste captulo veremos uma srie de conceitos avanados sobre a conexo de pginas ASP
com bancos de dados.
Aprenderemos mais detalhes sobre conexes com fontes de dados, inclusive como conectar,
sem a utilizao de ODBC, somente atravs da utilizao do objeto Connection e de sua
propriedade ConnectionString.
Estudaremos, detalhadamente, o objeto Recordset, aprendendo a utilizar suas propriedades,
mtodos e colees. Teremos um item sobre a utilizao de Cursores e sobre Lock em banco de
dados. Estes so conceitos de grande importncia que so, muitas vezes, ignorados. A correta
utilizao de cursores fundamental para a construo de aplicaes Web, utilizando ASP.
Tambm aprenderemos a interagir com fontes de dados, no somente atravs de consultas.
Aprenderemos a inserir, alterar e excluir dados que no sejam mais necessrios. Neste item
continuaremos utilizando, intensamente, as propriedades, mtodos e colees do objeto Recordset.
Sero apresentados alguns exemplos prticos de utilizao, como o clssico exemplo de
construo de uma Caixa de combinao de maneira dinmica. Por exemplo, em um
determinado formulrio, necessito de uma Caixa de combinao que liste todos os Bairros da
cidade de Porto Alegre. Podemos construir esta lista, dinamicamente, a partir de um banco de
dados, onde tenhamos esta informao armazenada em uma tabela.
Veremos exemplos prticos de operaes de insero, alterao e excluso de registros,
utilizando pginas ASP. Tambm aprenderemos a filtrar os registros retornados por um objeto
RecordSet.
Veremos como construir instrues SQL que utilizam funes para gerar campos calculados,
os quais no existem nas tabelas dos banco de dados. Por exemplo, utilizaremos a funo
Year para criar um campo que retorna apenas o ano de um campo data. Depois utilizaremos
este campo para filtrar os resultados obtidos.
Com os assuntos tratados neste captulo, teremos estudado diversos aspectos do Modelo de
Objetos ADO. Mas de maneira alguma teremos esgotado o assunto, uma vez que o mesmo
bastante extenso. Nos demais captulos do livro continuaremos a aprender um pouco mais
sobre ADO, alm de outros assuntos, como gerenciamento de sesses e aplicaes, utilizao
de componentes ASP do servidor, segurana e tratamento de erros dentre outros.
3 2 3
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
Est abelecendo Conexes sem a Ut ilizao de ODBC
Vamos repetir uma figura que foi apresentad no Captulo 5, a qual ilustra a conexo de pginas
ASP com fontes de dados, atravs da utilizao de OLE DB, conforme indicado na Figura 6.1.
Figura 6.1 : Acessando font es de dados com OLE DB.
Conforme ilustrado nesta figura, possvel o acesso a fontes de dados sem a utilizao de
ODBC. Este um ponto de confuso entre muitos programadores iniciantes em ASP. Em
diversas conversas com colegas que estavam iniciando o estudo de ASP, surgiu esta dvida:
possvel conectar com uma fonte de dados, como por exemplo um banco de dados do
Microsoft Access, sem a utilizao de um driver ODBC?
A resposta sim; perfeitamente possvel. Para isto basta criar um objeto Connection e
configurar corretamente a sua propriedade ConnectionString.
A propriedade ConnectionString deve conter as informaes necessrias para estabelecer a
conexo com uma fonte de dados. Atravs desta propriedade, devemos fornecer informaes
tais como:
Provedor
Nome do usurio
Senha do usurio
Nome do arquivo
OLE DB
Jet
Pr ovider
Jet
Pr ovider
Exchange
Ser ver
Pr ovider
Ger enciador ODBC
M icr osof t
Access
M icr osof t
SQL
Ser ver
M icr osof t
Exchange
Ser ver
M icr osof t
Access
M icr osof t
SQL
Ser ver
ORACLE
OLE DB Providers
Drivers ODBC
Dr iver ODBC
SQL Ser ver
Dr iver ODBC
M icr osof t Access
Dr iver ODBC
Or acle
Font es de dados: Est r ut ur adas e No est r ut ur adas.
Criando Sites Dinmicos com ASP 3.0
3 2 4
Nome do servidor (como no caso de um servidor SQL Server)
Nome do banco de dados no servidor
So informaes necessrias para que a pgina ASP possa estabelecer a conexo com a fonte
de dados, utilizando o OLE DB Provider correto. Pode at ser que seja utilizado o OLE DB
Provider para ODBC, mas isto no obrigatrio.
Agora aprenderemos um pouco mais sobre a propriedade ConnectionString. Tambm veremos
alguns exemplos de utilizao desta propriedade.
A Pr opr iedade Connect ionSt r ing
Esta propriedade deve ser configurada de maneira diferente, de acordo com a fonte de dados
que estiver sendo utilizada. Por exemplo, a configurao para acessar um banco de dados do
Microsoft Access diferente da configurao para acessar um banco de dados do Microsoft
SQL Server ou do Oracle. Vamos estudar como configurar esta propriedade para acessar
algumas das principais fontes de dados: Microsoft Access, Microsoft SQL Server e Oracle.
A propriedade ConnectionString possui uma srie de comandos no formato:
argumento = valor
onde argumento pode ser a informao sobre o provedor, o nome do usurio, etc. Apenas a
ttulo de exemplo, listamos a seguir a propriedade ConnectionString do exemplo da Listagem
5.2, do captulo anterior:
Provider=MSDASQL.1;Data Source=nwind;Extended Properties=DSN=nwind;DBQ=C:\MEUS
DOCUMENTOS\NWIND.MDB;DriverId=281;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;
Agora vamos decifrar e aprender a utilizar esta propriedade.
Configur ando Conexes com Bancos de Dados do M icr osof t Access
Para configurar a propriedade ConnectionString para estabelecer uma conexo com um banco
de dados do Microsoft Access, podemos configurar os parmetros indicados na Tabela 6.1.
Tabela 6.1 Definindo a propriedade ConnectionString para uma fonte do Microsoft Access.
Propriedade Descrio
Provider Deve ser especificado o OLE DB Provider para o Microsoft
Access. Para esta propriedade utilizamos o seguinte valor:
Microsoft.Jet.OLEDB.4.0.
3 2 5
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
IMPORTANTE
Por padro, o OLE DB Provider para Microsoft Access (tambm chamado de Jet OLE DB Provider),
abre o banco de dados com permisso de leitura e escrita, isto , os dados tambm podem ser
modificados. Para alterar o modo de abertura, para, por exemplo, somente escrita, devemos utilizar
a propriedade Mode, do objeto Connection.
Abaixo temos um exemplo de uma conexo com um banco de dados, utilizando a propriedade
ConnectionString:
1 Set conn=Server.CreateObject(ADODB.Connection)
conn.Open PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=c:\meus documentos\
nwind.mdb
Primeiro criamos um objeto do tipo Connection. Depois utilizamos o mtodo Open, para
abrir esta conexo. Observe que aps o mtodo Open passada uma String de conexo com
o parmetro para o mtodo Open. Este parmetro a propriedade ConnectionString.
Poderamos obter o mesmo resultado de uma maneira diferente: primeiro vamos definir a
propriedade ConnectionString, depois simplesmente chamamos o mtodo Open. Ao chamar
o mtodo Open, o mesmo verifica se a propriedade ConnectionString j est definida e utiliza
a mesma. Nosso exemplo ficaria assim:
1 Set conn=Server.CreateObject(ADODB.Connection)
2 conn.ConnectionString = PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=c:\meus
documentos\nwind.mdb
3 conn.Open
Neste caso, na linha 2 foi definida a propriedade ConnectionString e na linha 3 utilizamos o
mtodo Open.
Propriedade Descrio
Data Source Informamos o caminho para o arquivo .mdb. Por exemplo,
C:\Arquivos de programas\office\nwind.mdb.
User ID Especifica o nome do usurio com a qual a conexo ser
estabelecida. Caso esta propriedade no seja informada, a
mesma ser definida como admin, o qual o usurio padro.
Password Informa a senha para o usurio que far a conexo. Caso no esta
propriedade no seja informada, a mesma ser definida como .
Criando Sites Dinmicos com ASP 3.0
3 2 6
OBSERVAO
Utilizamos os nmeros de linha apenas para referncia. Quando criamos nossas pginas ASP
no devemos utilizar nmeros de linhas.
NOTA
A linha 2 aparece quebrada em duas linhas por questes de espao para exibio, mas a
mesma deve ser digitada em uma nica linha.
No exemplo a seguir, temos um caso onde foi fornecido o nome do usurio e a senha para
conexo:
1 Set conn=Server.CreateObject(ADODB.Connection)
2 conn.ConnectionString = PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=c:\meus
documentos\nwind.mdb; User ID=jsilva;Password=senha12
3 conn.Open
Para maiores detalhes sobre segurana de bancos de dados do Microsoft Access, consulte a
documentao do prprio Access.
Configur ando Conexes com Bancos de Dados do M icr osof t SQL Ser ver
Para configurar a propriedade ConnectionString para estabelecer uma conexo com um banco
de dados do Microsoft SQL Server, podemos configurar os parmetros indicados na Tabela 6.2.
Tabela 6.2 Definindo a propriedade ConnectionString para uma fonte do Microsoft Access.
Propriedade Descrio
Provider Deve ser especificado o OLE DB Provider para
o Microsoft SQL Server. Para esta propriedade
utilizamos o seguinte valor: SQLOLEDB.
Data Source ou Server Informamos o nome do servidor SQL.
Initial Catalog ou Database Nome do banco de dados a ser utilizado. Em
um servidor SQL, podem existir vrios bancos
de dados.
User ID ou uid Especifica o nome do usurio com o qual a
conexo ser estabelecida.
3 2 7
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
Na Listagem 6.1, temos um exemplo de uma conexo com um banco de dados do Microsoft
SQL Server, utilizando a propriedade ConnectionString:
Listagem 6.1 Conectando com um banco de dados do Microsoft SQL Server 2000
nwind_sql.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 <TITLE>Conectando com o SQL Server 2000</TITLE>
5 </HEAD>
6 <BODY>
7 <H1>
8 <FONT color=navy>Pedidos da Empresa ABC Ltda.</FONT>
9 </H1>
10 <%
11 O primeiro passo criar a conexo com o banco de dados
12 Para isto crio um objeto do tipo Connection
13 Cria um objeto do tipo ADODB.Connection
14 Set conn=Server.CreateObject(ADODB.Connection)
15 Agora defino a propriedade ConnectionString do objeto Connection
16 criado anteriormente.
17 conn.ConnectionString = PROVIDER=SQLOLEDB;
Data Source=SERVIDOR\SERVIDOR;Initial Catalog=Northwind;
User ID=sa;Password=senha123"
18 conn.Open
19 O prximo passo criar uma instruo SQL
20 inst_sql=SELECT Orders.OrderID, Orders.OrderDate, Orders.ShipCity,
Orders.ShipCountry FROM Orders ORDER BY Orders.OrderDate
Propriedade Descrio
Password ou pwd Informa a senha para o usurio que far a
conexo. Caso esta propriedade no seja
informada, a mesma ser definida como .
Criando Sites Dinmicos com ASP 3.0
3 2 8
21 Esta instruo SQL retorna os campos OrderID, OrderDate,
ShipCity e ShipCountry, da tabela Orders, do banco de dados NorthWind.
22 Agora criamos um objeto RecordSet.
23 Este objeto ir executar a instruo SQL e
24 receber o resultado da consulta.
25 Set Pedidos = Server.CreateObject(ADODB.Recordset)
26 Agora executamos a instruo SQL
27 Pedidos.Open inst_sql, conn, 3, 3
28 Neste ponto j tenho todos os registros retornados
29 pela instruo SQL. Estes registros esto armazenados
30 no objeto Pedidos, que um objeto do tipo Recordset.
31 Agora passo a montar a pgina que ser retornada para o
32 navegador do cliente. Vamos montar uma tabela com o
33 resultado da consulta.
34 %>
35 <P>
36 <HR>
37 <TABLE bgColor=gray border=1 borderColor=navy cellPadding=1 cellSpacing=1
width=100%>
38 <TR>
39 <TD align=middle bgColor=gray>Cdigo</TD>
40 <TD align=middle bgColor=gray>Data</TD>
41 <TD align=middle bgColor=gray>Cidade</TD>
42 <TD align=middle bgColor=gray>Pas</TD>
43 </TR>
44 <%
45 Inicio um Loop para percorrer todos os registros
46 do RecordSet Pedidos, exibindo um registro em
47 cada linha da tabela.
48 Do Until Pedidos.eof %>
3 2 9
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
49 <TR>
50 <TD align=middle bgColor=gray><%=Pedidos.Fields(OrderID)%></TD>
51 <TD align=middle bgColor=gray><%=Pedidos.Fields(OrderDate)%></TD>
52 <TD align=middle bgColor=gray><%=Pedidos.Fields(ShipCity)%></TD>
53 <TD align=middle bgColor=gray><%=Pedidos.Fields(ShipCountry)%></TD>
54 </TR>
55 <% Pedidos.MoveNext
56 Loop %>
57 </TABLE>
58 </P>
59 <HR>
60 </BODY>
61 </HTML>
Ao acessarmos este arquivo, obtemos o resultado indicado na Figura 6.2.
Figura 6.2: Dados car r egados a par t ir do M icr osof t SQL Ser ver.
Criando Sites Dinmicos com ASP 3.0
3 3 0
Alguns detalhes importantes a serem comentados a respeito deste exemplo:
Primeiro, vamos considerar o seguinte fragmento de cdigo:
17 conn.ConnectionString = PROVIDER=SQLOLEDB;
Data Source=SERVIDOR\SERVIDOR;Initial Catalog=Northwind;
User ID=sa;Password=senha123"
18 conn.Open
Observe que, neste caso, primeiro definimos a propriedade ConnectionString, depois
utilizamos o mtodo Open, para abrir a conexo. O mtodo Open utiliza as informaes da
propriedade ConnectionString, j definida, para estabelecer a conexo com o banco de dados.
Segundo, vamos considerar a String de conexo:
PROVIDER=SQLOLEDB;
Data Source=SERVIDOR\SERVIDOR;
Initial Catalog=Northwind;
User ID=sa;Password=senha123"
Observe que estamos informando os parmetros descritos na tabela a seguir.
Tabela 6.3 Parmetros para a String de conexo com o servidor SQL Server.
Temos dois parmetros que merecem maiores comentrios.
O parmetro Data Source ou Server foi informado da seguinte maneira:
SERVIDOR\SERVIDOR
Este formato uma novidade do Microsoft SQL Server 2000. O valor antes da barra (\) o
nome do servidor e o valor depois da barra o nome da instncia do SQL Server a ser
utilizada (neste exemplo igual ao nome do servidor, mas poderia ser diferente). Com o
Microsoft SQL Server 2000, posso ter vrias instncias do servidor SQL, isto como se eu
tivesse vrios servidores SQL Server 2000 diferentes no mesmo equipamento, sendo que
cada um deles deve possuir um nome diferente. Assim poderamos ter o seguinte exemplo:
Parmetro Valor fornecido
Provider SQLOLEDB
Data Source ou Server SERVIDOR\SERVIDOR
Initial Catalog ou Northwind
User ID ou uid sa
Password ou pwd senha123
3 3 1
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
SERVIDOR\SERVIDOR
SERVIDOR\PRODUCAO
SERVIDOR\ESPECIAL
Neste caso temos trs instncias do servidor SQL Server 2000 no computador de nome
SERVIDOR. As trs instncias so:
SERVIDOR
PRODUCAO
ESPECIAL
Quando vou definir a String de conexo, preciso definir a qual instncia quero conectar a
pgina ASP.
Se voc estiver utilizando o Microsoft SQL Server 7.0, basta fornecer o nome do servidor.
Neste caso definiramos a propriedade ConnectionString da seguinte maneira:
PROVIDER=SQLOLEDB;
Data Source=SERVIDOR;
Initial Catalog=Northwind;
User ID=sa;Password=senha123
Observe que estamos conectando com o banco de dados Northwind. Dentro deste
banco de dados, a nossa instruo SQL acessa dados da tabela Orders, conforme
indicado pelo seguinte fragmento de cdigo:
20 inst_sql=SELECT Orders.OrderID, Orders.OrderDate, Orders.ShipCity,
Orders.ShipCountry FROM Orders ORDER BY Orders.OrderDate
Com esta instruo so retornados os campos OrderID, OrderDate, ShipCity e ShipCountry.
Alm disso a listagem obtida classificada pelo campo OrderDate, conforme pode ser
confirmado pelos resultados exibidos na Figura 6.2.
Configur ando Conexes com Bancos de Dados ORACLE
Para configurar a propriedade ConnectionString para estabelecer uma conexo com um banco
de dados de um servidor ORACLE, podemos configurar os parmetros indicados na Tabela 6.4:
Tabela 6.4 Definindo a propriedade ConnectionString para uma fonte ORACLE.
Propriedade Descrio
Provider Deve ser especificado o OLE DB Provider para o ORACLE. Para
esta propriedade utilizamos o seguinte valor: MSDAORA.
Data Source Informamos o nome do servidor ORACLE.
Criando Sites Dinmicos com ASP 3.0
3 3 2
Abaixo temos um exemplo de uma conexo com um banco de dados, utilizando a propriedade
ConnectionString:
1 Set conn=Server.CreateObject(ADODB.Connection)
2 conn.Open Provider=MSDAORA;Data Source=SERVIDOR;User ID=admin; Password=admin123
Primeiro criamos um objeto do tipo Connection. Depois utilizamos o mtodo Open, para
abrir esta conexo. Observe que aps o mtodo Open passada uma String de conexo como
parmetro para o mtodo Open. Este parmetro a propriedade ConnectionString.
Poderamos obter o mesmo resultado de uma maneira diferente: primeiro vamos definir a
propriedade ConnectionString, depois simplesmente chamamos o mtodo Open. Ao chamar
o mtodo Open, o mesmo verifica se a propriedade ConnectionString j est definida e a
utiliza. Nosso exemplo ficaria assim:
1 Set conn=Server.CreateObject(ADODB.Connection)
2 conn.ConnectionString = Provider=MSDAORA;Data Source=SERVIDOR;
User ID=admin; Password=admin123
3 conn.Open
Neste caso, na linha 2 foi definida a propriedade ConnectionString e na linha 3 utilizamos o
mtodo Open.
OBSERVAES
Utilizamos os nmeros de linha apenas para referncia. Quando criamos nossas pginas ASP
no devemos utilizar nmeros de linhas.
NOTA
A linha 2 aparece quebrada em duas linhas por questes de espao para exibio, mas a
mesma deve ser digitada em uma nica linha.
IMPORTANTE
Para maiores detalhes sobre o ORACLE, consulte a documentao do produto.
Propriedade Descrio
User ID Especifica o nome do usurio com o qual a conexo ser
estabelecida.
Password Informa a senha para o usurio que far a conexo.
3 3 3
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
Microsoft Access, Microsoft SQL Server e ORACLE so os casos mais comuns de conexes de
pginas ASP com fontes de dados. Porm, conforme descrito no Captulo 5, atravs de OLE
DB podemos estabelecer conexes com qualquer fonte de dados para a qual esteja disponvel
um OLE DB Provider, inclusive fontes de dados no estruturadas no formato de bancos de
dados relacionais. Como exemplos de fontes que no possuem o tradicional formato dos
bancos de dados relacionais, poderamos citar os arquivos de mensagens de correio eletrnico
do Microsoft Exchange ou do Lotus Notes, um catlogo de indexao do Microsoft Index
Server ou, at mesmo, uma fonte de dados residente em um Mainframe.
Alguns Det alhes Finais Sobr e o Objet o Connect ion
Agora veremos mais alguns detalhes importantes sobre o objeto Connection. Conforme
mostrado nos exemplos prticos, para conectar uma pgina ASP com uma fonte de dados,
estamos utilizando os seguintes passos:
Criamos um objeto do tipo Connection e conectamos este objeto com uma fonte de
dados, quer seja via ODBC (como nos exemplos do Captulo 5), quer seja via OLE DB
(como nos exemplos deste captulo).
Criamos um objeto do tipo RecordSet e executamos uma instruo SQL. Feito isto, o
objeto RecordSet conter os dados retornados pela fonte de dados.
Uma vez obtidos os dados, utilizamos cdigo ASP para exibir os resultados desejados. Esta
metodologia funciona sem maiores problemas, porm existem alguns aspectos importantes a
serem considerados, tais como o encerramento de uma conexo e o nvel de acesso aos dados
oferecido por determinada conexo.
O M t odo Close
O mtodo Close utilizado para fechar/encerrar uma conexo e quaisquer outros objetos que
sejam dependentes da conexo. Por exemplo, se criamos um objeto RecordSet que obteve
dados a partir da conexo que est sendo encerrada, o objeto RecordSet tambm ser encerrado.
A sintaxe deste mtodo bastante simples. Vamos supor que tenhamos criado uma conexo
chamada Clientes; para encerr-la, poderamos utilizar o seguinte cdigo:
<% Clientes.Close %>
Ao fecharmos um objeto, estaremos liberando os recursos computacionais que o mesmo
utilizava, tais como conexes e uso do processador. Porm o objeto continua na memria,
com isso podemos utilizar o mtodo Open para abrir novamente a conexo e voltar a utiliz-
Criando Sites Dinmicos com ASP 3.0
3 3 4
la. No exemplo abaixo, fechamos o objeto Clientes e depois voltamos a abri-lo, utilizando o
mtodo Open.
<% Clientes.Close
Clientes.Open
%>
Neste caso poderamos voltar a utilizar o objeto Clientes. Para remover um objeto, em definitivo,
da memria, devemos definir o seu valor como Nothing, conforme indicado no exemplo:
<% Set Clientes = Nothing %>
Feito isso, somente poderemos voltar a utilizar o objeto se o mesmo for novamente criado,
utilizando o seguinte cdigo:
Set Clientes = Server.CreateObject(ADODB.Connection)
Observe que, pelo fato de Clientes ser um objeto (do tipo Connection) e no simplesmente uma
varivel, devemos utilizar o operador Set. Se tentarmos criar ou remover um objeto, sem a
utilizao do operador Set, obteremos uma mensagem de erro e a pgina no ser exibida.
Pool de Conexes
Quando um usurio fecha uma conexo, atravs da utilizao do mtodo Close, conforme
descrito anteriormente, esta conexo mantida na memria e adicionada a um Pool de
conexes inativas. Da prxima vez que o mesmo usurio, ou qualquer outro, for abrir uma
nova conexo, o OLE DB primeiro verifica se, no Pool de conexes inativas, existe uma conexo
exatamente igual ao que o usurio est solicitando. Se for encontrada, a mesma ser utilizada,
caso contrrio uma nova conexo ser criada e enviada para o usurio que solicitou.
O OLE DB mantm um Pool de conexes porque o processo de criar uma conexo o que
mais exige recursos do servidor Web. Sempre que uma conexo puder ser reaproveitada, a
partir do Pool de conexes, estaremos economizando recursos do servidor.
As conexes inativas no permanecem indefinidamente no Pool de conexes. Aps um perodo
padro sem utilizao, as mesmas so removidas, para no onerar os recursos do servidor
Web, sem que estejam sendo utilizadas.
A utilizao de Pool de conexes de grande importncia, principalmente para servidores
Web muito acessados, em que novas conexes esto sendo criadas e fechadas a todo instante.
Neste caso o Pool de conexes representa um alvio na carga de recursos como memria RAM
e processador.
3 3 5
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
O Objet o Recor dSet
Nos exemplos que foram apresentados at aqui, j utilizamos o RecordSet. Agora chegou o
momento de fazer um estudo mais aprofundado deste objeto.
O objeto RecordSet contm o resultado de uma instruo SQL executada em um banco de
dados. Contm um conjunto de Registros. como se fosse uma tabela, onde cada linha um
registro, e cada registro formado por um conjunto de campos (colunas da tabela). Por exemplo,
ao executarmos a seguinte instruo SQL:
Select * from Pedidos
Estaremos selecionando todos os registros da tabela Pedidos, os quais podero ser acessados
atravs de um objeto do tipo RecordSet.
Existem detalhes importantes que devemos conhecer a respeito do acesso aos dados. Devemos
considerar questes como:
O acesso deve ser somente para leitura dos dados ou devem ser permitidas alteraes
e inseres de novos dados?
Como tratar questes sobre o acesso simultneo aos dados? Por exemplo, como tratar a
situao em que dois usurios tentam alterar o mesmo registro, ao mesmo tempo?
Estas so questes importantes e devem ser consideradas sempre que formos disponibilizar
acesso aos dados da nossa empresa, para usurios da Internet. Tambm precisamos conhecer
o que so Cursores, quais os tipos disponveis e para que utilizamos. Vamos estudar estes
pontos neste tpico.
Para criar um objeto RecordSet, utilizamos a seguinte sintaxe:
Set Pedidos = Server.CreateObject(ADODB.Recordset)
Neste exemplo estamos criando um RecordSet chamado Pedidos. Uma vez criado o RecordSet,
o prximo passo utilizarmos o mtodo Open. Este mtodo possui a seguinte sintaxe:
recordset.Open Source, ActiveConnection, CursorType, LockType, Options
Considere o exemplo:
Pedidos.Open inst_sql, conn, 3, 3
Os parmetros a serem passados para o mtodo Open esto descritos na Tabela 6.5.
Criando Sites Dinmicos com ASP 3.0
3 3 6
Tabela 6.5 Parmetros do mtodo Open do objeto RecordSet.
Cur sor es
Um Cursor o mecanismo utilizado em ADO para gerenciar o conjunto de registros de um
objeto RecordSet. Somente podemos ter acesso a um registro chamado de Registro Corrente.
Quando utilizamos o mtodo Open, por padro, o primeiro registro o Registro Corrente.
Um Cursor tambm utilizado para determinar qual o Registro Corrente, bem como para
movimentar o indicador de registro entre os diversos registros do objeto RecordSet. O
mecanismo que identifica qual o Registro Corrente chamado de Record pointer. Quem
lida com a manipulao do Record pointer o Cursor. Por isso quando utilizamos os mtodos
MoveNext (mover para o prximo registro), MovePrevious (mover para o registro anterior) ou
qualquer outro mtodo de movimentao, estamos utilizando o Cursor.
O mecanismo do Cursor tambm gerencia situaes em que tentamos avanar alm do ltimo
registro ou voltar alm do primeiro registro, ou quando acessamos o valor de um campo de
Parmetro Descrio
Source Pode ser o nome de um objeto Command; uma instruo
SQL ou o nome de uma varivel que contm uma
instruo SQL; o nome de uma tabela ou de um Store
Procedure do banco de dados; ou at uma URL que
aponta para uma fonte de dados.
ActiveConnection O nome da conexo a ser utilizada ou a String de conexo
para uma fonte de dados ODBC ou OLE DB. opcional.
CursorType um valor que determina o tipo de cursor que ser
utilizado pelo provedor de dados na abertura do
RecordSet. opcional. Falaremos mais sobre tipos de
cursores ainda neste item.
LockType um valor que determina o tipo de Lock que ser utilizado
pelo provedor de dados na abertura do RecordSet. opcional.
Falaremos mais sobre tipos de Lock ainda neste item.
Options Um valor do tipo Long, o qual define como o provedor de
dados deve avaliar o argumento Source, quando o mesmo
for algo diferente de um objeto Command, ou quando o
RecordSet deve ser recuperado a partir de um arquivo
salvo previamente.
3 3 7
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
um registro. De uma maneira simples, podemos afirmar que grande parte da funcionalidade
de um objeto RecordSet fornecida pelo mecanismo do Cursor.
Quando utilizamos o mtodo Open, podemos definir diferentes formas de comportamento
para o mecanismo do Cursor. So estas formas que determinam os tipos de Cursores
disponveis, conforme a Tabela 6. 6. O tipo do Cursor pode ser definido com um valor numrico
ou atravs de uma constante.
Tabela 6.6 Tipos de Cursores disponveis.
Valor/Constante Tipo/Descrio
3 Define um Cursor do tipo Static. Um Cursor deste tipo
adOpenStatic contm uma cpia esttica dos registros. O contedo
do RecordSet definido no momento da criao do
mesmo. Caso sejam feitas alteraes no banco de dados,
estas alteraes no sero visveis para o RecordSet que
utiliza um Cursor do tipo Static. Somente recriando o
RecordSet que poderemos ter acesso s alteraes
efetuadas. Podemos movimentar o ponteiro de registro
em ambas as direes, isto , podemos utilizar os
mtodos MoveNext, MovePrevious e assim por diante.
0 Cria um Cursor do tipo Forward Only. Este o valor
adOpenForwardOnly padro que ser utilizado caso no seja definido nenhum
outro tipo. Somente podemos utilizar o mtodo MoveNext.
Se tentarmos utilizar um outro mtodo de movimentao,
ser gerado um erro e a pgina no ser carregada. Tambm
um Cursor do tipo Static, com a diferena que somente
podemos nos movimentar para a frente.
2 Cria um Cursor do tipo Dynamic. Um Cursor deste tipo
adOpenDynamic no possui um conjunto fixo de registros. Quaisquer
alteraes, adies e excluses feitas por outros usurios
sero visveis para o objeto RecordSet, sem que o
mesmo tenha que ser eliminado e recriado. Podemos nos
movimentar em ambas as direes dentro do RecordSet.
1 Cria um Cursor do tipo Keyset. Um Cursor deste tipo
adOpenKeyset parecido com um Cursor Dynamic, com a exceo de
que o conjunto de registros fixo. O RecordSet
enxerga as alteraes feitas por outros usurios, porm
a adio de novos registros no visvel para um
Criando Sites Dinmicos com ASP 3.0
3 3 8
O tipo de Cursor a ser utilizado depende da aplicao que estamos desenvolvendo. Por
exemplo, se estamos desenvolvendo uma pgina ASP apenas para exibir um conjunto de
registros, podemos utilizar um cursor do tipo Static. Cursores mais simples, como o do
tipo Static, consomem menos recursos. Cursores mais sofisticados, como o do tipo
Dynamic, consomem mais recursos computacionais. Estes recursos podem ser consumidos
na estao do cliente ou no servidor Web, dependendo da localizao do Cursor. Veremos
como definir a localizao do Cursor atravs da utilizao da propriedade CursorLocation,
no prximo item.
Agora alguns exemplos de utilizao do mtodo Open.
Este exemplo cria um RecordSet chamado Clientes e define um cursor do tipo Static:
<%
inst_sql=Select * from Clientes
Set Clientes = Server.CreateObject(ADODB.Recordset)
Clientes.Open inst_sql, conn, 3, 3
%>
Ao invs de utilizarmos o valor 3, podemos utilizar a constante correspondente adOpenStatic,
conforme o exemplo:
<%
inst_sql=Select * from Clientes
Set Clientes = Server.CreateObject(ADODB.Recordset)
Clientes.Open inst_sql, conn, adOpenStatic, 3
%>
O prximo exemplo cria um RecordSet chamado Clientes e define um Cursor do tipo Keyset.
<%
inst_sql=Select * from Clientes
Set Clientes = Server.CreateObject(ADODB.Recordset)
Clientes.Open inst_sql, conn, 1, 3
%>
Valor/Constante Tipo/Descrio
RecordSet deste tipo. Caso algum registro seja
eliminado por outros usurios, o respectivo registro
estar inacessvel. podemos nos movimentar em
ambas as direes dentro do RecordSet.
3 3 9
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
Ao invs de utilizarmos o valor 1, podemos utilizar a constante correspondente adOpenKeyset,
conforme o exemplo:
<%
inst_sql=Select * from Clientes
Set Clientes = Server.CreateObject(ADODB.Recordset)
Clientes.Open inst_sql, conn, adOpenKeyset, 3
%>
Localizao do Cur sor
O Cursor pode estar localizado no servidor Web ou no cliente que est acessando os dados.
Algumas fontes de dados, como o Microsoft SQL Server, podem oferecer servios de Cursor
no servidor. O Microsoft Access no oferece servios de Cursor e, com isso, o mesmo fica
localizado no cliente. Quando acessamos fontes de dados, utilizando OLE DB, podemos utilizar
o servio de Cursor oferecido pelo prprio OLE DB. A opo padro, caso no seja definido
nada em contrrio, que o Cursor esteja no servidor.
Para definir a localizao do cursor, devemos utilizar a propriedade CursorLocation, do objeto
RecordSet. Definimos esta propriedade antes da utilizao do mtodo Open deste objeto. A
Tabela 6.7 descreve os valores possveis para esta propriedade.
Tabela 6.7 Valores para a propriedade CursorLocation.
No prximo exemplo, definimos o Cursor no cliente:
<%
inst_sql=Select * from Clientes
Set Clientes = Server.CreateObject(ADODB.Recordset)
Clientes.CursorLocation = 3
Clientes.Open inst_sql, conn, 3, 3
%>
Valor/Constante Tipo/Descrio
3 Utiliza servios de Cursor no cliente.
adUseClient
1 No utiliza servios de Cursor. Somente mantido por
adUseNone questes de compatibilidade com as verses anteriores.
2 Utiliza servios de Cursor do servidor ou do provedor
adUseServer OLE DB.
Criando Sites Dinmicos com ASP 3.0
3 4 0
IMPORTANTE
A propriedade CursorLocation deve ser definida antes da utilizao do mtodo Open. Se
tentarmos definir a propriedade CursorLocation, com o RecordSet aberto, obteremos a seguinte
mensagem de erro:
Tipo de erro:
ADODB.Recordset (0x800A0E79)
Operation is not allowed when the object is open.
/Capitulo6/pubs_sql.asp, line 40
A mensagem indica que a operao (definir a localizao do Cursor) no permitida quando
o objeto est aberto.
Ao invs de utilizarmos o valor 3, podemos utilizar a constante correspondente, adUseClient,
conforme o exemplo:
<%
inst_sql=Select * from Clientes
Set Clientes = Server.CreateObject(ADODB.Recordset)
Clientes.CursorLocation = adUseClient
Clientes.Open inst_sql, conn, adOpenStatic, 3
%>
Quando criamos um RecordSet com o Cursor no servidor, responsabilidade do servidor gerenciar
a navegao e as atualizaes do RecordSet, sendo que sero consumidos recursos no servidor.
Ao utilizar o Cursor no cliente, todo o contedo do RecordSet copiado para a estao do
cliente e gerenciado por um Cursor local. Devemos considerar a questo da velocidade da
conexo do usurio com a Internet ou com a Intranet da empresa, pois se o RecordSet for
muito grande, isto , um grande nmero de registros, o tempo para copi-lo todo ser
considervel. Porm, uma vez copiado o RecordSet para a estao do cliente, a utilizao do
mesmo mais rpida, pois no preciso acessar o servidor para simples operaes, tais como
movimentar-se para o prximo registro.
Quando uma aplicao Web desenvolvida, a localizao dos Cursores deve ser discutida na
fase de projeto, sempre procurando propiciar o melhor desempenho possvel para a aplicao.
Em uma mesma aplicao posso ter pginas que utilizam o Cursor no servidor e outras que
utilizam o Cursor no cliente, depende apenas da natureza de cada pgina.
No prximo exemplo, definimos o Cursor no servidor:
<%
inst_sql=Select * from Clientes
3 4 1
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
Set Clientes = Server.CreateObject(ADODB.Recordset)
Clientes.CursorLocation = 2
Clientes.Open inst_sql, conn, 3, 3
%>
Ao invs de utilizarmos o valor 2, podemos utilizar a constante correspondente, adUseServer,
conforme o exemplo:
<%
inst_sql=Select * from Clientes
Set Clientes = Server.CreateObject(ADODB.Recordset)
Clientes.CursorLocation = adUseServer
Clientes.Open inst_sql, conn, adOpenStatic, 3
%>
Lembrando que no necessrio definir o Cursor no servidor, pois essa a definio padro,
ou seja, se no for definida, explicitamente, a propriedade CursorLocation assume o valor
adUseServer.
Lock de Regist r os
Os bancos de dados utilizam o Lock de registros como uma maneira de garantir a integridade
dos dados. Com a utilizao do Lock garantimos que um mesmo registro no esteja sendo
alterado, simultaneamente, por mais do que um usurio. Quando um usurio acessa um registro
para fazer alguma alterao, o mesmo bloqueado, de tal forma que outros usurios no possam
ter acesso a ele. O acesso ao registro somente ser liberado aps as alteraes terem sido salvas
no banco de dados. O tipo de Lock definido pela propriedade LockType do objeto RecordSet.
Existem diferentes maneiras de se fazer o Lock dos registros, conforme descrito na Tabela 6.8.
Tabela 6.8 Tipos de Lock.
Valor/Constante Tipo/Descrio
1 Cria um Lock do tipo Read Only. o tipo padro de
adLockReadOnly Lock. O RecordSet somente leitura, isto , os registros
no podem ser modificados, logo no precisam ser
bloqueados. Com isso tem um processamento mais
rpido, porm perde-se a capacidade de fazer alteraes
nos registros.
2 Cria um Lock do tipo Pessimistic. O provedor OLE DB
adLockPessimistic tenta bloquear o registro no momento em que o mesmo
comea a ser editado. Isso feito para tentar garantir
que o registro ser editado com sucesso.
Criando Sites Dinmicos com ASP 3.0
3 4 2
A maneira e os tipos de Lock possveis de serem utilizados tambm dependem da fonte de
dados que est sendo utilizada. Quando no existe a necessidade de fazer alteraes nos
registros, devemos utilizar, sempre, um Lock do tipo Read Only (ou seja, como o RecordSet
apenas leitura, os registros no precisam ser bloqueados), pois isso evita que o Provider tenha
que fazer verificaes ao acessar cada registro, para verificar se o registro no est bloqueado
no momento. Assim teremos um processamento bem mais rpido.
Um registro bloqueado no pode nem sequer ser visualizado pelos usurios, evitando-se que
seja exibido um registro que est sendo alterado.
Para definir o tipo de Lock, utilizamos a propriedade LockType, conforme indicado no exemplo
a seguir, onde definimos o tipo de Lock como Optimistic:
<%
inst_sql=Select * from Clientes
Set Clientes = Server.CreateObject(ADODB.Recordset)
Clientes.LockType = 3
Clientes.Open inst_sql, conn, 3, 3
%>
IMPORTANTE
A propriedade LockType deve ser definida antes da utilizao do mtodo Open. Ao tentarmos
definir a propriedade CursorLocation, com o RecordSet aberto, obteremos a seguinte
mensagem de erro:
Valor/Constante Tipo/Descrio
3 Cria um Lock do tipo Optimistic. O registro no
adLockOptimistic bloqueado enquanto as alteraes no forem salvas
no banco de dados atravs da utilizao do mtodo
Update do RecordSet.
4 Cria um Lock do tipo Batch Optimistic. Este tipo de
adLockBatchOptimistic Lock permite que vrios registros sejam modificados.
Os registros somente sero bloqueados quando for
chamado o mtodo UpdateBatch do objeto RecordSet.
-1 No define o tipo de Lock. Quando utilizamos o mtodo
adLockUnspecified Clone, para criar uma cpia do RecordSet, o Clone
ser criado com o mesmo tipo de Lock do RecordSet
original.
3 4 3
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
Tipo de erro:
ADODB.Recordset (0x800A0E79)
Operation is not allowed when the object is open.
/Capitulo6/pubs_sql.asp, line 40
A mensagem indica que a operao (definir a localizao do Cursor) no permitida quando
o objeto est aberto.
Ao invs de utilizarmos o valor 3, podemos utilizar a constante correspondente, adLockOpti-
mistic, conforme o exemplo:
<%
inst_sql=Select * from Clientes
Set Clientes = Server.CreateObject(ADODB.Recordset)
Clientes.LockType = adLockOptimistic
Clientes.Open inst_sql, conn, adOpenStatic, 3
%>
Agora que j discutimos um pouco sobre Cursores, localizao do Cursor e Lock de registros,
podemos partir para o estudo de mais alguns detalhes do objeto RecordSet.
Pr opr iedades do Objet o Recor dSet
Atravs da utilizao de propriedades de um objeto podemos definir algumas de suas
caractersticas e tambm retornar as caractersticas do mesmo. Algumas propriedades so
somente para leitura, isto significa que apenas podemos verificar o valor da propriedade.
Outras so de leitura e escrita, isto , podemos definir seu valor. Para definir o valor de uma
propriedade, utilizamos a seguinte sintaxe:
<% RecordSet.nome_da_propriedade = valor %>
Na Tabela 6.9 esto listadas as principais propriedades do objeto RecordSet.
Tabela 6.9 Principais propriedades do objeto RecordSet.
Propriedade Descrio
AbsolutePage Retorna a pgina do Registro Corrente. Pgina um
conceito de armazenamento de banco de dados.
AbsolutePosition Indica a posio do Registro Corrente, dentro do
RecordSet.
Criando Sites Dinmicos com ASP 3.0
3 4 4
Propriedade Descrio
ActiveCommand Retorna o objeto Command utilizado para criar o
RecordSet, caso tenha sido utilizado um objeto
Command. Esta propriedade somente leitura.
BOF Esta propriedade torna-se verdadeira quando
estivermos no primeiro registro e utilizarmos o mtodo
MovePrevious, ou seja, indica uma tentativa de
voltarmos alm do primeiro registro. somente leitura.
Bookmark Retorna um marcador (bookmark) que identifica de
maneira nica cada registro do RecordSet. Tambm
pode ser utilizado para tornar o registro identificado
pelo Bookmark como o Registro Corrente. Nem todas as
fontes de dados e seus respectivos OLE DB Providers
oferecem esta propriedade.
CacheSize Indica o nmero de registros do RecordSet que devem
ser mantidos no Cache local de memria. Tambm pode
ser utilizada para definir este nmero de registros.
CursorLocation Pode ser utilizada para definir ou retornar a posio do
Cursor.
CursorType Indica o tipo de Cursor utilizado em um objeto
RecordSet. Tambm pode ser utilizada para definir o
tipo de Cursor. Deve ser utilizada antes do mtodo
Open, caso contrrio ir provocar um erro quando a
pgina for carregada.
EditMode Retorna um valor que indica o status de edio do
registro atual. Este valor pode ser: 0 indica que no
existe edio em andamento; 1 indica que os dados
do registro atual foram modificados, porm ainda no
foram salvos; 2 indica que o mtodo AddNew foi
chamado e o registro que est sendo criado, ainda no
foi salvo no banco de dados; 4 indica que o registro
atual foi deletado. somente leitura.
EOF Esta propriedade torna-se verdadeira quando
estivermos no ltimo registro e utilizarmos o mtodo
MoveNext, ou seja, indica uma tentativa de avanarmos
alm do ltimo registro. somente leitura.
3 4 5
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
M t odos do Objet o Recor dSet
O objeto RecordSet nos fornece diversos mtodos, os quais podem ser utilizados para nos
deslocar atravs dos registros, fazer uma cpia do RecordSet, etc. Para utilizarmos um mtodo
do objeto RecordSet, utilizamos a seguinte sintaxe:
<% RecordSet.nome_do_mtodo parmetro1, parmetro2, ..., parmetron %>
Na Tabela 6.10 esto listados os principais mtodos do objeto RecordSet.
Propriedade Descrio
Filter Pode ser utilizada para filtrar os registros de um
RecordSet de acordo com um critrio definido.
Falaremos sobre esta propriedade mais adiante.
Tambm sero mostrados alguns exemplos prticos.
LockType Indica o tipo de Lock que est sendo utilizado. Tambm
pode ser utilizada para definir o tipo de Lock, antes que
o mtodo Open tenha sido utilizado.
MaxRecords Define o nmero mximo de registros que uma consulta
deve retornar para o objeto RecordSet. O valor padro
zero, o que significa sem limite de registros.
PageCount Indica quantas pginas de dados o objeto RecordSet
contm. somente leitura.
PageSize Indica o nmero de registros por pgina.
RecordCount Indica o nmero de registros do objeto RecordSet.
somente leitura.
Sort Especifica um ou mais campos para ordenao do
RecordSet, alm do tipo de ordenao se ascendente
ou descendente. Para utilizarmos esta propriedade
devemos utilizar o Cursor no cliente.
Source Indica as fontes dos dados de um objeto RecordSet.
Por exemplo, exibe a instruo SQL que deu origem
aos dados ou o nome da tabela ou consulta que
originou os dados do objeto RecordSet.
State Indica o estado do objeto RecordSet. Indica se o mesmo
est aberto, fechado ou executando uma operao de
maneira assncrona. somente leitura.
Criando Sites Dinmicos com ASP 3.0
3 4 6
Tabela 6.10 Principais mtodos do objeto RecordSet.
Mtodo Descrio
AddNew Utilizado para adicionar um novo registro em um
RecordSet que seja atualizvel.
Cancel Cancela a execuo de uma operao Open assncrona.
CancelBatch Cancela uma operao de atualizao em Batch.
CancelUpdate Cancela qualquer alterao feita no Registro Corrente,
ou alteraes feitas em um novo registro antes da
chamada do mtodo Update.
Clone Cria uma cpia do objeto RecordSet.
Close Fecha o objeto RecordSet e todos os objetos dele
dependentes.
Delete Elimina o registro corrente ou um grupo de registros
selecionados.
Find Pesquisa no RecordSet por um registro que atende um
critrio especificado.
GetRows Retorna registros de um RecordSet e os armazena em
um array.
GetString Retorna todo o RecordSet como uma String.
Move Movimenta o indicador de registro a partir de uma
posio especificada de um determinado nmero de
registros. Por exemplo, posso movimentar o indicador
dez registros a partir do registro 10, com isso o
indicador fica no registro 20.
MoveFirst Movimenta o indicador para o primeiro registro.
MoveLast Movimenta o indicador para o ltimo registro.
MoveNext Movimenta o indicador para o prximo registro.
MovePrevious Movimenta o indicador para o registro anterior.
Open Abre o objeto RecordSet.
Requery Atualiza o conjunto de registros do RecordSet,
executando novamente a consulta que deu origem ao
RecordSet.
3 4 7
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
Agora vamos aprender a executar algumas operaes bastante comuns em aplicaes Web.
Aprenderemos a inserir, excluir e alterar um determinado registro.
Uma Pgina ASP Par a Inser ir
Infor maes no Banco de Dados
Neste exemplo aprenderemos a construir uma pgina ASP que recebe os dados digitados em
um formulrio HTML e os armazena no registro de uma tabela. Tambm faremos a validao
para verificar se todos os campos obrigatrios foram preenchidos. Caso algum campo
obrigatrio no tenha sido preenchido, devolvemos o formulrio para o usurio informando
qual ou quais campos obrigatrios no foram preenchidos. Caso todos os campos tenham
sido preenchidos corretamente, os valores digitados sero gravados no banco de dados.
Podemos utilizar este exemplo para criar um formulrio de cadastro de usurios ou qualquer
outra aplicao que necessite armazenar os dados digitados em um formulrio.
NOTA
Eu, por exemplo, utilizo uma aplicao deste tipo para fazer a avaliao dos treinamentos que
ministro em todo o pas. Ao final do treinamento, os usurios, sem se identificar, preenchem
um formulrio com as opinies sobre o treinamento, o material e o desempenho do instrutor.
Estes dados so armazenados diretamente em um banco de dados do Microsoft Access, a
partir do qual fao uma srie de estatsticas.
Na Listagem 6.2 temos o cdigo HTML para a criao do formulrio de cadastro, no qual o
usurio poder digitar os dados.
Listagem 6.2 O formulrio para digitao dos dados cadastro.htm.
1 <HTML>
2 <HEAD>
Mtodo Descrio
Resync Atualiza os dados do RecordSet, buscando os dados a
partir do banco de dados.
Save Salva o contedo do RecordSet em um arquivo.
Update Salva quaisquer alteraes que tenham sido feitas para
o objeto RecordSet.
Criando Sites Dinmicos com ASP 3.0
3 4 8
3 <TITLE>Cadastro de novos Clientes !!</TITLE>
4 </HEAD>
5 <BODY bgColor=#c0c0c0>
6 <P>
7 <FONT color=white size=6 style=BACKGROUND-COLOR: navy>
8 <B>Empresa ABC Ltda. - (0-xx-11-1111-2222)</B>
9 </FONT>
10 </P>
11 <P>
12 <FONT color=#ffffff size=5 style=BACKGROUND-COLOR: darkred>
13 <B><EM>CADASTRO DE NOVOS CLIENTES:</EM></B>
14 </FONT>
15 </P>
16 <P>
17 <FONT color=navy size=4>
18 <EM>Digite os dados solicitados e clique no boto Enviar.</EM>
19 </FONT>
20 </P>
21 <P>
22 <FORM ACTION=cadastro.asp METHOD=POST>
23 <TABLE bgColor=#ffffff border=1 cellPadding=1 cellSpacing=1 width=100%
style=HEIGHT: 161px; WIDTH: 340px>
24 <TR>
25 <TD>Nome:</TD>
26 <TD><INPUT id=nome maxLength=50 name=nome size=35>&nbsp;
27 <FONT color=red><B>(*)</B></FONT></TD>
28 </TR>
29 <TR>
30 <TD>Rua:</TD>
31 <TD><INPUT id=rua maxLength=30 name=rua size=35>
32 <FONT color=red><B>(*)</B></FONT></TD>
33 </TR>
3 4 9
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
34 <TR>
35 <TD>Bairro:</TD>
36 <TD><INPUT id=bairro maxLength=20 name=bairro>
37 <FONT color=red><B>(*)</B></FONT></TD>
38 </TR>
39 <TR>
40 <TD>Cidade:</TD>
41 <TD><INPUT id=cidade maxLength=25 name=cidade size=25>
42 <FONT color=red><B>(*)</B></FONT></TD>
43 </TR>
44 <TR>
45 <TD>CEP:</TD>
46 <TD><INPUT id=cep maxLength=10 name=cep size=10>&nbsp;
47 <FONT color=red><FONT color=#000000>nnnnn-nnn
48 </FONT><B>(*)</B></FONT></TD>
49 </TR>
50 <TR>
52 <TD>Fone:</TD>
53 <TD><INPUT id=fone maxLength=20 name=fone></TD>
54 </TR>
55 <TR>
56 <TD>Fax:</TD>
57 <TD><INPUT id=fax maxLength=20 name=fax></TD></TR>
58 <TR>
59 <TD>Carto:</TD>
60 <TD>
61 <INPUT id=cartaotipo name=cartaotipo type=radio value=Visa>Visa
62 <INPUT id=cartaotipo name=cartaotipo type=radio value=Master_Card>Master
Card
63 <INPUT id=cartaotipo name=cartaotipo type=radio value=Outros>Outros
64 <FONT color=red><B>(*)</B></FONT>
65 </TD>
66 </TR>
67 <TR>
68 <TD colSpan=2>
Criando Sites Dinmicos com ASP 3.0
3 5 0
69 <INPUT id=enviar name=enviar style=HEIGHT: 24px; WIDTH:109px
type=submit value=Enviar dados.>
70 <INPUT id=limpar name=limpar type=submit value=Limpar
formulrio.>
71 </TD>
72 </TR>
73 </TABLE>
74 </FORM>
75 </P><BR>
76 <FONT color=red><B>(*)
77 <FONT color=navy>Campos de preenchimento obrigatrio.</FONT></B></FONT>
78 </BODY>
79 </HTML>
Ao carregarmos o exemplo da Listagem 6.2, obteremos o resultado indicado na Figura 6.3.
Figura 6.3: O for mulr io par a digit ao dos dados.
3 5 1
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
Agora precisamos construir a pgina cadastro.asp, a qual ir verificar se todos os campos de
preenchimento obrigatrio foram preenchidos. Se todos os campos obrigatrios foram
preenchidos, os dados sero gravados em um banco de dados, caso contrrio o formulrio
enviado para o usurio, solicitando que o mesmo preencha os campos que esto faltando.
Para armazenar os dados, utilizaremos um banco de dados do Microsoft Access clientes.mdb.
Este banco de dados est gravado em C:\Meus documentos. Neste banco de dados temos uma
tabela chamada Cadastro, com a estrutura indicada na Figura 6.4.
Figura 6.4: Tabela Cadast r o do banco de dados Client es.
Para acessar este banco de dados utilizaremos OLE DB, sem a necessidade da criao de uma
fonte ODBC. Faremos isto atravs da utilizao da propriedade ConnectionString, j descrita
neste captulo.
A pgina cadastro.asp far o seguinte:
Estabelece conexo com o banco de dados clientes.mdb e cria um RecordSet chamado
Cadastro, o qual est ligado tabela Cadastro do banco de dados.
Depois a pgina verifica se algum campo obrigatrio no foi preenchido.
Caso todos os campos obrigatrios tenham sido preenchidos, os dados so gravados
na tabela Cadastro do banco de dados clientes.mdb.
Caso algum campo obrigatrio no tenha sido preenchido, a pgina ASP informa quais
campos obrigatrios no foram preenchidos, e retorna o formulrio para o usurio,
Criando Sites Dinmicos com ASP 3.0
3 5 2
mantendo os campos que j haviam sido preenchidos, para que o usurio possa
preencher somente os campos que esto faltando.
Na Listagem 6.3 temos o cdigo para a pgina cadastro.asp.
Listagem 6.3 Pgina ASP para processamento dos dados cadastro.asp.
1 <%@ Language=VBScript %>
2 <HTML>
4 <HEAD>
5 </HEAD>
6 <BODY>
7 <%
8 O primeiro passo criar a conexo com o banco de dados
9 Para isto crio um objeto do tipo Connection
10 Cria um objeto do tipo ADODB.Connection
11 Set conn=Server.CreateObject(ADODB.Connection)
12 Agora abro uma conexo com o arquivo clientes.mdb
13 utilizando OLE DB.
14 conn.ConnectionString = PROVIDER=MICROSOFT.JET.OLEDB.4.0;
DATA SOURCE=c:\meus documentos\clientes.mdb
15 conn.Open
16 Agora criamos um objeto RecordSet.
17 Este objeto ir acessar a tabela Cadastro.
18 Set Cadastro = Server.CreateObject(ADODB.Recordset)
19 Cadastro.Open Cadastro, conn, 3, 3
20 Neste ponto tenho o objeto Cadastro ligado com a tabela
21 Cadastro do banco de dados clientes.mdb.
22 **************************************************
23 Inicia a verificao para saber se todos
24 os campos obrigatrios foram preenchidos.
**************************************************
3 5 3
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
25 Atribuo os campos obrigatrios variveis, para facilitar a verificao.
26 nome=Request.Form(nome)
27 rua =Request.Form(rua)
28 bairro=Request.Form(bairro)
29 cidade=Request.Form(cidade)
30 cep=Request.Form(cep)
31 cartao=Request.Form(cartaotipo)
32 Verifica se os campos obrigatrio foram preenchidos.
33 Qualquer dado obrigatrio que no tenha sido preenchido,
34 definir a varivel faltou_dado em Sim.
35 If (nome=)Then
36 mensagem_nome=Preencha o campo Nome:
37 faltou_dado=Sim
38 faltou_nome=Sim
39 End If
40 If (rua=)Then
41 mensagem_rua=Preencha o campo Rua:
42 faltou_dado=Sim
43 faltou_rua=Sim
44 End If
45 If (bairro=)Then
46 mensagem_bairro=Preencha o campo Bairro:
47 faltou_dado=Sim
48 faltou_bairro=Sim
49 End If
50 If (cidade=)Then
51 mensagem_cidade=Preencha o campo Cidade:
52 faltou_dado=Sim
53 faltou_cidade=Sim
54 End If
55 If (cep=)Then
56 mensagem_cep=Preencha o campo CEP:
57 faltou_dado=Sim
58 faltou_cep=Sim
Criando Sites Dinmicos com ASP 3.0
3 5 4
59 End If
60 If (cartao=)Then
61 mensagem_cartao=Preencha o campo Carto:
62 faltou_dado=Sim
63 faltou_cartao=Sim
64 End If
65 Caso todos os campos obrigatrios tenham sido
66 preenchidos, gravo os dados no banco de dados.
67 e informo que a operao foi realizada com sucesso.
68 If faltou_dado<>Sim Then
69 Cadastro.AddNew
70 Cadastro.Fields(Nome)= Request.Form(nome)
71 Cadastro.Fields(Rua)= Request.Form(rua)
72 Cadastro.Fields(Bairro)= Request.Form(bairro)
73 Cadastro.Fields(Cidade)= Request.Form(cidade)
74 Cadastro.Fields(Cep)= Request.Form(cep)
75 Cadastro.Fields(Fone)= Request.Form(fone)
76 Cadastro.Fields(Fax)= Request.Form(fax)
77 Cadastro.Fields(Cartao)= Request.Form(cartaotipo)
78 Cadastro.Update
79 Cadastro.Close
80 Set Cadastro = Nothing
81 Response.Write CLIENTE CADASTRADO COM SUCESSO<BR>
82 Response.Write <A href=cadastro.htm>Clique aqui para cadastrar outro
cliente</A>
83 Response.Write <HR>
84 End If
85 Caso algum dado obrigatrio no tenha sido digitado
86 Envia o formulrio de volta para o cliente,
87 preservando os valores que o mesmo j digitou.
88 Observe que utilizamos Response.Write para ir
89 recriando todo o formulrio.
90 Tambm observe que o formulrio enviado de volta
91 na pgina cadastro.asp e que o atributo action
92 da tag FORM definido como cadastro.asp, ou seja
3 5 5
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
93 a pgina cadastro.asp chama a si mesma aps o
94 usurio clicar no boto Enviar.
95 Esta uma tcnica bastante interessante.
96 Antes de enviar o formulrio, informamos quais
97 os campos obrigatrio que no foram preenchidos.
98 If faltou_nome=Sim Then
99 Response.Write <B>O campo Nome deve ser preenchido.</B> <BR>
100 End If
101 If faltou_rua=Sim Then
102 Response.Write <B>O campo Rua deve ser preenchido.</B> <BR>
103 End If
104 If faltou_cidade=Sim Then
105 Response.Write <B>O campo Cidade deve ser preenchido.</B> <BR>
106 End If
107 If faltou_bairro=Sim Then
108 Response.Write <B>O campo Bairro deve ser preenchido.</B> <BR>
109 End If
110 If faltou_cep=Sim Then
111 Response.Write <B>O campo CEP deve ser preenchido.</B> <BR>
112 End If
113 If faltou_cartao=Sim Then
114 Response.Write <B>O campo Carto deve ser preenchido.</B> <BR>
115 End If
116 %>
117 <%
118 Comeo a reenviar o formulrio para o usurio, utilizando Response.Write.
119 Caso esteja faltando algum dado, envio o formulrio
120 para o usurio preencher os campos que esto faltando.
121 Os valores j digitados, so preservados.
122 %>
123 <% If faltou_dado=Sim Then
Criando Sites Dinmicos com ASP 3.0
3 5 6
124 Response.Write <BODY bgColor=#c0c0c0>
125 Response.Write <P><FONT color=white size=6 style=BACKGROUND-COLOR:
navy><STRONG>Empresa ABC LTDA -
126 Response.Write (0-xx-11-1111-2222)<BR>
127 Response.Write </STRONG></FONT><FONT color=#000000><FONT size=5
><STRONG><EM>CADASTRO DE NOVOS
128 Response.Write CLIENTES:</EM></STRONG></FONT> <BR></FONT><FONTcolor=navy
size=4><EM>Digite os dados solicitados e clique no boto
129 Response.Write Enviar.</EM></FONT></P>
130 Response.Write <P>
131 Response.Write Caso queira alterar algum dado
132 Response.Write digite no formulrio abaixo.<BR>
133 Response.Write <FORM ACTION=cadastro.asp METHOD=post id=form1 name=form1>
134 Response.Write <TABLE bgColor=#ffffff border=1 cellPadding=1 cellSpacing=1
width=100% style=HEIGHT: 161px; WIDTH: 340px>
135 Response.Write <TR>
136 Response.Write <TD>Nome:</TD>
137 Response.Write <TD><INPUT id=nome maxLength=50 name=nome size=35 value= &
Chr(34) & Request.Form(nome) & Chr(34) & >&nbsp;<FONT
138 Response.Write color=red><B>(*)</B></FONT></TD></TR>
139 Response.Write <TR>
140 Response.Write <TD>Rua:</TD>
141 Response.Write <TD><INPUT id=rua maxLength=30 name=rua size=35 value= &
Chr(34) & Request.Form(rua) & Chr(34) & ><FONT Color=red><B>(*)</B></FONT></
TD></TR>
142 Response.Write <TR>
143 Response.Write <TD>Bairro:</TD>
144 Response.Write <TD><INPUT id=bairro maxLength=20 name=bairro value= & Chr(34)
& Request.Form(bairro) & Chr(34) &><FONT
145 Response.Write color=red><B>(*)</B></FONT></TD></TR>
146 Response.Write <TR>
147 Response.Write <TD>Cidade:</TD>
148 Response.Write <TD><INPUT id=cidade maxLength=25 name=cidade value= &
Chr(34) & Request.Form(cidade) & Chr(34)
149 Response.Write size=25><FONT color=red><B>(*)</B></FONT></TD></TR>
3 5 7
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
150 Response.Write <TR>
151 Response.Write <TD>CEP:</TD>
152 Response.Write <TD><INPUT id=cep maxLength=10 name=cep value= & Chr(34)& 153
Request.Form(cep)& Chr(34)
154 Response.Write size=10>&nbsp;<FONT color=red><FONT color=#000000>nnnnn-nnn
155 Response.Write </FONT><B>(*)</B></FONT></TD></TR>
156 Response.Write <TR>
157 Response.Write <TD>Fone:</TD>
158 Response.Write <TD><INPUT id=fone maxLength=20 name=fone value= & Chr(34) & 159
Request.Form(fone) & Chr(34) & ></TD></TR>
160 Response.Write <TR>
161 Response.Write <TD>Fax:</TD>
162 Response.Write <TD><INPUT id=fax maxLength=20 name=fax value= & Chr(34) &
Request.Form(fax) & Chr(34) & ></TD></TR>
163 Response.Write <TR>
164 Response.Write <TD>Carto:</TD>
165 If Request.Form(cartaotipo)=Visa Then
166 Response.Write <TD><INPUT id=cartaotipo name=cartaotipo type=radio
CHECKED>Visa
167 Else
168 Response.Write <TD><INPUT id=cartaotipo name=cartaotipo
type=radio>Visa
169 End If
170 If Request.Form(cartaotipo)=Master Card Then
171 Response.Write <INPUT id=cartaotipo name=cartaotipo type=radio
CHECKED>Master Card <INPUT id=cartaotipo
172 Else
173 Response.Write <INPUT id=cartaotipo name=cartaotipo type=radio>Master
Card <INPUT id=cartaotipo
174 End If
175 If Request.Form(cartaotipo)=Outros Then
176 Response.Write name=cartaotipo type=radio CHECKED>Outros
177 Else
178 Response.Write name=cartaotipo type=radio>Outros
179 End If
180 Response.Write <FONT color=red><B>(*)</B></FONT></TD></TR>
181 Response.Write <TR>
Criando Sites Dinmicos com ASP 3.0
3 5 8
182 Response.Write <TD colSpan=2><INPUT id=enviar name=enviar style=HEIGHT: 24px;
WIDTH: 109px type=submit value=Enviar_dados.>&nbsp;
183 Response.Write <INPUT id=limpar name=limpar type=submit
value=Limpar_formulrio.></TD></TR>
184 Response.Write </TABLE>
185 Response.Write </FORM>
186 Response.Write </P><FONT color=red><B>(*) <FONT color=navy>Campos de
preenchimento
187 Response.Write obrigatrio.</FONT></B></FONT>
188 End If
189 %>
190 </BODY>
191 </HTML>
NOTA
Algumas linhas aparecem divididas em duas ou mais linhas. Nunca demais lembrar que
estas linhas devem ser digitadas como uma linha nica. As mesmas esto exibidas em duas ou
mais linhas apenas por questo de espao.
Algumas observaes sobre a Listagem 6.3:
A primeira observao a ser feita a respeito do cdigo que insere um novo registro na
tabela Cadastro do Banco de dados clientes.mdb. O cdigo ASP que realiza esta tarefa
o seguinte:
68 If faltou_dado<>Sim Then
69 Cadastro.AddNew
70 Cadastro.Fields(Nome)= Request.Form(nome)
71 Cadastro.Fields(Rua)= Request.Form(rua)
72 Cadastro.Fields(Bairro)= Request.Form(bairro)
73 Cadastro.Fields(Cidade)= Request.Form(cidade)
74 Cadastro.Fields(Cep)= Request.Form(cep)
75 Cadastro.Fields(Fone)= Request.Form(fone)
76 Cadastro.Fields(Fax)= Request.Form(fax)
77 Cadastro.Fields(Cartao)= Request.Form(cartaotipo)
78 Cadastro.Update
79 Cadastro.Close
80 Set Cadastro = Nothing
81 Response.Write CLIENTE CADASTRADO COM SUCESSO<BR>
82 Response.Write <A href=cadastro.htm>Clique aqui para cadastrar outro
cliente</A>
83 Response.Write <HR>
84 End If
3 5 9
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
Neste cdigo, utilizamos o mtodo AddNew do objeto RecordSet Cadastro. Depois vamos
preenchendo cada novo campo do registro, com o respectivo valor preenchido pelo usurio
no formulrio. No final, utilizamos o mtodo Update para salvar o registro na tabela.
O mtodo Close utilizado para fechar o RecordSet Cadastro e, por fim, tiramos o objeto
Cadastro da memria. Isto feito atribuindo-se o valor Nothing para o objeto Cadastro.
importante lembrar que para atribuir valor para um objeto, devemos utilizar o operador Set,
caso contrrio obteremos uma mensagem de erro.
Tambm gostaria de observar a situao em que o usurio deixa de preencher algum
campo obrigatrio. Neste caso, o usurio informado a respeito de qual ou quais cam-
pos no foram preenchidos. O formulrio retornado para o usurio, juntamente com
os valores j digitados, para que o usurio no precise redigitar todos os valores
novamente. Observe que todo o cdigo HTML que gera o formulrio retornado
utilizando-se Response.Write da linha 124 linha 189.
Vamos testar o funcionamento da pgina cadastro.asp.
Na Figura 6.5, o usurio preencheu alguns campos, porm no preencheu os campos
obrigatrios Bairro e Rua.
Figura 6.5: Os campos obr igat r ios Bair r o e Rua no for am pr eenchidos.
Ao clicar no boto Enviar dados, a pgina cadastro.asp detecta que alguns campos obrigatrios
no foram preenchidos e informa isto ao usurio, conforme indicado na Figura 6.6.
Criando Sites Dinmicos com ASP 3.0
3 6 0
Figura 6.6: O usur io infor mado que alguns campos obr igat r ios no for am pr eenchidos.
Agora o usurio preenche os campos obrigatrios que esto faltando, conforme indicado na
Figura 6.7.
Figura 6.7: O usur io pr eenche os campos que est o falt ando.
3 6 1
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
Ao clicar em Enviar dados, as informaes sero salvas no banco de dados. A pgina
cadastro.asp informa que os dados foram salvos com sucesso e retorna um link para que o
usurio possa voltar ao formulrio de cadastro e cadastrar outro cliente, conforme indicado
na Figura 6.8.
Figura 6.8: O client e foi cadast r ado com sucesso.
Edit ando Regist r os em um Banco de Dados
Neste tpico aprenderemos a criar uma pgina ASP que atualiza um registro do banco de dados.
Nosso exemplo ser composto dos seguintes elementos:
Uma pgina ASP produto.asp, onde temos um campo com a listagem de produtos
disponveis na tabela Produtos, do banco de dados Nwind. Esta listagem ser construda
dinamicamente, isto , cada vez que a pgina for carregada, a listagem ser construda a
partir das informaes disponveis na tabela Produtos.
Aps selecionar o produto a ser alterado, o usurio clica em um boto Localizar produto.
Feito isso, a pgina produto.asp chama uma pgina chamada localiza.asp, que localiza
o registro selecionado no banco de dados. Com isso, o usurio pode alterar os dados do
produto.
Aps alterar os dados desejados, o usurio clica em um boto Atualizar produto. A
pgina localiza.asp chama a pgina atualiza.asp, que acessa o banco de dados e faz as
alteraes solicitadas pelo usurio. Ao final emitida uma mensagem indicando que
os dados foram atualizados com sucesso.
NOTA
Existem maneiras mais simples para executar este procedimento. Optei pela utilizao de trs
pginas, para que os passos envolvidos ficassem bem claros. O cdigo ASP tambm foi
desenvolvido de uma maneira didtica, visando facilitar o entendimento do mesmo.
Criando Sites Dinmicos com ASP 3.0
3 6 2
A Pgina ASP Par a Selecionar o Pr odut o a ser Alt er ado pr odut o. asp
Na Listagem 6.4 temos o cdigo ASP para a criao da pgina produto.asp.
Listagem 6.4 A pgina ASP para selecionar o produto a ser alterado produto.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 <TITLE>Selecione o produto a ser alterado.</TITLE>
5 </HEAD>
6 <BODY>
7 <%
8 O primeiro passo criar a conexo com o banco de dados.
9 Para isto crio um objeto do tipo Connection.
10 Cria um objeto do tipo ADODB.Connection
11 Set conn=Server.CreateObject(ADODB.Connection)
12 Agora abro uma conexo com o arquivo nwind.mdb
13 utilizando OLE DB.
14 conn.ConnectionString = PROVIDER=MICROSOFT.JET.OLEDB.4.0;
DATA SOURCE=c:\meus documentos\nwind.mdb
15 conn.Open
16 Agora criamos um objeto RecordSet.
17 Este objeto ir acessar o campo ProductName
18 da tabela Produtos
19 Set Produtos = Server.CreateObject(ADODB.Recordset)
20 Produtos.Open Select ProductName from Produtos Order By ProductName, conn, 3, 3
21 Neste ponto tenho o objeto Produtos ligado com a tabela
22 Produtos do banco de dados nwind.mdb.
23 %>
3 6 3
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
24 <P><B>Selecione o produto a ser alterado.</B></P>
25 <P><B><I>Depois clique no boto Localizar Produto.</I></B></P>
26 <FORM action=localiza.asp method=post>
27 <SELECT id=listaprodutos name=listaprodutos>
28 <%
29 Agora construo a lista de opes a partir dos
30 dados obtidos da tabela Produtos.
31 Para cada produto obtido, crio uma nova opo
32 na lista.
33 Do While Not Produtos.EOF
34 Response.Write <OPTION value= & Chr(34) & Produtos.Fields(ProductName) &
Chr(34) & > & Produtos.Fields(ProductName)& </OPTION>
35 Produtos.MoveNext
36 Loop
37 %>
38 </SELECT>
39 <BR>
40 <BR>
41 <HR>
42 <INPUT type=submit value=Localizar Produto id=Localizar name=Localizar>
43 </FORM>
44 </BODY>
45 </HTML>
Para esta listagem vamos comentar apenas o cdigo ASP que constri a lista com os nomes de
produtos disponveis.
Lembrando da nossa reviso de HTML, o cdigo para construir uma Caixa de combinao
o seguinte:
<SELECT id=select1 name=Item1>
<OPTION value=Item1>Item1</OPTION>
<OPTION value=Item2>Item2</OPTION>
Criando Sites Dinmicos com ASP 3.0
3 6 4
<OPTION value=Item3>Item3</OPTION>
</SELECT>
Neste exemplo temos uma lista com trs itens. Para cada produto encontrado devemos criar
um item da lista, o que feito com as tags <OPTION> </OPTION>. Por exemplo, para o
produto Alice Mutton, teramos que criar a seguinte opo:
<OPTION value=Alice Mutton>Alice Mutton</OPTION>
A primeira vez que aparece o nome value=Alice Mutton a designao do nome associado
com cada opo. Na segunda vez que aparece o nome, a definio do texto que ser exibido
na lista. Para construir esta lista dinamicamente, utilizamos o seguinte cdigo ASP:
33 Do While Not Produtos.EOF
34 Response.Write <OPTION value= & Chr(34) & Produtos.Fields(ProductName) &
Chr(34) & > & Produtos.Fields(ProductName)& </OPTION>
35 Produtos.MoveNext
36 Loop
Para preencher a lista com os nomes do produto, utilizamos Produtos.Fields(ProductName),
com isso, vou construindo uma nova opo da lista, para cada nome de produto encontrado
na tabela Produtos. justamente isto que queremos. A construo dinmica de listas bastante
til, sendo que esta tcnica pode ser aplicada em diversas situaes prticas no
desenvolvimento de aplicaes Web.
IMPORTANTE
Observe que utilizamos Chr(34) antes e depois de Produtos.Fields(ProductName), na definio
do atributo value, conforme indicado a seguir: Chr(34) & Produtos.Fields(ProductName) & Chr(34)
Isto feito para tratar o caso de nomes de produtos que tem espao em branco no nome. Se
no utilizssemos as aspas (Chr(34)), somente o primeiro nome do produto seria utilizado.
Por exemplo, um produto ch mate, seria truncado em ch. Com isso, na hora de pesquisar o
nome do produto, no iramos encontr-lo na tabela Produtos.
Ao carregarmos a pgina produto.asp, obteremos o resultado indicado na Figura 6.9.
Nesta pgina o usurio seleciona o produto a ser alterado, conforme indicado na Figura 6.10,
onde o usurio selecionou o produto Camembert Pierrot. Aps selecionar o produto, o usurio
clica no boto Localizar Produto. Ao fazer isso, chamada a pgina localiza.asp, que ir
carregar o registro correspondente ao produto selecionado.
3 6 5
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
Figura 6.9: A pgina pr odut o. asp.
Figura 6.1 0: O usur io seleciona um pr odut o na list a de pr odut os.
A Pgina que Localiza o Regist r o do
Pr odut o a ser At ualizado localiza. asp
A pgina localiza.asp indicada na Listagem 6.5.
Criando Sites Dinmicos com ASP 3.0
3 6 6
Listagem 6.5 Pgina ASP que carrega o registro a ser alterado.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <TITLE>Altere os dados do produto.</TITLE>
6 <BODY>
7 <%
8 O primeiro passo criar a conexo com o banco de dados.
9 Para isto crio um objeto do tipo Connection.
10 Cria um objeto do tipo ADODB.Connection
11 Set conn=Server.CreateObject(ADODB.Connection)
12 Agora abro uma conexo com o arquivo nwind.mdb
13 utilizando OLE DB.
14 conn.ConnectionString = PROVIDER=MICROSOFT.JET.OLEDB.4.0;
DATA SOURCE=c:\meus documentos\nwind.mdb
15 conn.Open
16 Agora criamos um objeto RecordSet.
17 Este objeto ir acessar os campos
18 da tabela Produtos
19 Set Produtos = Server.CreateObject(ADODB.Recordset)
20 inst_sql=Select * from Produtos WHERE Produtos.ProductName= &
Request.Form(listaprodutos)&
21 Produtos.Open inst_sql,conn,3,3
22 Neste ponto tenho o objeto Produtos ligado com a tabela
23 Produtos do banco de dados nwind.mdb.
24 %>
25 <P><FONT color=navy size=5><STRONG>Altere os campos que
forem necessrios.</STRONG></FONT></P>
26 <P><I><B><FONT size=4>
Depois clique no boto Atualizar Produto</FONT>.</B></I></P>
3 6 7
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
27 <FORM action=atualiza.asp method=post>
28 <%
29 Agora construo o formulrio e exibo os dados
30 do produto para que o usurio possa alterar
31 os campos que forem necessrios.
32 %>
33 <TABLE>
34 <%
35 Response.Write <TR><TD>Cdigo:</TD><TD><INPUT id=ProductID maxLength=10
name=ProductID size=10 value= & Chr(34)& Produtos.Fields(ProductID) & Chr(34)&
></TD></TR>
36 Response.Write <TR><TD>Nome:</TD><TD><INPUT id=ProductName maxLength=35
name=ProductName size=35 value= & Chr(34)& Produtos.Fields(ProductName) &
Chr(34)& ></TD></TR>
37 Response.Write <TR><TD>Fornecedor:</TD><TD><INPUT id=SupplierIDmaxLength=30
name=SupplierID size=15 value= & Chr(34) & Produtos.Fields(SupplierID) &
Chr(34) & ></TD></TR>
38 Response.Write <TR><TD>Categoria:</TD><TD><INPUT id=CategoryIDmaxLength=10 name=
CategoryID size=10 value= & Chr(34) & Produtos.Fields(CategoryID) & Chr(34)
& ></TD></TR>
40 Response.Write <TR><TD>Quant/unid:</TD><TD><INPUT id=QuantityPerUnit maxLength=20
name=QuantityPerUnit size=20 value= & Chr(34) & Produtos.Fields(QuantityPerUnit) &
Chr(34) & ></TD></TR>
41 Response.Write <TR><TD>Preo Unit:</TD><TD><INPUT id=UnitPrice 42
maxLength=10 name=UnitPrice size=10 value= & Chr(34) & 43 Produtos.Fields
(UnitPrice) & Chr(34) & ></TD></TR>
42 Response.Write <TR><TD>Estoque:</TD><TD><INPUT id=UnitsInStockmaxLength=10
name=UnitsInStock size=10 value= & Chr(34) & Produtos.Fields(UnitsInStock) &
Chr(34) & ></TD></TR>
43 Response.Write <TR><TD>Unid. Pedid:</TD><TD><INPUT id=UnitsOnOrder maxLength=10
name=UnitsOnOrder size=10 value= & Chr(34) & 45Produtos.Fields(UnitsOnOrder) &
Chr(34) & ></TD></TR>
Criando Sites Dinmicos com ASP 3.0
3 6 8
44 Response.Write <TR><TD>Nvel Ordenao:</TD><TD><INPUT id=ReorderLevel maxLength=10
name=ReorderLevel size=10 value= & Chr(34) & Produtos.Fields(ReorderLevel) &
Chr(34) & ></TD></TR>
45 Response.Write <TR><TD>Descontinuado:</TD><TD><INPUT id=Discontinued maxLength=10
name=Discontinued size=10 value= & Chr(34) & Produtos.Fields(Discontinued) &
Chr(34) & ></TD></TR>
46 %>
47 </TABLE>
48 <BR>
49 <HR>
50 <INPUT type=submit value=Atualizar Produto id=Atualizar name=Atualizar>
51 </FORM>
52 </BODY>
53 </HTML>
NOTA
Algumas linhas aparecem divididas em duas ou mais linhas. Nunca demais lembrar que as
mesmas devem ser digitadas como uma linha nica; apenas esto exibidas, em duas ou mais
linhas, por questo de espao.
Alguns comentrios sobre o cdigo:
Primeiro vamos tratar da construo da instruo SQL, conforme indicado no seguinte
trecho de cdigo:
20 inst_sql=Select * from Produtos WHERE Produtos.ProductName= &
Request.Form(listaprodutos)&
Esta uma instruo SQL, que utiliza a clusula WHERE para pesquisar apenas o registro
cujo nome do produto foi selecionado na lista de produtos. Vamos supor que o usurio tenha
selecionado o produto Geitost. A instruo SQL para localizar o registro para este produto,
deve ser a seguinte:
Select * from Produtos WHERE Produtos.ProductName=Geitost
Observe no cdigo da linha 20 que colocamos o apstrofe logo aps o sinal de igual (=), depois
utilizamos Request.Form(listaprodutos), para capturar o valor do produto que o usurio
selecionou na lista de produtos e, finalmente, anexamos o apstrofe final ( ). Com isso o cdigo
ASP monta a instruo SQL correta, seja qual for o produto selecionado na lista de produtos.
Um detalhe importante a ser observado que o critrio, quando for um campo de texto, deve vir
entre os sinais de apstrofe. J para um campo do tipo data, o critrio deve vir entre os sinais #.
3 6 9
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
Uma vez montada a instruo SQL corretamente, a mesma passada como parmetro para o
mtodo Open do RecordSet Produtos. Com isso, apenas o registro para o produto selecionado,
ser retornado pelo banco de dados.
Aps termos recuperado o registro para o produto selecionado, passamos a montar um
formulrio, onde so exibidos os diversos campos do produto selecionado. Observe
que utilizamos uma tabela para facilitar o posicionamento e o alinhamento dos cam-
pos. Cada uma das linhas da tabela, possui duas colunas: uma onde vai a descrio do
campo e outra que exibe o campo propriamente dito. No exemplo abaixo, montada a
primeira linha da tabela, onde exibido o campo ProductID:
35 Response.Write <TR><TD>Cdigo:</TD><TD><INPUT id=ProductID maxLength=10
name=ProductID size=10 value= & Chr(34)& Produtos.Fields(ProductID) &
Chr(34)& ></TD></TR>
Uma linha semelhante utilizada para todos os demais campos do produto selecionado.
Na Figura 6.11, o usurio selecionou o produto Queso Cabrales.
Figura 6.1 1 : O usur io seleciona o pr odut o a ser alt er ado.
Ao clicar no boto Localizar Produto, ser chamada a pgina localiza.asp, a qual localiza o
registro do produto selecionado e exibe o mesmo em um formulrio, para que o usurio
possa alterar os campos que forem necessrios, conforme indicado na Figura 6.12.
O usurio pode alterar um ou mais campos, simplesmente clicando no campo e digitando
um novo valor. Aps ter alterado os campos necessrios, s clicar no boto Atualizar Produto,
que os dados para o produto sero atualizados na tabela Produtos do banco de dados
nwind.mdb.
Criando Sites Dinmicos com ASP 3.0
3 7 0
Figura 6.1 2: O usur io pode alt er ar quaisquer campos do pr odut o.
A Pgina que At ualiza os Dados na Tabela Pr odut os do
Banco de Dados Nwind. mdb At ualiza. asp
Quando o usurio clica no boto Atualizar Produto, chamada a pgina atualiza.asp, a qual
indicada na Listagem 6.6.
Listagem 6.6 Pgina ASP que atualiza os dados no banco de dados atualiza.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <TITLE>Dados atualizados com sucesso.</TITLE>
6 <BODY>
7 <%
8 O primeiro passo criar a conexo com o banco de dados.
3 7 1
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
9 Para isto crio um objeto do tipo Connection.
10 Cria um objeto do tipo ADODB.Connection
11 Set conn=Server.CreateObject(ADODB.Connection)
12 Agora abro uma conexo com o arquivo nwind.mdb
13 utilizando OLE DB.
14 conn.ConnectionString = PROVIDER=MICROSOFT.JET.OLEDB.4.0;
DATA SOURCE=c:\meus documentos\nwind.mdb
15 conn.Open
16 Agora criamos um objeto RecordSet.
17 Este objeto ir acessar o registro do Produto
18 que ser alterado.
19 Set Produtos = Server.CreateObject(ADODB.Recordset)
20 inst_sql=Select * from Produtos WHERE Produtos.ProductName= &
Request.Form(ProductName)&
21 Produtos.Open inst_sql,conn,3,3
22 Comeo a alterar os campos do registro
23 Produtos.Fields(ProductName)= Request.Form(ProductName)
24 Produtos.Fields(SupplierID)= Request.Form(SupplierID)
25 Produtos.Fields(CategoryID)= Request.Form(CategoryID)
26 Produtos.Fields(QuantityPerUnit)= Request.Form(QuantityPerUnit)
27 Produtos.Fields(UnitPrice)= Request.Form(UnitPrice)
28 Produtos.Fields(UnitsInStock)= Request.Form(UnitsInStock)
29 Produtos.Fields(UnitsOnOrder)= Request.Form(UnitsOnOrder)
30 Produtos.Fields(ReorderLevel)= Request.Form(ReorderLevel)
31 Produtos.Fields(Discontinued)= Cbool(Request.Form(Discontinued))
32 Atualizo o registro, utilizando o mtodo Update.
33 Produtos.Update
34 Response.Write PRODUTO :
35 Response.Write Request.Form(ProductName)
36 Response.Write Atualizado com sucesso <BR>
37 Response.Write <HR>
38 %>
39 <A HREF=produto.asp>Clique aqui para atualizar outro produto</A>
40 </BODY>
41 </HTML>
Para atualizar o registro utilizamos o seguinte cdigo:
23 Produtos.Fields(ProductName)= Request.Form(ProductName)
24 Produtos.Fields(SupplierID)= Request.Form(SupplierID)
25 Produtos.Fields(CategoryID)= Request.Form(CategoryID)
26 Produtos.Fields(QuantityPerUnit)= Request.Form(QuantityPerUnit)
Criando Sites Dinmicos com ASP 3.0
3 7 2
27 Produtos.Fields(UnitPrice)= Request.Form(UnitPrice)
28 Produtos.Fields(UnitsInStock)= Request.Form(UnitsInStock)
29 Produtos.Fields(UnitsOnOrder)= Request.Form(UnitsOnOrder)
30 Produtos.Fields(ReorderLevel)= Request.Form(ReorderLevel)
31 Produtos.Fields(Discontinued)= Cbool(Request.Form(Discontinued))
32 Atualizo o registro, utilizando o mtodo Update.
33 Produtos.Update
Cada campo do registro recebe o valor contido no campo respectivo do formulrio da Figura
6.12. Depois utilizamos o mtodo Update para atualizar o registro. No momento que chamamos
o mtodo Update que as atualizaes so gravadas no banco de dados.
Ut ilizando o Nosso Exemplo de Alt er ao de Regist r o
Vamos utilizar o nosso exemplo, passo a passo, para que possamos visualizar o funcionamento
completo do mesmo. Conforme indicado na Figura 6.13, carregamos a pgina produto.asp e
selecionamos o produto Ravioli Angelo.
Figura 6.1 3: Selecionando o pr odut o Ravioli Angelo.
Ao clicarmos no boto Localizar Produto, carregada a pgina localiza.asp, a qual nos exibe
os campos do produto Ravioli Angelo, conforme indicado na Figura 6.14.
Nesta pgina vamos alterar o valor do campo Preo Unit. Vamos alterar de 19,52 para 25,34,
conforme indicado na Figura 6.15.
3 7 3
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
Figura 6.1 4: O r egist r o do pr odut o Ravioli Angelo foi localizado.
Figura 6.1 5: Alt er ando o valor do campo Pr eo Unit .
Ao clicar no boto Atualizar Produto, chamada a pgina atualiza.asp, que faz as atualizaes
no banco de dados, exibe uma mensagem de que estas atualizaes foram feitas com sucesso
Criando Sites Dinmicos com ASP 3.0
3 7 4
Figura 6.1 6: Os dados for am alt er ados com sucesso.
Na Figura 6.17, abrimos a tabela Produtos do banco de dados C:\meus documentos\ nwind.mdb,
na qual podemos comprovar que o preo unitrio para o produto Ravioli Angelo foi realmente
alterado para 25,34.
e apresenta um link para que o usurio possa voltar para a pgina produto.asp para selecionar
um outro produto a ser atualizado, conforme indicado na Figura 6.16.
Figura 6.1 7: Compr ovando as alt er aes efet uadas.
IMPORTANTE
Veja que atravs da utilizao de ASP podemos construir aplicaes Web com as mesmas
funcionalidades de banco de dados existentes em aplicaes tradicionais. Podemos inserir, pesquisar
e alterar registros. No prximo item aprenderemos a eliminar registros, utilizando ASP.
3 7 5
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
Eliminando Regist r os de um Banco de Dados
Neste tpico aprenderemos a criar uma pgina ASP que elimina um registro do banco de dados.
Nosso exemplo ser composto dos seguintes elementos:
Uma pgina ASP produto.asp, onde temos um campo com a listagem de produtos
disponveis na tabela Produtos, do banco de dados Nwind. Esta listagem ser construda
dinamicamente, isto , cada vez que a pgina for carregada, a listagem ser construda
a partir das informaes disponveis na tabela Produtos. Est pgina j foi construda
no exemplo do item anterior, consulte a Listagem 6.4.
Aps selecionar o produto a ser alterado, o usurio clica em um boto Localizar produto.
Feito isso, a pgina produto.asp chama uma pgina chamada localiza.asp, a qual localiza
o registro selecionado no banco de dados. Com isso, o usurio pode conferir se este
realmente o produto que ele deseja eliminar. Esta pgina j foi construda no item
anterior, consulte a Listagem 6.5, sendo que apenas iremos alterar a legenda do boto
de comando, ao invs de Alterar Produto, teremos Excluir Produto. Tambm ser
alterado o atributo action da tag FORM, para que aponte para a pgina exclui.asp, ao
invs de apontar para a pgina atualiza.asp.
Aps conferir se o produto a ser excludo o que est sendo exibido, o usurio clica no
boto Excluir produto. Ento, a pgina localiza.asp chama a exclui.asp, que acessa o
banco de dados e exclui o produto selecionado pelo usurio. Ao final emitida uma
mensagem indicando que os dados foram atualizados com sucesso.
A Pgina ASP Par a Excluir o Pr odut o Selecionado Exclui. asp
Na Listagem 6.7 temos o cdigo ASP para a criao da pgina exclui.asp.
Listagem 6.7 Pgina ASP para excluir o produto selecionado exclui.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <TITLE>Produto excludo com sucesso.</TITLE>
6 <BODY>
7 <%
8 O primeiro passo criar a conexo com o banco de dados.
9 Para isto crio um objeto do tipo Connection.
Criando Sites Dinmicos com ASP 3.0
3 7 6
10 Cria um objeto do tipo ADODB.Connection
11 Set conn=Server.CreateObject(ADODB.Connection)
12 Agora abro uma conexo com o arquivo nwind.mdb
13 utilizando OLE DB.
14 conn.ConnectionString = PROVIDER=MICROSOFT.JET.OLEDB.4.0;
DATA SOURCE=c:\meus documentos\nwind.mdb
15 conn.Open
16 Agora criamos um objeto RecordSet.
17 Este objeto ir acessar o registro do Produto
18 que ser excludo.
19 Set Produtos = Server.CreateObject(ADODB.Recordset)
20 inst_sql=Select * from Produtos WHERE Produtos.ProductName= & Request.Form
(ProductName)&
21 Produtos.Open inst_sql,conn,3,3
22 If Produtos.RecordCount <> 1 Then
23 Response.Write <B>O produto no existe, ou
24 Response.Write existe mais do que um <BR> produto com este nome: </B>
25 Response.Write Request.Form(ProductName)
26 Else
27 Produtos.Delete
28 Response.Write PRODUTO:
29 Response.Write Request.Form(ProductName)
30 Response.Write foi excludo da tabela de Produtos. <BR>
31 End If
32 Response.Write <HR>
33 %>
34 <A HREF=produto.asp>Clique aqui para selecionar outro produto a ser excludo.</A>
35 </BODY>
36 </HTML>
NOTA
Algumas linhas aparecem divididas em duas ou mais linhas. Nunca demais lembrar que
estas devem ser digitadas como uma linha nica. As mesmas esto exibidas em duas ou mais
linhas apenas por questo de espao.
Comentrio sobre o cdigo:
A nica novidade na Listagem 6.7 o trecho indicado a seguir:
22 If Produtos.RecordCount <> 1 Then
23 Response.Write <B>O produto no existe, ou
3 7 7
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
24 Response.Write existe mais do que um <BR> produto com este nome: </B>
25 Response.Write Request.Form(ProductName)
26 Else
27 Produtos.Delete
28 Response.Write PRODUTO:
29 Response.Write Request.Form(ProductName)
30 Response.Write foi excludo da tabela de Produtos. <BR>
31 End If
Neste cdigo utilizamos o mtodo RecordCount para verificar se no foi encontrado nenhum
produto (RecordCount = 1) ou foi encontrado mais do que um produto (RecordCount>1).
Nestas duas situaes informamos que o produto no existe ou existe mais do que um produto
com o nome selecionado. Em ambos os casos no podemos utilizar o mtodo Delete.
Caso tenha sido encontrado somente um registro (RecordCount = 1), utilizamos o mtodo
Delete do objeto Produtos, para eliminar o registro encontrado.
Neste exemplo, utilizamos o mtodo Delete sem nenhum parmetro, o que faz com que seja
eliminado somente o registro atual. Podemos passar um parmetro para o mtodo Delete, o
qual altera o comportamento do mesmo. Para isso utilizaramos a seguinte sintaxe:
RecordSet.Delete parmetro
Na Tabela 6.11, descrevemos os valores mais utilizados para o parmetro do mtodo Delete.
Tabela 6.11 Valores de parmetro para o mtodo Delete.
Valor Descrio
1 Elimina o registro atual, isto , o registro no qual est o
indicador de registros.
2 Elimina somente os registros selecionados atravs da
utilizao da propriedade Filter do objeto RecordSet. A
propriedade Filter j deve ter sido definida anteriormente.
3 Elimina todos os registros do objeto RecordSet.
Ut ilizando o Nosso Exemplo de Excluso de Regist r o
Vamos utilizar o nosso exemplo, passo a passo, para que possamos visualizar o funcionamento
completo do mesmo. Conforme indicado na Figura 6.18, carregamos a pgina produto.asp e
selecionamos o produto Filo Mix.
Criando Sites Dinmicos com ASP 3.0
3 7 8
Figura 6.1 8: Selecionando o pr odut o Filo M ix.
Ao clicarmos no boto Localizar Produto, carregada a pgina localiza.asp, a qual nos exibe
os campos do produto Filo Mix, conforme indicado na Figura 6.19.
Figura 6.1 9: O r egist r o do pr odut o Filo M ix foi localizado.
3 7 9
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
Os dados do produto Filo Mix so exibidos para que o usurio confira se este realmente o
produto a ser excludo no banco de dados. Para excluir o produto selecionado s clicar no
boto Excluir Produto.
Ao clicar no boto Excluir Produto, chamada a pgina exclui.asp, que exclui o produto
selecionado, e exibe uma mensagem de que a excluso foi realizada com sucesso e apresenta
um link para que o usurio possa voltar para a pgina produto.asp para selecionar um outro
produto a ser excludo, conforme indicado na Figura 6.20.
Figura 6.20: O pr odut o Filo M ix foi excludo com sucesso.
Na Figura 6.21, abrimos a tabela Produtos do banco de dados C:\meus documentos\ nwind.mdb,
na qual podemos comprovar que o produto Filo Mix foi realmente excludo.
Figura 6.21 : Compr ovando a excluso do pr odut o Filo M ix.
Criando Sites Dinmicos com ASP 3.0
3 8 0
IMPORTANTE
Veja que atravs da utilizao de ASP podemos construir aplicaes Web com as mesmas
funcionalidades de banco de dados existentes em aplicaes tradicionais. Podemos inserir,
pesquisar, alterar e excluir registros.
A Pr opr iedade Filt er do Objet o Recor dSet
Podemos configurar a propriedade Filter para exibir apenas um conjunto de registros que
satisfaam uma ou mais condies. Por exemplo, posso ter criado um RecordSet que retorna
todos os registros da tabela Pedidos (Orders) do banco de dados nwind.mdb. Depois posso
configurar a propriedade Filter para que somente sejam exibidos os registros cujo Pas de
destino seja o Brasil.
A configurao da propriedade Filter apenas faz com que seja limitada a visibilidade do
RecordSet. Podemos redefinir a propriedade Filter, de tal maneira que todos os registros voltem
a estar disponveis.
Na Listagem 6.8, criamos uma pgina que acessa a tabela Orders, do banco de dados
nwind.mdb. So recuperados os campos OrderID, OrderDate, ShipCity e ShipCountry. Depois
utilizamos a propriedade Filter, para exibir somente os pedidos para o ano de 1994.
Listagem 6.8 Exibindo somente os pedidos para o ano de 1994 filter_pedidos.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <TITLE>Utilizando a propriedade Filter.</TITLE>
6 <BODY>
7 <%
8 O primeiro passo criar a conexo com o banco de dados.
9 Para isto crio um objeto do tipo Connection.
10 Cria um objeto do tipo ADODB.Connection
11 Set conn=Server.CreateObject(ADODB.Connection)
12 Agora abro uma conexo com o arquivo nwind.mdb
3 8 1
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
13 utilizando OLE DB.
14 conn.ConnectionString = PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=c:\meus
documentos\nwind.mdb
15 conn.Open
16 Agora criamos um objeto RecordSet.
17 Este objeto ir acessar o campo ProductName
18 da tabela Orders.
19 Set Pedidos = Server.CreateObject(ADODB.Recordset)
20 inst_sql=SELECT Orders.OrderID, Orders.OrderDate, Orders.ShipCity, Orders.
ShipCountry, Year([OrderDate]) AS AnoPedido FROM Orders Order ByShipCountry
21 Pedidos.Open inst_sql, conn, 3, 3
22 Neste ponto tenho o objeto Pedidos ligado com a tabela
23 Produtos do banco de dados nwind.mdb.
24 %>
25 <P><FONT color=navy size=6><B>Empresa ABC Ltda.</B></FONT></P>
26 <P><B><I>Listagem de Produtos para o ano de: <FONT color=red>1994</FONT>
27 </I></B>
28 <HR>
29 </P>
30 <%
31 Configura a propriedade Filter para exibir
32 somente os registros em que o ano do campo
33 OrderDate igual a 1994.
34 Pedidos.Filter = AnoPedido=1994
35 Agora construo uma tabela para exibir os resultados.
36 %>
Criando Sites Dinmicos com ASP 3.0
3 8 2
37 <%
38 <TABLE>
39 <TR>
40 <TD>Cdigo</TD>
41 <TD>Data</TD>
42 <TD>Cidade</TD>
43 <TD>Pas</TD>
44 <TD>Ano</TD>
45 </TR>
46 <%
47 Pedidos.MoveFirst
48 Do Until Pedidos.EOF %>
49 <TR>
50 <TD><% =Pedidos.Fields(OrderID) %></TD>
51 <TD><% =Pedidos.Fields(OrderDate) %></TD>
52 <TD><% =Pedidos.Fields(ShipCity) %></TD>
53 <TD><% =Pedidos.Fields(ShipCountry)%></TD>
54 <TD><% =Pedidos.Fields(AnoPedido) %></TD>
55 </TR>
56 <%
57 Pedidos.MoveNext
58 Loop
59 %>
60 </TABLE>
61 </BODY>
62 </HTML>
Ao carregarmos esta pgina, obteremos o resultado indicado na Figura 6.22.
3 8 3
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
Figura 6.22: Pedidos par a o ano de 1 9 9 4 .
Vamos fazer alguns comentrios sobre o cdigo.
Primeiro gostaria de comentar a construo da instruo SQL:
20 inst_sql=SELECT Orders.OrderID, Orders.OrderDate, Orders.ShipCity,
Orders.ShipCountry, Year([OrderDate]) AS AnoPedido FROM Orders Order By
ShipCountry
Observe que na instruo SQL, utilizamos a funo Year(NomeDoCampo), para criar um campo
chamado AnoPedido, o qual contm apenas o ano da data do Pedido. Esta construo mostra o
poder e a simplicidade da linguagem SQL, motivo pelo qual foi colocado anteriormente sobre a
importncia de aprendermos a utilizar com eficincia a linguagem SQL.
Agora vamos observar a utilizao da propriedade Filter, no seguinte fragmento de cdigo:
34 Pedidos.Filter = AnoPedido=1994
Com este comando estamos restringindo os registros de tal forma que somente sejam exibidos
os registros cujo campo AnoPedido seja igual a 1994.
Para salientar a flexibilidade desta propriedade, vamos considerar um outro exemplo. Vamos
supor que seja necessrio exibir apenas os pedidos para o ano de 1994 e cujo pas de destino
fosse o Brazil (com z porque no banco de dados Nwind est com z). Para obter este resultado,
bastaria definir a propriedade Filter da seguinte maneira:
Pedidos.Filter = AnoPedido=1994 And ShipCountry=Brazil
Criando Sites Dinmicos com ASP 3.0
3 8 4
Quando queremos que os registros atendam a dois ou mais critrios, simultaneamente,
utilizamos o operador And. Neste caso somente sero exibidos os registros em que o campo
AnoPedido for 1994 e o campo ShipCountry for Brazil, conforme indicado na Figura 6.23.
Figura 6.23: Pedidos par a o Br azil no ano de 1 9 9 4 .
Vamos refinar um pouco mais. Vamos fazer com que sejam exibidos apenas os registros para
o ano de 1994 e para Brazil ou Germany (Alemanha).
Pedidos.Filter = (AnoPedido=1994 And ShipCountry=Brazil) OR (AnoPedido=1994 And
ShipCountry=Germany)
Este comando deve ser digitado em uma nica linha, alm disso os espaos devem ser
rigorosamente respeitados. Aps fechar parnteses, apenas um espao, aps o OR mais um
espao e assim por diante. Na Figura 6.24 temos o resultado desta pesquisa, na qual so
exibidos apenas os pedidos para o Brazil e para a Germany, no ano de 1994.
Observe que, com a correta utilizao da propriedade Filter, podemos obter resultados
interessantes. Voltaremos a utilizar esta propriedade em outros exemplos deste livro.
Para eliminar qualquer filtro aplicado e voltar a disponibilizar todos os registros, basta utilizar
os seguinte comando:
Pedidos.Filter =
3 8 5
Captulo 6 Bancos de Dados com ASP Conceitos Avanados Parte I
Figura 6.24: Pedidos par a Br azil e par a Ger many no ano de 1 9 9 4 .
Com isso elimino qualquer filtro que tenha sido aplicado.
Tambm podemos utilizar o operador Like para fazer uma pesquisa por padres. Por exemplo,
vamos supor que queremos filtrar apenas os registros cujo campo NomeCliente inicie com a
letra J. Poderamos utilizar o seguinte comando:
Pedidos.Filter = NomeCliente Like J%
Neste caso o % funciona como um caractere curinga, isto , a primeira letra do nome deve ser
J e o que vem depois no importa. Neste caso seriam retornados registros tais como:
Jos da Silva
Juvenal Pereira
Jlio Battisti
Concluso
No incio do captulo aprendemos a estabelecer conexes com banco de dados, sem utilizar
ODBC. Fizemos isto, definimos a propriedade ConnectionString do objeto Connection,
Criando Sites Dinmicos com ASP 3.0
3 8 6
acessando as fontes de dados utilizando o provedor OLE DB para cada fonte. Foram
apresentados exemplos para o Microsoft Access, Microsoft SQL Server e ORACLE.
Neste captulo tambm fizemos um estudo detalhado do objeto RecordSet.
Saber utilizar o objeto RecordSet de fundamental importncia para a criao de aplicaes
Web com acesso a bancos de dados. Estudamos os diversos mtodos, propriedades e eventos
deste objeto.
Aprendemos a criar pginas ASP que fazem operaes bastante comuns em aplicaes Web,
tais como:
Pesquisar registros em um banco de dados.
Alterar registros.
Eliminar registros.
Fazer a validao dos dados digitados em um formulrio.
Filtrar os registros retornados por um objeto RecordSet.
3 8 7
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
Captulo 7
Bancos de Dados com ASP
Conceitos Avanados Parte II
Criando Sites Dinmicos com ASP 3.0
3 8 8
Neste captulo sero apresentados mais alguns tpicos sobre o acesso a banco de dados.
Iniciaremos por um estudo do objeto Command, o qual pode ser utilizado para retornar um
conjunto de registros em um objeto RecordSet e para efetuar operaes que envolvem diversos
registros como, por exemplo, atualizar o campo PreoUnitrio em todos os registros da
tabela Produtos. O objeto Command tambm pode ser utilizado para passar parmetros para
uma Consulta Parametrizada.
Faremos um exemplo completo sobre a passagem de parmetros para uma Consulta
Parametrizada do Microsoft Access. Com a utilizao de Consultas Parametrizadas podemos
criar pginas ASP bastante flexveis, que nos permitem executar consultas de maneira interativa
com o banco de dados. O usurio seleciona um valor para um ou mais parmetros e executa
a consulta. Caso deseje uma nova consulta s selecionar novos valores para os parmetros
e executar novamente a consulta. Com isso podemos obter uma srie de resultados de maneira
simples e prtica.
Veremos exemplos de acesso a banco de dados com a utilizao dos mtodos e propriedades
do objeto Command. Sero apresentadas tabelas com a descrio dos principais mtodos e
propriedades deste objeto. A utilizao do objeto Command especialmente indicada para
situaes onde temos que passar parmetros para Consultas Parametrizadas ou para Stored
Procedures. Atravs da utilizao do objeto Command e de seus mtodos, propriedades e
colees, podemos criar os diversos parmetros necessrios, pass-los para o banco de dados
e, at mesmo, receber valores de retorno de Stored Procedures em parmetros definidos para
o objeto Command.
Tambm estudaremos o objeto Parameter, utilizado na criao e definio dos parmetros a
serem utilizados pelo objeto Command. Veremos como criar e definir um determinado
parmetro.
Tambm sero apresentadas tabelas com a descrio dos principais mtodos e propriedades
dos diversos objetos estudados.
Na seqncia, analisaremos mais alguns exemplos de pesquisa em banco de dados, utilizando
pginas ASP. Trataremos um pouco mais sobre a construo de instrues SQL avanadas, as
quais utilizam o operador Like e funes de agregao como Sum, Avg, Min e Max. Tambm
trataremos, diretamente em uma instruo SQL, da utilizao dos operadores And e Or, bem
como de funes como Year, Month e Day.
Como exemplo de aplicao, no final do captulo, criaremos um formulrio que permite que
o prprio usurio defina a pesquisa a ser realizada. No formulrio, o usurio poder fazer
pesquisa na tabela Orders do banco de dados Nwind. O usurio poder decidir se deseja
fazer a pesquisa por Pas de destino, Pas de destino e Cidade, por Ano da Data do Pedido ou
3 8 9
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
Ms da Data do Pedido. Tambm utilizaremos o modelo de eventos do Internet Explorer para
ativar ou desativar campos medida em que o usurio seleciona opes no formulrio.
Neste captulo, estaremos utilizando como exemplo o banco de dados nwind.mdb do Microsoft
Access. Existem pequenas diferenas na linguagem SQL do Microsoft Access e do Microsoft
SQL Server. Para maiores detalhes sobre a criao de instrues com o Microsoft SQL Server,
consulte a documentao do produto.
O Objet o Command
Utilizamos o objeto Command para definir um determinado comando que dever ser
executado em um fonte da dados, como um banco de dados do Microsoft Access ou do
Microsoft SQL Server. O objeto Command especialmente indicado para a execuo de
comandos que necessitem de parmetros, com por exemplo, Stored Procedures de um banco
de dados do Microsoft SQL Server, ou Consultas Parametrizadas do Microsoft Access.
NOTA
Uma Consulta Parametrizada um tipo especial de consulta, a qual espera receber um ou
mais valores (os parmetros). Os valores recebidos so utilizados, normalmente, como critrios
de pesquisa, de tal forma que somente sero retornados os registros que atenderem os critrios
especificados. Por exemplo, poderamos ter um parmetro no campo ShipCountry da tabela
Orders do banco de dados nwind.mdb. Se passarmos para este parmetro o valor Germany,
sero retornados apenas os registros em que o campo ShipCountry for igual a Germany.
Um Br eve Int r oduo ao Objet o Command
Para criar um objeto Command utilizamos a seguinte sintaxe:
Set nome_objeto = Server.CreateObject(ADODB.Command)
O exemplo, a seguir, cria o objeto Command chamado Pedidos:
Set Pedidos = Server.CreateObject(ADODB.Command).
IMPORTANTE
Nunca demais lembrar que, para criar um objeto, devemos utilizar o operador Set, caso
contrrio obteremos um erro quando a pgina for carregada.
Para iniciarmos o estudo do objeto Command, vamos analisar o exemplo da Listagem 7.1.
Criando Sites Dinmicos com ASP 3.0
3 9 0
Listagem 7.1 Utilizando o objeto Command para retornar dados command1.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <TITLE>Utilizando o objeto Command.</TITLE>
6 <BODY>
7 <%
8 O primeiro passo criar a conexo com o banco de dados.
9 Para isto crio um objeto do tipo Connection.
10 Cria um objeto do tipo ADODB.Connection
11 Set conn=Server.CreateObject(ADODB.Connection)
12 Agora abro uma conexo com o arquivo nwind.mdb
13 utilizando OLE DB.
14 conn.ConnectionString = PROVIDER=MICROSOFT.JET.OLEDB.4.0;
DATA SOURCE=c:\meus documentos\nwind.mdb
15 conn.Open
16 Agora crio um objeto do tipo Command, o qual ser,
17 automaticamente, associado com a conexo conn.
18 Set com_orders = Server.CreateObject(ADODB.Command)
19 com_orders.CommandText = Select * From Orders Order By OrderDate
20 com_orders.ActiveConnection = conn
21 Agora retorno o resultado do comando, utilizando o
22 mtodo Execute.
23 Este resultado ser armazenado em um objeto RecordSet
24 chamado Ped.
25 Set Ped= Server.CreateObject(ADODB.RecordSet)
26 Set Ped=com_orders.Execute
3 9 1
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
27 %>
28 <HR>
29 <TABLE>
30 <TR>
31 <TD>Cdigo</TD>
32 <TD>Data </TD>
33 </TR>
34
35 <%
36 Do Until Ped.EOF
37 %>
38 <TR>
39 <TD><%=Ped.Fields(OrderID) %> </TD>
40 <TD><%=Ped.Fields(OrderDate)%> </TD>
41 </TR>
42 <%
43 Ped.MoveNext
44 Loop
45 %>
46 </TABLE>
47 <HR>
48 </BODY>
49 </HTML>
Ao carregarmos este arquivo obtemos o resultado indicado na Figura 7.1.
A novidade na Listagem 7.1 a utilizao do objeto Command para a obteno do RecordSet
Ped. Vamos analisar os mtodos e propriedades que foram utilizados.
Primeiro criamos um objeto do tipo Command, conforme indicado pelo seguinte comando:
18 Set com_orders = Server.CreateObject(ADODB.Command)
Criando Sites Dinmicos com ASP 3.0
3 9 2
Figura 7.1 : Car r egando a pgina comand1 . asp.
O prximo passo definir a propriedade CommandText. Esta propriedade foi configurada
com a instruo SQL que dever ser executada no banco de dados, para retornar os registros
desejados. No nosso exemplo, a instruo SQL retorna todos os registros da tabela Orders e
ordena a listagem pelo campo OrderDate, conforme indicado no seguinte comando:
19 com_orders.CommandText = Select * From Orders Order By OrderDate
Em seguida definimos a conexo com a qual o objeto com_orders est associado. Para isto
definimos a propriedade ActiveConnection, conforme indicado no seguinte comando:
20 com_orders.ActiveConnection = conn
A partir de agora, os comandos executados pelo objeto Command sero executados na conexo
conn, que est ligada ao banco de dados nwind.mdb.
Agora criamos um objeto do tipo RecordSet chamado Ped:
25 Set Ped= Server.CreateObject(ADODB.RecordSet)
O ltimo passo utilizar o mtodo Execute do objeto com_orders. Ao utilizarmos este mtodo,
executada a instruo contida na propriedade CommandText. O resultado retornado para
o objeto RecordSet especificado no comando, conforme indicado abaixo:
26 Set Ped=com_orders.Execute
3 9 3
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
Neste caso aps a execuo do mtodo Execute, os registros retornados estaro armazenados
no objeto Ped, o qual um objeto do tipo RecordSet.
Veja que o que fizemos foi, simplesmente, utilizar um objeto Command e as propriedades
CommandText, ActiveConnection e o mtodo Execute, para criar um objeto RecordSet com
todos os registros da tabela Orders.
Voc pode estar questionando: Por que todos esses passos, se podemos simplesmente utilizar
o mtodo Open do objeto RecordSet, como j fizemos nos captulos anteriores?.
A resposta simples. Estamos estudando o objeto Command porque existem determinadas
operaes que somente podem ser executadas com este objeto, como por exemplo, passar
parmetros para um Stored Procedure ou uma Consulta Parametrizada.
Agora que j fizemos um estudo preliminar do objeto Command, vamos apresentar as demais
propriedades e mtodos deste objeto.
Os M t odos do Objet o Command
Na Tabela 7.1 temos uma descrio dos mtodos do objeto Command.
Tabela 7.1 Os mtodos do objeto Command.
Ainda neste item veremos exemplos de aplicao destes mtodos.
As Pr opr iedades do Objet o Command
Na Tabela 7.2 temos uma descrio das propriedades do objeto Command.
Mtodo Descrio
Cancel Cancela a execuo do mtodo Execute caso a mesma
ainda esteja pendente.
CreateParameter Cria um novo objeto do tipo Parameter. Pode ser
utilizado, por exemplo, para passar parmetros para
Consultas Parametrizadas do Microsoft Access.
Execute Executa uma pesquisa, instruo SQL ou Stored
Procedure especificado na propriedade CommandText.
Criando Sites Dinmicos com ASP 3.0
3 9 4
Tabela 7.2 As propriedades do objeto Command.
Propriedade Descrio
ActiveConnection Determina a qual conexo o objeto Command estar
ligado, isto , atravs de qual conexo os comandos
sero executados.
CommandText Contm o texto do comando que ser executado contra
a conexo definida na propriedade ActiveConnection.
CommandTimeout Indica por quanto tempo o comando pode ser
executado. Caso o comando no retorne um resultado
no tempo especificado por esta propriedade, ser
gerada uma mensagem de erro e a execuo do
comando ser suspensa. O tempo especificado em
segundos e o valor padro 30 segundos.
CommandType Indica o tipo de comando que ser executado. Na tabela
7.3 temos uma descrio dos tipos de comandos possveis.
Name Indica o nome do objeto Command.
Parameters Contm todos os objetos do tipo Parameter definidos
para o objeto Command.
Prepared Indica se para salvar ou no uma verso compilada
do objeto Command aps a execuo do mesmo. O
armazenamento de verses compiladas melhora o
desempenho do banco de dados. Esta possibilidade
depende do banco de dados que est sendo acessado.
O Microsoft SQL Server 2000 permite que sejam
criadas e armazenadas verses compiladas dos
comandos e Store Procedures executados. Assim, da
prxima vez que o comando for executado, o mesmo
no precisa ser novamente interpretado para gerar a
verso compilada. Em ambientes acessados por um
grande nmero de usurios, este recurso pode ser de
grande valia para melhorar o desempenho.
Properties Contm todos os objetos do tipo Property definidos
para o objeto Command.
State Indica se o objeto Command est aberto (Open) ou
fechado (Closed). Esta propriedade somente para leitura.
3 9 5
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
Na Tabela 7.3, temos uma relao dos tipos de comandos possveis, os quais so definidos
pela propriedade CommandType.
Tabela 7.3 Valores possveis para a propriedade CommandType.
A sintaxe para definir a propriedade CommandType a seguinte:
Objeto.CommandType = valor
ou
Objeto.CommandType = constante
Observe que podemos utilizar o valor numrico ou uma constante predefinida. Por exemplo,
podemos utilizar o valor 1 ou a constante adCmdText para definir o tipo do comando como
sendo texto.
Valor/Constante Tipo de comando
-1/adCmdUnspecified No especifica o tipo de Comando.
1/adCmdText Avalia o texto definido na propriedade
CommandText, o qual pode ser uma instruo SQL
ou uma chamada para um Stored Procedure do
banco de dados.
2/adCmdTable Considera o valor da propriedade CommandText
como sendo o nome de uma tabela que foi gerada
a partir de uma instruo SQL. Somente retorna as
colunas definidas pela instruo SQL. Para retornar
todas as colunas, devemos utilizar o tipo 512
adCmdTableDirect.
4/adCmdStoredProc Considera o valor da propriedade CommandText
como sendo o nome de um Stored Procedure.
8/adCmdUnknown Considera o valor da propriedade CommandText
como sendo de tipo desconhecido. o valor padro.
256/adCmdFile Considera o valor da propriedade CommandText
como sendo o nome de um RecordSet armazenado
em um arquivo.
512/adCmdTableDirect Considera o valor da propriedade CommandText
como sendo o nome de um tabela em que todos os
campos so retornados.
Criando Sites Dinmicos com ASP 3.0
3 9 6
Existe um grande nmero de constantes predefinidas para os objetos ADO. Estas constantes
esto localizadas nos seguintes arquivos:
adovbs.inc: Constantes para a linguagem VBScript.
adojavas.inc: Constantes para a linguagem JScript.
Estes arquivos esto localizados, normalmente, em uma das seguintes pastas:
Para o Windows 2000 em Portugus: Arquivos de programas\Arquivos comuns\System\ADO.
Para o Windows 2000 em Ingls: Program Files\Common Files\system\ado.
Para que possamos utilizar estas constantes, devemos utilizar uma diretiva include para incluir
estes arquivos, ou definir uma referncia utilizando a tag a seguir:
<!- -METADATA TYPE=typelib uuid={00000205-0000-0010-8000-00AA006D2EA4} ->
Esta tag deve ser includa dentro da seo <HEAD></HEAD> de cada pgina ASP que
utilizar as constantes ou no arquivo global.asa. Ao serem includas no arquivo global.asa, as
constantes estaro disponveis para qualquer pgina ASP que faa parte da aplicao Web.
NOTA
Voltaremos a falar sobre o arquivo global.asa.
Agora vamos ver alguns exemplos de cdigo para o objeto Command, alguns de seus mtodos
e propriedades.
Vamos iniciar criando um objeto Connection e um objeto Command, conforme indicado pelo
trecho a seguir:
Criamos um objeto do tipo Connection
Set conn=Server.CreateObject(ADODB.Connection)
Agora abro uma conexo com o arquivo nwind.mdb
utilizando OLE DB.
conn.ConnectionString = PROVIDER=MICROSOFT.JET.OLEDB.4.0;
DATA SOURCE=c:\meus documentos\nwind.mdb
conn.Open
Agora crio um objeto do tipo Command
Set com_orders = Server.CreateObject(ADODB.Command)
3 9 7
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
Uma vez criado o objeto Command, vamos definir qual a conexo que o mesmo utilizar.
Para isso definimos a propriedade ActiveConnection:
com_orders.ActiveConnection = conn
Agora vamos definir o tipo de comando. Para isso utilizaremos a propriedade CommandType:
com_orders.CommandType = 1
Ao invs do valor numrico podemos utilizar a constante equivalente, conforme indicado no exemplo:
com_orders.CommandType = adCmdText
Agora vamos definir o comando que o objeto Command executar. Para isso definimos a
propriedade CommandText:
com_orders.CommandText = Select * From Orders Order By OrderDate
Vamos definir o TimeOut em 2 minutos (120 segundos) para a execuo deste objeto Command,
utilizando a propriedade CommandTimeout:
com_orders.CommandTimeout= 120
Agora vamos criar um objeto RecordSet e utilizar o mtodo Execute do objeto Command para
retornar registros para o objeto RecordSet:
Set Ped= Server.CreateObject(ADODB.RecordSet)
Set Ped=com_orders.Execute
Consult as Par amet r izadas no M icr osof t Access
Conforme descrito anteriormente, podemos utilizar o objeto Command para passar parmetros
para Consultas Parametrizadas do Microsoft Access ou para Stored Procedures do Microsoft
SQL Server. Neste tpico aprenderemos a trabalhar com parmetros.
NOTA
Para saber mais sobre a criao de consultas no Microsoft Access, consulte a documentao do
produto ou consulte o livro Microsoft Access 2000 Curso Bsico e Rpido, da editora Axcel Books.
Na Figura 7.2 temos uma consulta do Microsoft Access. A consulta baseada na tabela Orders
e foram includos os seguintes campos:
OrderID
OrderDate
ShipName
Criando Sites Dinmicos com ASP 3.0
3 9 8
ShipCity
ShipCountry
Figura 7.2: Consult a no M icr osof t Access.
Ao executarmos esta consulta, no Microsoft Access, so exibidos todos os pedidos, pois nenhum
critrio de filtragem foi imposto. Na Figura 7.3, vemos o resultado da execuo desta consulta.
Figura 7.3: Execuo da consult a sem cr it r ios de filt r agem.
3 9 9
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
Podemos definir um critrio de filtragem. Por exemplo, queremos que sejam exibidos os pedidos
apenas para a Argentina. Para isso poderamos especificar um critrio para o campo
ShipCountry, conforme indicado na Figura 7.4.
Figura 7.4: Especificando um cr it r io par a o campo ShipCount r y.
Ao executarmos esta consulta, no Microsfot Access, sero exibidos apenas os pedidos em que
o campo ShipCountry seja igual a Argentina. Na Figura 7.5, vemos o resultado da execuo
desta consulta.
Figura 7.5: Execuo da consult a com um cr it r io de pesquisa.
Criando Sites Dinmicos com ASP 3.0
4 0 0
Observe que somente foram exibidos os pedidos para a Argentina, o que confirma o correto
funcionamento do critrio que foi especificado.
Porm esta maneira de especificar critrios pouco flexvel, pois cada vez que quisermos
alterar o critrio, teremos que digitar o novo critrio, salvar a consulta e execut-la novamente.
Podemos obter uma maior flexibilidade especificando um parmetro para a consulta. Depois,
colocamos este parmetro como critrio no campo ShipCountry. Ao especificarmos um
parmetro como critrio para este campo, cada vez que a consulta for executada, o Microsoft
Access nos pergunta o valor do parmetro. Ns digitamos o valor desejado que passa a servir
como critrio de filtragem.
Para definir um parmetro, selecione o menu Consulta -> Parmetros. Na janela que surge
digite Pais (sem acento) para o nome do parmetro e selecione Texto para o tipo do parmetro,
conforme indicado na Figura 7.6.
Figura 7.6: Definindo um par met r o par a a consult a.
Depois basta colocar como critrio, no campo ShipCountry, o nome do parmetro entre
colchetes, conforme indicado na Figura 7.7.
Ao executar esta consulta, o Microsoft Access reconhece a existncia do parmetro, e abre
uma janela pedindo para que o usurio digite um valor para o parmetro, conforme indicado
na Figura 7.8.
Vamos supor que o usurio digite France e d um clique em OK. Sero exibidos todos os
pedidos em que o campo ShipCountry seja igual a France, conforme indicado na Figura 7.9.
4 0 1
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
Figura 7.7: Definindo o par met r o como cr it r io par a o campo ShipCount r y.
Figura 7.8: O usur io deve digit ar um valor par a o par met r o.
Figura 7.9: Execuo da consult a com o valor do par met r o definido como Fr ance.
Criando Sites Dinmicos com ASP 3.0
4 0 2
Utilizando parmetros, cada vez que a consulta executada, podemos fornecer um valor
diferente para o parmetro, valor esse que serve para filtrar os resultados. Podemos definir
parmetros em mais do que um campo da consulta, com isso, ao executar a consulta, sero
pedidos valores para cada um dos parmetros definidos.
O nosso objetivo poder, a partir de uma pgina ASP, executar uma Consulta Parametrizada
do Microsoft Access. Para isso, precisamos passar, a partir da pgina ASP, os valores para os
parmetros definidos na consulta. Isso possvel de ser feito com a utilizao do objeto
Parameter e a propriedade Parameters do objeto Command.
Na seqncia deste captulo estudaremos o objeto Parameter, bem como a passagem de
parmetros utilizando o objeto Command.
NOTA
Esta consulta foi salva com o nome de con_pedidos. Utilizaremos este nome em exemplos mais
adiante. Caso voc tenha criado uma consulta com um nome diferente, utilize o nome da
consulta que voc criou, nos exemplos deste captulo.
O Objet o Par amet er
O objeto Parameter representa parmetros associados com Consultas Parametrizadas ou
argumentos de entrada e valores de retorno para Stored Procedures. Com a utilizao do
objeto Parameter podemos definir, detalhadamente, os parmetros que sero enviados para
uma Consulta Parametrizada, ou os argumentos de entrada enviados para um Stored Procedure.
Na Tabela 7.4, temos uma descrio das principais propriedades do objeto Parameter.
Tabela 7.4 Principais propriedades do objeto Parameter.
Propriedade Descrio
Attributes Indica uma ou mais caractersticas do objeto Parameter.
Direction Define se o objeto Parameter representa um parmetro de
entrada, de sada ou ambos; ou indica se o parmetro
um valor de retorno de um Stored Procedure.
Name Contm o nome do objeto Parameter.
NumericScale Indica uma faixa de valores numricos aceitveis para o
valor do parmetro.
4 0 3
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
NOTA
Um Stored Procedure um conjunto de comandos gravados com um nome no banco de dados.
Podemos, por exemplo, criar um Stored Procedure que gera uma listagem com o total de vendas
por ms do ano. Um Stored Procedure pode receber valores como argumentos de entrada. Um
exemplo de argumento de entrada poderia ser o ano para o qual deve ser gerada uma listagem
do total de vendas mensais. Um Stored Procedure tambm pode retornar valores aps a sua
execuo. Podemos utilizar o objeto Parameter para enviar argumentos de entrada e tambm
para receber os valores calculados pelo Stored Procedure.
Para cada parmetro, que o objeto Command precisa tratar, criado um objeto Parameter.
Todos os objetos Parameter podem ser acessados atravs da coleo Parameters do objeto
Command. Para criar um objeto do tipo Parameter, podemos utilizar o mtodo CreateParameter
do objeto Command.
Ut ilizando o Objet o Command Par a Passar
Par met r os Par a uma Consult a Par amet r izada
Neste item vamos utilizar o objeto Command e a sua coleo Parameters para acessar a consulta
con_pedidos e passar um valor para o parmetro Pais da consulta. Vamos criar um formulrio,
onde temos uma lista, gerada dinamicamente pelo ASP, na qual temos a listagem dos pases
em ordem alfabtica. O usurio seleciona um pas na lista e clica no boto Pesquisar. Feito
isso ser chamada uma pgina procurapais.asp, que passa o valor selecionado na lista como
parmetro para a consulta con_pedidos, a qual retorna a listagem dos pedidos para o pas
selecionado. A pgina inicial, na qual construiremos a listagem de pases, ser chamada de
command2.asp.
Na Figura 7.10 temos um diagrama do funcionamento do nosso exemplo.
Propriedade Descrio
Precision Indica a preciso a ser utilizada para valores numricos.
Size Indica o tamanho mximo do parmetro, em bytes ou
caracteres.
Type Indica o tipo de dados para o objeto Parameter.
Value Indica o valor associado com o objeto Parameter.
Criando Sites Dinmicos com ASP 3.0
4 0 4
Figura 7.1 0: Diagr ama de funcionament o do exemplo pr opost o.
Na Listagem 7.2 temos o cdigo que cria a pgina command2.asp.
Listagem 7.2 Criando a lista com o nome dos pases command2.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <TITLE>Selecione o Pas de destino.</TITLE>
6 <BODY>
7 <%
8 O primeiro passo criar a conexo com o banco de dados.
9 para isto crio um objeto do tipo Connection.
10 Cria um objeto do tipo ADODB.Connection
11 Set conn=Server.CreateObject(ADODB.Connection)
12 Agora abro uma conexo com o arquivo nwind.mdb
13 utilizando OLE DB.
14 conn.ConnectionString = PROVIDER=MICROSOFT.JET.OLEDB.4.0;
DATA SOURCE=c:\meus documentos\nwind.mdb
15 conn.Open
16 Agora criamos um objeto RecordSet.
17 Este objeto ir acessar o campo ProductName
18 da tabela Produtos
19 Set Paises = Server.CreateObject(ADODB.Recordset)
command2 . asp pr ocur apais. asp
nwind. mdb
Consult a:
con_ pedidos
4 0 5
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
20 Paises.Open Select ShipCountry from Orders Group By ShipCountry Order By
ShipCountry, conn, 3, 3
21 Neste ponto tenho o objeto Paises com uma listagem
22 em ordem ascendente, dos pases para os quais existem
23 pedidos efetuados.
24 %>
25 <P><B>Selecione o pas a ser pesquisado.</B></P>
26 <P><B><I>Depois clique no boto Pesquisar.</I></B></P>
27 <FORM action=procurapais.asp method=post id=form1 name=form1>
28 <SELECT id=listapaises name=listapaises>
29 <%
30 Agora construo a lista de opes a partir dos
31 dados obtidos da tabela Orders.
32 Para cada pas obtido, crio uma nova opo
33 na lista.
34 Do While Not Paises.EOF
35 Response.Write <OPTION value= & Chr(34) & Paises.Fields(ShipCountry) &
Chr(34) & > & Paises.Fields(ShipCountry)& </OPTION>
36 Paises.MoveNext
37 Loop
38 %>
39 </SELECT>
40 <BR>
41 <HR>
42 <INPUT type=submit value=Pesquisar id=Pesquisar name=Pesquisar>
43 </FORM>
44 </BODY>
45 </HTML>
Criando Sites Dinmicos com ASP 3.0
4 0 6
Agora precisamos construir a pgina procurapais.asp. Esta pgina receber o valor selecionado
na lista, passar este valor para o parmetro Pais da consulta con_pedidos, a qual ir retornar
somente os pedidos para o pas selecionado. A pgina procurapais.asp tambm exibir os
resultados obtidos.
Na Listagem 7.3 temos o cdigo que cria a pgina procurapais.asp.
Listagem 7.3 Passando um valor para o parmetro Pais da consulta con_pedidos.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <TITLE>Resultados da pesquisa.</TITLE>
6 <BODY>
7 <%
8 O primeiro passo criar a conexo com o banco de dados.
9 para isto crio um objeto do tipo Connection.
10 Cria um objeto do tipo ADODB.Connection
11 Set conn=Server.CreateObject(ADODB.Connection)
12 Agora abro uma conexo com o arquivo nwind.mdb
13 utilizando OLE DB.
14 conn.ConnectionString = PROVIDER=MICROSOFT.JET.OLEDB.4.0;
DATA SOURCE=c:\meus documentos\nwind.mdb
15 conn.Open
16 Agora criamos um objeto RecordSet para reapresentar
17 a lista de pases no final, para que o usurio possa
18 fazer uma nova pesquisa.
19 Set Paises = Server.CreateObject(ADODB.Recordset)
20 Paises.Open Select ShipCountry from Orders Group By ShipCountry Order By
ShipCountry, conn, 3, 3
21 Agora crio um objeto do tipo Command
22 defino a conexo ativa utilizando a propriedade ActiveConnection.
23 Depois defino o tipo de comando utilizando a propriedade
4 0 7
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
24 CommandType. O valor 4 significa que um Stored Procedure.
25 Para o caso de consultas do Microsoft Access devemos definir
26 o tipo como sendo Stored Procedure.
27 Ao invs do valor 4 poderamos utilizar a constante
28 adCmdStoredProc
29 Set com_paises = Server.CreateObject(ADODB.Command)
30 com_paises.ActiveConnection = conn
31 com_paises.CommandType = 4
32 Agora comeo a definir as caractersticas do parmetro.
33 Crio varivel para definir o nome do parmetro.
34 nome_par = Pais
35 Crio uma varivel para conter o valor do parmetro.
36 Defino este valor como sendo o valor selecionado
37 na lista de pases.
38 valor_par= Request.Form(listapaises)
39 Agora crio variveis que definem as demais
40 caractersticas do parmetro.
41 tipo_par = 129 parmetro do tipo string.
42 tama_par = 50 define o tamanho do parmetro.
43 dire_par = 1 define um parmetro de entrada.
44 Agora crio um objeto do tipo Parameter
45 Set pais_par=com_paises.CreateParameter
(nome_par,tipo_par,dire_par,tama_par,valor_par)
46 Adiciono o parmetro coleo Parameters.
47 com_paises.Parameters.Append pais_par
48 Defino o comando a ser executado como sendo o nome
Criando Sites Dinmicos com ASP 3.0
4 0 8
49 da consulta con_pedidos
50 com_paises.CommandText = con_pedidos
51 Crio um objeto RecordSet e utilizo o mtodo
52 execute do objeto Command para retornar valores
53 para o objeto RecordSet.
54 Set Resultados = Server.CreateObject(ADODB.RecordSet)
55 Set Resultados = com_paises.Execute
56 Reexibo a lista de pases para que o usurio possa
57 pesquisar os pedidos para um outro pas.
58 %>
59 <P><B>Para pesquisar outro pas, selecione na lista.</B></P>
60 <P><B><I>Depois clique no boto Pesquisar.</I></B></P>
61 <FORM action=procurapais.asp method=post id=form1 name=form1>
62 <SELECT id=listapaises name=listapaises>
63
64 <%
65 Agora construo a lista de opes a partir dos
66 dados obtidos da tabela Orders.
67 Para cada pas obtido, crio uma nova opo
68 na lista.
69 Do While Not Paises.EOF
70 Response.Write <OPTION value= & Chr(34) & Paises.Fields(ShipCountry) &
Chr(34)
71 If Paises.Fields(ShipCountry)= Request.Form(listapaises) Then
72 Response.Write SELECTED
73 End If
74 Response.Write > & Paises.Fields(ShipCountry)& </OPTION>
75 Paises.MoveNext
76 Loop
77 %>
4 0 9
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
78 </SELECT>
79 <INPUT type=submit value=Pesquisar id=Pesquisar name=Pesquisar>
80 </FORM>
81 <%
82 Exibo os resultados obtidos a partir da consulta
83 con_pedidos.
84 %>
85 <B>Relao de pedidos para: <% =Request.Form(listapaises) %>.</B>
86 <HR>
87 <% Agora exibo os resultados utilizando uma tabela. %>
88 <TABLE border=1>
89 <TR>
90 <TD><B>Cdigo</B></TD>
91 <TD><B>Data</B></TD>
92 <TD><B>Cidade</B></TD>
93 <TD><B>Pas</B></TD>
94 </TR>
95 <%
96 Do While Not Resultados.EOF
97 %>
98 <TR>
99 <TD><% =Resultados.Fields(OrderID) %></TD>
100 <TD><% =Resultados.Fields(OrderDate) %></TD>
101 <TD><% =Resultados.Fields(ShipCity) %></TD>
102 <TD><I><% =Resultados.Fields(ShipCountry) %></I></TD>
103 </TR>
104 <% Resultados.MoveNext
105 Loop
106 %>
Criando Sites Dinmicos com ASP 3.0
4 1 0
107 </TABLE>
108 <BR>
109 <HR>
110 </BODY>
111 </HTML>
A Listagem 7.3 salienta diversos pontos importantes na utilizao do objeto Command para a execuo
de Consultas Parametrizadas, atravs da passagem de parmetros utilizando o objeto Parameter.
Vamos detalhar alguns trechos desta listagem. Observe o seguinte trecho de cdigo:
29 Set com_paises = Server.CreateObject(ADODB.Command)
30 com_paises.ActiveConnection = conn
31 com_paises.CommandType = 4
Inicialmente criamos um objeto do tipo Command, depois definimos a sua propriedade
ActiveConnection como sendo a conexo conn. Por ltimo definimos a propriedade
CommandType com o valor 4. Ao invs do valor 4 poderamos ter utilizado a constante
adCmdStoredProc, o que significa que o valor passado para a propriedade CommandText
deve ser o nome de uma consulta (no caso do Microsoft Access), ou de um Stored Procedure
(no caso do Microsoft SQL Server). Como queremos executar a consulta con_pedidos,
definimos a propriedade CommandType com o valor 4.
NOTA
Na Tabela 7.3 esto listados os valores e respectivas constantes para a propriedade
CommandType.
Em seguida comeo a definir as caractersticas do parmetro que ser criado e passado para a
consulta. Isto feito com o seguinte trecho de cdigo:
32 Agora comeo a definir as caractersticas do parmetro.
33 Crio varivel para definir o nome do parmetro.
34 nome_par = Pais
35 Crio uma varivel para conter o valor do parmetro.
36 Defino este valor como sendo o valor selecionado
37 na lista de pases.
4 1 1
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
38 valor_par= Request.Form(listapaises)
39 Agora crio variveis que definem as demais
40 caractersticas do parmetro.
41 tipo_par = 129 parmetro do tipo string.
42 tama_par = 50 define o tamanho do parmetro.
43 dire_par = 1 define um parmetro de entrada.
Primeiro definimos o nome do parmetro, que deve ser o mesmo utilizado para a definio
do parmetro, quando da criao da consulta no Microsoft Access. Neste caso criamos uma
varivel chamada nome_par e definimos o seu valor como Pais.
Logo em seguida criamos a varivel valor_par, a qual ir conter o valor que ser passado para
o parmetro Pais. Este valor o selecionado na lista de pases da pgina command2.asp,
conforme indicado pelo cdigo abaixo:
38 valor_par= Request.Form(listapaises)
Seguindo as definies, criamos uma varivel para o tipo do parmetro tipo_par. A esta
varivel foi atribudo o valor 129. Ao invs do valor 129 poderamos ter utilizado a constante
adChar, que define o parmetro como sendo uma String, isto , do tipo texto. Na Tabela 7.5
temos uma listagem com os principais valores e respectivas constantes que podem ser definidas
para o tipo do parmetro.
Tabela 7.5 Principais Valores/Constantes para definio do tipo do parmetro.
Valor/Constante Descrio
0x2000/adArray Um valor de Flag indicativo de que temos um array
de valores, o qual deve ser combinado com outro
valor indicativo de tipo. Este valor indica um array
de parmetros de um determinado tipo.
20/adBigInt Indica um inteiro de 8 bytes.
128/adBibary Indica um valor binrio.
11/adBoolean Indica um valor boleano, do tipo Verdadeiro ou
Falso, Sim ou No.
8/sdBSTR Indica uma String de caracteres de terminao nula
(Unicode).
129/adChar Indica um valor de String, isto , texto.
Criando Sites Dinmicos com ASP 3.0
4 1 2
Em seguida definimos um tamanho mximo em bytes para o parmetro, que no nosso exemplo
foi definido para 50, conforme indicado pelo seguinte comando:
42 tama_par = 50 define o tamanho do parmetro.
Finalmente definimos uma varivel para conter o valor de definio para a propriedade
Direction do parmetro. Este valor foi definido em 1, o que significa um parmetro de entrada,
isto , um parmetro que envia um valor para a consulta do Microsoft Access. Esta definio
est indicada no cdigo a seguir:
43 dire_par = 1 define um parmetro de entrada.
Ao invs do valor 1, poderamos ter utilizado a constante adParamInput. Na Tabela 7.6 temos
uma listagem com os valores e respectivas constantes que podem ser definidas para a
propriedade Direction.
Tabela 7.6 Valores/Constantes para a propriedade Direction.
Valor/Constante Descrio
6/adCurrency Indica um valor do tipo currency, o qual um
nmero com quatro casas decimais fixas.
7/adDate Indica um valor do tipo Data.
134/adDBTime Indica um valor de hora, no formato hhmmss.
135/adDBTimeStamp Indica um valor de data/hora no formato
yyyymmddhhmmss
14/adDecimal Indica um valor decimal.
5/adDouble Indica um valor numrico de preciso dupla.
0/adEmpty No define nenhum valor.
10/adError Indica um cdigo de erro de 32 bits.
72/adGUID Indica um valor do tipo GUID Globally Unique
Identifier.
3/adInteger Indica um valor inteiro de 4 bytes.
4/adSingle Indica um valor numrico de preciso simples.
Valor/Constante Descrio
1/adParamImput Indica um parmetro de entrada. o valor padro.
2/adParamOutput Indica que o parmetro de sada.
4 1 3
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
NOTA
Criamos variveis para conter estes valores. Depois passaremos estas variveis para o mtodo
CreateParameter. Ao invs de criarmos as variveis, poderamos passar os valores diretamente para
o mtodo CreateParameter. Adotamos este procedimento para facilitar o entendimento do cdigo.
O prximo passo criar um objeto do tipo Parameter, utilizando o mtodo CreateParameter
do objeto Command. Chamamos este objeto de pais_par, conforme indicado abaixo:
44 Agora crio um objeto do tipo Parameter
45 Set pais_par=com_paises.CreateParameter
(nome_par,tipo_par,dire_par,tama_par,valor_par)
A sintaxe para o mtodo CreateParameter a seguinte:
Set nome_parameter = nome_command.CreateParameter (Name, Type, Direction, Size, Value)
Onde temos:
Name: O nome do parmetro.
Type: O tipo do parmetro. Os principais valores de tipo possveis esto listados na
Tabela 7.5.
Direction: Definio da direo do parmetro. Os principais valores de direo possveis,
esto listados na Tabela 7.6.
Size: Define o tamanho mximo para o parmetro.
Value: Define o valor do parmetro. No nosso caso o valor que ser enviado para a
consulta con_pedidos, e que servir como critrio de filtragem para o campo
ShipCountry.
Uma vez criado o parmetro hora de adicion-lo coleo Parameters do objeto Command.
Para fazer isso, utilizamos o mtodo Append da coleo Parameters, conforme indicado a seguir:
46 Adiciono o parmetro coleo Parameters.
47 com_paises.Parameters.Append pais_par
Valor/Constante Descrio
3/adParamInputOutput Indica que o parmetro de entrada e sada.
4/adParamReturnValue Indica que o parmetro representa um valor de
retorno.
0/adParamUnknown Indica um parmetro com direo desconhecida.
Criando Sites Dinmicos com ASP 3.0
4 1 4
Observe que passamos para o mtodo Append o nome do objeto Parameter a ser adicionado
a coleo Parameters. Utilizando Append, podemos adicionar novos parmetros.
Agora preciso definir a propriedade CommandText do objeto com_paises. Como definimos a
propriedade CommandType como 4 (Stored Procedure), vamos passar para o objeto
CommandText o nome da consulta a ser executada, que no nosso exemplo con_pedidos.
Isto feito com o seguinte cdigo:
50 com_paises.CommandText = con_pedidos
O passo final criar um objeto RecordSet utilizando o mtodo Execute do objeto Command.
Isto feito com o seguinte cdigo:
54 Set Resultados = Server.CreateObject(ADODB.RecordSet)
55 Set Resultados = com_paises.Execute
Assim, o valor selecionado na lista de pases passado para a consulta con_pedidos. A consulta
executada e somente so retornados os registros em que o campo ShipCountry contm o
valor selecionado na lista de pases.
Com a utilizao do objeto Command e do objeto Parameter foi possvel executar uma Consulta
Parametrizada no Microsoft Access, passando o valor do parmetro para a consulta.
Ut ilizando o Nosso Exemplo
Agora vamos utilizar o nosso exemplo, para comprovar o correto funcionamento do mesmo.
Ao carregar a pgina command2.asp, obtemos o resultado indicado na Figura 7.11.
Figura 7.1 1 : Selecionando um pas da list a.
4 1 5
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
Vamos supor que o usurio selecionou Norway, na lista de pases. Ao clicar no boto Pesquisar
sero exibidos apenas os pedidos para o pas selecionado, conforme indicado na Figura 7.12.
Figura 7.1 2: Exibindo os pedidos par a Nor way.
Observe que novamente exibida a lista de pases e o pas selecionado anteriormente aparece
selecionado na lista. Para pesquisar os pedidos para outro pas s selecionar o pas desejado
e clicar no boto Pesquisar. Veja que com isso construmos um formulrio de pesquisa bastante
interativo. O usurio seleciona o pas desejado e manda pesquisar. Cada vez que o usurio
seleciona um pas diferente na lista, e clica no boto Pesquisar, o novo valor selecionado
passado como parmetro para a consulta con_pedidos. A consulta executada e retorna
somente os registros que atendem ao critrio passado como parmetro.
Um Desafio Par a o Amigo Leit or
Agora que j conhecemos vrios detalhes sobre o acesso a bancos de dados, atravs de pginas
ASP, fica aqui um pequeno desafio para o amigo leitor.
Criando Sites Dinmicos com ASP 3.0
4 1 6
Desafio: Modificar o exemplo anterior fazendo as seguintes melhorias.
Modificar a consulta con_pedidos incluindo um parmetro chamado AnoPedido. Este
parmetro ser utilizado para filtrar somente os registros de um determinado ano. Adicionar
um campo calculado consulta, que exiba somente o ano do campo OrderDate.
Modificar a pgina command2.asp para que, alm de uma lista com os nomes dos
pases, seja exibida uma lista com a relao de anos para os quais existem pedidos.
Construir esta lista dinamicamente, assim como foi construda a lista para os pases.
Modificar a pgina procurapais.asp, para que a mesma crie mais um parmetro chamado
ano_ped e passe esse parmetro para a consulta con_pedidos, de tal forma que somente
sejam retornados os pedidos para o Pas selecionado e para o Ano selecionado.
Vamos exemplificar como deve ser o resultado final, aps estas alteraes.
Ao carregar a pgina command2.asp, obtemos o resultado indicado na Figura 7.13.
Figura 7.1 3: Selecione um pas da list a Pas e o ano na list a Ano.
Vamos supor que o usurio selecionou Brazil, na lista de pases e 1994 na lista Ano. Ao
clicar no boto Pesquisar sero exibidos apenas os pedidos para pas e ano selecionados,
conforme indicado na Figura 7.14.
Para fazer uma nova pesquisa, basta selecionar novos critrios e clicar no boto Pesquisar.
4 1 7
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
Figura 7.1 4: Pedidos par a Br azil no ano de 1 9 9 4 .
Em caso de dificuldades na criao da nova verso do nosso exemplo s entrar em contato pelo
e-mail: juliobattisti@hotmail.com. Mas antes de entrar em contato procure revisar os conceitos j
apresentados at o momento. Praticar muito importante para conseguir fix-los.
Um Pouco M ais Sobr e Pesquisas em Banco de Dados
Neste item iremos explorar um pouco mais a utilizao da linguagem SQL em pginas ASP.
IMPORTANTE
Estaremos utilizando exemplos que acessam bancos de dados do Microsoft Access. Para o
acesso a outros bancos de dados, podem existir pequenas diferenas, dependendo do OLE DB
Provider para cada caso. Caso voc esteja utilizando outro banco de dados, consulte a
documentao do padro SQL do mesmo.
Criando Sites Dinmicos com ASP 3.0
4 1 8
Trataremos dos seguintes tpicos:
A utilizao do operador Like.
Definindo mltiplos critrios.
Utilizando funes de agregao.
A Ut ilizao do Oper ador Like
Com o operador Like, podemos criar consultas que retornam resultados contendo um
determinado padro. Por exemplo, podemos fazer uma consulta que localize todos os clientes
em que o primeiro nome inicie com Jo. Neste caso sero retornados os registros de Joo da
Silva, Joo Santos, Jos da Silva, Josimar da Silva e assim por diante. O operador Like nos d
uma flexibilidade bastante grande, pois permite que faamos pesquisa, digitando apenas
parte do valor procurado.
Considere a seguinte instruo SQL:
SELECT CustomerID, CompanyName, ContactName FROM Customers
WHERE CompanyName Like La%
NOTA
Estamos tomando como base a tabela Customers do banco de dados nwind.mdb.
Esta instruo iria selecionar apenas os registros cujo campo CompanyName iniciasse com La.
IMPORTANTE
Quando utilizamos o Microsoft Access, utilizamos o * como caractere coringa; j em ASP
utilizamos o %. Outra diferena importante em relao a critrios de texto. Quando
utilizamos o Microsoft Access, todo critrio de texto deve vir entre aspas (), j no caso de
pginas ASP, todo critrio de texto deve vir entre apstrofes ().
Na Listagem 7.4 temos exemplo de pgina que utiliza o operador Like.
Listagem 7.4 Utilizando o operador Like para fazer pesquisas exlike.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
4 1 9
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
5 <TITLE>Utilizando o operador Like.</TITLE>
6 <BODY>
7 <%
8 Set conn=Server.CreateObject(ADODB.Connection)
9 Agora abro uma conexo com o arquivo nwind.mdb
10 utilizando OLE DB.
11 conn.ConnectionString = PROVIDER=MICROSOFT.JET.OLEDB.4.0;
12 DATA SOURCE=c:\meus documentos\nwind.mdb
13 conn.Open
14 Agora crio uma instruo SQL que utiliza o operador Like.
15 inst_sql=Select * from Customers where CompanyName Like La%
16 Set Cust= Server.CreateObject(ADODB.RecordSet)
17 Cust.Open inst_sql,conn,3,3
18 %>
19 <P>
20 <FONT color=navy size=4><B>
21 Relao de Clientes cujo nome comea com La.
22 </B></FONT>
23 </P>
24 <HR>
25 <TABLE>
26 <TR>
27 <TD><B>Cdigo</B></TD>
28 <TD><B>Nome </B></TD>
29 <TD><B>Cidade </B></TD>
30 </TR>
31 <%
Criando Sites Dinmicos com ASP 3.0
4 2 0
32 Do Until Cust.EOF
33 %>
34 <TR>
35 <TD><%=Cust.Fields(CustomerId) %> </TD>
36 <TD><%=Cust.Fields(CompanyName)%> </TD>
37 <TD><%=Cust.Fields(City)%> </TD>
38 </TR>
39 <%
40 Ped.MoveNext
41 Loop
42 %>
43 </TABLE>
44 <HR>
45 </BODY>
46 </HTML>
Ao carregarmos este exemplo no Internet Explorer, obteremos o resultado indicado na Figura 7.15.
Figura 7.1 5: Result ados obt idos com o oper ador Like.
Agora vamos supor que voc quisesse uma listagem de todos os consumidores que possuem
o texto La em qualquer parte do nome, no necessariamente no incio. Mais uma vez a
4 2 1
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
utilizao do operador Like facilita a nossa vida. Para obter o resultado desejado, bastaria
alterar a instruo SQL da Listagem 7.4. A instruo deve ficar da seguinte maneira:
inst_sql=Select * from Customers where CompanyName Like %La%
Bastou colocar mais um caractere % antes do La. Com isso sero retornados todos os registros que
contiverem La em qualquer parte do campo CompanyName, conforme indicado na Figura 7.16.
Figura 7.1 6: M ais um exemplo de ut ilizao do oper ador Like.
Poderamos comear a refinar mais ainda a nossa consulta. Vamos pesquisar todos os registros
em que o Nome do Cliente (campo CompanyName) possui La e o CEP (campo PostalCode)
possui o nmero 3.
Para obter o resultado desejado, bastaria alterar a instruo SQL da Listagem 7.4. A instruo
deve ficar da seguinte maneira:
inst_sql=Select * from Customers where CompanyName Like %La% and
PostalCode Like %3%
Na Figura 7.17 temos a listagem obtida aps esta alterao da instruo SQL.
Criando Sites Dinmicos com ASP 3.0
4 2 2
Figura 7.1 7: Ut iliando o oper ador Like e And.
Agora vamos supor que voc queira uma listagem somente com os registros em que o campo
CompanyName inicie com uma letra na faixa de A at M, isto , a primeira letra do nome deve
estar entre A e M. Alm disso voc deseja que esta listagem seja classificada em ordem ascendente
do campo CompanyName. Para obter este resultado, basta utilizar a instruo SQL a seguir:
inst_sql=Select * from Customers where CompanyName Like [A-M]% Order By CompanyName
O resultado desta pesquisa est indicado na Figura 7.18.
NOTA
Ao invs de digitar a instruo SQL diretamente no cdigo ASP, a mesma pode ser construda
a partir de valores digitados ou selecionados em um formulrio. No final do captulo, criaremos
um formulrio genrico para pesquisas, onde o usurio poder definir por qual ou quais critrios
deseja fazer a pesquisa e selecionar um valor para os critrios. Ao clicar em um boto Pesquisar,
os dados so enviados para uma pgina ASP, que monta a instruo SQL de acordo com as
opes selecionadas pelo usurio.
Com estes exemplos, podemos comprovar a versatilidade e facilidade de uso do operador Like.
4 2 3
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
Figura 7.1 8: Ut iliando o oper ador Like e uma faixa inicial.
A Ut ilizao de M lt iplos Cr it r ios
Para realizarmos uma pesquisa com mais de um critrio, utilizamos os operadores And e Or.
Inicialmente vamos salientar a diferena entre ambos.
O Oper ador And
Quando utilizamos o operador And para ligar dois critrios, somente sero selecionados os
registros que atenderem, ao mesmo tempo, aos dois critrios. Caso o registro somente atenda
a um dos critrios, no ser selecionado. Considere o seguinte exemplo:
inst_sql=Select * from Orders where ShipCountry = France and ShipCity = Lyon
Neste caso somente sero selecionados os registros em que o pas for France e a cidade Lyon,
isto , somente os registros que atenderem aos dois critrios.
Podemos utilizar mais do que um operador And. Com isso podemos especificar trs ou mais
critrios. Mas, a regra se mantm: para que um registro seja selecionado, ele precisa atender
Criando Sites Dinmicos com ASP 3.0
4 2 4
a todos os critrios ligados pelos operadores And. Se um nico critrio falhar, o registro no
ser selecionado.
O Oper ador Or
Quando utilizamos o operador Or para ligar dois critrios, somente sero selecionados os
registros que atenderem, pelo menos, a um dos dois critrios. O registro somente no ser
selecionado se no atender a nenhum dos dois critrios. Considere o seguinte exemplo:
inst_sql=Select * from Orders where ShipCountry = France Or ShipCity = Lyon
Neste caso sero selecionados todos os registros que atenderem a pelo menos um dos critrios,
isto , se o pas for igual a France, o registro ser selecionado, independente da cidade. Se a
cidade for igual a Lyon, o registro ser selecionado, independente do pas. Caso o registro
atenda aos dois critrios tambm ser selecionado. A nica situao em que o registro no ser
selecionado quando no atender a nenhum dos dois critrios ligados pelo operador Or.
Podemos utilizar mais do que um operador Or. Com isso podemos especificar trs ou mais
critrios. Mas a regra se mantm, para que um registro seja selecionado, ele precisa atender a
pelo menos um dos critrios ligados pelos operadores Or. Somente se todos os critrios falharem
que o registro no ser selecionado.
Alguns Exemplos de Ut ilizao de M lt iplos Cr it r ios
Exemplo 1: Vamos supor que desejamos uma listagem dos pedidos que atendam aos seguintes
critrios:
Campo ShipCountry = France
OrderDate deve estar dentro do ano de 1994.
A instruo SQL a seguinte:
inst_sql=Select * from Orders where ShipCountry=France And OrderDate>#01/01/1994#
And OrderDate<#31/12/1994#
Observe que quando formos definir um critrio para um campo do tipo Data, devemos colocar
o valor entre os sinais de #.
Na figura 7.19, temos o resultado da execuo da instruo SQL do nosso exemplo.
4 2 5
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
Figura 7.1 9: Especificando cr it r ios par a o Pas e par a a Dat a.
Exemplo 2: Se, no exemplo anterior, trocarmos o primeiro And por um Or e utilizarmos
parnteses para determinar a ordem de avaliao, conforme indicado no exemplo:
inst_sql=Select * from Orders where ShipCountry=France Or
(OrderDate>#01/01/1994# And OrderDate<#31/12/1994#)
qual seria o resultado desta instruo SQL?
Seriam retornados todos os pedidos para o pas France, independente do ano. Tambm seriam
retornados todos os pedidos para o ano de 1994, independente do Pas. Lembre que para ser
selecionado, basta que o registro atenda um dos critrios ligados pelo Or. Ao colocarmos os
parnteses, estamos forando que os critrios da data sejam avaliados de uma maneira nica.
O resultado desta comparao que ligado pelo Or primeira parte do critrio.
Exemplo 3: Vamos fazer uma pesquisa em que sejam exibidos os pedidos para todos os pases,
com exceo dos pedidos em que o campo ShipCountry seja igual a France. Podemos utilizar
a seguinte instruo SQL:
inst_sql=Select * from Orders where ShipCountry <>France
Criando Sites Dinmicos com ASP 3.0
4 2 6
Neste caso fizemos uso do operador diferente <>. Com isso estamos dizendo que devem ser
selecionados todos os registros em que o campo ShipCountry for diferente de France.
Exemplo 4: Queremos pesquisar por registros que possam apresentar dois ou mais valores
em um determinado campo, como por exemplo, pesquisar todos os pedidos para Brazil, France,
Argentina ou Germany. Poderamos utilizar vrios critrios ligados pelo operador Or, porm
existe uma maneira mais simples de fazer isso, que atravs da utilizao do operador In,
conforme indicado no exemplo abaixo:
inst_sql=Select * from Orders where ShipCountry In (France,Argentina, Brazil,
Germany) Order By ShipCountry
Com o uso do operador In, podemos definir dois ou mais critrios para um determinado
campo. A lista de critrios vem entre parnteses, cada critrio deve ser colocado entre
apstrofes e separados por vrgula.
Exemplo 5: Vamos inverter um pouco o exemplo anterior: criar uma listagem de todos os
pedidos, com exceo dos pedidos enviados para os seguintes pases:
Argentina
Brazil
France
Germany
Podemos utilizar a mesma instruo anterior, apenas colocando o operador Not, antes do
operador In, conforme indicado a seguir:
inst_sql=Select * from Orders where ShipCountry Not In (France,Argentina, Brazil,
Germany) Order By ShipCountry
O Not informa que devem ser selecionados todos os registros, com exceo daqueles em que
o campo ShipCountry contiver os valores especificados como parmetros do operador In.
A utilizao de operadores nos permite criar consultas bastante avanadas, combinando
critrios, e utilizando critrios mltiplos. Tambm podemos utilizar as chamadas funes de
agregao, que ser o assunto do prximo item.
Ut ilizando Funes de Agr egao
As funes de agregao nos permitem criar valores consolidados dos dados de uma ou mais
tabelas, como por exemplo:
A soma de todos os pedidos enviados para a Argentina.
A mdia dos pedidos para um determinado cliente.
4 2 7
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
O nmero de pedidos enviados para um determinado pas em determinado ano.
O menor e o maior pedido para um determinado cliente ou pas.
Para obter estes resultados consolidados, podemos utilizar as diversas funes de agregao
disponveis. Na Tabela 7.7, temos a descrio das principais funes de agregao disponveis.
Tabela 7.7 Funes de agregao.
Alguns Exemplos de Ut ilizao de Funes de Agr egao
Exemplo 1: Vamos comear com um exemplo em que seja exibida uma listagem, com o nmero
de pedidos para cada pas, classificada pelo nome do pas de destino.
inst_sql=Select ShipCountry, Count(OrderID) As Totais from Orders
Group By ShipCountry Order By ShipCountry
Na Listagem 7.5, temos um exemplo de uma pgina ASP, excount.asp, que faz uso desta
instruo SQL.
Listagem 7.5 Utilizando a funo de agregao Count( ) excount.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
Funo Descrio
Count( ) utilizada para efetuar uma contagem. Pode ser uma
contagem geral, como por exemplo o nmero de registros de
uma tabela, ou especfica, como o nmero de pedidos para
cada pas.
AVG( ) utilizada para clculo de mdias. Calcula a mdia aritmtica
de um determinado campo. Somente pode ser utilizada com
campos numricos. Valores do tipo Null sero ignorados.
Sum( ) utilizada para efetuar a soma de campos numricos.
Max( ) utilizada para determinar o maior valor de um campo
numrico.
Min( ) utilizada para determinar o menor valor de um campo
numrico.
Criando Sites Dinmicos com ASP 3.0
4 2 8
5 <TITLE>Utilizando a funo Count.</TITLE>
6 <BODY>
7 <%
8 O primeiro passo criar a conexo com o banco de dados.
9 Para isto crio um objeto do tipo Connection.
10 Cria um objeto do tipo ADODB.Connection
11 Set conn=Server.CreateObject(ADODB.Connection)
12 Agora abro uma conexo com o arquivo nwind.mdb
13 utilizando OLE DB.
14 conn.ConnectionString = PROVIDER=MICROSOFT.JET.OLEDB.4.0;
DATA SOURCE=c:\meus documentos\nwind.mdb
15 conn.Open
16 Agora crio um objeto do tipo RecordSet, o qual ser,
17 automaticamente associado com a conexo conn.
18 inst_sql=Select ShipCountry, Count(OrderID) As Totais from Orders
Group By ShipCountry Order By ShipCountry
19 Set Ped= Server.CreateObject(ADODB.RecordSet)
20 Ped.Open inst_sql,conn,3,3
21 %>
22 <P>
23 <FONT color=navy size=4><B>
24 Nmero de pedidos por pas de destino.
25 </B></FONT>
26 </P>
27 <HR>
28 <TABLE border=1>
29 <TR>
4 2 9
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
30 <TD><B>Pas</B></TD>
31 <TD><B>Pedidos </B></TD>
32 </TR>
33 <%
34 Do Until Ped.EOF
35 %>
36 <TR>
37 <TD> <%=Ped.Fields(ShipCountry) %> </TD>
38 <TD><B><%=Ped.Fields(Totais) %> </B></TD>
39 </TR>
40 <%
41 Ped.MoveNext
42 Loop
43 %>
44 </TABLE>
45 <HR>
46 </BODY>
47 </HTML>
Na Figura 7.20, temos o resultado da pgina excount.asp, quando a mesma carregada no
Internet Explorer.
Figura 7.20: Result ados obt idos com a ut ilizao da funo Count ( ) .
Criando Sites Dinmicos com ASP 3.0
4 3 0
Exemplo 2: Vamos supor que devssemos alterar a nossa listagem, para classific-la em ordem
descendente do nmero de pedidos, isto , devem ser listados primeiro os pases com o
maior nmero de pedidos. Para obter este resultado, bastaria alterar a instruo SQL, deixando-
a da seguinte maneira:
inst_sql=Select ShipCountry, Count(OrderID) As Totais from Orders Group By
ShipCountry Order By Count(OrderID)Desc
Ao utilizarmos esta instruo, obteremos o resultado indicado na Figura 7.21.
Figura 7.21 : Result ados em or dem decr esent e do nmer o de pedidos.
IMPORTANTE
Quando formos fazer a ordenao, utilizando a clusula Order By, no podemos utilizar o
alis do campo. O alis o nome que damos ao campo que est sendo calculado. No nosso
exemplo, chamamos o campo com o total de pedidos de Totais. Um alis criado com a
palavra As. Se utilizarmos um alis na clusula Order By, obteremos um erro e a pgina no
ser carregada. A instruo a seguir comete este erro.
4 3 1
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
Cuidado instruo incorreta:
inst_sql=Select ShipCountry, Count(OrderID) As Totais from Orders Group By
ShipCountry Order By Totais Desc
Se utilizarmos esta instruo, ao tentarmos carregar a pgina, obteremos o erro indicado na
Figura 7.22.
Figura 7.22: Er r o causado pelo uso de um alis na clusula Or der By.
Exemplo 3: Agora vamos utilizar a funo Sum para retornar a soma do valor do Frete (Freight)
para cada pas. Para obter este resultado, podemos utilizar o comando SQL a seguir:
inst_sql=Select ShipCountry, Sum(Freight) As SomFrei from Orders Group By
ShipCountry Order By Sum(Freight) Desc
Na Listagem 7.6, temos um exemplo de uma pgina ASP, exsum.asp, que faz uso desta
instruo SQL.
Listagem 7.6 Utilizando a funo de agregao Sum ( ) exsum.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <TITLE>Utilizando a funo Sum.</TITLE>
6 <BODY>
Criando Sites Dinmicos com ASP 3.0
4 3 2
7 <%
8 O primeiro passo criar a conexo com o banco de dados.
9 Para isto crio um objeto do tipo Connection.
10 Cria um objeto do tipo ADODB.Connection
11 Set conn=Server.CreateObject(ADODB.Connection)
12 Agora abro uma conexo com o arquivo nwind.mdb
13 utilizando OLE DB.
14 conn.ConnectionString = PROVIDER=MICROSOFT.JET.OLEDB.4.0;
DATA SOURCE=c:\meus documentos\nwind.mdb
15 conn.Open
16 Agora crio um objeto do tipo RecordSet, o qual ser,
17 automaticamente associado com a conexo conn.
18 inst_sql=Select ShipCountry, Sum(Freight) As SomFrei from Orders
Group By ShipCountry Order By Sum(Freight) Desc
19 Set Ped= Server.CreateObject(ADODB.RecordSet)
20 Ped.Open inst_sql,conn,3,3
21 %>
22 <P>
23 <FONT color=navy size=4><B>
24 Soma do frete por pas de destino.
25 </B></FONT>
26 </P>
27 <HR>
28 <TABLE border=1>
29 <TR>
30 <TD><B>Pas</B></TD>
31 <TD><B>Soma do Frete </B></TD>
32 </TR>
4 3 3
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
33 <%
34 Do Until Ped.EOF
35 %>
36 <TR>
37 <TD> <%=Ped.Fields(ShipCountry) %> </TD>
38 <TD align=Right><B><%=FormatNumber(Ped.Fields(SomFrei),2)
39 %> </B></TD>
40 </TR>
41 <%
42 Ped.MoveNext
43 Loop
44 %>
45 </TABLE>
46 <HR>
47 </BODY>
48 </HTML>
Na Figura 7.23, temos o resultado da pgina exsum.asp, quando a mesma carregada no
Internet Explorer.
Figura 7.23: Result ados obt idos com a ut ilizao da funo Sum( ) .
Criando Sites Dinmicos com ASP 3.0
4 3 4
Apenas um comentrio sobre a utilizao da funo FormatNumber: esta funo foi utilizada
para delimitar o resultado da soma em duas casas decimais.
Exemplo 3: Ao invs da funo Sum, vamos utilizar a funo Avg, para retornar a mdia
aritmtica do valor do Frete (Freight) para cada pas. Para obter este resultado, podemos utilizar
o comando SQL a seguir:
inst_sql=Select ShipCountry, Avg(Freight) As AvgFrei from Orders Group By
ShipCountry Order By Avg(Freight) Desc
O resultado obtido com esta instruo mostrado na Figura 7.24.
Figura 7.24: Result ados obt idos com a ut ilizao da funo Avg( ) .
Exemplo 4: Vamos construir um exemplo um pouco mais sofisticado. Vamos fazer com que
sejam listados todos os pedidos, cujo valor do frete seja maior do que o valor mdio do frete.
A listagem ser classificada em ordem decrescente do valor do frete. Podemos utilizar a seguinte
instruo SQL:
Select ShipCountry, OrderID, OrderDate, Avg(Freight) As AvgFrei from Orders
Group By ShipCountry, OrderID, OrderDate
Having Avg(Freight)>Davg(Freight,Orders) Order By Avg(Freight) Desc
Observe que nesta instruo utilizamos algumas elementos novos, como por exemplo:
4 3 5
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
A clusula Having: quando utilizamos a clusula Group By, devemos utilizar a clusula
Having ao invs da clusula Where.
Utilizamos a funo Davg, que uma funo chamada de domnio. A funo Davg foi
utilizada para calcular a mdia geral do frete na tabela Orders. Utilizamos a seguinte sintaxe:
Davg(Nome_campo,Nome_da_tabela)
Ao executarmos esta instruo SQL, obteremos os resultados indicados na Figura 7.25.
Figura 7.25: Result ados obt idos com a ut ilizao da funo de domnio Davg( ) .
Exemplo 5: Agora vamos utilizar as funes Max e Min, para retornar o pedido com o menor
valor de frete e o pedido com o maior valor de frete.
Na Listagem 7.7, temos um exemplo de uma pgina ASP, exmaxmin.asp, a qual faz uso das
funes Max e Min
Listagem 7.7 Utilizando as funes de agregao Max ( ) e Min( ) exmaxmin.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <TITLE>Utilizando as funes Max e Min.</TITLE>
Criando Sites Dinmicos com ASP 3.0
4 3 6
6 <BODY>
7 <%
8 O primeiro passo criar a conexo com o banco de dados.
9 Para isto crio um objeto do tipo Connection.
10 Cria um objeto do tipo ADODB.Connection
11 Set conn=Server.CreateObject(ADODB.Connection)
12 Agora abro uma conexo com o arquivo nwind.mdb
13 utilizando OLE DB.
14 conn.ConnectionString = PROVIDER=MICROSOFT.JET.OLEDB.4.0;
DATA SOURCE=c:\meus documentos\nwind.mdb
15 conn.Open
16 Agora crio um objeto do tipo RecordSet, o qual ser,
17 automaticamente associado com a conexo conn.
18 inst_sql=Select Max(Freight) As MaiorFrete, Min(Freight) As MenorFrete From Orders
19 Set Ped= Server.CreateObject(ADODB.RecordSet)
20 Ped.Open inst_sql,conn,3,3
21 %>
22 <P>
23 <FONT color=navy size=4><B>
24 Valores Mximos e Mnimos de Frete.
25 </B></FONT>
26 </P>
27 <HR>
28 <TABLE border=1>
29 <TR>
30 <TD><B>Mximo</B></TD>
31 <TD><B>Mnimo</B></TD>
32 </TR>
33 <TR>
34 <TD> <%=Ped.Fields(MaiorFrete) %> </TD>
4 3 7
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
35 <TD> <%=Ped.Fields(MenorFrete) %> </TD>
36 </TR>
37 </TABLE>
38 <HR>
39 </BODY>
40 </HTML>
A Figura 7.26 mostra o resultado da pgina exmaxmin.asp, ao ser carregada no Internet Explorer.
Figura 7.26: Result ados obt idos com a ut ilizao das funes M ax( ) e M in( ) .
Agora vamos ao nosso exemplo final, no qual iremos construir um formulrio genrico, onde
o usurio poder selecionar por qual campo e por qual critrio deseja fazer a pesquisa.
Um For mulr io Genr ico Par a Pesquisas
Para finalizar este captulo vamos criar um formulrio que permite pesquisas genricas por
at trs critrios:
Pas de destino.
Ano do pedido.
Parte do endereo.
Criando Sites Dinmicos com ASP 3.0
4 3 8
O formulrio permite que sejam feitas pesquisa utilizando um ou mais destes critrios. Na
Figura 7.27 temos um exemplo do formulrio geral.asp, onde o usurio pode selecionar por
quais campos deseja pesquisar a tabela Orders e qual o valor para cada campo.
Figura 7.27: O for mulr io onde o usur io define os cr it r ios a ser em ut ilizados ger al. asp.
Na Listagem 7.8, temos o cdigo para a pgina geral.asp.
Listagem 7.8 O formulrio para definio dos critrios de pesquisa geral.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <BODY bgColor=silver>
6 <HR>
4 3 9
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
7 <FONT color=White style=BACKGROUND-COLOR: navy>
8 <B>
9 Formulrio para pesquisas na
10 tabela de Pedidos.<BR>
11 <FONT color=White>
12 Selecione por qual ou quais campos deseja fazer a pesquisa,
13 <BR>
14 depois defina valores para os campos selecionados.<BR>
15 <HR>
16 <%
17 O primeiro passo criar a conexo com o banco de dados.
18 Para isto crio um objeto do tipo Connection.
19 Cria um objeto do tipo ADODB.Connection
20 Set conn=Server.CreateObject(ADODB.Connection)
21 Agora abro uma conexo com o arquivo nwind.mdb
22 utilizando OLE DB.
23 conn.ConnectionString = PROVIDER=MICROSOFT.JET.OLEDB.4.0;
DATA SOURCE=c:\meus documentos\nwind.mdb
24 conn.Open
25 Agora criamos os objetos RecordSet,
26 para criao das listas com os nomes dos pases e
27 com a lista de anos para os quais existem pedidos.
28 Set Paises = Server.CreateObject(ADODB.Recordset)
29 Set Anos = Server.CreateObject(ADODB.Recordset)
30 Paises.Open Select ShipCountry from Orders Group By ShipCountry Order By
ShipCountry, conn, 3, 3
31 Anos.Open Select Year(OrderDate) As AnoPedido from Orders Group By
Year(OrderDate) Order By Year(OrderDate), conn, 3, 3
32 Neste ponto tenho os objetos RecordSet necessrios para a
33 criao das listas.
34 %>
Criando Sites Dinmicos com ASP 3.0
4 4 0
35 <FORM action=pesquisa.asp method=post id=form1 name=form1>
36 Pesquisar por Pas?
37 <INPUT id=pesqpais name=pesqpais type=radio value=Sim>Sim
38 <INPUT CHECKED id=pesqpais name=pesqpais type=radio value=Nao>No<BR>
39 </FONT></B></FONT>
40 <SELECT id=listapaises name=listapaises>
41 <%
42 Agora construo a lista de opes a partir dos
43 dados obtidos da tabela Orders.
44 Do While Not Paises.EOF
45 Response.Write <OPTION value= & Chr(34) & Paises.Fields(ShipCountry) &
Chr(34) & > & Paises.Fields(ShipCountry)& </OPTION>
46 Paises.MoveNext
47 Loop
48 %>
49 </SELECT>
50 <FONT color=White style=BACKGROUND-COLOR: navy>
51 <B>
52 <HR>
53 Pesquisar pelo Ano?
54 <INPUT id=pesqano name=pesqano type=radio value=Sim>Sim
55 <INPUT CHECKED id=pesqano name=pesqano type=radio value=Nao>No
56 <BR>
57 </FONT>
58 </B>
59 </FONT>
60 <SELECT id=listaano name=listaano>
61 <%
4 4 1
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
62 Agora construo a lista de opes a partir dos
63 dados obtidos da tabela Orders.
64 Para cada ano obtido, crio uma nova opo
65 na lista.
66 Do While Not Anos.EOF
67 Response.Write <OPTION value= & Chr(34) & Anos.Fields(AnoPedido)
& Chr(34) & > & Anos.Fields(AnoPedido)& </OPTION>
68 Anos.MoveNext
69 Loop
70 %>
71 </SELECT>
72 <FONT color=White style=BACKGROUND-COLOR: navy>
73 <B>
74 <HR>
75 O campo endereo deve conter?
76 <INPUT id=pesqend name=pesqend type=radio value=Sim>Sim
77 <INPUT CHECKED id=pesqend name=pesqend type=radio value=Nao>No
78 <BR>
79 Digite parte do endereo:</FONT></B></FONT>
80 <INPUT type=text id=partend name=partend size=25 maxlength=25>
81 <HR>
82 <INPUT type=submit value=Pesquisar id=Pesquisar name=Pesquisar>
83 </FORM>
84 </BODY>
85 </HTML>
Observe que mais uma vez as listas com os nomes dos pases e os anos, para os quais existem
pedidos, foram construdas dinamicamente, a partir dos dados da tabela Orders. Ao construir
as listas dinamicamente, evitamos que o usurio tente pesquisar, por exemplo, os pedidos
para um pas que no existe na tabela Orders. Com isso o usurio no perde tempo e faz as
pesquisas apenas para os pases para os quais realmente existem pedidos cadastrados. O
mesmo vlido para a lista com os anos para os quais existem pedidos cadastrados.
Criando Sites Dinmicos com ASP 3.0
4 4 2
O prximo passo construir a pgina pesquisa.asp. Esta pgina ir montar uma instruo
SQL de acordo com as opes selecionadas pelo usurio na pgina geral.asp. Por exemplo, se
o usurio marcar Sim somente para a lista de pases e selecionar Argentina, a pgina
pesquisa.asp ter que montar uma instruo SQL que pesquise a tabela Orders e retornar
somente os pedidos em que o campo ShipCountry for igual a Argentina.
Ento vamos construo da pgina pesquisa.asp. O ponto central da pgina pesquisa.asp
a montagem da instruo SQL com base nas opes selecionadas pelo usurio. O usurio
possui trs opes para definir parmetros de pesquisa:
Pas
Data
Endereo
O usurio poder selecionar uma ou mais opes. Com isto teremos oito possibilidades a
serem consideradas; o usurio est pesquisando:
Apenas pelo nome do pas.
Apenas pelo ano da data do pedido.
Apenas pelo endereo ou parte do endereo.
Pelo nome do pas e pelo ano da data do pedido.
Pelo nome e pelo endereo ou parte do endereo.
Pelo ano da data do pedido e pelo endereo ou parte do endereo.
Com base nos trs critrios.
Ou ainda:
O usurio no especificou nenhum critrio de pesquisa.
A pgina pesquisa.asp ter que analisar essas oito possibilidades e montar uma instruo
SQL diferente para cada uma delas.
Na Listagem 7.9, temos o cdigo para a pgina pesquisa.asp.
Listagem 7.9 O formulrio para definio dos critrios de pesquisa pesquisa.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 <TITLE>Resultado da pesquisa! </TITLE>
5 </HEAD>
6 <BODY bgColor=silver>
4 4 3
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
7 <%
8 O primeiro passo criar a conexo com o banco de dados.
9 para isto crio um objeto do tipo Connection.
10 Cria um objeto do tipo ADODB.Connection
11 Set conn=Server.CreateObject(ADODB.Connection)
12 Agora abro uma conexo com o arquivo nwind.mdb
13 utilizando OLE DB.
14 conn.ConnectionString = PROVIDER=MICROSOFT.JET.OLEDB.4.0;
DATA SOURCE=c:\meus documentos\nwind.mdb
15 conn.Open
16 Agora passamos a analisar cada uma das oito possibilidades.
17 **************************************************
18 A primeira possibilidade o caso em que o usurio
19 selecionou apenas um pas na lista de pases.
20 If (Request.Form(pesqpais)=Sim And Request.Form(pesqano)=Nao And
Request.Form(pesqend)=Nao) Then
21 inst_sql=Select * from orders where ShipCountry= & Request.Form
(listapaises) &
22 Response.Write Voc pesquisou pelo critrio Pas = <B> & Request.Form
(listapaises) & </B><HR>
23 End If
24 **************************************************
25 A segunda possibilidade o caso em que o usurio
26 selecionou apenas um ano na lista de anos.
27 If (Request.Form(pesqpais)=Nao And Request.Form(pesqano)=Sim And
Request.Form(pesqend)=Nao) Then
28 inst_sql=Select * from orders where Year(OrderDate)= & Request.Form
(listaano)
29 Response.Write Voc pesquisou pelo critrio Ano = <B> & Request.Form
(listaano) & </B><HR>
30 End If
31 **************************************************
32 A terceira possibilidade o caso em que o usurio
33 digitou um critrio para pesquisar no endereo.
Criando Sites Dinmicos com ASP 3.0
4 4 4
34 If (Request.Form(pesqpais)=Nao And Request.Form(pesqano)=Nao And
Request.Form(pesqend)=Sim) Then
35 inst_sql=Select * from orders where ShipAddress Like % & Request.Form
(partend) & %
36 Response.Write Voc pesquisou pelo critrio Endereo contendo: <B> &
Request.Form(partend) & </B><HR>
37 End If
38 **************************************************
39 A quarta possibilidade o caso em que o usurio
40 selecionou um pas na lista de pases e tambm
41 selecionou um ano na lista de anos.
42 If (Request.Form(pesqpais)=Sim And Request.Form(pesqano)=Sim And
Request.Form(pesqend)=Nao) Then
43 inst_sql=Select * from orders where ShipCountry= & Request.Form
(listapaises) & and Year(OrderDate)= & Request.Form(listaano)
44 Response.Write Voc pesquisou pelos seguintes critrios <BR>
45 Response.Write Pas = <B> & Request.Form(listapaises) & </B><BR>
46 Response.Write Ano = <B> & Request.Form(listaano) & </B><BR><HR>
47 End If
48 **************************************************
49 A quinta possibilidade o caso em que o usurio
50 selecionou um pas na lista de pases e tambm
51 digitou um critrio para pesquisar no endereo.
52 If (Request.Form(pesqpais)=Sim And Request.Form(pesqano)=Nao And
Request.Form(pesqend)=Sim) Then
53 inst_sql=Select * from orders where ShipCountry= & Request.Form
(listapaises) & and ShipAddress Like % & Request.Form(partend)& %
54 Response.Write Voc pesquisou pelos seguintes critrios <BR>
55 Response.Write Pas = <B> & Request.Form(listapaises) & </B><BR>
56 Response.Write Endereo contendo:<B> & Request.Form(partend) &
</B><BR><HR>
57 End If
58 **************************************************
59 A sexta possibilidade o caso em que o usurio
60 selecionou um ano na lista de anos e tambm
61 digitou um critrio para pesquisar no endereo.
62 If (Request.Form(pesqpais)=Nao And Request.Form(pesqano)=Sim And
Request.Form(pesqend)=Sim) Then
63 inst_sql=Select * from orders where Year(OrderDate)= & Request.Form
(listaano) & and ShipAddress Like % & Request.Form(partend)& %
64 Response.Write Voc pesquisou pelos seguintes critrios <BR>
4 4 5
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
65 Response.Write Ano = <B> & Request.Form(listaano) & </B><BR>
66 Response.Write Endereo contendo:<B> & Request.Form(partend) &
</B><BR><HR>
67 End If
68 **************************************************
69 A stima possibilidade o caso em que o usurio
70 no selecionou nenhum dos trs critrios.
71 If (Request.Form(pesqpais)=Nao And Request.Form(pesqano)=Nao And
Request.Form(pesqend)=Nao) Then
72 inst_sql=Select * from orders
73 Response.Write Voc no especificou nenhum critrio. <BR>
74 Response.Write Foram retornados todos os registros.<HR>
75 End If
76 **************************************************
77 A oitava possibilidade o caso em que o usurio
78 selecionou os trs critrios
79 If (Request.Form(pesqpais)=Sim And Request.Form(pesqano)=Sim And
Request.Form(pesqend)=Sim) Then
80 inst_sql=Select * from orders where Year(OrderDate)= & Request.Form
(listaano) & and ShipAddress Like % & Request.Form(partend)& % and
ShipCountry= & Request.Form(listapaises) &
81 Response.Write Voc pesquisou pelos seguintes critrios <BR>
82 Response.Write Pas = <B> & Request.Form(listapaises) & </B><BR>
83 Response.Write Ano = <B> & Request.Form(listaano) & </B><BR>
84 Response.Write Endereo contendo:<B> & Request.Form(partend) &
</B><BR><HR>
85 End If
86 Agora criamos um objeto RecordSet.
87 Set Pedidos = Server.CreateObject(ADODB.Recordset)
88 Pedidos.Open inst_sql, conn, 3, 3
89 Neste ponto tenho o objeto RecordSet com
90 os resultados da pesquisa.
91 *************************************************
92 Passo a exibir os resultados obtidos.
93 Response.Write <B>Foram Encontrados: & Pedidos.RecordCount & Registros
</B><HR>
94 %>
95 <A HREF=geral.asp>Clique aqui para fazer outra pesquisa.</A>
96 <HR>
97 <TABLE BORDER=1>
Criando Sites Dinmicos com ASP 3.0
4 4 6
98 <TR>
99 <TD><B>Cdigo </B></TD>
100 <TD><B>Data </B></TD>
101 <TD><B>Endereo</B></TD>
102 <TD><B>Pas </B></TD>
103 </TR>
104 <%
105 Do While Not Pedidos.EOF
106 %>
107 <TR>
108 <TD><% =Pedidos.Fields(OrderID) %></TD>
109 <TD><% =Pedidos.Fields(OrderDate) %></TD>
110 <TD><% =Pedidos.Fields(ShipAddress)%></TD>
111 <TD><% =Pedidos.Fields(ShipCountry)%></TD>
112 </TR>
113 <%
114 Pedidos.MoveNext
115 Loop
116 %>
117 </TABLE>
118 </BODY>
119 </HTML>
Observe que a pgina pesquisa.asp no tem nada de especial. Apenas testamos as oito
possibilidades descritas anteriormente. Para cada uma das possibilidades montamos a instruo
SQL correspondente e informamos os critrios de pesquisa especificados pelo usurio.
Ut ilizando o Nosso For mulr io de Pesquisa
Agora vamos demonstrar a utilizao do nosso formulrio genrico para pesquisas na tabela Orders.
Na Figura 7.28 temos um exemplo onde o usurio apenas definiu um pas como critrio, no
caso o pas selecionado foi Austria.
4 4 7
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
Figura 7.28: Pesquisando os pedidos par a Aust r ia.
Ao clicar no boto Pesquisar, so obtidos os resultados indicados na Figura 7.29. Observe que
foram encontrados 40 registros para Austria.
Figura 7.29: List agem de pedidos par a Aust r ia.
Criando Sites Dinmicos com ASP 3.0
4 4 8
Agora vamos clicar no link Clique aqui para fazer outra pesquisa, com isso voltaremos para a
pgina geral.asp, onde poderemos definir outros critrios de pesquisa.
Vamos refinar um pouco mais a nossa pesquisa. Selecione Austria na lista Pas e 1994 na lista
Ano. No esquea de marcar a opo Sim ao lado de cada critrio selecionado, caso contrrio o
critrio ser ignorado. O formulrio de pesquisa dever estar igual ao indicado na Figura 7.30.
Figura 7.30: Pesquisando os pedidos par a Aust r ia no ano de 1 9 9 4 .
Ao clicar no boto Pesquisar, so obtidos os resultados indicados na Figura 7.31. Observe que
foram encontrados cinco registros para Austria no ano de 1994.
Agora vamos fazer uma pesquisa envolvendo os trs critrios. Vamos definir os seguintes critrios:
Pas: Brazil
Ano: 1994
Endereo contendo: Rua
Clique no link Clique aqui para fazer outra pesquisa, com isso voltaremos para a pgina
geral.asp. Defina os critrios de pesquisa conforme indicado na Figura 7.32.
4 4 9
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
Figura 7.31 : List agem de pedidos par a Aust r ia no ano de 1 9 9 4 .
Figura 7.32: Pesquisando os pedidos par a Br azil, no ano de 1 9 9 4 e com o ender eo cont endo a palavr a Rua.
Criando Sites Dinmicos com ASP 3.0
4 5 0
Ao clicar no boto Pesquisar, so obtidos os resultados indicados na Figura 7.33. Observe que foram
encontrados seis registros para Brazil, no ano de 1994, com o endereo contendo a palavra Rua.
Figura 7.33: List agem de pedidos par a Br azil, no ano de 1 9 9 4 , com o ender eo cont endo a palavr a Rua.
Veja que, atravs deste exemplo, conseguimos criar um formulrio de pesquisa extremamente
verstil. Podemos definir de um a trs critrios de pesquisa, alm de definir o valor para cada
critrio. Este exemplo demonstra as possibilidades na utilizao de ASP para a construo de
sites dinmicos.
Concluso
Neste captulo aprendemos uma srie de tcnicas teis na construo de aplicaes Web
profissionais.
Iniciamos pelo estudo dos objetos Command e Parameter, os quais facilitam a execuo de
Consultas Parametrizadas, bem como o envio de parmetros e o recebimento de valores de
retorno dos Stored Procedures. Alm disso, utilizando os mtodos e propriedades dos objetos
4 5 1
Captulo 7 Bancos de Dados com ASP Conceitos Avanados Parte II
Command e Parameter podemos ter um controle bastante apurado sobre tipo, tamanho e
outras caractersticas dos parmetros a serem passados para consultas e Stored Procedures.
Foram apresentados exemplos prticos de utilizao destes dois objetos.
Depois passamos a estudar alguns conceitos avanados na utilizao da linguagem SQL.
Aprendemos a utilizar os operadores Like, And e Or, In e Not. Tambm aprendemos a utilizar
as funes de agregao e a funo de domnio Davg. Foram apresentados exemplos prticos de
utilizao dos conceitos avanados da linguagem SQL.
Por fim, apresentamos um exemplo prtico que salienta a natureza dinmica e as capacidades
do ASP 3.0, na construo de sites dinmicos, principalmente no que se refere a conexo e
pesquisas em bancos de dados.
Os exemplos deste captulo foram baseados no arquivo nwind.mdb, o qual fornecido
juntamente com o Microsoft Access. O nome dos campos esto em ingls. Caso voc esteja
utilizando uma verso do nwind.mdb que esteja com o nome dos campos em portugus,
utilize os nomes de campos da sua verso.
No prximo captulo falaremos um pouco mais sobre o que uma aplicao Web e sobre os
conceitos de Sesso e Aplicao, alm de aprendermos o conceito de componentes ASP.
4 5 3
Captulo 8 Aplicativos Web e Componentes
Capt ul o 8
Aplicativos Web
e Componentes
Criando Sites Dinmicos com ASP 3.0
4 5 4
Int r oduo
Neste captulo veremos o que significa uma Aplicao Web criada em ASP, que fica
armazenada no servidor IIS. Veremos exatamente quais os componentes que formam uma
aplicao Web. Revisaremos o conceito de estado e os problemas oriundos do fato do protocolo
HTTP no manter uma conexo aberta aps o carregamento da pgina.
Iremos conhecer a utilizao e o funcionamento do arquivo global.asa, o qual de grande
importncia para o gerenciamento de aplicaes Web no IIS. Em seguida passaremos a estudar
o objeto Session. Com o objeto Session, podemos manter valores para um determinado usurio,
enquanto o mesmo estiver acessando uma aplicao Web.
Por exemplo, quando um usurio passa de uma pgina para outra, a pgina acessada no teria
como acessar as opes selecionadas pelo usurio e os dados da pgina anterior, a no ser que
tivessem sido armazenados em um banco de dados. Ento, a pgina que est sendo acessada,
recuperaria estas informaes a partir deste banco de dados. Porm, trabalhar intensivamente
com o banco de dados pode degradar o desempenho da aplicao.
Com o objeto Session podemos armazenar informaes utilizadas em uma sesso do usurio.
As variveis armazenadas no objeto Session no sero perdidas quando o usurio acessar
outras pginas da nossa aplicao Web. Estas variveis somente sero descartadas quando o
usurio sair da aplicao, ou quando a sesso for encerrada por TimeOut.
O objeto Application pode ser utilizado para compartilhar informaes entre todos os usurios
que esto acessando uma determinada aplicao Web. Enquanto o objeto Session permite
que um usurio tenha acesso variveis armazenadas nele; o objeto Application permite que
todos os usurios que esto acessando a aplicao Web tenham acesso s informaes
armazenadas neste objeto.
Veremos exemplos de cdigo que utilizam os objetos Session e Application, bem como os
diversos mtodos, propriedades e eventos destes objetos.
O que uma Aplicao Web no IIS?
Antes de definirmos exatamente o que compe uma aplicao Web no IIS, vamos fazer uma
comparao entre as aplicaes Cliente/Servidor tradicionais e as aplicaes Web, com nfase
no conceito de conexo e estado.
4 5 5
Captulo 8 Aplicativos Web e Componentes
Uma Aplicao Client e/Ser vidor Tr adicional
Em uma aplicao Cliente/Servidor tradicional, temos a aplicao Cliente instalada em cada
uma das estaes da rede que faro acesso a aplicao, e podemos ter uma camada de lgica
instalada no servidor de Aplicaes, atravs da qual feito o acesso ao banco de dados.
Quando o usurio inicia a aplicao Cliente, o mesmo se identifica, normalmente atravs de
um nome de usurio (username ou login) e de uma senha.
As informaes de identificao so utilizadas para estabelecer uma conexo com o servidor.
Esta conexo mantida enquanto a aplicao Cliente estiver sendo utilizada. Atravs desta
conexo, o lado servidor da aplicao consegue identificar o usurio. Com a identificao do
usurio podem ser aplicadas regras de segurana, como nveis de permisso de acesso aos
dados, nveis de permisso para as funcionalidades da aplicao, log das aes realizadas
pelo usurio, etc. Por exemplo, as opes de menu da aplicao Cliente podem ser montadas
com base nas permisses de acesso que o usurio possui. Se o usurio no possui permisses
para alterar os dados, o menu com as opes de alterao no ser exibido para ele.
Atravs da manuteno da conexo e da respectiva possibilidade de identificar unicamente
cada um dos usurios conectados, podemos implementar a maioria das funcionalidades
essenciais nas aplicaes Cliente/Servidor tradicionais.
Porm, existem diversos problemas na atualizao e manuteno deste tipo de aplicao,
dentre os quais podemos destacar:
A atualizao dos sistemas problemtica pois, neste modelo, cada vez que houver
alterao na camada de apresentao (no modelo de n camadas) ou at mesmo na
camada de Lgica do Negcio (no modelo mais antigo de duas camadas), a aplicao
ter que ser atualizada em todas as estaes de trabalho que utilizam a aplicao.
NOTA
Para maiores detalhes sobre os modelos de aplicao de duas ou mais camadas, consulte o
Captulo 1.
Controle de verso: Garantir que todas as estaes de trabalho estejam com a ltima verso
da aplicao uma tarefa nada fcil, a qual, dependendo do nmero de estaes da rede
da empresa, pode exigir uma equipe de Help Desk praticamente dedicada a esta tarefa.
Problemas de conflitos de DLL e padronizao de ambiente tornam a manuteno e o
gerenciamento destas aplicaes uma tarefa difcil e de custo elevado.
Criando Sites Dinmicos com ASP 3.0
4 5 6
Estes problemas surgem para cada aplicao Cliente/Servidor tradicional que estiver sendo
usada. Agora imagine o caso de uma grande empresa, com milhares de computadores ligados
em rede, com dezenas de aplicaes. A situao torna-se insustentvel, alm do custo de
manuteno e suporte atingir patamares impraticveis.
Para resolver estes e outros problemas das aplicaes Cliente/Servidor tradicionais que
comearam a ser desenvolvidas aplicaes para a Web, das quais vamos falar um pouco mais.
Aplicaes Web um Novo Par adigma
Para resolver os tradicionais problemas das aplicaes Cliente/Servidor que surge o conceito
de aplicao Web.
Para acessar uma aplicao Web o nico programa que o usurio precisa um navegador
instalado na sua estao. Existem inclusive aplicaes Web bem projetadas que no obrigam
o usurio a utilizar um navegador especfico, o que aumenta mais ainda a flexibilidade.
Uma aplicao Web reside no servidor, no nosso caso no IIS. Toda e qualquer alterao que se
fizer necessria na aplicao, ser feita diretamente no servidor Web, sem que seja necessria
nenhuma modificao nas estaes dos usurios. Na prxima vez que o usurio acessar a
aplicao, utilizando o navegador instalado em sua estao, j estaro disponveis as alteraes
efetuadas. Com este modelo no necessria a atualizao (que muitas vezes significa uma
reinstalao) da aplicao em todas as estaes da rede, cada vez que forem feitas alteraes
na aplicao. Com isso, a equipe de suporte fica dispensada da tediosa tarefa de atualizao
da aplicao em cada estao da rede.
O modelo de aplicaes Web traz inmeras vantagens, dentre as quais podemos destacar:
Atualizao das aplicaes centralizada no servidor Web, sem a necessidade de atualizar
todas as estaes da rede que acessam a aplicao.
Facilidade de manuteno e suporte, uma vez que o cliente precisa somente de um
navegador para acessar a aplicao.
Reduo do chamado TCO Total Cost Ownership (Custo Total de Propriedade). O
TCO uma medida de quanto custa, por ano, a manuteno de uma estao de rede
em funcionamento. O clculo do TCO leva em considerao diversos fatores. Para
maiores informaes sobre este clculo acesse o site do Gardner Group na Internet.
Porm nem tudo so vantagens. Pela natureza e implementao do modelo Web, o qual faz
uso do protocolo HTTP, as aplicaes Web no tm como manter uma conexo permanente
com o usurio. Por isso que o modelo Web, muitas vezes, conhecido como State Less, isto
, Sem estado. Isso acontece porque aps ter enviado a pgina solicitada pelo usurio, a
4 5 7
Captulo 8 Aplicativos Web e Componentes
conexo encerrada, no sendo possvel continuar trocando informaes com o usurio, a
no ser que uma nova conexo seja estabelecida.
Para vencer as limitaes impostas por este modelo State Less, que iremos estudar os objetos
Application e Session do ASP, alm de aprendermos sobre o que e como utilizar o arquivo global.asa.
Atravs da utilizao destes objetos, podemos manter diversas informaes sobre o usurio
que est acessando a aplicao Web. Na verdade estamos simulando uma conexo, porm
utilizando os recursos disponibilizados pelos objetos Application e Session.
A possibilidade de diferenciar cada usurio que est acessando uma aplicao Web de
fundamental importncia, para que possamos criar contedos mais personalizados e
interativos, alm da possibilidade de aplicar conceitos como nveis de permisso de acesso
aos dados e auditoria de acesso.
Aplicaes Web no IIS
Agora que j sabemos que o modelo de desenvolvimento baseado na Web o modelo dominante
para o desenvolvimento de novas aplicaes, vamos aprender a identificar quais os elementos
que compem uma aplicao Web no IIS.
De uma maneira simples e didtica poderamos definir uma aplicao Web desenvolvida
com ASP como sendo:
Uma pasta virtual e todas as suas subpastas, com o conjunto de pginas ASP e componentes
COM ou COM+, projetadas para executar uma ou mais tarefas especficas, por exemplo um
sistema para controle do departamento de Recursos Humanos.
Conforme detalharemos mais adiante, componentes COM ou COM+ (no Windows 2000 o
padro COM foi aperfeioado e transformado em COM+) so elementos de software que
desempenham funes especficas. Por exemplo, a minha aplicao de controle do
departamento de Recursos Humanos pode fazer uso de um componente COM+ o qual faz
clculos previdencirios. Um componente COM+ pode ser desenvolvido internamente na
empresa, para ser utilizado por uma ou mais aplicaes ou pode ser adquirido de empresas
especializadas no desenvolvimento de componentes.
O nosso conjunto de pginas ASP pode fazer uso dos diversos componentes disponveis para
a aplicao Web.
NOTA
No Captulo 10 voltaremos a falar de componentes e do Microsoft Transaction Services.
Criando Sites Dinmicos com ASP 3.0
4 5 8
No IIS, o ponto de partida para criar uma aplicao Web criar uma pasta. O prximo passo
transformar esta pasta em uma Pasta Virtual do servidor IIS.
NOTA
Para saber como transformar uma pasta em uma Pasta Virtual do IIS, consulte o Captulo 1,
no item Tornando a pasta livro, parte do servidor IIS.
Vamos supor que voc tenha criado uma pasta chamada WebApl no drive (C:\WebApl), de
um servidor IIS chamado www.abc.com.br. Agora voc registrou esta pasta como uma pasta
virtual chamada WebApl. Dentro do diretrio voc criou uma pgina ASP chamada index.asp,
a qual ser a pgina inicial da aplicao Web. Voc lembra como seria o endereo para acessar
a pgina index.asp do diretrio virtual WebApl do servidor www.abc.com.br?
O endereo seria o seguinte:
http://www.abc.com.br/WebApl/index.asp
Dentro da pasta WebApl poderamos criar outras pastas, conforme a necessidade da nossa
aplicao Web. As pastas criadas dentro de uma pasta virtual, j passam a ser acessveis para
o servidor Web. Por exemplo, dentro da pastas WebApl criamos uma pasta chamada Seguranca.
Dentro dela colocamos um arquivo chamado login.asp. O endereo para acessar o arquivo
login.asp seria o seguinte:
http://www.abc.com.br/WebApl/Seguranca/login.asp
Todos as subpastas da pasta WebApl tambm faro parte da aplicao Web. Com isso podemos
concluir, em um primeiro momento, que uma aplicao Web do IIS est ligada criao de
uma pasta virtual no servidor IIS.
O prximo passo configurar as propriedades da aplicao Web. Para isso utilizamos o
Gerenciador do Internet Services, conforme ilustrado nos passos a seguir.
Para configurar as propriedades de uma aplicao Web faa o seguinte:
1. Faa o logon no Windows 2000 Server, com permisses de administrador.
2. Abra o Gerenciador do Internet Services: Iniciar/Programas/Ferramentas administrativas/
Gerenciador do Internet Services.
3. Surge a janela indicada na Figura 8.1.
4 5 9
Captulo 8 Aplicativos Web e Componentes
Figura 8.1 : Ger enciador do Int er net Ser vices.
4. Esta a janela do console de administrao do IIS 5.0.
5. D um clique duplo no nome do computador. No nosso exemplo o nome servidor.
6. Surgem as opes indicadas na Figura 8.2.
Figura 8.2: Opes de ger enciament o do IIS.
7. Todos os aplicativos Web esto disponveis atravs da opo Site da Web Padro. D
um clique no sinal de + ao lado desta opo para abri-la.
8. Sero exibidas todas as pastas virtuais disponveis no servidor IIS, conforme indicado
na Figura 8.3.
Criando Sites Dinmicos com ASP 3.0
4 6 0
Figura 8.3: Past as vir t uas do ser vidor IIS.
9. No nosso exemplo queremos configurar as propriedades da pasta virtual WebApl. Neste
ponto o conceito de pasta virtual confunde-se com o de aplicao Web. Na verdade, a
nossa aplicao WebApl est contida na pasta virtual WebApl.
10. D um clique com o boto direito do mouse sobre WebApl.
11. No menu de opes que surge d um clique em Propriedades.
12. Ser exibida a janela Propriedades de WebApl, conforme indicado na Figura 8.4.
Observe que nesta janela temos diversas informaes, tais como:
Caminho da pasta: C:\WebApl. Este o caminho fsico onde so gravados os elementos
da aplicao Web. No nosso exemplo, a pasta WebApl do drive C:.
Permisses de acesso pasta virtual da aplicao: Observe que, por padro, somente
so marcadas as opes de leitura, criao de log e indexao. Falaremos mais sobre
estas permisses no Captulo 9, sobre segurana em aplicaes desenvolvidas com
ASP. No Captulo 9 tambm falaremos das opes: Permisses de execuo e Proteo
do aplicativo.
4 6 1
Captulo 8 Aplicativos Web e Componentes
Figura 8.4: Pr opr iedades da aplicao Web WebApl.
Nome do aplicativo: No nosso exemplo WebApl.
A principal opo desta janela o boto Configurao.
13. D um clique no boto Configurao.
14. Surge a janela Configurao de aplicativo, indicada na Figura 8.5.
Figura 8.5: Configur ando as pr opr iedades da aplicao Web WebApl.
Criando Sites Dinmicos com ASP 3.0
4 6 2
Na primeira guia, Mapeamento de aplicativo, temos a indicao de qual componente do IIS
ir processar cada requisio do usurio. Este mapeamento baseado na extenso do arquivo.
Por exemplo, toda pgina com a extenso .asp ser processada pela DLL asp.dll (que na verdade
o interpretador ASP), conforme indicado pela Figura 8.6.
Figura 8.6: A DLL asp. dll r esponsvel pelo pr ocessament o das pginas ASP.
15. No iremos alterar nenhuma opo nesta guia.
16. D um clique na guia Opes de aplicativo.
17. Nesta segunda guia, temos diversas configuraes importantes, conforme indicado na
Figura 8.7.
Figura 8.7: Opes da guia Opes de aplicat ivo.
4 6 3
Captulo 8 Aplicativos Web e Componentes
Abaixo temos a descrio destas opes:
Ativar o estado da sesso: Use essa caixa de seleo para ativar ou desativar o estado
da sesso.
Quando o estado da sesso ativado, o Active Server Pages cria uma sesso para cada usurio
que acessa um aplicativo ASP, de modo que voc possa identificar o usurio atravs das pginas
do aplicativo. Quando o estado da sesso desativado, o ASP no controla usurios e no
permite que um script do ASP armazene informaes no objeto Session ou use os eventos
Session.OnStart ou Session.OnEnd. Uma sesso finalizada automaticamente se o usurio no
solicitou ou atualizou uma pgina em um aplicativo no fim do tempo limite TimeOut.
Um script pode terminar explicitamente uma sesso com o mtodo Session.Abandon. Mesmo
que o estado da sesso esteja ativado em um aplicativo, voc poder desativ-lo em uma
pgina ASP individual usando a diretiva <%@ ENABLESESSIONSTATE = False %>, no
cabealho da pgina.
Veremos mais detalhes sobre o objeto Session, ainda neste captulo.
Tempo limite da sesso: No nosso exemplo est definido em 20 minutos. Uma sesso
finalizada automaticamente se o usurio no solicitou ou atualizou uma pgina em
um aplicativo por um tempo maior do que o tempo limite TimeOut.
Ativar o Buffer: Por padro esta opo ativada no IIS 5.0. Nas verses anteriores esta
propriedade era desativada por padro. Quando o Buffer est ativo, o resultado do
processamento de uma pgina ASP somente enviado para o navegador do cliente,
quando toda a pgina tiver sido processada, a menos que seja utilizado o mtodo Flush
do objeto Response.
Ativar os caminhos pai: Marque esta caixa de seleo para permitir que as pginas
ASP usem os caminhos relativos do diretrio pai do diretrio atual (caminhos que
usam a sintaxe ..), tambm conhecidos como endereos relativos.
IMPORTANTE
Se voc ativar essa opo, no fornea acesso de execuo aos diretrios pai, caso contrrio,
um script poder tentar executar um programa no autorizado em um diretrio pai.
Linguagem ASP padro: Por padro definida como sendo VBScript. Caso deseje,
pode alterar para JScript. Tambm podemos especificar o nome de qualquer outra
linguagem para a qual tenhamos o interpretador instalado no servidor IIS, como por
exemplo Perl. Esta opo define a linguagem que ser utilizada para interpretar os
comandos dentro das tags <% e %>.
Criando Sites Dinmicos com ASP 3.0
4 6 4
Tempo limite do script ASP: Especifica o perodo de tempo durante o qual o ASP
permitir a execuo de um script. Se a execuo do script no terminar ao final do
perodo de tempo limite, o ASP ir par-lo e gravar um evento no arquivo de log de
eventosdo Windows 2000. Voc pode definir o perodo de tempo limite como um
valor entre 1 e 2147483647, alm de poder substituir essa opo em uma pgina ASP
usando o mtodo Server.ScriptTimeout.
18. No iremos alterar nenhuma opo nesta guia.
19. D um clique na guia Depurao de aplicativo.
20. Na guia Depurao de aplicativo, temos diversas configuraes relacionadas com a
depurao de erros em pginas ASP, conforme indicado na Figura 8.8.
Figura 8.8: Opes da guia Depur ao de aplicat ivo.
Abaixo temos a descrio das opes:
Ativar a depurao de script ASP do lado do servidor: Marque esta opo para permitir
que o servidor Web entre no depurador de scripts da Microsoft durante o processamento
de pginas ASP. Em seguida, voc pode usar o depurador para examinar seus scripts.
Por questes de desempenho, a depurao do ASP no recomendada em um ambiente
de produo.
4 6 5
Captulo 8 Aplicativos Web e Componentes
Ativar a depurao de script ASP do lado do cliente: Essa caixa de seleo est reservada
para uso futuro e no tem efeito sobre a verso atual do ASP (esta a informao
contida na prpria documentao do IIS 5.0).
Enviar mensagens de erro do ASP detalhadas para o cliente: Selecione essa opo para
enviar informaes especficas de depurao (incluindo o nome do arquivo, a mensagem
de erro e o nmero da linha) para o navegador. Principalmente quando estamos
desenvolvendo nossas aplicaes importante que esta opo esteja selecionado, pois
ao testarmos uma pgina, se a mesma contiver um erro, o navegador informa o nmero
da linha onde est o erro, o que facilita a correo do script.
Enviar mensagem de erro de texto para o cliente: Selecione esta opo para enviar
uma mensagem de erro padro ao navegador quando algum erro impedir o servidor
Web de processar a pgina ASP. Uma mensagem de erro especfica gravada no log de
erros. Voc pode alterar a mensagem de erro padro digitando uma nova mensagem na
caixa de texto. No recomendada a utilizao desta opo no ambiente de
desenvolvimento, pelos motivos descritos no pargrafo anterior.
21. No iremos alterar nenhuma opo nesta guia.
22. D um clique no boto OK para fechar a janela de configurao.
23. D um clique no boto OK para fechar a janela de propriedades da pasta virtual WebApl.
24. Voc estar de volta ao Gerenciador do Internet Services.
25. Feche-o.
Bem, agora j conhecemos o que uma aplicao Web do IIS e quais os elementos que a
compem. Um ltimo elemento, porm no menos importante, um arquivo chamado
global.asa. No prximo item iremos aprender o que este arquivo.
O Ar quivo Global. asa
O arquivo global.asa um arquivo opcional, porm bastante comum a utilizao do mesmo
em nossas aplicaes Web residentes no IIS. A extenso .asa uma abreviatura para Active
Server Applications. O arquivo global.asa trabalha em conjunto com os objetos Application
e Session, para permitir o gerenciamento das informaes de estado de cada usurio que
acessa a aplicao.
No arquivo global.asa possvel especificar scripts de eventos e declarar os objetos que tm
escopo de sesso (Session) ou de aplicao (Application).
No se trata de um arquivo de contedo exibido para os usurios; em vez disso, o arquivo
armazena informaes de eventos e os objetos utilizados globalmente pelo aplicativo. Esse
arquivo deve ser nomeado como global.asa e armazenado na pasta raiz do aplicativo.
Criando Sites Dinmicos com ASP 3.0
4 6 6
Um Aplicat ivo s Pode t er um Ar quivo Global. asa
A capacidade de manter informaes sobre cada usurio conectado com a aplicao de
fundamental importncia, conforme j descrito anteriormente. Quando a aplicao acessada
pela primeira vez, o arquivo global.asa carregado na memria do servidor Web. Depois
utilizado para acompanhar eventos da aplicao como um todo e de cada usurio conectado.
Atravs do arquivo global.asa podemos acompanhar, para o objeto Session, os seguintes eventos:
Session_OnStart: Este evento ocorre quando o usurio acessa uma das pginas da
aplicao Web. Quando o usurio acessar outras pginas, dentro da mesma aplicao,
este evento no ocorrer novamente, ou seja, o evento Session_OnStart somente ocorre
para a primeira pgina da aplicao que o usurio acessar; ele ocorre quando o servidor
cria uma nova sesso. O servidor processa esse script antes de executar a pgina solicitada.
O evento Session_OnStart o momento adequado para definir as variveis no nvel de
sesso, porque as mesmas sero definidas antes de se acessar quaisquer pginas.
Session_OnEnd: Este evento ocorre quando a sesso do usurio encerrada por TimeOut
ou quando o usurio acessar uma pgina de outra aplicao Web.
Estes eventos so utilizados para o acompanhamento de informaes de sesses individuais
de cada usurio, atravs da utilizao do objeto Session. O objeto Session pode ser utilizado
para passar informaes entre as diversas pginas ASP da aplicao, dentro de uma sesso de
usurio. No podemos utilizar o objeto Session para passar informaes entre sesses de
usurios diferentes, para isso utilizamos o objeto Application.
Para o objeto Application podemos acompanhar os eventos:
Application_OnStart: Ocorre quando o primeiro usurio acessar uma das pginas da
aplicao Web. O evento Application_OnStart ocorre antes da criao da primeira
sesso nova, isto , antes do evento Session_OnStart. Por exemplo, se voc est
desenvolvendo uma aplicao de Comrcio Eletrnico, na qual os preos esto em
dlar, mas o usurio tem a opo de converter os valores para reais, voc pode utilizar
o evento Application_OnStart para tornar disponvel a cotao do dlar, para qualquer
pgina dentro da aplicao.
Application_OnEnd: O evento Application_OnEnd ocorre quando o aplicativo
encerrado, aps o evento Session_OnEnd.
Estes objetos so utilizados para monitorar todos os objetos Application, os quais contm
informaes disponveis para quaisquer usurios que acessarem a aplicao.
Na Listagem 8.1, temos um exemplo de um arquivo global.asa tpico.
4 6 7
Captulo 8 Aplicativos Web e Componentes
Listagem 8.1 Um exemplo de arquivo global.asa.
1 <SCRIPT LANGUAGE=VBScript RUNAT=Server>
2 Sub Session_OnStart
3 ** Cdigo para o evento.
4 End Sub
5 EventName Description
6 Session_OnStart Runs the first time a user runs any page in your application
7 Session_OnEnd Runs when a users session times out or quits your
application
8 Application_OnStart Runs once when the first page of your application is run
for the first 9 time by any user
10 Application_OnEnd Runs once when the web server shuts down
11 </SCRIPT>
12 <SCRIPT LANGUAGE=VBScript RUNAT=Server>
13 Sub Application_OnStart
14 Application(nwind_ConnectionString) = DSN=nwind;DBQ=C:\MEUS
DOCUMENTOS\NWIND.MDB;DriverId=281;FIL=MS
Access;MaxBufferSize=2048;PageTimeout=5;
15 Application(nwind_ConnectionTimeout) = 15
16 Application(nwind_CommandTimeout) = 30
17 Application(nwind_CursorLocation) = 3
18 Application(nwind_RuntimeUserName) =
19 Application(nwind_RuntimePassword) =
20 End Sub
21 </SCRIPT>
Observe que no evento Application_OnStart configuramos os parmetros para uma conexo,
via ODBC, com o banco de dados C:\Meus documentos\nwind.mdb. Estas informaes estaro
disponveis para qualquer usurio que acessar a nossa aplicao Web, pois as mesmas foram
definidas atravs do evento Application_OnStart.
Agora que j conhecemos a anatomia de uma aplicao Web no IIS, bem coma a funo do
arquivo global.asa, vamos estudar os objetos Session e Application, para que possamos
aprender na prtica a utiliz-los.
Criando Sites Dinmicos com ASP 3.0
4 6 8
O Objet o Applicat ion
Conforme descrito anteriormente, podemos utilizar o objeto Application para compartilhar
informaes entre todos os usurios de um determinado aplicativo. Um aplicativo Web baseado
no ASP definido como todos os arquivos .asp em uma pasta virtual e seus subdiretrios. Como
o objeto Application pode ser compartilhado por mais de um usurio, existem os mtodos Lock e
Unlock para garantir que vrios usurios no tentaro alterar uma propriedade ao mesmo tempo.
Itens do objeto Application podem ser variveis necessrias para todos os usurios que acessam
uma aplicao, como a cotao do dlar ou o ndice da poupana. Tambm podemos utilizar
o objeto Application para criar uma instncia de um componente que fornece uma determinada
funcionalidade utilizada pela nossa aplicao Web.
Uma aplicao Web inicializada quando qualquer uma de suas pginas ASP for acessada. A
partir do momento em que a primeira pgina ASP for acessada, o objeto Application estar
disponvel e quaisquer valores que tenham sido definidos por este objeto, estaro disponveis
para todos os usurios que acessarem a aplicao.
O diagrama da Figura 8.9, demonstra a relao entre o objeto Application, o servidor Web e as
diversas aplicaes Web hospedadas no servidor.
Figura 8.9: Relao ent r e o objet o Applicat ion, o ser vidor Web e as diver sas aplicaes.
Cada aplicao Web possui seu prprio objeto Application e informaes disponveis no
objeto Application podem ser acessadas por quaisquer usurio que estiverem acessando a
Aplicao: web1
objet o Applicat ion
Usur io 1
Usur io 2
Usur io 3
Usur io 4
Usur io 5
Usur io 6
Aplicao: web2
objet o Applicat ion
Aplicao: web3
objet o Applicat ion
Servidor Web
Cada aplicao possui o seu pr pr io objet o Applicat ion.
4 6 9
Captulo 8 Aplicativos Web e Componentes
aplicao. Tambm podemos notar, na Figura 8.9, que em um mesmo servidor Web podemos
ter vrias aplicaes Web.
Agora passaremos a estudar os eventos, colees e mtodos do objeto Application.
Event os do Objet o Applicat ion
Na Tabela 8.1 temos a descrio dos eventos do objeto Application.
Tabela 8.1 Os eventos do objeto Application.
O cdigo para os eventos OnStart e OnEnd deve ser colocado no arquivo global.asa. Agora
passaremos a estudar a utilizao destes dois eventos.
Event o Applicat ion_ OnSt ar t
A seguir mostrada a sintaxe para este evento.
Evento Descrio
OnStart Ocorre quando a aplicao Web iniciada (quando a primeira
pgina da aplicao acessada), antes da pgina solicitada
pelo usurio ser interpretada e antes que qualquer objeto
Session tenha sido criado. por isso que o objeto Session
pode utilizar valores armazenados no objeto Application, pois
obrigatoriamente o objeto Application ser criado antes de
qualquer objeto Session. Este evento pode ser utilizado para
inicializar variveis, criar objetos ou rodar cdigo necessrio
inicializao da aplicao.
OnEnd Ocorre quando a aplicao Web finalizada. Isto acontece aps
o encerramento do ltimo objeto Session e depois que
o cdigo para o evento Session_OnEnd executado. Todas
as variveis existentes so retiradas da memria quando a
aplicao encerrada. O encerramento da sesso normalmente
ocorre quando existia somente um usurio conectado e o
mesmo fecha o navegador ou acessa outro site ou outra
aplicao dentro do mesmo site.
Criando Sites Dinmicos com ASP 3.0
4 7 0
Sintaxe para o evento OnStart:
<SCRIPT LANGUAGE=Linguagem_de_script RUNAT=Server>
Sub Application_OnStart
Cdigo para o evento OnStart. . .
End Sub
</SCRIPT>
A seguir temos um exemplo de definio de cdigo para o evento OnStart. Neste exemplo so
criadas duas variveis de nvel de aplicao. Uma com a estao do ano e outra com cotao
do dlar.
<SCRIPT LANGUAGE=VBScript RUNAT.= Server>
Sub Application_OnStart
Application(EstacaoAno) = Inverno
Application(CotDolar) = 1.77
End Sub
</SCRIPT>
Uma das principais utilizao do evento Application_OnStart para a criao e inicializao
de variveis em nvel de aplicao ou at mesmo objetos, como por exemplo, uma conexo
com um banco de dados.
Para criar uma varivel em nvel de aplicao, utilizamos a seguinte sintaxe:
Application(Nome_da_Varivel) = Valor_da_Varivel
As variveis EstacaoAno e CotDolar podem ser acessadas por qualquer usurio, em qualquer
pgina ASP da aplicao Web, pois so variveis de nvel de aplicao, tecnicamente falando,
diramos que so variveis de nvel do objeto Application.
Um detalhe importante a ser lembrado que no apenas no evento Application_OnStart
que podemos definir variveis de nvel de aplicao. Em qualquer pgina ASP podemos
definir uma varivel que estar disponvel para todos os usurios da aplicao. Para isso
utilizamos a mesma sintaxe utilizada no arquivo global.asa, conforme indicado abaixo:
Application(Nome_da_Varivel) = Valor_da_Varivel
Para acessar os valores das variveis do objeto Application muito simples, basta utilizar a
sintaxe:
<% = Application(Nome_da_Varivel) %>
Com isso ser retornado o valor da varivel.
4 7 1
Captulo 8 Aplicativos Web e Componentes
Vamos a um exemplo prtico. Suponhamos que tenham sido definidas trs variveis no evento
Application_OnStart da aplicao Web denominada Capitulo8, conforme indicado na Listagem
8.2, onde temos o arquivo global.asa para a aplicao Capitulo8.
Listagem 8.2 Arquivo global.asa onde so definidos trs variveis de nvel de aplicao.
1 <SCRIPT LANGUAGE=VBScript RUNAT=Server>
2 Sub Application_OnStart
3 Application(Mensagem)= Bem vindo ao site da empresa ABC Ltda!
4 Cotao do dlar at o meio-dia
5 Application(CotAM)= 1.50
6 Cotao do dlar aps o meio-dia.
7 Application(CotPM)= 2.00
8 End Sub
9 </SCRIPT>
Neste exemplo de arquivo global.asa, no evento Application_OnStart, definimos as variveis
Mensagem, CotAM e CotPM. Estas so variveis do objeto Application, portanto disponveis
para qualquer pgina da aplicao.
Agora vamos criar uma pgina ASP que faz uso destas variveis. A pgina usa_appvar.asp ir
detectar a hora do dia. At s 11:59 ser apresentada a mensagem Bom Dia e ser informado
a cotao do dlar armazenada na varivel CotAM. A partir de 12:00 ser apresentada a
mensagem Boa Tarde e ser informada a cotao do dlar armazenada na varivel CotPM.
Em ambos os casos ser emitida a mensagem contida na varivel Mensagem.
Na Listagem 8.3 temos o cdigo para a pgina usa_appvar.asp.
Listagem 8.3 Utilizando variveis do objeto Application.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 <TITLE> Utilizando variveis em nvel de aplicao !!</TITLE>
5 </HEAD>
6 <BODY>
Criando Sites Dinmicos com ASP 3.0
4 7 2
7 <%
8 Atribui a hora do dia para a varivel hora_dia
9 hora_dia = hour(Time())
10 If hora_dia<12 Then
11 Response.Write <HR>
12 Response.Write Bom Dia ! <BR>
13 Response.Write Cotao do dlar: & Application(CotAM) & <BR>
14 Response.Write Application(Mensagem)
15 Response.Write <HR>
16 Else
17 Response.Write <HR>
18 Response.Write Boa tarde ! <BR>
19 Response.Write Cotao do dlar: & Application(CotPM) & <BR>
20 Response.Write Application(Mensagem)
21 Response.Write <HR>
22 End If
23 %>
24 </BODY>
25 </HTML>
Observe que utilizamos a funo hour(Time( )); como parmetro para a funo hour, passamos
a funo Time. A funo Time captura a hora do servidor Web e a funo hour retira apenas
o valor numrico da hora.
Observe que, para ter acesso a uma varivel do objeto Application, s utilizar a sintaxe:
Application(Nome_da_Varivel)
Ao visualizarmos o arquivo da Listagem 8.3, antes do meio-dia, obteremos o resultado indicado
na Figura 8.10.
J, ao visualizarmos o arquivo da Listagem 8.3, aps o meio-dia, obteremos o resultado indicado
na Figura 8.11.
A possibilidade de criar variveis no evento Application_OnStart bastante interessante,
principalmente pelo fato de que estas variveis estaro disponveis para qualquer usurio
que acessar a aplicao Web.
4 7 3
Captulo 8 Aplicativos Web e Componentes
Figura 8.1 0: Result ado obt ido ant es do meio- dia.
Figura 8.1 1 : Result ado obt ido aps o meio- dia.
Porm no estamos limitados criao de variveis simplesmente. Podemos criar objetos no
evento OnStart. Por exemplo, posso criar um objeto do tipo ADODB.Connection e utilizar o mtodo
Open do mesmo. Com isso estou disponibilizando uma conexo de banco de dados para todas as
pginas da minha aplicao. Esta tcnica apresenta, dentre outras, duas vantagens importantes:
No necessrio a colocao do cdigo para criao da conexo, em cada pgina que
precisar da mesma. Isto facilita a construo das pginas e reduz a possibilidade de erros.
Criando Sites Dinmicos com ASP 3.0
4 7 4
Se, por algum motivo, for necessria a alterao das propriedades da conexo, basta
alterar a String de conexo em um nico local (no arquivo global.asa), e no em todas
as pginas que fazem uso da conexo que est sendo alterada.
Na Listagem 8.4, temos um exemplo de conexo criada no evento Application_OnStart.
Listagem 8.4 Criando uma conexo no evento Application_OnStart.
1 <SCRIPT LANGUAGE=VBScript RUNAT=Server>
2 Sub Application_OnStart
3 Application(Mensagem)= Bem vindo ao site da empresa ABC Ltda!
4 Cotao do dlar at o meio-dia
5 Application(CotAM)= 1.50
6 Cotao do dlar aps o meio-dia.
7 Application(CotPM)= 2.00
8 Agora cria uma conexo com o banco de dados
9 C:\Meus documentos\nwind.mdb
10 Esta conexo estar disponvel para todas as
11 pginas da aplicao.
12 Set Application(conn)=Server.CreateObject(ADODB.Connection)
13 Application(conn).ConnectionString = PROVIDER=MICROSOFT.JET.OLEDB.4.0;
DATA SOURCE=c:\meus documentos\nwind.mdb
14 Application(conn).Open
15 End Sub
16 </SCRIPT>
IMPORTANTE
Para que o objeto conn seja uma conexo do objeto Application, e com isso disponvel para
todas as pginas da aplicao, devemos utilizar a sintaxe indicada na Listagem 8.4, ou seja:
12 Set Application(conn)=Server.CreateObject(ADODB.Connection)
Desta forma, precisamos utilizar Application(Nome_do_Objeto), pois se utilizarmos
simplesmente o nome do objeto, o mesmo no pertencer ao objeto Application e no estar
disponvel em todas as pginas. O mesmo vlido na definio da propriedade ConnectionString
e na utilizao do mtodo Open.
4 7 5
Captulo 8 Aplicativos Web e Componentes
Agora que criamos uma conexo no evento OnStart, podemos utilizar esta conexo em qualquer
pgina da aplicao. Vamos a um exemplo de pgina ASP que utiliza esta conexo.
Na Listagem 8.5 temos uma pgina ASP que utiliza a conexo criada no evento OnStart.
Observe que estamos criando um objeto RecordSet que utiliza esta conexo como parmetro
para o mtodo Open do objeto RecordSet.
Listagem 8.5 Utilizando a conexo criada no evento OnStart usa_appcon.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 <TITLE> Utilizando uma conexo criada no arquivo global.asa.</TITLE>
5 </HEAD>
6 <BODY>
7 <%
8 Nesta pgina estamos criando um objeto RecordSet,
9 o qual utiliza a conexo Conn criada no evento
10 Application_OnStart.
11 O cdigo que cria a conexo est no arquivo global.asa.
12 Set Pedidos = Server.CreateObject(ADODB.Recordset)
13 Pedidos.Open Select * from Orders Order By OrderID, Application(conn), 3, 3
14 Neste ponto tenho o objeto Pedidos ligado com a tabela
15 Orders do banco de dados nwind.mdb.
16 Agora passo a exibir os resultados.
17 %>
18 <P><B>Utilizei uma conexo criada no arquivo global.asa.</B></P>
19 <TABLE border=1 width=100%>
20 <TR>
21 <TD><B>Cdigo</B></TD>
22 <TD><B>Data</B></TD>
23 <TD><B>Cidade</B></TD>
24 <TD><B>Pas</B></TD>
25 </TR>
26 <%
Criando Sites Dinmicos com ASP 3.0
4 7 6
27 Agora exibo os registros obtidos a partir da tabela Orders.
28 Response.Write Foram encontrados: & Pedidos.RecordCount & Registros.<HR>
29 Pedidos.MoveFirst
30 Do While Not Pedidos.EOF
31 %>
32 <TR>
33 <TD><% =Pedidos.Fields(OrderID) %></TD>
34 <TD><% =Pedidos.Fields(OrderDate) %></TD>
35 <TD><% =Pedidos.Fields(ShipCity) %></TD>
36 <TD><% =Pedidos.Fields(ShipCountry) %></TD>
37 </TR>
38 <%
39 Pedidos.MoveNext
39 Loop
40 %>
41 </TABLE>
42 <BR>
43 <HR>
44 </BODY>
45 </HTML>
Na Figura 8.12 vemos o resultado quando a pgina usa_appcon.asp carregada no Internet
Explorer.
IMPORTANTE
No evento Application_OnStart no podemos utilizar os seguintes objetos:
Response
Request
Session
Se tentarmos utilizar um destes objetos no evento Application_OnStart, obteremos a mensagem
de erro indicada na Figura 8.13.
4 7 7
Captulo 8 Aplicativos Web e Componentes
Figura 8.1 2: Pgina que ut iliza uma conexo cr iada no ar quivo global. asa.
Figura 8.1 3: Er r o devido ut ilizao de Response no event o Applicat ion_ OnSt ar t .
Criando Sites Dinmicos com ASP 3.0
4 7 8
Event o Applicat ion_ OnEnd
Embora possamos criar variveis e objetos no evento Application_OnEnd isto no teria
utilidade prtica. Normalmente utilizamos o evento OnEnd para funes administrativas,
tais como gravar informaes em um log de auditoria ou parar um determinado servio para
manuteno.
A seguir mostrada a sintaxe para este evento.
Sintaxe para o evento Application_OnEnd:
<SCRIPT LANGUAGE=Linguagem_de_script RUNAT=Server>
Sub Application_OnEnd
Cdigo para o evento OnEnd. . .
End Sub
</SCRIPT>
A seguir temos um exemplo de definio de cdigo para o evento OnEnd. Neste exemplo
estamos retirando o objeto conn da memria.
<SCRIPT LANGUAGE=VBScript RUNAT.= Server>
Sub Application_OnEnd
Set Application(conn) = Nothing
End Sub
</SCRIPT>
NOTA
Uma situao especial em que o evento Application_OnEnd ocorre quando o arquivo global.asa
precisa ser novamente interpretado e carregado na memria. Isto acontece quando este arquivo
alterado e as alteraes so salvas.
Colees do Objet o Applicat ion
Na Tabela 8.2 temos a descrio das colees do objeto Application.
4 7 9
Captulo 8 Aplicativos Web e Componentes
Tabela 8.2 As colees do objeto Application.
Agora passaremos a estudar a sintaxe e alguns exemplos de utilizao das colees do objeto
Application.
A Coleo Cont ent s
Para acessarmos um item da coleo Contents, utilizamos a seguinte sintaxe:
Application.Contents(Chave)
onde Chave o nome do item a ser recuperado.
Por exemplo, vamos supor que as seguintes variveis tenham sido criadas no arquivo global.asa,
no evento Application_OnStart:
Application(Var1) = Jos da Silva
Application(Var2) = Maria do Socorro
Application(HoraDia) = Hour(Time( ))
Poderamos exibir o valor destas variveis utilizando o seguinte cdigo:
<%
Response.Write Variveis de nvel de aplicao.<HR>
Response.Write Var1: & Application.Contents(Var1) & <BR>
Coleo Descrio
Contents Contm todos os itens que foram adicionados ao objeto
Application, com exceo dos que foram declarados com a
tag <OBJECT>. Todas as variveis e objetos criados com Set,
fazem parte desta coleo. Podemos usar a coleo Contents
para obter a lista de itens aos quais tenha sido atribudo
escopo do aplicativo ou para especificar um item especfico
para ser o destino de uma operao. possvel tambm
remover os itens da coleo com os mtodos Remove e
RemoveAll. No prximo tpico falaremos sobre os mtodos
do objeto Application.
StaticObjects A coleo StaticObjects contm todos os objetos criados com
as tags <OBJECT> dentro do escopo do objeto Application.
Podemos usar esta coleo para determinar o valor de uma
propriedade especfica de um objeto ou fazer interao atravs
da coleo e recuperar todas as propriedades dos objetos
estticos.
Criando Sites Dinmicos com ASP 3.0
4 8 0
Response.Write Var2: & Application.Contents(Var2) & <BR>
Response.Write Hora do incio da aplicao: &
Application.Contents(HoraDia) & <BR>
%>
O comando Application.Contents(Var1) retorna o valor da varivel de aplicao Var1. O
comando Application.Contents(Var2) retorna o valor da varivel de aplicao Var2 e assim
por diante.
Como estamos trabalhando com uma coleo, podemos utilizar o operador For Each...Next
para percorrer todos os itens da coleo Contents. No exemplo de cdigo a seguir, exibimos o
nome de todos os elementos da coleo Contents.
<%
For Each elemento in Application.Contents
Response.Write Nome do elemento: & elemento & <BR>
Next
%>
Considere a Listagem 8.6, onde fazemos uso do operador For Each...Next para exibir o nome
de todos os itens da coleo Contents do objeto Application.
Listagem 8.6 Acessando os elementos da coleo Contents contents.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 <TITLE>Utilizando a coleo Contents</TITLE>
5 </HEAD>
6 <BODY>
7 <HR>
8 <%
9 Response.Write Elementos da coleo Contents. <HR>
10 For Each elemento in Application.Contents
11 Response.Write Elemento: & elemento & <BR>
12 Next
13 Response.Write <HR>
14 %>
15 </BODY>
16 </HTML>
Ao carregarmos esta pgina no Internet Explorer, obtemos o resultado indicado na Figura 8.14.
4 8 1
Captulo 8 Aplicativos Web e Componentes
Figura 8.1 4: Usando For Each. . . Next par a exibir o nome dos element os da coleo Cont ent s.
NOTA
Neste caso a pgina contents.asp faz parte da aplicao que utiliza o arquivo global.asa da
Listagem 8.4. Observe que inclusive o elemento conn, o qual um objeto do tipo Connection,
faz parte da coleo Contents.
Poderamos modificar a Listagem 8.6, para que, alm de exibir o nome de cada elemento, a mesma
exibisse o valor de cada um dos elementos. Esta alterao est indicada na Listagem 8.7.
Listagem 8.7 Exibindo o nome e o contedo dos elementos da coleo Contents.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 <TITLE>Utilizando a coleo Contents</TITLE>
5 </HEAD>
6 <BODY>
7 <HR>
8 <TABLE border=1 width=100%>
9 <TR>
10 <TD><B>Elemento</B></TD>
Criando Sites Dinmicos com ASP 3.0
4 8 2
11 <TD><B>Valor</B></TD>
12 </TR>
13 <%
14 Response.Write Elementos da coleo Contents. <HR>
15 For Each elemento in Application.Contents %>
16 <TR>
17 <TD><% =elemento %> </TD>
18 <TD><% =Application.Contents(elemento)%></TD>
19 </TR>
20 <%
21 Next
22 Response.Write <HR>
23 %>
24 </TABLE>
25 </BODY>
26 </HTML>
Ao carregarmos esta nova verso da pgina, no Internet Explorer, obtemos o resultado indicado
na Figura 8.15.
Figura 8.1 5: Usando For Each. . . Next par a exibir o nome e o cont edo
dos element os da coleo Cont ent s.
4 8 3
Captulo 8 Aplicativos Web e Componentes
A Coleo St at icObject s
Para acessarmos um item da coleo StaticObjects, utilizamos a seguinte sintaxe:
Application.StaticObjects(Chave)
onde Chave o nome do item a ser recuperado.
Como estamos trabalhando com uma coleo, podemos utilizar o operador For Each...Next
para percorrer todos os itens da coleo Contents. No exemplo de cdigo a seguir, exibimos o
nome de todos os elementos da coleo StaticObjects.
<%
For Each elemento in Application.StaticObjects
Response.Write Nome do elemento: & elemento & <BR>
Next
%>
Agora que j conhecemos os eventos e colees do objeto Application, vamos ao estudo dos
mtodos deste objeto.
M t odos do Objet o Applicat ion
Na Tabela 8.3 temos a descrio dos mtodos do objeto Application.
Tabela 8.3 Os mtodos do objeto Application.
Mtodo Descrio
Contents.Remove O mtodo Application.Contents.Remove exclui um
item de uma coleo. Este mtodo considera uma
seqncia de caracteres ou um inteiro como um
parmetro de entrada. Se o parmetro de entrada for
uma seqncia de caracteres, o mtodo pesquisar a
coleo Contents para localizar um item com esse
mesmo nome e o remover. Se o parmetro de entrada
for um inteiro, o mtodo contar o nmero de itens
equivalente a partir do incio da coleo e remover o
item correspondente.
Contents.RemoveAll O mtodo Application.Contents.RemoveAll remove
todos os itens que foram adicionados coleo
Application.Contents.
Criando Sites Dinmicos com ASP 3.0
4 8 4
Agora vamos analisar alguns exemplos de cdigo que utilizam os mtodos do objeto Application.
A sintaxe para o mtodo Contents.Remove a seguinte:
Application.Contents.Remove(Nome_da_Varivel)
No exemplo a seguir so adicionadas trs variveis em nvel de aplicao. Depois utilizamos
o mtodo Contents.Remove para remover uma das variveis.
<%
Application(Nome) = Request.Form(nome)
Application(Idade) = Request.Form(idade)
Application(ValorDolar) = 1.72
Application.Contents.Remove(Idade)
%>
A sintaxe para o mtodo Contents.RemoveAll a seguinte:
Application.Contents.RemoveAll( )
No exemplo a seguir so adicionadas trs variveis em nvel de aplicao. Depois utilizamos
o mtodo Contents.RemoveAll para remover todas as variveis, inclusive variveis que tenham
sido adicionadas em outras pginas ASP da aplicao, ou atravs do arquivo global.asa.
<%
Application(Nome) = Request.Form(nome)
Application(Idade) = Request.Form(idade)
Mtodo Descrio
Lock O mtodo Lock impede que outros clientes
modifiquem as variveis armazenadas no objeto
Application, garantindo que apenas um cliente de
cada vez possa alterar ou acessar as variveis do
objeto Application. Se o mtodo Unlock no for
chamado explicitamente, o servidor desbloquear o
objeto Application bloqueado quando o arquivo .asp
for concludo ou atingir seu tempo limite TimeOut.
Unlock O mtodo Unlock permite que outros clientes
modifiquem as variveis armazenadas no objeto
Application aps ele ter sido bloqueado usando o
mtodo Lock. Se voc no chamar explicitamente esse
mtodo, o servidor Web desbloquear objeto
Application quando o arquivo .asp for concludo ou
atingir seu tempo limite TimeOut.
4 8 5
Captulo 8 Aplicativos Web e Componentes
Application(ValorDolar) = 1.72
Application.Contents.RemoveAll( )
%>
A sintaxe para o mtodo Lock a seguinte:
Application.Lock
No exemplo a seguir, o mtodo Lock impede que mais de um cliente acesse a varivel
NumVisitantes ao mesmo tempo. Se o aplicativo no tivesse sido bloqueado, dois clientes
poderiam tentar incrementar a varivel NumVisitantes simultaneamente.
<%
Application.Lock
Application(NumVisitantes) = Application(NumVisitantes) + 1
Application(DataUltimaVisita) = Now()
Application.Unlock
Response.Write Esta aplicao j foi visitada:
%>
<%
= Application(NumVisitantes)
%>
<%
Response.Write Vezes!!!
%> Vezes !!!
A sintaxe para o mtodo UnLock a seguinte:
Application.Unlock
No exemplo a seguir, o mtodo Unlock libera o objeto bloqueado para que o prximo cliente
possa incrementar NumVisitantes.
<%
Application.Lock
Application(NumVisitantes ) = Application(NumVisitantes ) + 1
Application(DataUltimaVisita ) = Now()
Application.Unlock
%>
IMPORTANTE
O mtodo Lock do aplicativo cumulativo, significando que se o mesmo script chamar Lock
vrias vezes, ele tambm dever chamar Unlock o mesmo nmero de vezes para liberar
totalmente o aplicativo. Se isso no ocorrer, o bloqueio do aplicativo ser mantido at que o
script termine de executar.
Criando Sites Dinmicos com ASP 3.0
4 8 6
Com isso encerramos o estudo do objeto Application. Conforme estudamos, podemos criar
variveis que estaro acessveis para todos os usurios da aplicao (semelhante ao conceito
de varivel global nas aplicaes tradicionais); podemos criar objetos, como por exemplo um
objeto Connection, de tal forma que qualquer pgina ASP da aplicao utilize-o sem que para
isso o mesmo tenha que ser criado em cada pgina.
Agora passaremos ao estudo do objeto Session.
O Objet o Session
Podemos usar o objeto Session para armazenar as informaes necessrias para uma
determinada sesso de usurio. As variveis armazenadas no objeto Session no so
descartadas quando o usurio alterna entre as pginas do aplicativo; em vez disso, essas
variveis persistem durante toda a sesso de usurio.
O servidor Web cria automaticamente um objeto Session quando uma pgina da Web de um
aplicativo solicitada por um usurio que no tem uma sesso. O servidor descarta o objeto
Session quando a sesso expira (por TimeOut) ou abandonada.
Um uso comum para o objeto Session para armazenar as preferncias do usurio. Por exemplo,
se um usurio indicar que prefere no visualizar elementos grficos, voc dever armazenar
essa informao no objeto Session.
O diagrama da Figura 8.16 demonstra a relao entre o objeto Application, os diversos objetos
Session, o servidor Web e as diversas aplicaes Web hospedadas no servidor.
Cada aplicao Web possui seu prprio objeto Application e informaes disponveis neste
objeto podem ser acessadas por qualquer usurio que estiver acessando a aplicao. Para
cada usurio que acessa a aplicao Web criado um objeto Session, onde ficam armazenadas
as informaes relacionadas a ele. Tambm podemos notar, na Figura 8.16, que em um mesmo
servidor Web podemos ter vrias aplicaes Web.
Informaes armazenadas no objeto Session do usurio podem ser acessadas em qualquer
pgina da aplicao Web, desta forma possvel passar informaes entre as diversas pginas
da aplicao Web durante a existncia do objeto Session.
IMPORTANTE
O objeto Session baseado em Cookies, por isso o estado da sesso s mantido para
navegadores que suportam Cookies.
4 8 7
Captulo 8 Aplicativos Web e Componentes
Figura 8.1 6: Par a cada usur io conect ado cr iado um objet o Session.
Agora passaremos a estudar os eventos, colees, propriedades e mtodos do objeto Session.
Event os do Objet o Session
Na Tabela 8.4, temos uma descrio dos eventos do objeto Session.
Tabela 8.4 Os eventos do objeto Session.
Evento Descrio
OnStart O evento Session_OnStart ocorre quando o servidor cria uma nova
sesso, processando esse script antes de executar a pgina solicitada.
O evento Session_OnStart uma tima oportunidade de definir as
variveis no nvel de sesso, porque as mesmas sero definidas antes
de se acessar quaisquer pginas. Todos os objetos incorporados
(Application, ObjectContext, Request, Response, Server e Session)
esto disponveis e podem ser referenciados no script do evento
Session_OnStart. Voc pode chamar o mtodo Redirect no evento
Session_OnStart, por exemplo, para assegurar que os usurios sempre
iniciem uma sesso em determinada pgina da Web. Quando o
usurio entrar no aplicativo, o servidor criar uma sesso para este
usurio e processar o script do evento Session_OnStart. possvel
incluir um script nesse evento para verificar se a pgina aberta pelo
usurio a pgina inicial e, se no for, podemos redirecion-lo para a
pgina inicial atravs de uma chamada ao mtodo Response.Redirect.
Cada aplicao Web possui o seu pr pr io objet o Applicat ion.
Para cada usurio conectado criado um objeto Session
Diferente, o qual mantem informaes relativas a cada usurio.
Aplicao: web1
objet o Applicat ion
Sesso1
Sesso2
Sesso3
Aplicao: web2
objet o Applicat ion
Sesso4
Sesso5
Aplicao: web3
objet o Applicat ion
Sesso6
Usur io 1
Usur io 2
Usur io 3
Usur io 4
Usur io 5
Usur io 6
Criando Sites Dinmicos com ASP 3.0
4 8 8
O Event o Session_ OnSt ar t
A seguir mostrada a sintaxe para este evento:
<SCRIPT LANGUAGE=Linguagem_de_script RUNAT=Server>
Sub Session_OnStart
Cdigo para o evento Session_OnStart. . .
End Sub
</SCRIPT>
A seguir temos um exemplo de definio de cdigo para o evento Session_OnStart. Neste
exemplo so criadas duas variveis de nvel de sesso. Uma com a estao do ano e outra com
cotao do dlar.
<SCRIPT LANGUAGE=VBScript RUNAT.= Server>
Sub Session_OnStart
Session(EstacaoAno) = Inverno
Session(CotDolar) = 1.77
End Sub
</SCRIPT>
Uma das principais utilizaes do evento Session_OnStart para a criao e inicializao de
variveis em nvel de sesso ou at mesmo objetos, como por exemplo, uma conexo com um
banco de dados.
Para criar uma varivel em nvel de sesso, utilizamos a seguinte sintaxe:
Session(Nome_da_Varivel) = Valor_da_Varivel
As variveis EstacaoAno e CotDolar podem ser acessadas, pelo usurio conectado, em qualquer
pgina ASP da aplicao Web, pois so variveis de nvel de sesso, tecnicamente falando,
diramos que so variveis de nvel do objeto Session, as quais esto disponveis, em qualquer
pgina, para o usurio ligado sesso.
Evento Descrio
OnEnd O evento Session_OnEnd ocorre quando uma sesso abandonada ou
o tempo limite expira TimeOut. Para esse evento, somente esto
disponveis os objetos Application, Server e Session.
4 8 9
Captulo 8 Aplicativos Web e Componentes
Um detalhe importante a ser lembrado que no apenas no evento Session_OnStart que
podemos definir variveis de nvel de sesso. Em qualquer pgina ASP podemos definir uma
varivel que estar disponvel em nvel de sesso. Para isso utilizamos a mesma sintaxe
utilizada no arquivo global.asa, conforme indicado abaixo:
<%
Session(Nome_da_Varivel) = Valor_da_Varivel
%>
Para acessar os valores das variveis do objeto Session muito simples, basta utilizar a sintaxe:
<%
= Session(Nome_da_Varivel)
%>
Com isso ser retornado o valor da varivel.
Vamos a um exemplo prtico. Suponhamos que tenham sido definidas trs variveis no evento
Session_OnStart, conforme indicado na Listagem 8.8, onde temos o arquivo global.asa para a
aplicao Capitulo8.
Listagem 8.8 Arquivo global.asa onde so definidos trs variveis de nvel de sesso.
1 <SCRIPT LANGUAGE=VBScript RUNAT=Server>
2 Sub Session_OnStart
3 Session(Mensagem)= Bem-vindo ao site da empresa ABC Ltda !
4 Cotao do dlar at o meio-dia
5 Session(CotAM)= 1.50
6 Cotao do dlar aps o meio-dia.
7 Session(CotPM)= 2.00
8 End Sub
9 </SCRIPT>
Neste exemplo de arquivo global.asa, no evento Session_OnStart, definimos as variveis
Mensagem, CotAM e CotPM. Estas so variveis do objeto Session, portanto disponveis para
qualquer pgina a ser acessada pelo usurio, desde que tenha sido estabelecida uma conexo.
Lembre que se o usurio estiver utilizando um navegador que no suporta Cookies, ou tiver
desabilitado o suporte a Cookies, a sesso no ser estabelecida e as informaes disponveis
no objeto Session no estaro disponveis.
Criando Sites Dinmicos com ASP 3.0
4 9 0
Agora vamos criar uma pgina ASP que faz uso destas variveis. A pgina usa_sessionvar.asp
ir detectar a hora do dia. At s 11:59 ser apresentada a mensagem Bom Dia e ser
informado a cotao do dlar armazenada na varivel CotAM. A partir de 12:00 ser
apresentada a mensagem Boa Tarde e ser informada a cotao do dlar armazenada na
varivel CotPM. Em ambos os casos ser emitida a mensagem contida na varivel Mensagem.
Na Listagem 8.9 temos o cdigo para a pgina usa_sessionvar.asp.
Listagem 8.9 Utilizando variveis do objeto Session.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 <TITLE> Utilizando variveis em nvel de Sesso !!</TITLE>
5 </HEAD>
6 <BODY>
7 <%
8 Atribui a hora do dia para a varivel hora_dia
9 hora_dia = hour(Time())
10 Response.Write Hora do dia: & hora_dia & <HR>
11 If hora_dia<12 Then
12 Response.Write <HR>
13 Response.Write Bom Dia! <BR>
14 Response.Write Cotao do dlar: & Session(CotAM) & <BR>
15 Response.Write Session(Mensagem)
16 Response.Write <HR>
17 Else
18 Response.Write <HR>
19 Response.Write Boa tarde ! <BR>
20 Response.Write Cotao do dlar: & Session(CotPM) & <BR>
21 Response.Write Session(Mensagem)
22 Response.Write <HR>
23 End If
24 %>
25 </BODY>
26 </HTML>
Observe que utilizamos a funo hour(Time( )); como parmetro para a funo hour, passamos
a funo Time ( ). A funo Time( ) captura a hora do servidor Web e a funo hour retira
apenas o valor numrico da hora.
4 9 1
Captulo 8 Aplicativos Web e Componentes
Observe que para ter acesso a uma varivel do objeto Session s utilizar a seguinte sintaxe:
Session(Nome_da_Varivel).
Ao visualizarmos o arquivo da Listagem 8.9, aps o meio-dia, obteremos o resultado indicado
na Figura 8.17.
Figura 8.1 7: Result ado obt ido aps o meio- dia.
J, ao visualizarmos o arquivo da Listagem 8.3, antes do meio-dia, obteremos o resultado
indicado na Figura 8.18.
Figura 8.1 8: Result ado obt ido ant es do meio- dia.
Criando Sites Dinmicos com ASP 3.0
4 9 2
A possibilidade de criar variveis no evento Session_OnStart bastante interessante,
principalmente pelo fato de que estas variveis estaro disponveis para o usurio em todas
as pginas que ele acessar na aplicao Web. Por exemplo, uma vez identificado o usurio,
podemos carregar, a partir de um banco de dados, uma srie de informaes sobre o mesmo
e atribui-las a variveis do objeto Session. Com isso, em qualquer pgina da aplicao, as
informaes sobre o usurio estaro disponveis.
Um exemplo de utilizao do objeto Session encontrado em sites que oferecem treinamento
pela Internet. O usurio faz o cadastro no site e recebe um username e uma senha. Ao entrar
no site, o usurio se identifica atravs do seu username e senha. Aps identificado, podemos
utilizar o objeto Session para localizar informaes sobre os cursos em que o usurio est
cadastrado, os mdulos j cursados e as suas preferncias, tais como idioma de exibio da
pgina. Com isso posso criar um contedo personalizado para cada usurio, baseado nas
preferncias do mesmo.
Porm no estamos limitados a criao de variveis simplesmente. Podemos criar objetos no
evento Session_OnStart. Por exemplo, posso criar um objeto do tipo ADODB.Connection e
utilizar o mtodo Open do mesmo. Com isso estou disponibilizando uma conexo de banco
de dados para o usurio, e em qualquer pgina da aplicao esta conexo pode ser utilizada.
Esta tcnica apresenta, dentre outras, duas vantagens importantes:
No necessrio a colocao do cdigo para criao da conexo, em cada pgina que
precisar da mesma. Isto facilita a construo das pginas e reduz a possibilidade de erros.
Se, por algum motivo, for necessria a alterao das propriedades da conexo, basta
alterar a String de conexo em um nico local (no arquivo global.asa), e no em todas
as pginas que fazem uso da conexo que est sendo alterada.
Na Listagem 8.10, temos um exemplo de conexo criada no evento Session_OnStart.
Listagem 8.10 Criando uma conexo no evento Session_OnStart.
1 <SCRIPT LANGUAGE=VBScript RUNAT=Server>
2 Sub Session_OnStart
3 Session(Mensagem)= Bem-vindo ao site da empresa ABC Ltda!
4 Cotao do dlar at o meio-dia
5 Session (CotAM)= 1.50
6 Cotao do dlar aps o meio-dia.
7 Session (CotPM)= 2.00
4 9 3
Captulo 8 Aplicativos Web e Componentes
8 Agora cria uma conexo com o banco de dados
9 C:\Meus documentos\nwind.mdb
10 Esta conexo estar disponvel para todas as
11 pginas da aplicao.
12 Set Session (conexao)=Server.CreateObject(ADODB.Connection)
13 Session (conexao).ConnectionString =PROVIDER=MICROSOFT.JET.OLEDB.4.0;
DATA SOURCE=c:\meus documentos\nwind.mdb
14 Session(conexao).Open
15 End Sub
16 </SCRIPT>
IMPORTANTE
Para que o objeto conexao seja uma conexo do objeto Session, e com isso esteja disponvel
para todas as pginas que o usurio acessar dentro da aplicao, devemos utilizar a sintaxe
indicada na Listagem 8.10, ou seja:
12 Set Session(conexao)=Server.CreateObject(ADODB.Connection)
Desta forma, precisamos utilizar Session(Nome_do_Objeto), pois se utilizarmos simplesmente
o nome do objeto, a mesma no pertencer ao objeto Session e no estar disponvel em todas
as pginas. O mesmo vlido na definio da propriedade ConnectionString e na utilizao
do mtodo Open.
Agora que criamos uma conexo no evento Session_OnStart, podemos utilizar esta conexo
em qualquer pgina da aplicao. Vamos a um exemplo de pgina ASP que utiliza esta conexo.
Na Listagem 8.11 temos uma pgina ASP que utiliza a conexo criada no evento
Session_OnStart. Observe que estamos criando um objeto RecordSet que utiliza esta conexo
como parmetro para o mtodo Open do objeto RecordSet.
Listagem 8.11 Utilizando a conexo criada no evento OnStart usa_sessioncon.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 <TITLE> Utilizando uma conexo criada no arquivo global.asa.</TITLE>
5 </HEAD>
6 <BODY>
Criando Sites Dinmicos com ASP 3.0
4 9 4
7 <%
8 Nesta pgina estamos criando um objeto RecordSet,
9 o qual utiliza a conexo Conn criada no evento
10 Session_OnStart.
11 O cdigo que cria a conexo est no arquivo global.asa.
12 Set Pedidos = Server.CreateObject(ADODB.Recordset)
13 Pedidos.Open Select * from Orders Order By OrderID, Session(conexao), 3, 3
14 Neste ponto tenho o objeto Pedidos ligado com a tabela
15 Orders do banco de dados nwind.mdb.
16 Agora passo a exibir os resultados.
17 %>
18 <P><B>Utilizei uma conexo criada no arquivo global.asa.</B></P>
19 <TABLE border=1 width=100%>
20 <TR>
21 <TD><B>Cdigo</B></TD>
22 <TD><B>Data</B></TD>
23 <TD><B>Cidade</B></TD>
24 <TD><B>Pas</B></TD>
25 </TR>
26 <%
27 Agora exibo os registros obtidos a partir da tabela Orders.
28 Response.Write Foram encontrados: & Pedidos.RecordCount & Registros.<HR>
29 Pedidos.MoveFirst
30 Do While Not Pedidos.EOF
31 %>
32 <TR>
33 <TD><% =Pedidos.Fields(OrderID) %></TD>
4 9 5
Captulo 8 Aplicativos Web e Componentes
34 <TD><% =Pedidos.Fields(OrderDate) %></TD>
35 <TD><% =Pedidos.Fields(ShipCity) %></TD>
36 <TD><% =Pedidos.Fields(ShipCountry) %></TD>
37 </TR>
38 <%
39 Pedidos.MoveNext
39 Loop
40 %>
41 </TABLE>
42 <BR>
43 <HR>
44 </BODY>
45 </HTML>
Na Figura 8.19 vemos o resultado quando a pgina usa_sessioncon.asp carregada no Internet
Explorer.
Figura 8.1 9: Pgina que ut iliza uma conexo cr iada no event o Session_ OnSt ar t .
Criando Sites Dinmicos com ASP 3.0
4 9 6
Event o Session_ OnEnd
Embora possamos criar variveis e objetos no evento Application_OnEnd isto no teria
utilidade prtica. Normalmente utilizamos o evento OnEnd para funes administrativas,
tais como gravar informaes em um log de auditoria ou para gravar escolhas feita pelo usurio
em um banco de dados.
A seguir mostrada a sintaxe para este evento.
Sintaxe para o evento Session_OnEnd:
<SCRIPT LANGUAGE=Linguagem_de_script RUNAT=Server>
Sub Application_OnEnd
Cdigo para o evento OnEnd. . .
End Sub
</SCRIPT>
A seguir temos um exemplo de definio de cdigo para o evento OnEnd. Neste exemplo
estamos retirando o objeto conexao da memria, para liberar recursos no servidor Web.
<SCRIPT LANGUAGE=VBScript RUNAT.= Server>
Sub Application_OnEnd
Set Application(conexao) = Nothing
End Sub
</SCRIPT>
Colees do Objet o Session
Na Tabela 8.5 temos a descrio das colees do objeto Session.
Tabela 8.5 As colees do objeto Session.
Coleo Descrio
Contents Contm todos os itens que foram adicionados para uma
sesso, com exceo dos que foram declarados com a tag
<OBJECT>. Todas as variveis e objetos criados com Set,
fazem parte desta coleo. Podemos usar a coleo Contents
para obter uma lista de itens aos quais tenha sido atribudo
escopo da sesso. possvel tambm remover os itens da
coleo com os mtodos Remove e RemoveAll.
4 9 7
Captulo 8 Aplicativos Web e Componentes
Agora passaremos a estudar a sintaxe e alguns exemplos de utilizao das colees do objeto
Session.
A Coleo Cont ent s
Para acessarmos um item da coleo Contents, utilizamos a seguinte sintaxe:
Session.Contents(Chave)
onde Chave o nome do item a ser recuperado.
Por exemplo, vamos supor que as seguintes variveis tenham sido criadas no arquivo global.asa,
no evento Application_OnStart
Session(Var1) = Jos da Silva
Session (Var2) = Maria do Socorro
Session (HoraDia) = Hour(Time( ))
Poderamos exibir o valor destas variveis utilizando o seguinte cdigo:
<%
Response.Write Variveis de nvel de sesso.<HR>
Response.Write Var1: & Session.Contents(Var1) & <BR>
Response.Write Var2: & Session.Contents(Var2) & <BR>
Response.Write Hora do incio da aplicao: & Session.Contents(HoraDia) &
<BR>
%>
O comando Session.Contents(Var1) retorna o valor da varivel de sesso Var1. O comando
Session.Contents(Var2) retorna o valor da varivel de sesso Var2 e assim por diante.
Como estamos trabalhando com uma coleo, podemos utilizar o operador For Each...Next
para percorrer todos os itens da coleo Contents. No exemplo de cdigo a seguir, exibimos o
nome de todos os elementos da coleo Contents.
Coleo Descrio
StaticObjects A coleo StaticObjects contm todos os objetos criados com
as tags <OBJECT> dentro do escopo da sesso. Podemos usar
esta coleo para determinar o valor de uma propriedade
especfica de um objeto ou fazer interao atravs da coleo
e recuperar todas as propriedades de todos os objeto.
Criando Sites Dinmicos com ASP 3.0
4 9 8
<%
For Each elemento in Session.Contents
Response.Write Nome do elemento: & elemento & <BR>
Next
%>
Considere a Listagem 8.12, onde fazemos uso do operador For Each...Next para exibir o nome
de todos os itens da coleo Contents do objeto Session.
Listagem 8.12 Acessando os elementos da coleo Contents contents2.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 <TITLE>Utilizando a coleo Contents</TITLE>
5 </HEAD>
6 <BODY>
7 <HR>
8 <%
9 Response.Write Elementos da coleo Contents. <HR>
10 For Each elemento in Session.Contents
11 Response.Write Elemento: & elemento & <BR>
12 Next
13 Response.Write <HR>
14 %>
15 </BODY>
16 </HTML>
Ao carregarmos esta pgina no Internet Explorer, obtemos o resultado indicado na Figura 8.20.
4 9 9
Captulo 8 Aplicativos Web e Componentes
Figura 8.20: Usando For Each. . . Next par a exibir o nome dos element os da coleo Cont ent s.
Poderamos modificar a Listagem 8.11, para que alm de exibir o nome de cada elemento, a
mesma exibisse o valor de cada um dos elementos. Esta alterao est indicada na Listagem 8.12.
Listagem 8.12 Exibindo o nome e o contedo dos elementos da coleo Contents.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 <TITLE>Utilizando a coleo Contents</TITLE>
5 </HEAD>
6 <BODY>
7 <HR>
8 <TABLE border=1 width=100%>
9 <TR>
10 <TD><B>Elemento</B></TD>
11 <TD><B>Valor</B></TD>
12 </TR>
13 <%
Criando Sites Dinmicos com ASP 3.0
5 0 0
14 Response.Write Elementos da coleo Contents. <HR>
15 For Each elemento in Application.Contents %>
16 <TR>
17 <TD><% =elemento %> </TD>
18 <TD><% =Session.Contents(elemento)%></TD>
19 </TR>
20 <%
21 Next
22 Response.Write <HR>
23 %>
24 </TABLE>
25 </BODY>
26 </HTML>
Ao carregarmos esta nova verso da pgina, no Internet Explorer, obtemos o resultado indicado
na Figura 8.21.
Figura 8.21 : Usando For Each. . . Next par a exibir o nome e o cont edo dos
element os da coleo Cont ent s.
5 0 1
Captulo 8 Aplicativos Web e Componentes
A Coleo St at icObject s
Para acessarmos um item da coleo StaticObjects, utilizamos a seguinte sintaxe:
Session.StaticObjects(Chave)
onde Chave o nome do item a ser recuperado.
Como estamos trabalhando com uma coleo, podemos utilizar o operador For Each...Next
para percorrer todos os itens da coleo Contents. No exemplo de cdigo a seguir, exibimos o
nome de todos os elementos da coleo StaticObjects.
<%
For Each elemento in Session.StaticObjects
Response.Write Nome do elemento: & elemento & <BR>
Next
%>
Agora que j conhecemos os eventos e colees do objeto Session, vamos ao estudo dos
mtodos deste objeto.
M t odos do objet o Session
Na Tabela 8.6 temos a descrio dos mtodos do objeto Session.
Tabela 8.6 Os mtodos do objeto Session.
Mtodo Descrio
Abandon O mtodo Abandon elimina todos os objetos
armazenados em um objeto Session e libera seus
recursos. Se voc no chamar o mtodo Abandon
explicitamente, o servidor eliminar esses objetos
quando a sesso atingir seu tempo limite. Quando o
mtodo Abandon chamado, o objeto Session atual
colocado em fila para excluso, mas na verdade no
excludo at que todos os comandos de script da pgina
atual tenham sido processados. Isso significa que voc
pode acessar as variveis armazenadas no objeto
Session na mesma pgina que utilizou o mtodo
Abandon, mas no em quaisquer pginas subseqentes
da aplicao Web.
Criando Sites Dinmicos com ASP 3.0
5 0 2
Agora vamos analisar alguns exemplos de cdigo que utilizam os mtodos do objeto Session.
A sintaxe para o mtodo Contents.Remove a seguinte:
Session.Contents.Remove(Nome_da_Varivel)
No exemplo a seguir so adicionadas trs variveis em nvel de sesso. Depois utilizamos o
mtodo Contents.Remove para remover uma das variveis.
<%
Session(Nome) = Request.Form(nome)
Session (Idade) = Request.Form(idade)
Session (ValorDolar) = 1.72
Session.Contents.Remove(Idade)
%>
A sintaxe para o mtodo Contents.RemoveAll a seguinte:
Session.Contents.RemoveAll( )
No exemplo a seguir so adicionadas trs variveis em nvel de sesso. Depois utilizamos o
mtodo Contents.RemoveAll para remover todas as variveis, inclusive as que tenham sido
adicionadas pela sesso do usurio, em outras pginas ASP da aplicao, ou atravs do arquivo
global.asa utilizando o mtodo Session_OnStart.
<%
Session (Nome) = Request.Form(nome)
Session (Idade) = Request.Form(idade)
Mtodo Descrio
Contents.Remove O mtodo Session.Contents.Remove exclui um item
especificado da coleo Contents. O mtodo
Contents.Remove considera uma seqncia de
caracteres ou um inteiro como um parmetro de
entrada. Se o parmetro de entrada for uma seqncia
de caracteres, o mtodo pesquisar a coleo Contents
para localizar um item com esse mesmo nome e o
remover. Se o parmetro de entrada for um inteiro, o
mtodo contar o nmero de itens equivalente a partir
do incio da coleo e remover o item correspondente.
Contents.RemoveAll O mtodo Session.Contents.RemoveAll remove todos os
itens que foram adicionados coleo Session.Contents.
5 0 3
Captulo 8 Aplicativos Web e Componentes
Session (ValorDolar) = 1.72
Session.Contents.RemoveAll( )
%>
A sintaxe para o mtodo Abandon a seguinte:
<%
Session.Abandon
%>
Observe o exemplo a seguir, onde utilizamos o mtodo Session.Abandon, porm aps termos
utilizado este mtodo, definimos e exibimos uma varivel em nvel de sesso. Esta varivel ser
exibida pois, conforme descrito anteriormente, a sesso somente ser destruda aps todas as
linhas de Script da pgina que chamou o mtodo Session.Abandon terem sido executadas.
<%
Session.Abandon
Session(NomeUsuario) = Jos da Silva
Response.Write Nome do usurio: & Session (NomeUsuario)
%>
NOTA
O servidor cria um novo objeto Session quando voc abre uma pgina subseqente da aplicao
Web depois de abandonar uma sesso. Voc pode armazenar variveis e objetos nesse novo
objeto Session.
Agora vamos ao estudo das propriedades do objeto Session.
Pr opr iedades do Objet o Session
Na Tabela 8.7 temos a descrio das propriedades do objeto Session.
Tabela 8.7 Propriedades do objeto Session.
Propriedade Descrio
CodePage uma propriedade de leitura e escrita, representada por um
nmero inteiro. A propriedade CodePage determina a pgina
de cdigo que ser usada para exibir o contedo dinmico de
uma pgina ASP. Uma pgina de cdigo um conjunto de
caracteres que pode incluir nmeros, marcas de pontuao e
Criando Sites Dinmicos com ASP 3.0
5 0 4
Vamos estudar mais alguns detalhes sobre estas propriedades.
A sintaxe para a propriedade CodePage a seguinte:
<%
Session.CodePage = nmero_pgina_cdigo
%>
Por exemplo:
<%
Session.CodePage = 1252
%>
Na Tabela 8.8 temos o nmero para algumas pginas de cdigo.
Tabela 8.8 Principais pginas de Cdigo
Propriedade Descrio
outros hierglifos. Diferentes idiomas e locais podem usar
diferentes pginas de cdigo. Por exemplo, a pgina de cdigo
ANSI 1252 usada para o ingls americano e a maioria dos
idiomas europeus; a pgina de cdigo OEM 932 usada para
o Kanji japons.
LCID A propriedade LCID determina o identificador de local que
ser usado para exibir o contedo dinmico.
SessionID A propriedade SessionID retorna o identificador da sesso,
um identificador exclusivo que gerado pelo servidor quando
a sesso criada. Uma identificao da sesso retornada
como um tipo de dado LONG.
TimeOut A propriedade TimeOut especifica o tempo limite de durao
do objeto Session para esse aplicativo, em minutos. Se o
usurio no atualizar ou solicitar uma pgina dentro do perodo
de limite de tempo, a sesso encerrada pelo servidor IIS.
Nmero Descrio
437 MS-DOS / EUA
850 MS-DOS / Internacional
1251 Windows / Rssia
5 0 5
Captulo 8 Aplicativos Web e Componentes
A sintaxe para a propriedade LCID a seguinte:
<%
Session.LCID = nmero_indicador_local
%>
Por exemplo:
<%
Session.LCID = 0816
%>
Este comando define as configuraes de localidade para o Portugus de Portugal. O cdigo
para o Brasil 0416.
NOTA
As configuraes de localidade definem diversas configuraes, como por exemplo o smbolo da
moeda, o nmero de casas decimais, o formato da data e da hora, etc. So as opes configuradas
atravs do cone Opes regionais do Painel de Controle. Para maiores detalhes sobre a
configurao das Opes regionais, consulte o Captulo 2 do livro Microsoft Windows 2000
Server Curso Bsico & Rpido, de minha autoria e publicado pela editora Axcel Books.
A sintaxe para a propriedade SessionID a seguinte:
Session.SessionID
Por exemplo:
<%
Response.Write Identificador da sesso: & Session.SessionID
%>
Este comando retorna um resultado semelhante ao seguinte:
Identificador da Sesso: 117013627
O nmero varia, pois para cada sesso este nmero gerado automaticamente pelo servidor IIS.
Nmero Descrio
1252 Windows/ ANSI
1253 Windows/ Grcia
10000 Macintosh/ Padro
Criando Sites Dinmicos com ASP 3.0
5 0 6
IMPORTANTE
Voc no deve usar a propriedade SessionID para gerar valores de chave primria para um
aplicativo de banco de dados. Isso porque se o servidor Web for reinicializado, alguns valores
de SessionID podero ser os mesmos daqueles gerados antes do servidor ser parado. Em vez
disso, voc deve usar os campos de auto-incremento do prprio banco de dados.
A sintaxe para a propriedade TimeOut a seguinte:
Session.TimeOut = minutos
Por exemplo:
<%
Session.TimeOut = 20
%>
Este comando define o TimeOut da sesso para 20 minutos.
Com isso encerramos o estudo destes dois importantes objetos do ASP: Application e Session.
Concluso
Neste captulo estudamos alguns conceitos fundamentais, tais como:
O que uma aplicao Web no IIS.
Quais os componentes de uma aplicao Web no IIS.
O problema de manter o estado de uma conexo.
Aprendemos sobre quais elementos que compes uma aplicao Web no servidor IIS. Tambm
tratamos sobre as configuraes de uma aplicao Web, utilizando o Gerenciador do Internet
Services. Aprendemos sobre diversas propriedades que podem ser configuradas para uma
aplicao Web.
Na seqncia aprendemos sobre o arquivo global.asa. Vimos que toda aplicao Web pode
conter um arquivo global.asa, no qual podem ser definidas variveis de inicializao, tanto em
nvel de aplicao quanto em nvel de sesso. Para isso utilizamos, basicamente, quatro eventos
para os quais podemos escrever cdigo no arquivo global.asa. Os eventos so os seguintes:
Application_OnStart
Application_OnEnd
Session_OnStart
Session_OnEnd
5 0 7
Captulo 8 Aplicativos Web e Componentes
Fizemos um estudo detalhado do objeto Application. Foram explicados e exemplificados todos
os mtodos, colees e eventos deste objeto. Apresentamos alguns exemplos completos de
utilizao deste objeto, tanto no arquivo global.asa quanto em pginas ASP. Tambm aprendemos
que, alm de variveis, possvel a criao de objetos no evento Application_OnStart. A ttulo
de exemplos criamos um objeto que representa uma conexo com um Banco de dados.
O prximo passo foi o estudo detalhado do objeto Session. Foram explicados e exemplificados
todos os mtodos, colees, eventos e propriedades deste objeto. Apresentamos alguns
exemplos completos de utilizao do objeto Session, tanto no arquivo global.asa quanto em
pginas ASP. Criamos um objeto do tipo ADODB.Connection, no evento Session_OnStart e
depois utilizamos este objeto em exemplos de pginas ASP.
No prximo captulo iremos estudar alguns aspectos de segurana. Hoje em dia, com a
crescente onda de ataques a sites e aplicativos Web, em um mundo em que milhes de usurios
esto conectados a Internet, a questo de segurana crtica. Iremos analisar algumas medidas
que podem melhorar o nvel de segurana de nossos sites e aplicaes Web, embora a
criatividade dos ataques tem sido cada vez mais surpreendente.
5 0 9
Captulo 9 Segurana de Aplicaes Web com IIS e ASP
Capt ul o 9
Segurana de Aplicaes
Web com IIS e ASP
Criando Sites Dinmicos com ASP 3.0
5 1 0
Quando se fala de Internet nos dias de hoje, o assunto mais tratado, sem nenhuma dvida,
Segurana. Muitos relatos, alguns verdadeiros e outros mais fantasiosos, sobre invases
mirabolantes, roubo de nmero de cartes de crditos, acesso a informaes sigilosas de
rgos governamentais e assim por diante.
No podemos negar que o problema de segurana existe e crtico, principalmente hoje
quando o Comrcio Eletrnico , mais do que uma realidade, uma necessidade e um diferencial
competitivo para as empresas. O diferencial competitivo no entrar ou no no mundo do e-
business, e sim criar servios agregados ao Comrcio Eletrnico, capazes de gerar diferenciais
competitivos. Assuntos como fidelizao do cliente, melhorias nos sistemas de CRM
Customer Relationship Management (Gerenciamento das Relaes com o Cliente), B2B
Bussines to Bussines, B2C Bussines to Consumer e outros, esto em evidncia.
Porm, sistemas de Comrcio Eletrnico, CRM e assemelhados, exigem acesso a um conjunto
de dados estratgicos da empresa. Uma vez que estes sistemas esto acessveis na Internet, os
dados empresariais precisam estar protegidos. Neste ponto que a questo segurana de
fundamental importncia.
Existem os mais variados tipos de ataques pela Internet. Um engano comum pensar que
nico tipo ataque capaz de causar prejuzos aquele que rouba ou destri dados. No caso de
um site de Comrcio Eletrnico, qualquer ataque que torne o site indisponvel por um
determinado perodo de tempo causa prejuzos incalculveis. Isso porque, alm das compras
que deixaram de ser realizadas no perodo de indisponibilidade, tem a questo da imagem da
empresa, e da possibilidade de o cliente ter feito a compra no site do concorrente, gostar, e
passar a fazer as prximas compras l.
Por todos estes motivos que a questo de segurana fundamental e deveria ser prioritria
quando tratamos de aplicaes Web. Outro fato importante a ser mencionado que a maioria
dos ataques, ao contrrio do que muitos pensam, originado na Intranet da prpria empresa.
Pode ser um funcionrio descontente ou desonesto, ou um usurio com permisses de acesso
indevidas que causa algum prejuzo por impercia tcnica. O fato que a Segurana no deve
ser tratada apenas como uma questo de proteo contra as foras do mal que vem da Internet.
O que precisa-se definir uma poltica de segurana que permita que todos possam realizar
o seu trabalho, porm com os nveis de permisso adequados.
Alm de definir uma poltica de segurana, necessria a ampla divulgao da mesma.
alarmante constatar que muitas empresas no possuem uma poltica de segurana definida e
amplamente divulgada.
Outro erro bastante comum achar que a questo de segurana responsabilidade somente
da equipe de desenvolvimento ou do administrador da rede. Na verdade o item segurana
5 1 1
Captulo 9 Segurana de Aplicaes Web com IIS e ASP
bastante complexo e exige que o pessoal de desenvolvimento trabalhe em sintonia com a
administrao da rede.
Conforme veremos neste captulo, existem aspectos de segurana que so de responsabilidade
do desenvolvimento e outros que so de responsabilidade da administrao de rede. Na
verdade, o que se faz criar vrias barreiras para que o hacker no tenha sucesso em sua
tentativa de invaso. Algumas destas barreiras so criadas na prpria rede da empresa e
outras em nvel de aplicao Web.
Neste captulo estaremos tratando de:
Questes como autenticao do usurio com o servidor Web.
Aspectos de segurana a nvel de Windows 2000 Server.
Aspectos de segurana no IIS 5.0.
Implementao de segurana a nvel de banco de dados.
De maneira alguma temos a pretenso de que este captulo seja um guia completo para a
segurana na Internet e para o Comrcio Eletrnico. O objetivo fornecer as informaes
bsicas para que o usurio possa tomar as medidas mnimas necessrias para garantir algum
grau de segurana para seu site e suas aplicaes Web.
Quando trabalhamos com ASP, IIS e Windows 2000 Server, o endereo a seguir de consulta
obrigatria para assuntos relacionados segurana de tecnologias Microsoft: http://www.
microsoft.com/security.
Neste site so publicados boletins sobre segurana dos produtos Microsoft. Sempre que algum
novo problema descoberto, so divulgadas informaes sobre o problema, bem como a maneira
de corrigi-los. Tambm so disponibilizados arquivos para download. Estes arquivos normalmente
contm correes (Hot-fix) que devem ser aplicadas para solucionar problemas de segurana.
NOTA
Para acompanhar este captulo o usurio deve conhecer alguns aspectos bsicos do Windows
2000 Server, tais como: Permisses NTFS; Contas de Usurios e Grupos de Usurios; Utilizao
do MMC Microsoft Management Console e de Snap-in.
DICA
Para informaes sobre estes itens, consulte o livro Windows 2000 Server Curso Bsico & Rpido,
de minha autoria, publicado pela editora Axcel Books.
Criando Sites Dinmicos com ASP 3.0
5 1 2
Aut ent icao de Usur ios com o IIS 5 . 0
Quando um usurio tenta acessar uma pgina, a primeira coisa que o servidor precisa
determinar a identidade deste usurio, isto , o IIS precisa conhecer quem est tentando
acessar a pgina. Uma das maneiras de saber quem o usurio que est acessando o site,
atravs da utilizao de um username e senha. Porm no seria nada simptico apresentar
uma tela de logon para o usurio a primeira vez que ele est acessando o site. At mesmo nas
prximas tentativas de acesso, a necessidade de logon pode acabar afastando o usurio.
Atravs da autenticao do usurio, podem ser definidos os nveis de acesso a informao
que o mesmo tem, bem como podem ser feitos registros das aes realizadas pelo usurio,
mediante a gravao de logs de acesso. Existem diversos tipos de autenticao possveis com
o IIS. Passaremos a estud-los individualmente. Os tipos de autenticao que estudaremos
so os seguintes:
Annima.
Bsica.
Avanada.
Integrada ao Windows 2000.
Com certificados.
O Acesso Annimo
Um tipo de autenticao bastante comum o que permite o acesso annimo. O IIS permite
que seja configurado um tipo de acesso chamado Acesso Annimo, no qual no necessrio
que o usurio fornea um username e senha para ter acesso ao site. Este acesso annimo est
ligado a uma nica conta de usurio do Windows 2000 Server. Todo o usurio que acessar
um site configurado para permitir acesso annimo, ser identificado como se estivesse
autenticado usando a conta de usurio configurada para este tipo de acesso.
A conta de usurio para acesso annimo automaticamente criada quando instalamos o
Internet Information Services 5.0. Por padro esta conta possui o seguinte nome:
IUSR_NOME_DO_COMPUTADOR
Por exemplo, ao instalarmos o IIS em um servidor chamado SERVER02SP, ser criada a seguinte
conta para permitir o acesso annimo:
IUSR_SERVER02SP
A autenticao annima fornece aos usurios acesso a reas pblicas do seu site, sem solicitar
um nome de usurio ou uma senha.
5 1 3
Captulo 9 Segurana de Aplicaes Web com IIS e ASP
Por padro, a conta IUSR_NOME_DO_COMPUTADOR includa no grupo de usurios
Convidados do Windows. Esse grupo tem restries de segurana, impostas pelas permisses
do NTFS (sistema de arquivos do Windows 2000 que possui recursos de segurana mais
avanados do que o sistema FAT ou FAT32), que designam o nvel de acesso e o tipo de
contedo disponvel para os usurios pblicos. Com isso o usurio possui limitaes sobre
os recursos que o mesmo pode acessar no servidor, sendo que estas limitaes j atuam como
um nvel de segurana.
Se existem vrios sites no seu servidor ou reas no seu site que exigem privilgios de acesso
diferentes, voc pode criar vrias contas annimas, uma para cada rea site, diretrio ou arquivo.
Por exemplo, voc pode querer medir o nvel de acesso a diferentes reas do seu site, utilizando
para isso diferentes contas para o acesso annimo a cada uma destas reas.
O IIS usa a conta IUSR_NOME_DO_COMPUTADOR da seguinte forma:
A conta IUSR_NOME_DO_COMPUTADOR adicionada ao grupo Convidados no
computador, conforme descrito anteriormente.
Quando uma solicitao recebida, o IIS representa a conta IUSR_NOME_DO_COMPU-
TADOR antes de executar qualquer cdigo ou acessar qualquer arquivo. O IIS pode
representar a conta IUSR_NOME_DO_COMPUTADOR pois conhece o nome de usurio
e a senha dessa conta.
Antes de retornar uma pgina ao cliente, o IIS verifica as permisses dos arquivos e
diretrios do NTFS para ver se a conta IUSR_NOME_DO_COMPUTADOR tem permisso
para acessar o arquivo. Neste ponto que podemos limitar as reas as quais o usurio,
que entra como annimo, tem acesso. Basta configurar as permisses NTFS para que a
conta associada ao acesso annimo somente tenha acesso s reas pblicas do site.
Se o acesso for permitido, a autenticao concluda e os recursos tornam-se disponveis
para o usurio.
Se o acesso no for permitido, o IIS tenta usar outro mtodo de autenticao. Se nenhum
mtodo for selecionado, o IIS retorna uma mensagem de erro HTTP 403 Acesso negado
ao navegador do cliente.
NOTA
Veremos sobre os outros mtodos de autenticao ainda neste captulo.
Na Figura 9.1, temos uma representao desta seqncia para o acesso annimo.
Criando Sites Dinmicos com ASP 3.0
5 1 4
Figura 9.1 : Acesso annimo no IIS.
Se a autenticao annima for ativada, o IIS tentar sempre a autenticao usando-a primeiro,
mesmo se outros mtodos forem ativados.
Em alguns casos, o navegador solicitar ao usurio um nome de usurio e uma senha.
Voc pode alterar a conta usada para a autenticao annima no Snap-in do IIS, no nvel de
servio do servidor Web ou para diretrios virtuais ou arquivos individuais.
A conta annima deve ter o direito de usurio de efetuar logon localmente. Se a conta no
tiver a permisso Efetuar logon localmente, o IIS no poder atender qualquer solicitao
annima. Ao instalarmos o IIS, automaticamente, a permisso Efetuar logon localmente
concedida conta IUSR_NOME_DO_COMPUTADOR.
NOTA
As contas IUSR_NOME_DO_COMPUTADOR em controladores de domnio no so adicionadas
ao grupo Convidados do domnio, por padro, e devem ser alteradas para Efetuar logon
localmente a fim de permitir logon annimo.
Agora vamos aprender a efetuar as seguintes atividades prticas:
Definir a conta para acesso annimo no IIS.
Verificar a que grupos pertence a conta IUSR_NOME_DO_SERVIDOR.
Usur io
Aut ent icado:
IUSR_ SERVER0 2 SP
IUSR_ SERVER0 2 SP
t em per misses
NTFS, ent o acesso OK.
IUSR_ SERVER0 2 SP
no t em per misses
NTFS, acesso negado.
Servidor: SERVER02SP
5 1 5
Captulo 9 Segurana de Aplicaes Web com IIS e ASP
Verificar a permisso Efetuar logon local para a conta IUSR_NOME_DO_SERVIDOR.
Definir permisses NTFS para uma conta de usurio.
Estas atividades so importantes, no s para as configuraes do acesso annimo, mas para
a configurao de qualquer tipo de acesso.
DICA
Para informaes mais detalhadas sobre estes itens, consulte o livro Windows 2000 Server
Curso Bsico & Rpido de minha autoria, publicado pela editora Axcel Books.
Como Definir a Cont a Par a Acesso Annimo no IIS 5 . 0
Para definir qual conta ser utilizada para o acesso annimo siga os seguintes passos:
1. Faa o logon no Windows 2000 Server, com permisses de administrador.
2. Abra o Gerenciador do Internet Services: Iniciar/Programas/Ferramentas administrati-
vas/Gerenciador do Internet Services.
3. Surge a janela indicada na Figura 9.2
Figura 9.2: O Ger enciador do Int er net Ser vices.
4. Esta a janela do console de administrao do IIS 5.0.
5. D um clique duplo no nome do computador. No nosso exemplo o nome Servidor.
6. Surgem as opes indicadas na Figura 9.3.
Criando Sites Dinmicos com ASP 3.0
5 1 6
Figura 9.3: Opes de ger enciament o do IIS.
7. Neste momento podemos configurar o acesso annimo para todos os aplicativos Web
contidos no servidor ou para cada aplicativo individualmente. Inclusive podemos
configurar diferentes contas do Windows 2000 Server, para serem utilizadas para o
acesso annimo em diferentes reas do site. Podemos configurar uma conta a nvel do
servidor Web, de cada aplicao e at mesmo para uma pasta dentro de uma aplicao.
Com isso poderamos ter diferentes pastas, dentro de uma mesma aplicao Web (que
para o IIS representada por uma pasta virtual, conforme descrito no captulo ante-
rior), com diferentes contas para acesso annimo.
8. No nosso exemplo, iremos configurar uma nica conta para acesso annimo para todo
o site. O procedimento o mesmo quer seja para o site como um todo, para uma
aplicao Web do site ou para uma pasta dentro da aplicao Web.
9. Clique com o boto direito do mouse sobre a opo Site da Web padro (ou na opo
correspondente, caso voc tenha alterado este nome). No menu de opes que surge
d um clique em Propriedades.
10. Ser exibida a janela Propriedades de Site Web padro, conforme indicado na Figura 9.4.
11. D um clique na guia Segurana de pasta. Sero exibidas as opes indicadas na Figura 9.5.
12. A primeira opo desta guia Controle de acesso annimo e autenticao. D um
clique no boto Editar, ao lado desta opo. Surge a janela Mtodos de autenticao,
indicada na Figura 9.6.
13. A primeira opo desta janela Acesso annimo. Para que o acesso annimo seja
permitido, esta opo deve estar marcada.
14. Para definir a conta que ser utilizada para o acesso annimo, d um clique no boto
Editar desta opo.
15. Ser exibida a janela Conta de usurio annimo, conforme indicado na Figura 9.7.
5 1 7
Captulo 9 Segurana de Aplicaes Web com IIS e ASP
Figura 9.4: Pr opr iedades do Sit e Web padr o.
Figura 9.5: As opes da guia Segur ana de past a.
Criando Sites Dinmicos com ASP 3.0
5 1 8
Figura 9.6: As opes par a mt odos de aut ent icao.
Figura 9.7: Definindo a cont a par a usur io annimo.
16. Nesta janela voc pode definir a conta que ser utilizada para o acesso annimo. Ob-
serve que por padro definida a conta IUSR_NOME_DO_COMPUTADOR. No exemplo
da Figura 9.7, aparece IUSR_SERVIDOR, pois o computador que estou utilizando para
escrever este livro tem o nome de SERVIDOR.
17. Caso voc queira utilizar outra conta e no lembre o nome da mesma, s clicar no
boto Procurar, que ser exibida uma lista de usurios do Windows 2000.
18. A opo Permitir que o IIS controle a senha interessante de ser comentada. Esta
opo quando selecionada permite ao IIS sincronizar automaticamente as configuraes
de senha annima com aquelas definidas no Windows 2000. Se a senha fornecida
5 1 9
Captulo 9 Segurana de Aplicaes Web com IIS e ASP
conta annima e a senha do Windows para a conta forem diferentes, a autenticao
annima no funcionar. Este um dos erros mais comuns e a causa mais freqente
de indisponibilidade de um site IIS. Por algum motivo esta opo no est marcada,
com isso preciso digitar a senha para a conta IUSR_NOME_DO_COMPUTADOR. O
usurio digita a senha e OK.
Porm mais adiante, por algum motivo ou por solicitao do Administrador do IIS, a senha
para esta conta alterada no Windows 2000. Como a sincronizao no est ativada, o IIS
continua tentando usar a senha antiga. Como as duas senhas esto diferentes o acesso
negado e o usurio recebe uma mensagem de acesso negado ao tentar acessar o site.
IMPORTANTE
A sincronizao de senhas deve ser usada somente com contas de usurio annimas definidas
no computador local e no com contas annimas de computadores remotos.
19. Aps ter configurado as informaes para a conta de acesso annimo, d um clique em OK.
20. Voc estar de volta janela Mtodos de autenticao, d um clique em OK para fech-la.
21. Voc estar de volta janela Propriedades do site da Web padro, d um clique em OK
para fech-la.
22. Voc estar de volta ao Gerenciador do Internet Services. Feche-o.
NOTA
Para definir uma conta de acesso annimo diferente para uma das aplicaes Web do site, ou
at mesmo para uma subpasta de uma aplicao Web, basta repetir os passos indicados.
Ver ificando as Configur aes da Cont a Par a
Acesso Annimo no Windows 2 0 0 0 Ser ver
Conforme descrito anteriormente, a conta IUSR_NOME_DO_COMPUTADOR deve ter algumas
configuraes especiais (relativas a permisses e direitos), definidas no Windows 2000 Server.
Agora veremos como conferir se as configuraes para esta conta esto corretas.
Vamos verificar duas configuraes a respeito desta conta:
A que Grupos de Usurios do Windows 2000 pertence esta conta.
Se a conta possui permisso de fazer o logon localmente.
Criando Sites Dinmicos com ASP 3.0
5 2 0
Para verificar a que grupos pertence a conta IUSR_NOME_DO_COMPUTADOR:
1. Faa o logon no Windows 2000 Server, com permisses de administrador.
2. Abra o Console para Gerenciamento do computador: Iniciar/Programas/Ferramentas
administrativas/Gerenciador do Computador.
NOTA
Se o servidor que voc estiver utilizando for um controlador de domnio, voc deve abrir o
console para Gerenciamento do Active Directory. As opes que surgem podem ser um pouco
diferentes das apresentadas neste exemplo.
3. Surge a janela indicada na Figura 9.8.
Figura 9.8: O console par a Ger enciament o do comput ador.
4. D um clique no sinal de + ao lado da opo Ferramentas de sistema, para abri-la.
5. Nas opes que surgem, abaixo de Ferramentas de sistema, d um clique no sinal de +
ao lado da opo Usurios e grupos locais para abri-la.
6. Surgem as opes indicadas na Figura 9.9.
7. D um clique na opo Usurios. Surge, no painel da direita, uma listagem com o
nome de todos os usurios, conforme indicado na Figura 9.10.
8. Na lista de usurios, do painel da direita, localize o usurio IUSR_NOME_DO_COMPU-
TADOR e d um clique duplo sobre o mesmo para abrir a janela de propriedades do
usurio, coforme indicado na Figura 9.11. No nosso exemplo o usurio IUSR_SER-
VIDOR, pois conforme descrito anteriormente, o computador que estou utilizando
chamado SERVIDOR.
5 2 1
Captulo 9 Segurana de Aplicaes Web com IIS e ASP
Figura 9.9: Infor maes sobr e os usur ios e Gr upos de usur io do Windows 2 0 0 0 .
Figura 9.1 0: List agem dos usur ios cadast r ados.
9. Para saber a quais grupos o usurio pertence, d um clique na guia Participante de,
com isso veremos que o usurio IUSR_SERVIDOR somente pertence ao grupo
Convidados. Se estivssemos em um servidor que atua como controlador de domnio,
teramos o grupo Convidados do domnio.
Criando Sites Dinmicos com ASP 3.0
5 2 2
Figura 9.1 1 : Pr opr iedades par a o usur io IUSR_ SERVIDOR.
DICA
Para informaes mais detalhadas sobre Controladores de domnio e Active Directory, consulte
o livro Windows 2000 Server Curso Bsico & Rpido, de minha autoria, publicado pela editora
Axcel Books.
10. Quando o IIS instalado, a conta IUSR_SERVIDOR criada e automaticamente
adicionada ao grupo Convidados.
11. Muito cuidado ao adicionar a conta IUSR_SERVIDOR a outros grupos. Quando uma
conta de usurio adicionada a um grupo, ela herda as permisses atribudas ao grupo
e com isso passa a ter acesso aos recursos que o grupo tem acesso. A maior insanidade
que o administrador Web poderia cometer seria adicionar a conta IUSR_SERVIDOR ao
grupo Administradores. Com isso estaria dando permisses mximas aos usurios que
fazem acesso annimo. Seria caso de internao do seu administrador Web.
12. Clique no boto OK para fechar a janela com as propriedades da conta IUSR_SERVIDOR.
13. Voc estar de volta ao Gerenciador do computador, feche-o.
5 2 3
Captulo 9 Segurana de Aplicaes Web com IIS e ASP
Agora precisamos verificar se a conta IUSR_SERVIDOR tem a permisso para efetuar logon local.
Para verificar isso:
1. Faa o logon no Windows 2000 Server, com permisses de administrador.
2. Abra o Console Configuraes locais de segurana/Programas/Ferramentas administrati-
vas/Diretivas de segurana local.
NOTA
Se o servidor que voc estiver utilizando for um controlador de domnio, voc deve abrir o
console para Gerenciamento do Active Directory. As opes que surgem podem ser um pouco
diferentes das apresentadas aqui.
3. Surge a janela indicada na Figura 9.12.
Figura 9.1 2: Configur aes locais de segur ana.
4. D um clique no sinal de + ao lado da opo Diretivas locais, para abri-la.
5. Nas opes que surgem, abaixo de Diretivas locais, d um clique no sinal de + ao lado
da opo Atribuio de direitos de usurio, para abri-la.
6. Surgem as opes indicadas na Figura 9.13.
7. No painel da direita surgem as diversas permisses disponveis.
8. Na listagem de permisses, localize Efetuar logon local, conforme indicado na Figura 9.14.
Criando Sites Dinmicos com ASP 3.0
5 2 4
Figura 9.1 3: At r ibuies de dir eit os par a cont as e Gr upos de usur ios.
Figura 9.1 4: A per misso Efet uar logon local.
9. D um clique duplo sobre a permisso Efetuar logon local, para exibir a janela de
configuraes para esta Diretiva de segurana local. Nesta janela surge uma lista dos
usurios que possuem a permisso de Efetuar logon local, conforme indicado na Figura
9.15. O usurio IUSR_SERVIDOR deve fazer parte da lista.
10. Caso o usurio IUSR_SERVIDOR no estivesse na lista, voc poderia adicion-lo
utilizando o boto Adicionar.
5 2 5
Captulo 9 Segurana de Aplicaes Web com IIS e ASP
Figura 9.1 5: List a de usur ios com dir eit o a Efet uar logon local.
11. A permisso Efetuar logon local autoriza o usurio a fazer o logon no console do servidor,
isto , localmente no servidor. A conta utilizada para acesso annimo precisa desta
permisso, caso contrrio o acesso annimo no ir funcionar.
12. D um clique no boto OK para voltar ao console Configuraes locais de segurana.
13. Feche-o.
Com isso j sabemos que a conta para acesso annimo est configurada corretamente. No prximo
item vamos retirar as permisses NTFS da conta de acesso annimo de uma das aplicaes
Web do servidor. Vamos tentar acessar esta aplicao e observar os resultados obtidos.
Configur ando Per misses NTFS em Past as do Ser vidor Web
Uma das medidas bsicas de segurana a utilizao de drives formatados com o sistema de
arquivos NTFS, ao invs de FAT e FAT32. O motivo bastante simples, pois atravs da utilizao
do sistema de arquivos NTFS, podemos ter um controle bastante refinado sobre o acesso s
informaes, mediante a atribuio de permisses de pasta e de arquivos.
Quando estamos tratando de permisses NTFS, j estamos em um nvel de segurana que
gerenciado pelo Sistema Operacional. atravs da utilizao do Windows 2000 Server que
Criando Sites Dinmicos com ASP 3.0
5 2 6
definimos permisses NTFS. Isso refora o fato de que a segurana tanto responsabilidade
do grupo de desenvolvimento, quanto do administrador da rede.
No exemplo do acesso annimo, o usurio identificado para o Windows 2000, como se
fosse o usurio IUSR_NOME_DO_COMPUTADOR. Este usurio somente ter acesso s pastas
e arquivos para os quais o usurio IUSR_NOME_DO_COMPUTADOR tiver permisses de
acesso e com os nveis de permisses definidos.
Antes de aprendermos a definir permisses NTFS vamos aprender um pouco mais sobre as mesmas.
Sist emas de Ar quivos no Windows 2 0 0 0 e Per misses NTFS
Agora vamos ver alguns detalhes sobre os sistemas de arquivos que o Windows 2000 Server
reconhece e tambm sobre permisses NTFS.
Um sistema de arquivos determina a maneira como o Windows 2000 Server organiza e recupera
as informaes no disco rgido ou em outros tipos de mdia. O Windows 2000 Server reconhece
os seguintes sistemas de arquivos:
FAT
FAT32
NTFS
NTFS 5
O sistema FAT vem desde a poca do DOS e tem sido mantido por questes de compatibilidade.
Alm disso, se voc tiver instalado mais de um Sistema Operacional no seu computador,
alguns sistemas mais antigos (DOS, Windows 3.x e as primeiras verses do Windows 95)
somente reconhecem o sistema FAT. Com o sistema de arquivos FAT, a nica maneira de
restringir o acesso ao contedo de uma pasta compartilhada, atravs das permisses de
compartilhamento, as quais, no tem efeito no caso de acessos pela Internet, atravs do IIS.
Com a utilizao do sistema FAT, alguns recursos avanados, tais como compresso, criptografia
e auditoria, no esto disponveis.
O sistema FAT32 apresenta algumas melhorias em relao ao sistema FAT. Existe um melhor
aproveitamento do espao no disco, com conseqente menor desperdcio. Um grande
inconveniente do sistema FAT32 que ele no reconhecido pelo Windows NT Server 4.0.
Com o sistema de arquivos FAT32, a nica maneira de restringir o acesso ao contedo de uma
pasta compartilhada, atravs das permisses de compartilhamento. Assim como ocorre
com a utilizao do FAT, no sistema FAT32, alguns recursos avanados, tais como compresso,
criptografia e auditoria, no esto disponveis.
5 2 7
Captulo 9 Segurana de Aplicaes Web com IIS e ASP
O sistema de arquivos NTFS utilizado no Windows NT Server 4.0 e foi mantido e melhorado
no Windows 2000 Server, por questes de compatibilidade, j que uma nova verso do NTFS
foi introduzida com o Windows 2000 NTFS 5. um sistema bem mais eficiente do que FAT
e FAT32, alm de permitir uma srie de recursos avanados, tais como:
Permisses a nvel de arquivos e pastas.
Compresso.
Auditoria de acesso.
Parties bem maiores do que as permitidas com FAT e FAT32.
Desempenho bem superior do que com FAT e FAT32.
Uma das principais vantagens do NTFS que o mesmo permite que sejam definidas permisses
de acesso a nvel de arquivo e de pastas, isto , posso ter arquivos em uma mesma pasta, com
permisses diferentes para usurios diferentes. Alm disso, as permisses NTFS tm efeito
localmente, isto , mesmo que o usurio faa o logon no computador onde um determinado
arquivo existe, se o usurio no tiver as permisses NTFS necessrias, ele no poder acessar
o arquivo. Isso confere um alto grau de segurana, desde que as permisses NTFS sejam
configuradas corretamente.
No Windows 2000 Server, conforme descrito anteriormente, temos tambm o NTFS 5, o qual
apresenta diversas melhorias em relao ao NTFS, tais como:
Criptografia de arquivos e pastas (a criptografia uma maneira de embaralhar a
informao de tal forma que mesmo que um arquivo seja copiado, o mesmo se torna
ininteligvel, a no ser para a pessoa que possui a chave para descriptograf-lo).
Cotas de usurio, fazendo com que seja possvel limitar o espao em disco que cada
usurio pode utilizar.
Gerenciamento e otimizao melhorados.
Um inconveniente do NTFS 5 que ele no reconhecido pelas verses anteriores, tais como
o Windows NT Server 4.0. Caso voc possua uma rede na qual esto presentes servidores
com o Windows 2000 Server e com o Windows NT Server 4.0, planeje com bastante cuidado
a utilizao do NTFS 5.
Conforme descrito anteriormente, podemos definir permisses de acesso a nvel da pasta ou
arquivo, mas somente em unidades formatadas com o sistema de arquivos NTFS (seja na verso
do NT Server 4.0 ou o NTFS 5 do Windows 2000 Server). Portanto, aconselhvel instalar o
Windows 2000 Server sempre em unidades formatadas com NTFS, pois isso melhora a segurana.
Com relao s permisses NTFS, temos um conjunto diferente de permisses quando tratamos
de pastas ou arquivos. Nas Tabelas 9.1 (para pastas) e 9.2 (para arquivos), so apresentadas as
permisses e o nvel de acesso para cada uma delas.
Criando Sites Dinmicos com ASP 3.0
5 2 8
Tabela 9.1 Permisses NTFS para pastas.
Tabela 9.2 Permisses NTFS para arquivos.
Permisso Nvel de acesso
Leitura Permite ao usurio listar as pastas e arquivos
dentro da pasta; permite que sejam exibidas as
permisses, donos e atributos.
Gravar Permite ao usurio criar novos arquivos e
subpastas dentro da pasta, alterar seus
atributos e visualizar o dono e as permisses
da mesma.
Listar contedo de pastas Permite ao usurio ver o nome dos arquivos
e subpastas.
Ler e executar Permite ao usurio navegar atravs das
subpastas para chegar a outras pastas e
arquivos, mesmo que o usurio no tenha
permisso de acesso s pastas pelas quais est
navegando. Alm disso, possui os mesmos
direitos que as permisses Leitura e Listar
contedo de pastas.
Modificar Permite ao usurio eliminar a pasta, e mais
todas as aes permitidas pelas permisses
Gravar e Ler e executar.
Controle total Permite que sejam alteradas as permisses;
permite ao usurio tornar-se dono da pasta,
eliminar subpastas e arquivos, e mais todas
as aes permitidas por todas as outras
permisses NTFS.
Permisso Nvel de acesso
Leitura Permite ao usurio ler o arquivo; permite que sejam
exibidas as permisses, dono e atributos.
Gravar Permite ao usurio gravar um arquivo com o mesmo nome
sobre o arquivo, alterar seus atributos e visualizar o
dono e as permisses do mesmo.
5 2 9
Captulo 9 Segurana de Aplicaes Web com IIS e ASP
Todo arquivo ou pasta em uma unidade formatada com NTFS, possui uma Lista de Controle
de Acesso (Access Control List ) ACL. Nesta ACL ficam uma lista de todas as contas de
usurios e grupos para os quais foi garantido acesso para o recurso, bem como o nvel de
acesso de cada um deles.
Existem alguns detalhes que devemos observar sobre permisses NTFS:
Permisses NTFS so cumulativas, isto , se um usurio pertence a mais de um grupo,
o qual tem diferentes nveis de permisso para um recurso, a permisso efetiva do
usurio a soma das permisses.
Permisses NTFS para um arquivo tm prioridade sobre permisses NTFS para pastas.
Por exemplo se um usurio tm permisso NTFS de escrita em uma pasta, mas somente
permisso NTFS de leitura para um arquivo dentro desta pasta, a sua permisso efetiva
ser somente a de leitura, pois a permisso para o arquivo tem prioridade sobre a
permisso para a pasta.
Negar uma permisso NTFS tem prioridade sobre Permitir. Por exemplo, se um usurio
pertence a dois grupos diferentes. Se para um dos grupos foi dada permisso de leitura
para um arquivo e para o outro grupo foi negada, o usurio no ter o direito de leitura,
pois Negar tem prioridade sobre Permitir.
Agora que j conhecemos um pouco mais sobre permisses NTFS, podemos aprender como
configurar estas permisses.
Definindo Per misses NTFS
Neste exemplo prtico vamos fazer o seguinte:
Vamos retirar as permisses NTFS do usurio IUSR_SERVIDOR da pasta de um
aplicativo Web.
Permisso Nvel de acesso
Ler e executar Permite ao usurio executar aplicativos (normalmente
programas .exe, .bat ou .com) e mais todos os direitos da
permisso Leitura.
Modificar Permite ao usurio modificar e eliminar o arquivo e mais
todas as aes permitidas pela permisso Gravar e pela
permisso Ler e executar.
Controle total Permite que sejam alteradas as permisses; permite ao
usurio tornar-se dono do arquivo, e mais todas as aes
permitidas por todas as outras permisses NTFS.
Criando Sites Dinmicos com ASP 3.0
5 3 0
Vamos tentar acessar o aplicativo e observar a mensagem de erro que recebemos.
Vamos restaurar as permisses originais e tentar acessar a pgina novamente.
Para acessar as permisses NTFS de uma pasta e retirar as permisses do usurio IUSR_SERVIDOR,
faa o seguinte:
1. Faa o logon com privilgios de administrador.
2. Utilizando o Windows Explorer, localize a pasta cujas permisses NTFS sero alteradas.
3. D um clique com o boto direito do mouse sobre a pasta. No menu de opes que
surge d um clique em Propriedades.
4. Surge a janela indicada na Figura 9.16.
Figura 9.1 6: Janela com as pr opr iedades da past a.
5. D um clique na guia Segurana.
6. Surge a janela indicada na Figura 9.17.
5 3 1
Captulo 9 Segurana de Aplicaes Web com IIS e ASP
Figura 9.1 7: As configur aes de segur ana par a a past a selecionada.
7. Observe que a conta com a descrio Conta de convidado da Internet a conta para
acesso annimo, que no nosso exemplo IUSR_SERVIDOR. Somente possuem
permisso de acesso, as contas que fazem parte desta lista.
8. D um clique no boto Avanado. Surge a janela indicada na Figura 9.18.
9. Observe que a conta para acesso annimo, possui permisso somente de leitura.
10. Vamos remover as permisses da conta IUSR_SERVIDOR (Conta de convidado da
Internet). Para isso d um clique sobre a conta para marc-la, depois d um clique no
boto Remover.
11. A conta IUSR_SERVIDOR no aparece mais na listagem.
12. Marque a opo Redefinir opes em todos os objetos filhos e permitir a propagao
das permisses herdades. Esta opo deve ser marcada para que as alteraes que
esto sendo feitas na pasta, sejam propagadas para todas as subpastas e arquivos
pertencentes a esta pasta. Esta modificao necessria para que a permisso para o
usurio IUSR_SERVIDOR seja retirada de todos os arquivos pertencentes a pasta que
est sendo alterada.
Criando Sites Dinmicos com ASP 3.0
5 3 2
Figura 9.1 8: A cont a IUSR_ SERVIDOR possui per misso soment e par a leit ur a.
13. D um clique no boto OK para voltar janela de propriedades da pasta.
14. Surge uma janela pedindo confirmao. D um clique em Sim para continuar.
15. Voc estar de volta janela de propriedades da pasta.
16. Na lista de usurios, remova os usurios IUSR_SERVIDOR e o grupo Todos. Para isso
basta clicar no nome do usurio ou grupo e depois clicar no boto Remover.
17. A sua lista de permisses deve estar semelhante a indicada na Figura 9.19.
18. D um clique no boto OK para fechar esta janela.
Agora que retiramos as permisses do usurio annimo, se algum tentar acessar algum arquivo
que est na pasta cujas permisses foram retiradas, ir receber uma mensagem de erro,
conforme indicado na Figura 9.20.
Veja que a mensagem informa que o acesso pgina solicitada foi negado. Isto acontece
porque o usurio IUSR_SERVIDOR no possui as permisses NTFS necessrias.
5 3 3
Captulo 9 Segurana de Aplicaes Web com IIS e ASP
Figura 9.1 9: List a de per misses, onde foi r et ir ada a per misso de acesso par a o usur io annimo.
Figura 9.20: M ensagem de er r o ao t ent ar acessar uma pgina par a a qual o usur io annimo
( cont a IUSR_ SERVIDOR, no nosso exemplo) no t em mais per misso de acesso.
Criando Sites Dinmicos com ASP 3.0
5 3 4
IMPORTANTE
Caso voc teste o acesso localmente no servidor onde a pgina est gravada e a autenticao
integrada esteja habilitada, voc ter acesso pgina. Isto acontece porque o IIS tenta primeiro
acesso com a autenticao annima. No obtm sucesso. Se a autenticao integrada (a qual
utiliza a conta do Windows que voc utilizou para fazer o logon) estiver habilitada, o IIS tenta
utiliz-la. Caso a conta que voc utilizou para fazer o logon tenha permisso de acesso
pgina, o IIS libera o acesso. Isto tambm vlido para usurios da sua rede local que fizeram
o logon em um domnio do Windows NT Server 4.0 ou do Windows 2000 e cujas contas ou
grupos a que pertencem possuam permisso de acesso para o arquivo solicitado. Nos prximos
itens veremos mais sobre a autenticao integrada.
Agora vamos restaurar as permisses NTFS para o usurio IUSR_SERVIDOR e testar para ver
se ele voltou a ter acesso.
Para atribuir novamente as permisses NTFS para o usurio IUSR_SERVIDOR.
1. Utilizando o Windows Explorer, localize a pasta cujas permisses NTFS sero alteradas.
2. D um clique com o boto direito do mouse sobre a pasta. No menu de opes, que
surge, d um clique em Propriedades.
3. Na janela de propriedades d um clique na guia Segurana.
4. Surge a janela indicada na Figura 9.21.
Figura 9.21 : As configur aes de segur ana par a a past a selecionada.
5 3 5
Captulo 9 Segurana de Aplicaes Web com IIS e ASP
5. Observe que a conta com a descrio Conta de convidado da Internet, que a conta
para acesso annimo (no nosso exemplo, IUSR_SERVIDOR), no aparece na lista de
usurios, portanto a mesma no possui permisses de acesso.
6. D um clique no boto Avanado. Observe que, na janela que surge, a conta
IUSR_SERVIDOR tambm no est na listagem, conforme indicado na Figura 9.22.
Figura 9.22: A cont a IUSR_ SERVIDOR no apar ece na list a de cont as.
7. D um clique no boto Adicionar. Surge uma janela com a listagem de usurios. Localize
o usurio IUSR_SERVIDOR e d um clique sobre o mesmo para marc-lo, conforme
indicado na Figura 9.23.
8. D um clique no boto OK. Surge uma janela pedindo para que voc defina as
permisses NTFS para o usurio IUSR_SERVIDOR.
9. Defina as permisses conforme indicado na Figura 9.24 e d um clique no boto OK.
10. Voc estar de volta janela de opes avanadas. Certifique-se de que a opo
Redefinir permisses em todos os objetos filho e permitir a propagao das permisses
herdadas esteja marcada.
11. D um clique no boto OK para voltar janela de propriedades da pasta.
Criando Sites Dinmicos com ASP 3.0
5 3 6
Figura 9.23: Adicionando novament e o usur io IUSR_ SERVIDOR.
Figura 9.24: Rest aur ando as per misses par a o usur io IUSR_ SERVIDOR.
12. Surge uma janela pedindo confirmao, conforme indicado na Figura 9.25. D um
clique em Sim para continuar.
5 3 7
Captulo 9 Segurana de Aplicaes Web com IIS e ASP
Figura 9.25: Confir mando as alt er aes.
13. Voc estar de volta a guia Segurana da janela de propriedades da pasta.
14. Vamos adicionar o usurio IUSR_SERVIDOR para que ele tenha permisses de acesso
pasta.
15. D um clique no boto Adicionar. Surge a janela Selecione Usurios, Computadores
ou Grupos. Localize o usurio IUSR_SERVIDOR e d um clique sobre o mesmo para
marc-lo. Depois d um clique no boto Adicionar para incluir o usurio na parte
inferior da janela, conforme indicado na Figura 9.26.
Figura 9.26: Adicionando o usur io IUSR_ SERVIDOR na list a de usur ios
que t em per misso de acesso past a selecionada.
Criando Sites Dinmicos com ASP 3.0
5 3 8
16. D um clique no boto OK. Observe que o usurio IUSR_SERVIDOR j consta na
listagem de usurios.
17. Defina as permisses conforme indicado na Figura 9.27 e d um clique no boto OK.
Figura 9.27: Redefinindo as per misses de acesso past a selecionada.
Feito isso foram reatribudas as permisses NTFS originais e qualquer usurio volta a ter
acesso pasta (no nosso exemplo era a pasta Capitulo6) e a todo o seu contedo, porm com
permisso somente para leitura.
Agora, o usurio j poder acessar a pgina que no ser mais retornada a mensagem de
acesso negado.
Com este exemplo, podemos constatar que o servidor IIS trabalha em sintonia com o Windows
2000, de tal forma que os recursos de segurana do Sistema Operacional podem ser utilizados
pelo IIS.
Ns detalhamos um pouco mais o primeiro tipo de acesso Acesso annimo , para explicar
alguns conceitos importantes em detalhes. Agora passaremos a estudar outros tipos de
5 3 9
Captulo 9 Segurana de Aplicaes Web com IIS e ASP
autenticao possveis com o IIS. Lembrando que a autenticao com o IIS apenas um dos
tantos nveis de segurana que podemos configurar.
Aut ent icao Bsica
A autenticao bsica uma das mais antigas que existem, desenvolvidas desde a poca dos
primeiros servidores Web como o NCSA e o Cern HTTP. Neste tipo de autenticao, o usurio
precisa fornecer um username e uma senha. O mtodo de autenticao bsica um padro
de mercado amplamente usado para coletar informaes de nome de usurio e senha. A
autenticao bsica funciona da seguinte forma:
1. O navegador exibe uma caixa de dilogo na qual o usurio pode digitar seu username
e senha de conta do Windows 2000 atribudos anteriormente. Por isso, um pr-
requisito da autenticao bsica que o usurio j possua uma conta cadastrada no
Windows 2000.
2. O navegador tenta estabelecer uma conexo usando essas informaes (a senha
codificada com Base64 antes de ser enviada pela rede).
3. Se o servidor rejeita as informaes, o navegador da Web exibe repetidamente a caixa
de dilogo at que o usurio digite um nome de usurio e uma senha vlidos ou feche
a caixa de dilogo.
4. Quando o servidor Web verifica que o nome de usurio e a senha correspondem a uma
conta de usurio do Windows 2000 vlida, a conexo estabelecida e o acesso pgina
solicitada liberado.
A autenticao bsica apresenta como principal requisito o fato de que o usurio deve ter
uma conta no Windows 2000. Para sites que so acessados por um grande nmero de usurios
pode no ser uma boa opo. Alm disso, o fato do usurio ter que digitar um username e
senha no muito simptico.
Uma das grandes desvantagens deste mtodo de autenticao o fato de que a senha no
criptografada ao ser transmitida pela rede. A codificao que feita extremamente simples
de ser quebrada, por isso este mtodo de autenticao no dos mais seguros.
A vantagem da autenticao bsica que ela faz parte da especificao do HTTP e tem suporte
da maioria dos navegadores. A desvantagem que, pelo fato dos navegadores que usam a
autenticao bsica transmitirem senhas de forma descriptografada, ao monitorar as
comunicaes na sua rede, algum pode interceptar e decifrar facilmente essas senhas usando
ferramentas disponveis publicamente na prpria Internet. Portanto, a autenticao bsica
no recomendada, a menos que voc tenha certeza que a conexo entre o usurio e seu
servidor Web segura, como uma conexo direta via cabo ou uma linha dedicada.
Criando Sites Dinmicos com ASP 3.0
5 4 0
IMPORTANTE
A autenticao integrada do Windows (que veremos logo em seguida) tem prioridade sobre a
autenticao bsica. O navegador escolher a autenticao integrada do Windows e tentar
usar as informaes de logon atuais do Windows antes de solicitar ao usurio um nome e
senha. Atualmente, somente o Internet Explorer, verso 2.0 e posterior, oferece suporte
autenticao integrada do Windows.
Aut ent icao Int egr ada do Windows
A autenticao integrada do Windows (chamada anteriormente NTLM ou autenticao de
desafio/resposta do Windows NT) uma forma segura de autenticao pois o nome de usurio
e a senha so enviados pela rede criptografados. Quando voc ativa a autenticao integrada
do Windows, o navegador do usurio verifica a validade da senha atravs de uma troca
criptogrfica com o servidor Web.
A autenticao integrada do Windows pode usar o protocolo de autenticao Kerberos verso
5 e o seu prprio protocolo de autenticao desafio/resposta. Se os Servios de diretrio
estiverem instalados no servidor e o navegador for compatvel com o protocolo de autenticao
Kerberos verso 5, os protocolos Kerberos verso 5 e desafio/resposta sero usados; caso
contrrio, somente o protocolo desafio/resposta ser usado.
O protocolo de autenticao Kerberos verso 5 um recurso da arquitetura do Windows 2000
Distributed Services. Para que a autenticao deste protocolo seja bem-sucedida, o cliente e o
servidor devem ter uma conexo confivel com um Key Distribution Center (KDC) e devem
ser compatveis com os Servios de diretrio. A situao ideal onde o cliente utiliza o
Windows 2000 Professional.
A autenticao integrada do Windows funciona da seguinte forma:
1. Diferentemente da autenticao bsica, ela no solicita inicialmente um nome de
usurio e uma senha. As informaes atuais de usurio do Windows sobre o computador
cliente so usadas para a autenticao integrada do Windows.
NOTA
O Internet Explorer, verso 4.0 e posterior, pode ser configurado para solicitar inicialmente
informaes do usurio, se necessrio. Para obter mais informaes, consulte a documentao
do Internet Explorer.
5 4 1
Captulo 9 Segurana de Aplicaes Web com IIS e ASP
2. No entanto, se a troca da autenticao no consegue identificar o usurio, o navegador
solicita ao usurio um nome e uma senha de conta de usurio do Windows, que ele
processa usando a autenticao integrada do Windows.
3. O Internet Explorer continuar a solicitar ao usurio at que ele digite um nome de
usurio e uma senha vlidos ou feche a caixa de dilogo de solicitao.
Embora a autenticao integrada do Windows seja segura, ela tem duas limitaes:
Somente o Microsoft Internet Explorer, verso 2.0 ou posterior, oferece suporte a esse
mtodo de autenticao.
A autenticao integrada do Windows no funciona em conexes feitas atravs de um
servidor Proxy.
Portanto, a autenticao integrada do Windows mais adequada para um ambiente de Intranet,
no qual o usurio e o servidor Web esto no mesmo domnio e os administradores podem
garantir que todos os usurios tenham o Microsoft Internet Explorer, verso 2.0 ou posterior.
Aut ent icao Ut ilizando Cer t ificados
Este um dos mtodos de autenticao que mais vem crescendo. Inicialmente os Certificados
Digitais foram projetados como um instrumento de autenticao segura para a Internet, porm
o seu uso apresentou tantas vantagens que hoje bastante comum sua utilizao em Intranets
e Extranets.
A tecnologia de certificados usa os recursos de segurana de Secure Sockets Layer (SSL,
camada de soquetes de segurana) do servidor Web para dois tipos de autenticao.
possvel usar um certificado de servidor para permitir que os usurios faam a autenticao do
seu site da Web antes de transmitir informaes pessoais, como um nmero de carto de crdito.
Alm disso, voc pode usar certificados de cliente para autenticar os usurios que solicitam
informaes no seu site da Web. O SSL faz a autenticao, verificando o contedo de uma
identificao digital (Certificado Digital) criptografada, submetida pelo navegador do usurio
durante o processo de logon. (Os usurios obtm certificados de cliente de uma organizao
independente mutuamente confivel.) Os certificados de servidor contm geralmente informaes
sobre sua empresa e a organizao que emitiu o certificado. Os certificados de cliente contm
normalmente informaes de identificao sobre o usurio e a organizao que emitiu o certificado.
M apeament o do Cer t ificado Client e
Voc pode associar, ou mapear, certificados de cliente a contas de usurio do Windows no
IIS. Depois que voc cria e ativa um mapa de certificado, sempre que um usurio faz logon
Criando Sites Dinmicos com ASP 3.0
5 4 2
com um certificado de cliente, seu servidor Web associa automaticamente esse usurio
conta de usurio do Windows apropriada. Dessa forma, voc pode autenticar automaticamente
os usurios que fazem logon com certificados de cliente, sem exigir o uso da autenticao
bsica ou integrada do Windows. possvel mapear um certificado de cliente para uma conta
de usurio do Windows ou muitos certificados de cliente para uma conta. Por exemplo, se
voc tivesse vrios departamentos ou empresas diferentes no seu servidor, cada uma com seu
prprio site da Web, seria possvel usar o mapeamento vrios-para-um para mapear todos os
certificados de cliente de cada departamento ou empresa para o prprio site da Web. Dessa
forma, cada site forneceria acesso somente aos prprios clientes.
No prximo captulo veremos um pouco mais sobre Certificados Digitais.
O tipo de autenticao apenas um dos aspectos que precisam ser definidos; devem ser
consideradas diversas outras questes. A seguir, algumas questes que devem ser levadas em
consideraes na hora de decidir sobre o tipo de autenticao que iremos configurar no IIS,
ou se devemos configurar mais do que um tipo de autenticao.
Para um site pblico, ou reas de acesso pblico, a autenticao utilizando acesso annimo
a mais indicada, pois evita que o usurio tenha que fornecer um username e senha.
Para acesso ao contedo de uma Intranet, uma das primeiras opes a serem pensadas
a utilizao da autenticao integrada do Windows. Pois sendo uma Intranet um
ambiente controlado, possvel garantir que todos os clientes satisfaam as condies
exigidas pela autenticao integrada.
Para sites que trabalham com dados sensveis como servios bancrios pela Internet e
Comercio Eletrnico, sem dvida que a utilizao de Certificados Digitais o mais
indicado. Em Intranets os certificados tambm tm sido utilizados, pois conforme
descrevemos no incio do captulo, a maioria dos ataques parte de usurios da Intranet
da empresa. Muitas vezes nos preocupamos muito com os ataques externos e
esquecemos as ameaas que vem de dentro da prpria empresa.
Configur ando o Tipo de Aut ent icao no IIS
Neste item veremos como configurar uma ou mais opes de autenticao no IIS. Lembrando
que podemos ter diferentes tipos de autenticao em diferentes partes de um site armazenado
em um servidor IIS. Por exemplo, para uma rea de acesso pblico podemos utilizar
autenticao annima, para uma rea mais restrita podemos utilizar somente autenticao
integrada do Windows. Podemos inclusive configurar o nvel de autenticao para uma pgina
HTML ou ASP, individualmente.
Para configurar o tipo de autenticao faa o seguinte:
5 4 3
Captulo 9 Segurana de Aplicaes Web com IIS e ASP
1. Faa o logon no Windows 2000 Server, com permisses de administrador.
2. Abra o Gerenciador do Internet Services: Iniciar/Programas/Ferramentas administrati-
vas/Gerenciador do Internet Services.
3. aberto o console de gerenciamento do IIS.
4. D um clique duplo no nome do computador. No nosso exemplo o nome Servidor.
5. Surgem as opes indicadas na Figura 9.28.
Figura 9.28: Opes de ger enciament o do IIS.
6. Neste momento podemos configurar o tipo de autenticao para todos os aplicativos
Web contidos no servidor ou para cada aplicativo individualmente.
7. A ttulo de exemplo, vamos configurar o tipo de autenticao para o site Web padro.
8. Clique com o boto direito do mouse sobre a opo Site da Web padro (ou na opo
correspondente, caso voc tenha alterado este nome). No menu de opes que surge,
d um clique em Propriedades.
9. Ser exibida a janela Propriedades de Site Web padro.
10. D um clique na guia Segurana de pasta. Sero exibidas as opes indicadas na Figura 9.29.
11. A primeira opo desta guia Controle de acesso annimo e autenticao. D um
clique no boto Editar, ao lado desta opo. Surge a janela Mtodos de autenticao,
indicada na Figura 9.30.
12. Observe que, por padro, esto definidas as opes Acesso annimo e Autenticao
integrada do Windows.
13. Nesta janela voc pode definir qual ou quais tipos de autenticao que o servidor IIS
dever suportar para o Site Web padro. Alm disso, voc pode configurar qual a conta
que ser utilizada para o acesso annimo, conforme descrito anterioremente.
Criando Sites Dinmicos com ASP 3.0
5 4 4
Figura 9.29: As opes da guia Segur ana de past a.
Figura 9.30: As opes par a mt odos de aut ent icao.
5 4 5
Captulo 9 Segurana de Aplicaes Web com IIS e ASP
14. Selecione as opes desejadas. Se voc clicar na opo Autenticao bsica, o IIS emite
um aviso de que para esta opo as senhas sero transmitidas sem criptografia, conforme
indicado na Figura 9.31.
Figura 9.31 : Avisa de que na aut ent icao bsica a senha t r ansmit ida sem cr ipt ogr afia.
15. D um clique em Sim e a autenticao bsica ser habilitada.
16. D um clique no boto OK para fechar a janela de configurao dos tipos de autenticao.
17. Voc estar de volta janela de Propriedades de Site da Web padro. D um clique no
boto OK para fech-la.
18. Caso alguma aplicao Web ou pasta virtual do servidor possua uma configurao
diferente da definida para o Site da Web padro, o IIS abre uma janela informando
qual site possui uma configurao diferente e perguntando se voc deseja estender as
configuraes do site Web padro para as pastas virtuais e aplicativos Web internos,
conforme indicado na Figura 9.32.
Figura 9.32: Est endendo as configur aes par a as aplicaes e past as vir t uais.
Criando Sites Dinmicos com ASP 3.0
5 4 6
19. Para estender as configuraes basta selecionar uma ou mais das opes mostradas e clicar
no boto OK. Voc tambm pode utilizar o boto Selecionar tudo e depois clicar em OK.
20. Voc estar de volta ao Gerenciador do Internet Services. Feche-o.
Para configurar as opes para uma pasta virtual em particular, basta localiz-la abaixo da
opo Site da Web padro, clicar com o boto direito sobre a mesma e clicar na opo
Propriedades. Depois s seguir os passos indicados anteriormente.
M ais Configur aes de Segur ana do IIS
Podemos efetuar outras configuraes relacionadas com segurana, no servidor IIS. Existem
algumas opes que limitam o tipo de ao que o usurio pode tomar em uma determinada
pasta virtual ou em uma pgina especificamente. Neste item iremos estudar diversas destas
opes. Dividiremos as mesmas em dois grupos:
Opes gerais de segurana.
Opes relacionadas com uma aplicao Web.
Configur ando Opes Ger ais de Segur ana
Estas configuraes so definidas, normalmente, a nvel de pasta virtual. Para configurar
estas opes faa o seguinte:
1. Faa o logon no Windows 2000 Server, com permisses de administrador.
2. Abra o Gerenciador do Internet Services: Iniciar/Programas/Ferramentas administrati-
vas/Gerenciador do Internet Services.
3. aberto o console de gerenciamento do IIS.
4. D um clique duplo no nome do computador. No nosso exemplo o nome Servidor.
5. D um clique no sinal de + ao lado de Site da Web padro. Sero exibidas as diversas
pastas virtuais disponveis no servidor.
6. A ttulo de exemplo, vamos configurar as opes gerais de segurana para a pasta
Capitulo6, conforme indicado na Figura 9.33.
NOTA
Caso voc no tenha criado uma pasta virtual Captulo6, utilize qualquer pasta virtual
disponvel no seu servidor IIS.
7. Clique com o boto direito do mouse sobre a opo Capitulo6. No menu de opes que
surge, d um clique em Propriedades.
5 4 7
Captulo 9 Segurana de Aplicaes Web com IIS e ASP
Figura 9.33: Configur ando opes ger ais de segur ana par a a past a Capit ulo6 .
8. Ser exibida a janela Propriedades de Capitulo6.
9. Na guia Pasta (que j deve estar sendo exibida), existem diversas opes de configurao.
Abaixo descrevemos cada uma destas opes.
Acesso ao cdigo fonte do Script: Selecione esta opo para permitir que os usurios
acessem o cdigo fonte se a permisso de leitura ou gravao estiver definida. O
cdigo fonte inclui Scripts nos aplicativos ASP.
Leitura: Selecione esta opo para permitir que os usurios leiam ou faam o down-
load dos arquivos ou diretrios e de suas propriedades associadas.
Gravao: Selecione esta opo para permitir que os usurios carreguem os arquivos
e suas propriedades associadas no diretrio ativado no servidor ou alterem o
contedo de um arquivo ativado para gravao. A gravao s poder ser feita com
um navegador que d suporte ao recurso PUT do protocolo padro HTTP 1.1.
Cuidado com esta permisso. Dificilmente voc precisar habilitar permisso de
Gravao para reas em que permitida a autenticao com usurio annimo.
Pesquisa em Pasta: Selecione esta opo para permitir que o usurio veja uma
listagem em hipertexto dos arquivos e subdiretrios deste diretrio virtual. Os
diretrios virtuais no aparecero nas listagens de diretrios; os usurios devem
saber o alias do diretrio virtual. Caso o usurio digite o endereo para o caminho
da pasta e no especifique um documento a ser carregado, ser exibida uma listagem
semelhante a indicada na Figura 9.34.
Criando Sites Dinmicos com ASP 3.0
5 4 8
Figura 9.34: List agem exibida quando a opo Pesquisa em Past a est habilit ada.
Caso esta opo no esteja marcada e o usurio digite o endereo para a pasta, sem especificar
um arquivo a ser carregado, ser retornada a mensagem de erro indicada na Figura 9.35.
Figura 9.35: M ensagem de er r o quando a opo Pesquisa em Past a est iver desabilit ada.
5 4 9
Captulo 9 Segurana de Aplicaes Web com IIS e ASP
Criar log de visitantes: Selecione esta opo para registrar as visitas feitas a este
diretrio em um arquivo de Log. As visitas sero registradas somente se o log estiver
ativado para este site da Web.
Indexar este recurso: Para permitir que o Servio de indexao da Microsoft (Index
Services) inclua este diretrio em um ndice de texto completo do site da Web,
selecione esta opo.
De uma maneira geral, recomendo que as opes Gravao e Pesquisa em pasta sejam marcadas
somente em situaes especiais e para reas que no contenham dados confidenciais.
Uma questo importante a combinao entre as permisses definidas no IIS e as permisses
NTFS. Por exemplo, vamos supor que o usurio tenha sido autenticado como usurio annimo
e est tentando gravar contedo em uma pasta virtual na qual o IIS possui permisso de
gravao, porm as permisses NTFS no permitem que o usurio annimo faa gravaes.
Como fica esta combinao?
Quando uma pgina solicitada, o IIS segue a seqncia indicada na Figura 9.36.
Figura 9.36: Seqncia de ver ificao do IIS.
Ser vidor Web
r ecebe r equisio.
Ender eo IP
per mit ido?
Usur io per mit ido?
Per misses do
ser vidor Web concedem
acesso?
Per misses do
NTFS concedem
acesso?
Acesso concedido. Acesso negado.
Criando Sites Dinmicos com ASP 3.0
5 5 0
Observe que primeiro o IIS verifica se o usurio tem permisses da Web para o recurso
solicitado. Se o usurio no tiver, a solicitao falha e o usurio recebe uma mensagem 403
Acesso proibido. Depois, o IIS verifica as permisses do NTFS para o recurso. Se o usurio
no tiver permisses do NTFS para o recurso, a solicitao falha e o usurio recebe uma
mensagem 401 Acesso negado.
Ento a resposta para o nosso exemplo que o usurio no conseguiria gravar o contedo,
pois o mesmo no teria as permisses NTFS necessrias e receberia a mensagem de erro 401
Acesso negado.
Configur ao de Segur ana Par a Aplicat ivos Web no IIS
Estas configuraes so definidas, tambm utilizando a guia Pasta da janela de Propriedades
para a pasta virtual que representa a aplicao Web. Para configurar estas opes faa o seguinte:
1. Faa o logon no Windows 2000 Server, com permisses de administrador.
2. Abra o Gerenciador do Internet Services: Iniciar/Programas/Ferramentas administrati-
vas/Gerenciador do Internet Services.
3. aberto o console de gerenciamento do IIS.
4. D um clique duplo no nome do computador. No nosso exemplo o nome Servidor.
5. D um clique no sinal de + ao lado de Site da Web padro. Sero exibidas as diversas
pastas virtuais disponveis no servidor.
6. A ttulo de exemplo, vamos configurar as opes de aplicao para a pasta Capitulo6.
NOTA
Caso voc no tenha criado uma pasta virtual Captulo6, utilize qualquer pasta virtual
disponvel no seu servidor IIS.
7. Clique com o boto direito do mouse sobre a pasta Capitulo6. No menu de opes que
surge d um clique em Propriedades.
8. Ser exibida a janela Propriedades de Capitulo6.
9. Certifique-se de que esto sendo exibidas as opes da guia Pasta.
10. Na parte de baixo da guia Pasta, temos um grupo de opes chamado Configuraes do
aplicativo. A seguir temos uma descrio de cada uma destas opes.
Conforme descrito anteriormente, um aplicativo da Web do IIS definido pela estrutura de
diretrios em que est localizado. Para obter mais informaes, consulte o Captulo 8 deste livro.
5 5 1
Captulo 9 Segurana de Aplicaes Web com IIS e ASP
Nome do aplicativo: Normalmente utilizamos o mesmo nome da pasta virtual.
Boto Remover: Se clicarmos neste boto removemos todas as opes de aplicativo, e
transformamos o aplicativo Web em uma simples pasta virtual, para a qual no se
aplicam os conceitos dos objetos Application, Session e do arquivo global.asa. Para
maiores informaes sobre os objetos Application, Session e o arquivo global.asa,
consulte o Captulo 8 deste livro, bem como para informaes sobre as opes do
boto Configurao.
Permisses de execuo: Esta opo determina o nvel de execuo de programa
permitido para recursos de diretrios virtuais ou deste site. Temos trs opes:
N Nenhum: Somente arquivos estticos, como os arquivos HTML (Hypertext Markup
Language, linguagem de marcao de hipertexto) ou os arquivos de imagem, podem
ser acessados. No permite que scripts ASP sejam executados.
N Somente scripts: Somente scripts, como os scripts ASP, podem ser executados.
Este o padro normalmente definido.
N Scripts e executveis: Todos os tipos de arquivos podem ser acessados ou executados.
Cuidado com esta configurao. Muitos dos ataques conhecidos consistem em enviar
e executar arquivos executveis no servidor a ser atacado. Os executveis enviados,
normalmente, abrem portas de segurana que estavam fechadas pelo administrador.
Proteo do aplicativo: Temos trs opes:
N Baixa: Selecione esta opo para que os aplicativos sejam executados no mesmo
processo que os servios da Web (opo baixo). Neste caso se um dos aplicativos
apresentar problema e desativar o processo do servidor Web, todos os aplicativos
ficaro indisponveis at que o servidor Web tenha sido normalizado.
N Mdia (em pool): Selecione esta opo para que a aplicao Web seja executada em
um processo em pool isolado em que outros aplicativos tambm so executados.
N Alta (isolada): Neste caso a aplicao Web ser executada em seu prprio espao de
endereamento e se a mesma apresentar problemas, as outras aplicaes Web, bem
como o servidor IIS continuam funcionando normalmente. A execuo isolada
aumenta a disponibilidade do servidor Web, pois problemas em uma aplicao no
iro afetar todo o servidor, porm consome mais recursos, como memria, pois
cada aplicao executada em seu prprio espao de memria.
NOTA
Para determinar qual opo representa uma aplicao Web e qual simplesmente uma pasta
virtual s observar o cone ao lado do nome, no Gerenciador do Internet Services. Opes que
so simplesmente uma pasta virtual so representadas por um envelope amarelo, j aplicaes
Web possuem um cone que parece uma caixa aberta, conforme indicado na Figura 9.37.
Criando Sites Dinmicos com ASP 3.0
5 5 2
Figura 9.37: cones par a uma aplicao Web e par a uma past a vir t ual.
Definindo Rest r ies de Acesso a Nvel de Ender eo IP
Podemos definir restries de acesso a nvel de endereo IP.
Por exemplo, vamos supor que existe uma rea do site que para desenvolvimento, e que a
mesma no deva ser acessada nem por usurios da Intranet da empresa, muito menos por
usurios da Internet. Somente os participantes do grupo de desenvolvimento que devem ter
acesso a esta parte do site. Podemos, sem maiores problemas, limitar o acesso, de tal maneira
que somente as estaes de trabalho dos desenvolvedores tenham acesso a rea de
desenvolvimento do site.
Neste item aprenderemos a configurar uma aplicao Web ou uma pasta virtual do IIS, para
limitar o acesso com base no endereo IP do usurio.
Para definir restries de acesso a nvel de endereo IP faa o seguinte:
1. Faa o logon no Windows 2000 Server, com permisses de administrador.
2. Abra o Gerenciador do Internet Services: Iniciar/Programas/Ferramentas administrati-
vas/Gerenciador do Internet Services.
3. aberto o console de gerenciamento do IIS.
4. D um clique duplo no nome do computador. No nosso exemplo o nome Servidor.
5. Nas opes que surgem, d um clique com o boto direito do mouse sobre a opo Site
da Web padro (ou na opo correspondente, caso voc tenha alterado este nome). No
menu de opes que surge d um clique em Propriedades.
5 5 3
Captulo 9 Segurana de Aplicaes Web com IIS e ASP
6. Ser exibida a janela Propriedades de Site Web padro.
7. D um clique na guia Segurana de pasta.
8. O segundo grupo de opes desta guia Restries de nome de domnio e endereo IP. D
um clique no boto Editar, ao lado desta opo. Surge a janela, indicada na Figura 9.38.
Figura 9.38: Janela par a configur ao das r est r ies de nome de domnio e ender eo IP.
Observe que temos duas opes para configurao, conforme descrito a seguir:
Acesso permitido: Se esta opo estiver marcada, todos tero acesso ao site, com exceo
dos endereos IP que estiverem indicados na listagem Exceto os listados abaixo. Este
mecanismo chamado de Lista Negra, ou seja, todo mundo tem acesso, com exceo
de quem est na lista.
Acesso negado: Se esta opo estiver marcada, ningum ter acesso ao site, com exceo
dos endereos IP que estiverem indicados na listagem Exceto os listados abaixo. Este
mecanismo chamado de Lista Branca, ou seja, ningum tem acesso, com exceo
de quem est na lista.
9. A ttulo de exemplo, deixe marcada a opo Acesso permitido. Agora vamos negar
acesso para um computador especfico.
NOTA
No exemplo do livro estarei negando acesso para o IP: 10.204.123.1, que o endereo IP do
meu computador. Utilize o endereo IP do equipamento para o qual voc quer negar acesso, a
nvel de teste.
10. D um clique no boto Adicionar. Surge a janela indicada na Figura 9.39.
Criando Sites Dinmicos com ASP 3.0
5 5 4
Figura 9.39: Definindo o alcance das r est r ies impost as.
Nesta janela temos trs opes a serem escolhidas, conforme explicado a seguir:
Um computador: Neste caso estamos negando acesso para um computador especfico.
Basta digitar o endereo IP do mesmo. No nosso exemplo, utilizaremos esta opo e
iremos digitar o IP 10.204.123.1.
Grupo de computadores: Se voc marcar esta opo, surge, na parte de baixo da janela,
mais um campo, Mscara de sub-rede, conforme indicado na Figura 9.40. Podemos
utilizar esta opo para negar acesso a uma rede ou segmento de rede inteiro.
Figura 9.40: Negando acesso par a um gr upo de comput ador es.
Por exemplo, podemos negar acesso a qualquer computador da rede 10.204.123, para isso
preencheramos os campos da seguinte maneira:
5 5 5
Captulo 9 Segurana de Aplicaes Web com IIS e ASP
Identificao da rede: 10.204.123.0
Mscara de sub-rede: 255.255.255.0
Para negar acesso a todas as mquinas da rede 161.147, utilizaramos a seguinte configurao:
Identificao da rede: 161.147.0.0
Mscara de sub-rede: 255.255.0.0
Nome de domnio: Esta opo permite que neguemos acesso com base no nome DNS
de um grupo de computadores. Por exemplo, podemos negar acesso para setor de
contabilidade empresa, negando acesso para o domnio: contabilidade.abc.com.br. Ao
tentar utilizar esta opo, o IIS emite uma mensagem avisando que o desempenho do
servidor pode ser prejudicado pela ativao desta opo, e perguntando se voc
realmente deseja ativ-la.
11. Vamos negar o acesso apenas para um computador 10.204.123.1. Certifique-se de
que a opo Um computador esteja marcada e no campo Endereo IP, digite
10.204.123.1, conforme indicado na Figura 9.41.
Figura 9.41 : Negando acesso par a o comput ador 1 0 . 2 0 4 . 1 2 3 . 1 .
12. D um clique no boto OK para incluir o computador com endereo IP 10.204.123.1,
na lista dos computadores com acesso negado, conforme indicado na Figura 9.42.
13. D um clique no boto OK e voc estar de volta janela Propriedades do Site da
Web padro.
14. D um clique no boto OK para fechar a janela de propriedades.
15. Caso alguma aplicao Web ou pasta virtual do servidor possua uma configurao
diferente da definida para o site Web padro, o IIS abre uma janela informando qual
site possui uma configurao diferente e perguntando se voc deseja estender as
configuraes do site Web padro para as pastas virtuais e aplicativos Web internos.
Criando Sites Dinmicos com ASP 3.0
5 5 6
Figura 9.42: O comput ador com ender eo IP 1 0 . 2 0 4 . 1 2 3 . 1 j apar ece na list a.
16. Para estender as configuraes basta selecionar uma ou mais das opes mostradas e clicar
no boto OK. Voc tambm pode utilizar o boto Selecionar tudo e depois clicar em OK.
17. Voc estar de volta ao Gerenciador do Internet Services. Feche-o.
Agora vou tentar acessar uma pgina do servidor IIS para qual o acesso foi negado para o IP
do meu computador 10.204.123.1. Ao tentar fazer o acesso, recebo a mensagem indicada na
Figura 9.43.
Figura 9.43: M ensagem de que o acesso foi negado.
5 5 7
Captulo 9 Segurana de Aplicaes Web com IIS e ASP
Observe que a mensagem informa que o endereo IP foi rejeitado. Para que o endereo IP
10.204.123.1 volte a ter acesso ao site, so seguir os passos indicados anteriormente e remov-
lo da lista de endereos IP com acesso negado.
M ecanismos de Segur ana do Banco de Dados
Um outro nvel de segurana que pode ser configurado no nvel de banco de dados. Os
programas gerenciadores de banco de dados, como o Microsoft SQL Server, Oracle, Microsoft
Access, Sybase, etc., fornecem diversos mecanismos de segurana que, se adequadamente
configurados, aumentam bastante o nvel de segurana das informaes.
No Microsoft SQL Server podemos atribuir nveis de permisso para os usurios do Windows
2000, e at mesmo para o usurio utilizado para acesso annimo.
Na Figura 9.44, temos um exemplo onde o usurio IUSR_SERVIDOR est recebendo permisso
somente para leitura na tabela Orders do banco de dados Northwind em um servidor com o
Microsoft SQL Server 2000 Beta 2.
Figura 9.44: Definindo per misses de banco de dados no M icr osof t SQL Ser ver 2 0 0 0 .
Criando Sites Dinmicos com ASP 3.0
5 5 8
NOTA
Para maiores informaes sobre configuraes de segurana no Microsoft SQL Server 2000,
consulte a documentao do produto.
Na maioria dos bancos de dados pode ser necessrio o fornecimento de um username e senha
para que o acesso seja liberado. Podemos construir um formulrio HTML com dois campos,
onde o usurio digita o username e a senha. Ao clicar em um boto Logon, os valores digitados
so enviados para uma pgina ASP que monta a String de conexo de acordo com os dados
fornecidos pelo usurio, incluindo o username e senha.
Na Listagem 9.1, temos um exemplo de formulrio, onde temos dois campos: username e
senha, nos quais o usurio ir digitar as informaes de logon.
Listagem 9.1 Formulrio para digitao do username e da senha logon.htm.
1 <HTML>
2 <HEAD>
3 <TITLE>Informaes de Logon!!</TITLE>
4 </HEAD>
5 <BODY>
6 <P><FONT color=navy><B>
7 Digite os dados para efetuar o logon no servidor SQL:
8 </B></FONT></P>
9 <P>
10 <FORM action=logon.asp method=post>
11 <TABLE bgColor=#fafad2 border=1 cellPadding=1 cellSpacing=1 width=50%>
12 <TR>
13 <TD>Username:</TD>
14 <TD><INPUT id=username maxLength=15 name=username></TD>
15 </TR>
16 <TR>
17 <TD>Senha:</TD>
18 <TD><INPUT id=senha maxLength=15 name=senha type=password></TD>
19 </TR>
5 5 9
Captulo 9 Segurana de Aplicaes Web com IIS e ASP
20 <TR>
21 <TD></TD>
22 <TD><INPUT id=logon name=logon type=submit value=Logon></TD>
23 </TR>
24 </TABLE>
25 </P>
26 </FORM>
27 </BODY>
28 </HTML>
Na Figura 9.45, temos o formulrio logon.htm carregado, onde o usurio digita as informaes
para o logon.
Figura 9.45: User name e senha par a logon no ser vidor SQL. .
Ao clicar no boto Logon, os dados digitados pelo usurio so enviados para a pgina logon.asp,
a qual monta uma String de conexo, com base nos dados informados pelo usurio. Na Listagem
9.2, temos um exemplo da pgina logon.asp.
Listagem 9.2 Pgina ASP que monta a String de conexo para o servidor SQL logon.asp.
1 <%@ Language=VBScript %>
2 <HTML>
Criando Sites Dinmicos com ASP 3.0
5 6 0
3 <HEAD>
4 </HEAD>
5 <BODY>
6 <%
7 O primeiro passo criar a conexo com o banco de dados
8 Para isto crio um objeto do tipo Connection
9 Cria um objeto do tipo ADODB.Connection
10 Set conn=Server.CreateObject(ADODB.Connection)
11 Agora defino a propriedade ConnectionString do objeto Connection
12 criado anteriormente.
13 conn.ConnectionString = PROVIDER=SQLOLEDB;
Data Source=SERVIDOR\SERVIDOR;Initial Catalog=Northwind;User ID= &
Request.Form(username)& ;Password= & Request.Form(senha)
14 conn.Open
15 %>
16 <HR>
17 <%
18 Response.Write Conexo estabelecida com sucesso !!
19 %>
20 <HR>
21 </BODY>
22 </HTML>
Se o usurio digitou as informaes de logon corretamente, ao acessar a pgina logon.asp, ele
obter o resultado indicado na Figura 9.46.
Figura 9.46: Conexo efet uada com sucesso.
5 6 1
Captulo 9 Segurana de Aplicaes Web com IIS e ASP
Figura 9.47: Er r o no logon com o banco de dados.
Observe que a mensagem informa que houve um erro no logon do usurio sa. O ideal que
estas situaes de erro sejam tratadas e ao invs do IIS simplesmente enviar uma pgina com
uma mensagem de erro padro, podemos interceptar a ocorrncia do erro e enviar para o
usurio uma pgina mais trabalhada, onde o mesmo tenha a opo de entrar novamente com
as informaes de logon. Aprenderemos a fazer o tratamento de erros no Captulo 11.
Concluso
Neste captulo aprendemos sobre aspectos bsicos de segurana, tais como:
Tipos de autenticao.
Permisses NTFS do Windows 2000.
Opes de segurana do IIS.
Permisses a nvel de banco de dados.
Muito existe a ser tratado sobre segurana. Livros inteiros j foram escritos sobre o assunto.
Pela experincia de anos trabalhando com ambientes de Rede Locais e acesso a dados crticos
Se o usurio cometer um erro na digitao do nome de usurio ou da senha, obteremos uma
mensagem de erro conforme indicado na Figura 9.47.
Criando Sites Dinmicos com ASP 3.0
5 6 2
posso afirmar com convico: O primeiro passo para estabelecer um ambiente seguro a
definio de um poltica de segurana e a ampla divulgao da mesma, para que todos estejam
conscientes de suas responsabilidades em relao segurana.
Muitas vezes cuida-se muito da segurana de acesso lgico aos dados, com a otimizao das
configuraes de segurana do Sistema Operacional, do servidor Web e do servidor de Banco
de dados. So gastos milhares de dlares em equipamentos e programas sofisticados para
atuarem como Firewall. Investe-se em roteadores modernos, com capacidades de filtragem
de pacotes, deteco de tentativas de invaso e assim por diante. E, muitas vezes, a segurana
fsica esquecida. De que adianta toda esta segurana no acesso lgico, se um desconhecido
pode, facilmente, invadir a sala dos servidores e sair com uma meia dzia de fitas de backup
em baixo do brao?
Obviamente que o investimento em segurana de acesso lgico aos dados necessria, porm
o aspecto da segurana no acesso fsico igualmente importante. Pontos como estes devem
ser definidos na poltica de segurana da empresa, a qual deve ser continuamente revisada
para se adaptar s freqentes mudanas no mundo da tecnologia.
No prximo captulo veremos alguns conceitos avanados do ASP 3.0.
5 6 3
Captulo 10 Utilizando Componentes do IIS
Capt ul o 10
Utilizando
Componentes do IIS
Criando Sites Dinmicos com ASP 3.0
5 6 4
Int r oduo
Neste captulo estaremos tratando de uma srie de objetos do ASP e outros assuntos
importantes na construo de aplicativos Web com ASP 3.0.
Iniciaremos o captulo por um estudo do objeto Server e dos seus diversos mtodos e
propriedades. Veremos como solucionar problemas prticos, bastante comuns na construo
de aplicaes Web.
Apresentaremos um exemplo prtico que ilustra uma necessidade tpica de aplicaes Web.
No nosso exemplo, o usurio selecionar o nome de um pas em uma lista de pases. Ao clicar
em um boto Pesquisar, ser retornada uma lista, em forma de tabela, com todos os Clientes
para o Pas selecionado. O nome do Cliente ser um link, que ao ser clicado abrir uma
pgina com as informaes sobre o mesmo. Para construir esta pgina teremos que utilizar
alguns mtodos do objeto Server.
Em seguida, passaremos ao estudo de alguns componentes ASP. Veremos com mais detalhes
o conceito de componentes. Tambm aprenderemos a utilizar diversos componentes que so
fornecidos juntamente com o IIS. Estudaremos os seguintes componentes:
Content Link.
Ad Rotator.
Browser Capabilities.
Page Counter.
Estes componentes so fornecidos juntamente com o IIS e oferecem uma srie de
funcionalidades bastante interessantes, conforme veremos mais adiante.
O Objet o Ser ver
O objeto Server nos fornece a possibilidade de estender as capacidades de nossas pginas
ASP, atravs da utilizao de objetos e componentes externos. Estes objetos e componentes
fornecem funcionalidades especficas as quais so necessrias aplicao que est sendo
desenvolvida.
A utilizao de componentes externos faz parte da filosofia de desenvolvimento de aplicaes
baseadas em componentes. Para o mundo Windows, os componentes devem seguir o padro
COM (Component Object Model), que no Windows 2000 recebe a denominao de COM+
(COM Plus).
5 6 5
Captulo 10 Utilizando Componentes do IIS
J utilizamos, em diversas oportunidades neste livro, o objeto Server e o seu mtodo
CreateObject, para criar objetos como ADODB.Connection e ADODB.RecordSet. Na maioria
dos exemplos de acesso a Banco de dados, utilizamos o mtodo CreateObject para criar
estes objetos.
Com o objeto Server, podemos ter acesso aos componentes que so fornecidos juntamente
com o IIS, bem como a qualquer componente que tenha sido desenvolvido por uma empresa
de desenvolvimento de software. O requisito para que o componente possa ser utilizado
que o mesmo siga o padro COM/COM+ e tenha sido registrado no servidor Web.
Existem diversas empresas que produzem componentes e objetos para serem utilizados em
pginas ASP. Existem componentes para as mais diversas funcionalidades, tais como:
Envio de e-mail a partir de pginas ASP.
Impresso de bloquetos de cobrana bancria.
Verificao de nmero de CPF, CNPJ ou carto de crdito.
Clculo de impostos e outros acrscimos legais.
Clculos especficos para setores, como por exemplo: Recursos Humanos, Contabilidade, etc.
Componentes para criao de grficos em pginas Web.
Componentes que facilitam a pesquisa em bancos de dados.
Agora passaremos ao estudo do objeto Server. Analisaremos os seus mtodos e sua propriedade
(isso mesmo, propriedade no singular, pois temos uma nica propriedade).
Pr opr iedade do Objet o Ser ver
O objeto Server possui uma nica propriedade: ScriptTimeout.
Esta propriedade pode ser utilizada para definir ou retornar o nmero de segundos que uma
pgina pode ficar em execuo antes que a mesma seja interrompida pelo IIS e uma mensagem
de erro seja retornada. O valor padro 90 segundos. Esta propriedade importante,
principalmente em pginas que apresentam um Loop infinito, devido a erros de programao.
Neste caso, aps o perodo definido pela propriedade ScriptTimeout, a pgina ter sua execuo
encerrada. Com isso evita-se que a pgina fique consumindo recursos no servidor at causar
uma parada do mesmo.
Uma prtica comum aumentar o valor desta propriedade para determinadas pginas, como,
por exemplo, para um formulrio de compras. Se a pgina demorar para aparecer e retornar
um erro, o usurio poder desconfiar de que a compra foi efetivada e no ir recarregar a
pgina com medo de duplicar o seu pedido.
Criando Sites Dinmicos com ASP 3.0
5 6 6
A sintaxe para esta propriedade bastante simples:
<%
Server.ScriptTimeout = segundos
%>
Por exemplo:
<%
Server.ScriptTimeout = 300
%>
Este exemplo define o TimeOut da pgina para 5 minutos (300 segundos).
IMPORTANTE
O tempo limite definido pela propriedade ScriptTimeout no ter efeito enquanto um
componente do servidor estiver processando. Por isso, caso voc esteja utilizando um
componente com defeitos, o mesmo continuar em execuo independente do valor definido
por esta propriedade.
Tambm podemos atribuir o valor armazenado nesta propriedade a uma varivel, como no
exemplo a seguir:
<%
tempo_limite = Server.ScriptTimeout
Response.Write tempo_limite
%>
M t odos do Objet o Ser ver
Conforme descrito anteriormente, j utilizamos diversas vezes, neste livro, o mtodo
CreateObject do objeto Server. Agora estudaremos este e os demais mtodos do objeto Server.
Coincidentemente, vamos comear justamente com o mtodo CreateObject.
O M t odo Cr eat eObject
O mtodo CreateObject utilizado para criar uma instncia de um componente ou objeto
existente no servidor. O termo existente no servidor significa que o objeto deve ter sido
previamente instalado e registrado no IIS. Diversos objetos e componentes fazem parte da
instalao padro do IIS e iremos estud-los ainda neste captulo.
A sintaxe para o mtodo CreateObject a seguinte:
Set nome_objeto = Server.CreateObject(Identificador_do_objeto)
5 6 7
Captulo 10 Utilizando Componentes do IIS
Onde temos:
nome_objeto: o nome da varivel que ser utilizada para fazer referncia ao objeto
na pgina ASP onde o objeto criado. Em diversos exemplos deste livro criamos um
objeto para conexo com banco de dados e atribumos o mesmo a uma varivel chamada
conn. O nome da varivel determinado pelo desenvolvedor; poderamos ter utilizado
qualquer nome de varivel vlido.
Identificador_do_objeto: Especifica o tipo de objeto a ser criado. O formato
[Fornecedor.]Componente[.Verso]. Em diversos exemplos do livro utilizamos os
seguintes identificadores:
ADODB.Connection
ADODB.RecordSet
Este o nome com que o componente est registrado no servidor Windows 2000. As
informaes, sobre o registro do componente, ficam armazenadas na Registry do Windows
2000, conforme indicado na Figura 10.1.
Figura 1 0.1 : Infor maes na Regist r y sobr e o component e ADODB. Connect ion. 2 . 5 .
Por padro, os objetos criados pelo mtodo Server.CreateObject tm escopo de pgina. Isso
significa que eles so automaticamente destrudos pelo servidor quando ele termina o
processamento da pgina ASP atual.
Para criar um objeto com escopo de sesso ou aplicativo, voc poder usar a marca <OBJECT>
no arquivo global.asa e definir o atributo SCOPE para SESSION ou APPLICATION, ou
armazenar o objeto em uma varivel de sesso ou aplicativo. No Captulo 8, criamos um
objeto do tipo ADODB.Connection e o armazenamos em uma varivel de nvel da aplicao,
utilizando o objeto Application.
Criando Sites Dinmicos com ASP 3.0
5 6 8
J um objeto criado em nvel de Sesso, ser destrudo quando a sesso for encerrada. Isto
acontece quando a sesso atinge o tempo limite ou o mtodo Abandon chamado. No exemplo
abaixo criamos um objeto em nvel de sesso chamado Rodar. Este componente , na verdade,
uma instncia do componente AdRotator. Estudaremos o mesmo mais adiante neste captulo.
<%
Set Session(rodar) = Server.CreateObject(MSWC.AdRotator)
%>
Podemos destruir um objeto atribuindo a varivel que representa o objeto, o valor Nothing.
<%
Session(rodar) = Nothing
%>
NOTA
Destruir o objeto significa retir-lo da memria, de maneira que no possa mais ser utilizado
e os recursos que o mesmo utilizava so liberados.
IMPORTANTE
No podemos criar uma instncia de objeto com o mesmo nome de um objeto interno. O
exemplo a seguir retorna um erro:
<%
Set Response = Server.CreateObject(Response)
%>
No podemos criar uma instncia de objeto chamada Response, uma vez que no Modelo de
Objetos do ASP j existe um objeto chamado Response, conforme estudado em captulos anteriores.
O M t odo Execut e( ur l )
O mtodo Execute chama um arquivo .asp e o processa como se ele fosse parte da chamada do
script ASP. A execuo da pgina corrente suspensa e o controle transferido para a pgina
especificada no parmetro URL. O mtodo Execute similar a uma chamada de procedimento
em muitas linguagens de programao. A pgina, chamada utilizando o mtodo Execute,
processada e, aps o trmino da execuo, o controle retorna para a pgina que fez a chamada.
O mtodo Execute possui a seguinte sintaxe:
Server.Execute(url)
5 6 9
Captulo 10 Utilizando Componentes do IIS
onde URL uma seqncia de caracteres especificando o local do arquivo .asp a ser executado.
Se um caminho absoluto for especificado para esse parmetro, ento, ele dever ser para um
arquivo .asp dentro do mesmo espao do aplicativo, isto , dentro da mesma pasta virtual que
representa o aplicativo.
O mtodo Server.Execute fornece uma maneira de dividir um aplicativo complexo em mdulos
individuais. Empregando este mtodo, voc pode desenvolver uma biblioteca de arquivos
.asp que pode ser chamada quando necessrio. Esse enfoque uma alternativa para incluses
do lado do servidor, utilizando a diretiva #include.
Depois que o IIS processa o arquivo .asp especificado no parmetro url de Server.Execute, a
resposta retornada ao script ASP que fez a chamada. O arquivo .asp executado pode modificar
cabealhos HTTP. No entanto, como em qualquer arquivo .asp, se o mesmo tentar modificar
os cabealhos HTTP depois que enviar uma resposta para o cliente, gerar um erro.
O parmetro url pode ser referente a um caminho absoluto ou relativo. Se o caminho for absoluto,
ele dever mapear para um script ASP no mesmo aplicativo do arquivo ASP que fez a chamada.
O parmetro caminho pode conter uma seqncia de caracteres de consulta.
Exemplo
O exemplo a seguir demonstra a execuo de um arquivo .asp que retorna algum texto. No
arquivo chamador.asp temos uma chamada do mtodo Execute para o arquivo chamado.asp.
Ao encontrar esta chamada, a execuo desloca-se para o arquivo chamado.asp, o qual
executado. Ao encerrar a execuo do arquivo chamado.asp, a execuo continua no arquivo
chamador.asp, com a linha seguinte a que utilizou o mtodo Execute.
Listagem 10.1 Arquivo que utiliza o mtodo Execute chamador.asp.
1 <HTML>
2 <BODY>
3 <%
4 Response.Write A prxima linha utiliza o mtodo Execute para chamar chamado.asp
<BR>
5 Server.Execute(chamado.asp)
6 Response.Write O arquivo chamado.asp j foi executado
7 Response.Write Estamos de volta ao arquivo chamador.asp
8 %>
9 </BODY>
10 </HTML>
Criando Sites Dinmicos com ASP 3.0
5 7 0
Listagem 10.2 Arquivo chamado pelo mtodo Execute chamado.asp.
1 <HTML>
2 <BODY>
3 <%
4 Response.Write <HR>
5 Response.Write Executando o arquivo chamado.asp........
6 Response.Write <HR>
7 %>
8 </BODY>
9 </HTML>
Ao carregarmos o arquivo chamador.asp, obtemos o resultado indicado na Figura 10.2.
Figura 1 0.2: Result ado da ut ilizao do mt odo Execut e.
O M t odo Get Last Er r or ( )
O mtodo GetLastError retorna um objeto do tipo ASPError que descreve a condio de erro
que ocorreu. Esse mtodo s est disponvel antes do arquivo .asp ter enviado algum contedo
para o cliente.
Sintaxe
Server.GetLastError ()
5 7 1
Captulo 10 Utilizando Componentes do IIS
NOTA
Votaremos a estudar este mtodo, com maiores detalhes, no Captulo 11, sobre tratamentos de
erro em pginas ASP.
O M t odo URLEncode( t ext o )
Passamos uma String como parmetro para o mtodo URLEncode. Por exemplo, posso passar
o meu nome como argumento:
Jlio Cesar Fabris Battisti
O mtodo URLEncode converte os caracteres especiais, tais como letras acentuadas, espaos
em brancos e outros sinais que no so caracteres vlidos para fazerem parte de uma URL,
nos equivalentes que so vlidos. O meu nome seria convertido da seguinte maneira:
J%FAlio+Cesar+Fabris+Battisti
Observe que o (que no um caractere vlido para fazer parte de uma URL) foi substitudo
por %FA (caractere vlido para fazer parte de uma URL) e cada espao em branco foi substitudo
por um sinal de +. Podemos notar esta substituio, claramente, quando os dados que
preenchemos em um formulrio so enviados atravs do mtodo get. Conforme descrito
anteriormente neste livro, no mtodo get as informaes que foram digitadas em um formulrio,
so enviadas junto com a URL da pgina que est sendo chamada. Para capturar estes dados,
precisamos utilizar o mtodo QueryString do objeto Request Request.QueryString
(NomeDoCampo).
Mais adiante estaremos apresentando um exemplo prtico que far uso do mtodo URLEncode
e tambm do Mtodo HTMLEncode, que veremos ainda neste item.
Outros exemplos de converso feitas pelo mtodo URLEncode:
Orlando Frao convertido para Orlando+Fra%E7%E3o
Urlndia Alta convertido para Url%E2ndia+Alta
Boqueiro do Leo convertido para Boqueir%E3o+do+Le%E3o
Jos da Silva convertido para Jos%E9+da+Silva
Normalmente utilizamos o mtodo URLEncode para converter um valor de texto normal em
um valor codificado que dever fazer parte de uma URL. Os dados enviados na URL podem
ser recuperados por uma pgina ASP atravs do mtodo Request.QueryString e utilizados
para pesquisar um banco de dados e retornar um determinado resultado.
Criando Sites Dinmicos com ASP 3.0
5 7 2
Considere o exemplo a seguir, onde temos uma URL bastante longa, a qual resultado do
envio dos dados que foram preenchidos em um formulrio, utilizando o mtodo get ao invs
do mtodo post:
http://servidor/capitulo10/cadastro.asp?nome=Jos%E9+da+Silva&
rua=Orlando+Fra%E7%E3o&bairro=Url%E2ndia+Alta&cidade=Boqueir%E3o+do+Le%E3o&
cep=97050-010&fone=2225211&fax=2226502&cartaotipo=Visa&enviar=Enviar+dados.
Observe que os dados preenchidos no formulrio so enviados junto com a URL no formato
de pares e codificados de tal maneira que os caracteres especiais so convertidos em seus
equivalentes. Por exemplo, observe o seguinte trecho da URL:
nome=Jos%E9+da+Silva
Este trecho est indicando que o campo nome foi preenchido com o valor Jos da Silva.
Lembre que cada espao substitudo por um sinal de + e o foi substitudo por seu
equivalente vlido para fazer parte de uma URL %E9.
No trecho de cdigo a seguir, temos um exemplo dos resultados obtidos com a utilizao de
Request.QueryString:
<%
Response.Write Request.QueryString(nome) & <BR>
Response.Write Request.QueryString(rua) & <BR>
Response.Write Request.QueryString(bairro) & <BR>
Response.Write Request.QueryString(cidade) & <BR>
Response.Write Request.QueryString(cep) & <BR>
Response.Write Request.QueryString(fone) & <BR>
Response.Write Request.QueryString(fax) & <BR>
Response.Write Request.QueryString(cartao) & <BR>
%>
Este trecho de cdigo retornaria o seguinte resultado:
Jos da Silva
Orlando Frao
Urlndia Alta
Boqueiro do Leo
97050-010
2225211
2226502
Visa
Observe que o mtodo QueryString decodifica os valores especiais de volta para os valores
originais. Por exemplo, o %E9 substitudo de volta para o original .
5 7 3
Captulo 10 Utilizando Componentes do IIS
O M t odo M apPat h( ur l )
O mtodo MapPath(url) retorna o caminho fsico no servidor, correspondente a URL passada
como parmetro. Um caminho fsico um caminho do tipo: D:\Inetpub\wwwroot\Capitulo10.
O parmetro URL especifica o caminho relativo ou virtual a ser mapeado para um diretrio
fsico. Se Caminho iniciar com uma barra simples (/) ou invertida (\), o mtodo MapPath
retornar o caminho como se fosse um virtual completo. Se Caminho no iniciar com uma
barra, o mtodo MapPath retornar um caminho relativo ao diretrio do arquivo .asp que est
sendo processado.
Na Listagem 10.3, temos um exemplo de utilizao do mtodo MapPath.
Listagem 10.3 Utilizando o mtodo MapPath exmap.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 <TITLE>Utilizando o mtodo MapPath.</TITLE>
5 </HEAD>
6 <BODY>
7 <HR>
8 <%
9 Response.Write Server.MapPath(/) & <BR>
10 Response.Write Server.MapPath(Capitulo6) & <BR>
11 Response.Write Server.MapPath(/Capitulo10) & <BR>
12 Response.Write Server.MapPath(/Capitulo10/exmap.asp) & <BR>
13 Response.Write Server.MapPath(/iishelp) & <BR>
14 Response.Write Server.MapPath(\) & <BR>
15 %>
16 <HR>
17 </BODY>
18 </HTML>
Na Figura 10.3 temos o resultado da pgina da Listagem 10.3 quando carregada no Internet
Explorer.
Criando Sites Dinmicos com ASP 3.0
5 7 4
Figura 1 0.3: Result ado da ut ilizao do mt odo Ser ver. M apPat h.
Observe que tanto a barra normal (/), quanto a barra invertida (\) podem ser utilizadas como
parmetro para que o mtodo MapPath retorne o caminho fsico para o diretrio raiz do
servidor IIS.
NOTA
O mtodo MapPath no verifica se o caminho que ele retorna vlido ou existe no servidor. Ele
apenas retorna qual seria o caminho fsico para o endereo relativo que foi passado. O mtodo
faz esta determinao com base no caminho fsico do diretrio raiz.
IMPORTANTE
No podemos utilizar o mtodo MapPath nos eventos Application_OnEnd e Session_OnEnd.
O M t odo Tr ansfer ( ur l )
O mtodo Transfer(url) pra a execuo da pgina atual, e transfere a execuo para a
pgina especificada no parmetro URL. Caso tenham sido definidas informaes para o objeto
Session ou informaes de transao, as mesmas sero transferidas para a nova pgina. Porm,
o mtodo Transfer(url), aps finalizar a execuo da pgina que foi chamada, no retorna o
controle para a pgina original, como acontece no mtodo Execute.
5 7 5
Captulo 10 Utilizando Componentes do IIS
Quando voc chama Server.Transfer, as informaes sobre o estado de todos os objetos
incorporados so includas na transferncia. Isso significa que todas as variveis ou objetos
aos quais foi atribudo um valor no escopo da sesso ou do aplicativo sero mantidos. Alm
disso, todos os contedos atuais das colees Request estaro disponveis para o arquivo .asp
que est recebendo a transferncia.
Se o caminho que voc especificar no parmetro URL for de um arquivo .asp em outro
aplicativo, o arquivo .asp ser executado como se estivesse no aplicativo que contm o comando
Server.Transfer. Em outras palavras, todas as variveis e objetos, aos quais foram dados escopo
de aplicativo por outros arquivos .asp no aplicativo, ou pelo arquivo global.asa do aplicativo,
estaro disponveis para o arquivo .asp chamado.
A seguir temos alguns exemplos de cdigo para o mtodo Transfer:
<%
Server.Transfer(outra.asp)
%>
ou podemos tambm utilizar:
<%
Server.Transfer(/Capitulo10/outra.asp)
%>
O M t odo HTM LEncode( t ext o )
O mtodo HTMLEncode converte os caracteres especiais do texto, passado como parmetro,
para caracteres reconhecidos no cdigo HTML. Considere os exemplos:
substitudo por &aacute;
substitudo por &eacute;
substitudo por &iacute;
substitudo por &oacute;
substitudo por &uacute;
> substitudo por &gt;
< substitudo por &lt;
& substitudo por &amp;
e assim por diante.
Criando Sites Dinmicos com ASP 3.0
5 7 6
Um Exemplo Pr t ico de Ut ilizao do Objet o Ser ver
Neste item vamos propor a soluo para o seguinte problema:
PROBLEMA
Vamos criar um exemplo que faz conexo com o banco de dados nwind.mdb. No nosso exemplo,
ser apresentada uma pgina principal.asp na qual o usurio selecionar o nome de um
pas em uma lista de pases. Esta lista de pases ser montada, dinamicamente, a partir da
tabela Customers, de tal maneira que somente sejam exibidos os pases para os quais existem
clientes cadastrados. Alm disso a listagem ser classificada em ordem alfabtica. Aps
selecionar o pas, o usurio clica em um boto Pesquisar. Com isso ser retornada uma lista,
em forma de tabela, com todos os Clientes para o Pas selecionado pgina listaclientes.asp. O
nome do Cliente ser um link, que ao ser clicado abrir uma pgina com as informaes sobre
o mesmo pgina cliente.asp. Para construir esta pgina teremos que utilizar alguns mtodos
do objeto Server.
Na Listagem 10.4, temos o cdigo para a construo da pgina principal.asp.
Listagem 10.4 Criando, dinamicamente, uma lista de pases principal.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <TITLE>Gera uma lista de Pases dinamicamente.</TITLE>
6 <BODY>
7 <%
8 O primeiro passo criar a conexo com o banco de dados.
9 Para isto crio um objeto do tipo Connection.
10 Cria um objeto do tipo ADODB.Connection
11 Set conn=Server.CreateObject(ADODB.Connection)
12 Agora abro uma conexo com o arquivo nwind.mdb
13 utilizando OLE DB.
14 conn.ConnectionString = PROVIDER=MICROSOFT.JET.OLEDB.4.0;
DATA SOURCE=c:\meus documentos\nwind.mdb
5 7 7
Captulo 10 Utilizando Componentes do IIS
15 conn.Open
16 Agora criamos um objeto RecordSet para reapresentar
17 a lista de pases.
18 Set Paises = Server.CreateObject(ADODB.Recordset)
19 Paises.Open Select ShipCountry from Orders Group By ShipCountry Order By
ShipCountry, conn, 3, 3
20 Exibo a lista de pases.
21 %>
22 <P><B>Selecione um pas na lista de pases.</B></P>
23 <P><B><I>Depois clique no boto Pesquisar.</I></B></P>
24 <FORM action=listaclientes.asp method=post id=form1 name=form1>
25 <SELECT id=listapaises name=listapaises>
26 <%
27 Agora construo a lista de opes a partir dos
28 dados obtidos da tabela Orders.
29 Para cada pas obtido, crio uma nova opo
30 na lista.
31 Do While Not Paises.EOF
32 Response.Write <OPTION value= & Chr(34) & Paises.Fields(ShipCountry) & Chr(34)
33 If Paises.Fields(ShipCountry)= Request.Form(listapaises) Then
34 Response.Write SELECTED
35 End If
36 Response.Write > & Paises.Fields(ShipCountry)& </OPTION>
37 Paises.MoveNext
38 Loop
39 %>
40 </SELECT>
Criando Sites Dinmicos com ASP 3.0
5 7 8
41 <HR>
42 <INPUT type=submit value=Pesquisar id=Pesquisar name=Pesquisar>
43 </FORM>
44 </BODY>
45 </HTML>
A Listagem 10.4 dispensa maiores comentrios. J analisamos diversos exemplos semelhantes
no Captulo 7.
Agora precisamos criar a pgina listaclientes.asp. Est pgina dever fazer o seguinte:
Receber o valor do pas selecionado na lista.
Criar um RecordSet com todos os Clientes para o pas selecionado.
Na hora de exibir os resultados, transformar o nome do funcionrio em um link que,
ao ser clicado, chama a pgina cliente.asp. No prprio link ser passado o Cdigo do
Cliente junto com a URL. Este cdigo ser utilizado, pela pgina cliente.asp, para
localizar o registro do Cliente na tabela Customers.
Para construir este link, utilizaremos o mtodo URLEncode.
Na Listagem 10.5, temos o cdigo para a construo da pgina listaclientes.asp.
Listagem 10.5 Retornando a lista de clientes para o pas selecionado listaclientes.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <TITLE>Lista de Clientes para o Pas selecionado.</TITLE>
6 <BODY>
7 <%
8 O primeiro passo criar a conexo com o banco de dados.
9 Para isto crio um objeto do tipo Connection.
10 Cria um objeto do tipo ADODB.Connection
11 Set conn=Server.CreateObject(ADODB.Connection)
12 Agora abro uma conexo com o arquivo nwind.mdb
13 utilizando OLE DB.
5 7 9
Captulo 10 Utilizando Componentes do IIS
14 conn.ConnectionString = PROVIDER=MICROSOFT.JET.OLEDB.4.0;
DATA SOURCE=c:\meus documentos\nwind.mdb
15 conn.Open
16 Agora criamos um objeto RecordSet para reapresentar
17 a lista de pases.
18 Set Clientes = Server.CreateObject(ADODB.Recordset)
19 Clientes.Open Select * from Customers where Country= &
Request.Form(listapaises) & Order By CompanyName, conn, 3, 3
20 Exibo a lista de Clientes e o Pas.
21 %>
22 <HR>
23 <B>Lista de Clientes para:
24 <% =Request.Form(listapaises) %>
25 <HR>
26 <TABLE border=1 width=100%>
27 <TR>
28 <TD><B>Nome do Cliente</B></TD>
29 <TD><B>Pas</B></TD>
30 </TR>
31 <%
32 Clientes.MoveFirst
33 Do Until Clientes.EOF
34 %>
35 <TR>
36 <TD>
37 <FONT FACE=Arial>
38 <P>
39 <A HREF=http://servidor/Capitulo10/cliente.asp?Codigo=<%
Criando Sites Dinmicos com ASP 3.0
5 8 0
=server.URLEncode(Clientes.Fields(CustomerID))%>>
<%=Clientes.Fields(CompanyName)%>
40 </A>
41 </FONT>
42 </TD>
43 <TD><% = Clientes.Fields(Country) %>
44 </TD>
45 </TR>
46 <%
47 Clientes.MoveNext
48 Loop
49 %>
50 </TABLE>
51 <HR>
52 </BODY>
53 </HTML>
O que temos de especial na pgina listaclientes.asp o seguinte trecho de cdigo:
36 <TD>
37 <FONT FACE=Arial>
38 <P>
39 <A HREF=http://servidor/capitulo10/cliente.asp?Codigo=
<% =server.URLEncode(Clientes.Fields(CustomerID))%>>
<%=Clientes.Fields(CompanyName)%>
40 </A>
41 </FONT>
42 </TD>
Neste trecho estamos montando a primeira coluna da tabela. Utilizamos a tag HTML <A
HREF=> </A> para construir um link. Dentro deste link, construmos a seguinte URL:
http://servidor/capitulo10/cliente.asp?Codigo=
Depois utilizamos o seguinte cdigo ASP:
<% =server.URLEncode(Clientes.Fields(CustomerID))%>
5 8 1
Captulo 10 Utilizando Componentes do IIS
Este cdigo passa o campo CustomerID como parmetro para o mtodo URLEncode, o qual
ir converter qualquer caractere no permitido em uma URL para o equivalente permitido,
conforme descrito anteriormente. Vamos supor que o cdigo do clientes seja JSILVA. Neste
ponto o nosso link estar assim:
http://servidor/capitulo10/cliente.asp?Codigo=JSILVA
Depois utilizamos o seguinte cdigo ASP:
<%=Clientes.Fields(CompanyName)%>
Este cdigo simplesmente exibir o Nome do Cliente, que o texto que aparecer como texto
do link. Observe que montamos o link de tal forma que o parmetro que ser passado na URL
o Cdigo do Cliente (CustomerID), porm o texto que ser exibido na pgina o Nome do
Cliente (CompanyName). Estamos passando o Cdigo do Cliente como parmetro, porque
este campo uma chave primria e, portanto, no existiro dois clientes com o mesmo cdigo.
Porm, existe a possibilidade de existirem dois clientes com o mesmo nome.
Com isso montamos, facilmente, um link no nome de cada cliente. Quando o usurio clicar
no nome do cliente, ser passado, juntamente com a URL o Cdigo do Cliente como parmetro
de pesquisa para a pgina cliente.asp. O passo final da nossa aplicao construir a pgina
cliente.asp e depois testar o funcionamento da mesma.
Na Listagem 10.6, temos o cdigo para a construo da pgina cliente.asp.
Listagem 10.6 Localizando o registro do cliente. cliente.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 <TITLE>Lista para o Cliente <% = Request.QueryString(Codigo) %> !!</TITLE>
5 </HEAD>
6 <BODY>
7 <%
8 O primeiro passo criar a conexo com o Banco de dados.
9 Para isto crio um objeto do tipo Connection.
10 Cria um objeto do tipo ADODB.Connection
11 Set conn=Server.CreateObject(ADODB.Connection)
12 Agora abro uma conexo com o arquivo nwind.mdb
Criando Sites Dinmicos com ASP 3.0
5 8 2
13 utilizando OLE DB.
14 conn.ConnectionString = PROVIDER=MICROSOFT.JET.OLEDB.4.0;
DATA SOURCE=c:\meus documentos\nwind.mdb
15 conn.Open
16 Agora criamos um objeto RecordSet para reapresentar
o Cliente.
17 Set Cliente = Server.CreateObject(ADODB.Recordset)
Cliente.Open Select * from Customers where CustomerID= &
Request.QueryString(codigo) & , conn, 3, 3
18 Exibo os dados do Cliente.
19 %>
20 <HR>
21 <B>REGISTRO PARA O CLIENTE:</B>
22 <% =Cliente.Fields(CompanyName)%>
23 <HR>
24 <A HREF=principal.asp>Clique aqui para selecionar outro pas.</A>
25 <HR>
26 <TABLE border=1 cellPadding=1 cellSpacing=1 width=100%>
27 <TR>
28 <TD>Cdigo do Cliente:</TD>
29 <TD><B><% =Cliente.Fields(CustomerID)%></B></TD>
30 </TR>
31 <TR>
32 <TD>Nome do Cliente:</TD>
33 <TD><B><% =Cliente.Fields(CompanyName)%></B></TD>
34 </TR>
35 <TR>
36 <TD> Contato:</TD>
37 <TD><B><% =Cliente.Fields(ContactName)%></B></TD>
5 8 3
Captulo 10 Utilizando Componentes do IIS
38 </TR>
39 <TR>
40 <TD> Endereo:</TD>
41 <TD><B><% =Cliente.Fields(Address)%></B></TD>
42 </TR>
43 <TR>
44 <TD> Cidade: </TD>
45 <TD><B><% =Cliente.Fields(City)%></B></TD>
46 </TR>
47 <TR>
48 <TD> CEP:</TD>
49 <TD><B><% =Cliente.Fields(PostalCode)%></B></TD>
50 </TR>
51 <TR>
52 <TD> Fone:</TD>
53 <TD><B><% =Cliente.Fields(Phone)%></B></TD>
54 </TR>
55 <TR>
56 <TD> Fax:</TD>
57 <TD><B><% =Cliente.Fields(Fax)%></B></TD>
58 </TR>
59 <TR>
60 <TD> Pas:</TD>
61 <TD><B><% =Cliente.Fields(Country)%></B></TD>
62 </TR>
63 <HR>
64 </TABLE>
65 </BODY>
66 </HTML>
Criando Sites Dinmicos com ASP 3.0
5 8 4
Observe que utilizamos cdigo ASP na tag <TITLE></TITLE>, o que possvel, sem maiores
problemas.
Outro detalhe a ser observado que utilizamos o mtodo Request.QueryString. Isto foi feito,
porque o Cdigo do Cliente foi passado na prpria URL. como se estivssemos utilizando o
mtodo get da tag <FORM>. Por isso, para recuperar o valor passado como parmetro,
precisamos utilizar o mtodo Request.QueryString ao invs de Request.Form.
Agora vamos ver a nossa aplicao em funcionamento.
Na Figura 10.4 vemos que foi carregada a pgina principal.asp e o usurio selecionou Argentina
na lista de pases.
Figura 1 0.4: O usur io selecionou Ar gent ina na list a de pases.
Ao clicar no boto Pesquisar chamada a pgina listaclientes.asp, a qual exibe uma listagem
com todos os Clientes da Argentina, conforme mostrado na Figura 10.5.
Observe que o nome de cada Cliente um link. Se clicarmos no nome do cliente, ser chamada
a pgina cliente.asp e ser passado, na prpria URL, o cdigo do cliente. Com isso so exibidos
os dados do Cliente. Na Figura 10.6, temos o exemplo para o caso em que o usurio clicou no
link para o cliente Rancho Grande.
Observe no campo endereo, que temos a seguinte URL:
http://servidor/Capitulo10/cliente.asp?Codigo=RANCH
5 8 5
Captulo 10 Utilizando Componentes do IIS
Figura 1 0.5: A list agem dos client es da Ar gent ina.
Figura 1 0.6: Dados do client e Rancho Gr ande.
O Cdigo do Cliente foi passado na prpria URL.
O usurio pode clicar no link Clique aqui para selecionar outro pas, para voltar pgina
principal.asp e fazer uma nova pesquisa. O usurio tambm pode clicar no boto Voltar do
Criando Sites Dinmicos com ASP 3.0
5 8 6
prprio navegador, para retornar pgina listaclientes.asp, com a lista de Clientes da Argentina
e clicar em um outro Cliente para ver os dados do mesmo.
Com este exemplo prtico, encerramos o estudo do objeto Server. Nos prximos itens
aprenderemos a utilizar alguns componentes que so fornecidos juntamente com o IIS.
Ut ilizando Component es do Ser vidor em Pginas ASP
Agora passaremos ao estudo de diversos componentes que fazem parte da instalao bsica
do IIS, ou seja, ao instalarmos o IIS os mesmos j esto disponveis para serem utilizados.
Vamos estudar os chamados Active Server Componnents. So componentes que executam
no servidor IIS, retornando um determinado resultado para a pgina ASP, que os utiliza, ou
efetuando uma determinada operao.
Ns j utilizamos diversos componentes, principalmente ao conectar com banco de dados,
utilizando ADO Acivex Data Objects. ADO nada mais do que uma biblioteca de
componentes, especialmente projetada para possibilitar o acesso a fontes diversas de dados,
tanto atravs de OLE DB quanto de ODBC.
Alm dos componentes que j so fornecidos com o IIS e o Windows 2000, podem ser
adquiridos componentes de empresas desenvolvedoras de software. Existe uma infinidade
de componentes disponveis na Internet, inclusive, gratuitos. Quando adquirimos um
componente, junto com o mesmo recebemos a documentao sobre como instalar, quais os
mtodos, propriedades, eventos e colees que o mesmo disponibiliza. A partir do momento
que o componente foi instalado, o mesmo pode ser utilizado em qualquer pgina ASP do
servidor onde foi instalado.
Os componentes desenvolvidos para serem utilizados por pginas ASP, no servidor IIS, devem
seguir o padro COM (e no Windows 2000, o COM+). Estes componentes podem ser criados
utilizando-se ambientes de desenvolvimento como o Microsoft Visual Basic 6.0 ou o Microsoft
Visual C 6.0.
Vamos aprender a utilizar os principais componentes disponibilizados pelo IIS.
O Component e Cont ent Link
Este componente utilizado para auxiliar no gerenciamento de links para uma srie de
documentos, sendo de grande utilidade na criao de estruturas de navegao. Por exemplo,
vamos supor que voc tenha uma pasta virtual onde ser publicado um manual de procedimentos
para a seo onde voc trabalha. Ao publicar este manual, voc gostaria que, junto com cada
5 8 7
Captulo 10 Utilizando Componentes do IIS
pgina, fosse exibido uma lista de links, de forma que o usurio pudesse se deslocar para uma
parte especfica do manual e tambm uma barra de navegao com links para o prximo
documento, o documento anterior, para o primeiro documento e para o ltimo documento.
Obviamente que esta estrutura de navegao pode ser criada manualmente. Porm pequenas
modificaes como a insero ou incluso de pginas, faro com que toda a estrutura de
navegao tenha que ser alterada. Para facilitar a criao de uma estrutura de navegao
deste tipo, podemos utilizar o componente Content Link.
O objeto Content Link fornecido atravs da DLL Nextlink.dll, a qual encontra-se, normalmente,
na pasta \winnt\system32\inetsrv, do drive onde est instalado o Windows 2000.
A sintaxe para criar um objeto do tipo Content Link a seguinte:
Set meu_objeto = Server.CreateObject(MSWC.Nextlink)
onde MSWC.Nextlink a identificao com que o objeto Content Link foi registrado.
Para salientar a utilizao do componente Content Link, vamos criar um exemplo onde temos
um manual com cinco captulos, alm da Introduo. Queremos utilizar o componente Content
Link para exibir, em todas as pginas do manual, um ndice com links para a Introduo e
para os cinco captulos; e no final e incio de cada documento, uma barra de navegao com
links para o prximo, anterior, primeiro e o ltimo documento.
Os documentos para o nosso exemplo sero os indicados na Tabela 10.1.
Tabela 10.1 Documentos para o nosso manual de exemplo.
Documento Descrio
intro.asp Pgina de abertura e Introduo do manual.
cap1.asp Captulo 1 do manual de exemplo.
cap2.asp Captulo 2 do manual de exemplo.
cap3.asp Captulo 3 do manual de exemplo.
cap4.asp Captulo 4 do manual de exemplo.
cap5.asp Captulo 5 do manual de exemplo.
O componente Content Link trabalha em conjunto com um arquivo de texto, o qual conhecido
como Lista de contedo. Neste arquivo de texto cada linha representa um documento que
far parte da Lista de contedo. Cada linha possui o seguinte formato:
URL-Pgina Descrio Comentrio
Cada um dos elementos deve ser separado do anterior por uma tabulao.
Criando Sites Dinmicos com ASP 3.0
5 8 8
Este arquivo, alm de descrever quais os documentos que faro parte da Lista de contedo,
tambm define a ordem do documento nesta lista. Por exemplo, se estamos no arquivo cap3.asp
e clicamos no link prximo, ser carregada a pgina cap4.asp. Esta seqncia definida pela
ordem das linhas no arquivo que contm a Lista de contedo.
Para o nosso exemplo, teremos o seguinte arquivo de texto conteudo.txt:
Chamaremos este arquivo de conteudo.txt, o qual ser salvo na mesma pasta que os demais
arquivos.
Uma vez criado o objeto, o prximo passo definir qual o arquivo de texto que ser utilizado
pelo componente Content Link.
A etapa final utilizar os mtodos do objeto Content Link para criar a estrutura dinmica de
navegao.
Antes de criarmos o nosso exemplo, vamos aprender a criar um objeto associado a um
componente do tipo Content Link. Tambm vamos estudar os mtodos deste componente.
Cr iando um Objet o do Tipo Cont ent Link
Para criarmos um objeto do tipo Content Link, utilizamos a seguinte sintaxe:
Set conteudo=Server.CreateObject(MSWC.Nextlink)
M t odos do Objet o Cont ent Link
Vamos fazer um estudo de cada um dos mtodos do objeto Content Link.
O mtodo GetListCount: Este mtodo retorna um nmero inteiro, o qual indica o nmero
de pginas listadas no arquivo de contedo que passado como parmetro.
intro.asp Introduo Pgina inicial do manual e introduo
cap1.asp Captulo 1 Captulo 1 do Manual
cap2.asp Captulo 2 Captulo 2 do Manual
cap3.asp Captulo 3 Captulo 3 do Manual
cap4.asp Captulo 4 Captulo 4 do Manual
cap5.asp Captulo 5 Captulo 5 do Manual
5 8 9
Captulo 10 Utilizando Componentes do IIS
A sintaxe para este mtodo a seguinte:
Response.Write conteudo.GetListCount(conteudo.txt)
No nosso exemplo, como o arquivo conteudo.txt possui seis linhas, este comando ir retornar
o valor 6. importante saber o nmero total de pginas na Lista de contedo, para que a
estrutura de navegao possa ser criada corretamente. A contagem dos elementos inicia com
1, e no zero como no caso de outros elementos. Assim, o primeiro elemento o de ndice 1,
o segundo o de ndice 2 e assim por diante. Se o arquivo passado como parmetro no for
encontrado, o mtodo GetListCount ir retornar 0.
O mtodo GetListIndex: Este mtodo retorna o nmero do ndice do elemento atual no
arquivo de contedo. A cada momento somente existe um item que o atual. Podemos
alterar o item atual utilizando os mtodos GetNextURL e GetPreviousURL, que estudaremos
mais adiante. Isto semelhante ao conceito de registro corrente de um objeto RecordSet e
utilizao dos mtodos MoveNext e MovePrevious do objeto RecordSet. O mtodo retorna
0 se a pgina atual no estiver includa no arquivo de contedo.
A sintaxe para este mtodo a seguinte:
Response.Write conteudo.GetListIndex(conteudo.txt)
Este comando retorna o valor do ndice do elemento atual.
Utilizando os mtodos GetListCount e GetListIndex, podemos criar estruturas de navegao
bastante interessantes. Por exemplo, se estivermos na ltima pgina de uma Lista de contedo,
podemos fazer com que o link Prxima no seja exibido. Para fazer isso s detectar se o
ndice atual igual ao valor retornado por GetListCount (nmero total de pginas). O cdigo
da Listagem 10.7 ilustra como detectar se a pgina atual a ltima da lista de contedo.
Na Listagem 10.7, uma preliminar da pgina intro.asp.
Listagem 10.7 Utilizando os mtodos GetListCount e GetListIndex.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 <TITLE> Utilizando o componente Content Link</TITLE>
6 </HEAD>
7 <BODY>
8 <%
9 O primeiro passo criar um objeto do tipo MSWC.Nextlink
10 Set conteudo=Server.CreateObject(MSWC.Nextlink)
Criando Sites Dinmicos com ASP 3.0
5 9 0
11 Response.Write Nmero total de pginas: & conteudo.GetListCount(conteudo.txt)
& <BR>
12 ultimo = conteudo.GetListCount(conteudo.txt)
13 atual = conteudo.GetListIndex(conteudo.txt)
14 If atual=ultimo Then
15 Response.Write A ltima pgina a pgina atual.
16 Else
17 Response.Write A pgina atual : & atual
18 End If
19 %>
20 </BODY>
21 </HTML>
O mtodo GetNextUrl: Esse mtodo retorna a URL do prximo item especificada no
arquivo de contedo. Se a pgina atual no estiver especificada no arquivo de contedo,
o mtodo GetNextURL retornar a URL da ltima pgina da lista. Por exemplo, se voc
estiver na pgina cap3.asp do nosso exemplo, o mtodo GetNextURL(conteudo.txt)
ir retornar cap4.asp, que a prxima pgina, na linha logo abaixo da linha de cap3.asp.
A sintaxe para este mtodo a seguinte:
conteudo.GetNextURL(conteudo.txt)
onde o nico parmetro a ser passado o arquivo de contedo.
O mtodo GetNextDescription: Esse mtodo retorna a descrio do prximo item do
arquivo de contedo. Se a pgina atual no estiver especificada no arquivo de contedo,
o mtodo GetNextDescription retornar a descrio da ltima pgina da lista.
A sintaxe para este mtodo a seguinte:
conteudo.GetNextDescription(conteudo.txt)
onde o nico parmetro a ser passado o arquivo de contedo.
O mtodo GetNthDescription: Esse mtodo retorna a descrio do ensimo item do
arquivo de contedo.
A sintaxe para este mtodo a seguinte:
conteudo.GetNthDescription(conteudo.txt,3)
5 9 1
Captulo 10 Utilizando Componentes do IIS
onde os parmetros a serem passados so o arquivo de contedo e o ndice do elemento cuja
descrio deve ser retornada.
O mtodo GetNthUrl: Esse mtodo retorna a URL do ensimo item, especificada no
arquivo de contedo.
A sintaxe para este mtodo a seguinte:
conteudo.GetNthURL(conteudo.txt,3)
onde os parmetros a serem passados so o arquivo de contedo e o ndice do elemento cuja
URL deve ser retornada.
O mtodo GetPreviousURL: Esse mtodo retorna a URL do item anterior ao atual,
especificada no arquivo de contedo. Se a pgina atual no estiver especificada, o
mtodo GetPreviousURL retornar a URL da primeira pgina da lista. Por exemplo, se
voc estiver na pgina cap3.asp do nosso exemplo, o mtodo GetPreviousURL
(conteudo.txt) ir retornar cap2.asp, que a pgina anterior a cap3.asp, na linha logo
acima da linha de cap3.asp.
A sintaxe para este mtodo a seguinte:
conteudo.GetPreviousURL(conteudo.txt)
onde o nico parmetro a ser passado o arquivo de contedo.
O mtodo GetPreviousDescription: Esse mtodo retorna a descrio do item anterior
ao atual, especificado no arquivo de contedo. Se a pgina atual no estiver especificada
no arquivo de contedo, o mtodo GetPreviousDescription retornar a descrio da
primeira pgina da lista.
A sintaxe para este mtodo a seguinte:
conteudo.GetPreviousDescription(conteudo.txt)
onde o nico parmetro a ser passado o arquivo de contedo.
Um Exemplo que Ut iliza o Component e Cont ent Link
Ento, mos obra. Vamos criar o nosso exemplo proposto, passo a passo. Todas as nossas
pginas tero a mesma estrutura. Na coluna da esquerda, teremos o menu de navegao
(criado dinamicamente atravs da utilizao dos mtodos do objeto Content Link), e na parte
superior e inferior da pgina teremos um menu com as opes de ir para a prxima, para a
anterior, para a ltima ou para a primeira pgina.
Na Listagem 10.8, temos a pgina inicial do manual intro.asp.
Criando Sites Dinmicos com ASP 3.0
5 9 2
Listagem 10.8 A pgina inicial do manual intro.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 <TITLE> Utilizando o componente Content Link</TITLE>
5 </HEAD>
6 <BODY>
7 <%
8 O primeiro passo criar um objeto do tipo MSWC.Nextlink
9 Set conteudo=Server.CreateObject(MSWC.Nextlink)
10 ultimo = conteudo.GetListCount(conteudo.txt)
11 primeiro = 1
12 %>
13 <TABLE bgColor=#c0c0c0 border=1 cellPadding=1 cellSpacing=1 width=100%>
14 <% Agora construo a barra de navegao do topo da pgina. %>
15 <TR>
16 <TD colSpan=2>
<A HREF=<%=conteudo.GetNthURL(conteudo.txt,primeiro)%>>[Incio]</A>
<A HREF=<%=conteudo.GetPreviousURL(conteudo.txt)%>>[Anterior]</A>
<A HREF=<%=conteudo.GetNextURL(conteudo.txt)%>>[Prxima]</A>
<A HREF=<%=conteudo.GetNthURL(conteudo.txt,ultimo)%>>[ltima]</A>
17 </TD>
18 </TR>
19 <% Agora construmos o menu de navegao na coluna da esquerda %>
20 <TR>
21 <TD width=10%>
5 9 3
Captulo 10 Utilizando Componentes do IIS
22 <%
23 For i=1 to ultimo %>
24 <A HREF=<%=conteudo.GetNthURL(conteudo.txt,i)%>>
<% =conteudo.GetNthDescription(conteudo.txt,i)%></A>
25 <%
26 Next
27 %>
28 </TD>
29 <% A prxima clula a clula de contedo. %>
30 <TD width=90%>
31 <P><B>MANUAL DE PROCEDIMENTOS PARA A SEO DE ATENDIMENTO.</B></P>
32 <HR>
33 <P><I>INTRODUO</I></P>
34 <HR>
35 <P>Aqui colocaramos o contedo da Introduo.</P>
36 <HR>
37 </TD>
38 </TR>
39 <% Agora construo a barra de navegao do topo da pgina.%>
40 <TR>
41 <TD colSpan=2>
42 <A HREF=<%=conteudo.GetNthURL(conteudo.txt,primeiro)%>>[Incio]</A>
43 <A HREF=<%=conteudo.GetPreviousURL(conteudo.txt)%>>[Anterior]</A>
44 <A HREF=<%=conteudo.GetNextURL(conteudo.txt)%>>[Prxima]</A>
45 <A HREF=<%=conteudo.GetNthURL(conteudo.txt,ultimo)%>>[ltima]</A>
46 </TD>
47 </TR>
48 </TABLE>
49 </BODY>
50 </HTML>
Criando Sites Dinmicos com ASP 3.0
5 9 4
Ao carregarmos a pgina intro.asp, no Internet Explorer, obtemos o resultado indicado na
Figura 10.7.
Figura 1 0.7: A pgina int r o. asp.
Todos os links desta pgina foram construdos utilizando os mtodos do objeto conteudo, o
qual uma instncia de um componente Content Link. Observe o trecho de cdigo a seguir,
responsvel pela criao do menu de navegao superior e inferior:
16 <TD colSpan=2>
<A HREF=<%=conteudo.GetNthURL(conteudo.txt,primeiro)%>>[Incio]</A>
<A HREF=<%=conteudo.GetPreviousURL(conteudo.txt)%>>[Anterior]</A>
<A HREF=<%=conteudo.GetNextURL(conteudo.txt)%>>[Prxima]</A>
<A HREF=<%=conteudo.GetNthURL(conteudo.txt,ultimo)%>>[ltima]</A>
17 </TD>
Observe que utilizamos os mtodos GetPreviousURL, GetNextURL e GetNthURL para retornar
as respectivas URL a partir do arquivo de contedo. Por exemplo, estamos com a pgina
intro.asp carregada. O mtodo GetNextURL retornar a URL da linha seguinte linha de
intro.asp no arquivo de contedo. No nosso exemplo retornar cap1.asp, que justamente a
prxima pgina do nosso manual. Tambm fizemos uso de duas variveis: primeiro contm o
5 9 5
Captulo 10 Utilizando Componentes do IIS
valor 1 para fazer referncia primeira URL do arquivo de contedo, e ultimo contm o valor
retornado pelo mtodo GetListCount, que o ndice da ltima URL.
Outro detalhe importante a observar o caso de estarmos na primeira ou na ltima pgina. Se
estivermos na primeira pgina, o mtodo GetPreviousURL retorna o endereo da ltima pgina.
Se estivermos na ltima pgina, o mtodo GetNextURL retorna o endereo da primeira pgina.
Tambm gostaria de comentar a maneira como foi montado o menu de opes da coluna da
esquerda. Neste caso, utilizamos um lao For, variando de 1 at ltimo, para montar um
menu com links para todas as pginas do arquivo de contedo.
Voc pode estar se perguntando: Por que utilizar o componente Content Link, se poderia ter
criado todos estes links manualmente?
A resposta simples. O componente Content Link facilita a nossa vida quando precisamos
inserir ou excluir pginas que no esto no incio ou no fim do contedo. Vamos supor que
precisssemos inserir uma nova pgina cap3.asp, de tal forma que a cap3.asp antiga passasse a
ser cap4.asp, a cap4.asp antiga passasse a ser cap5.asp, e assim por diante. Se tivssemos criado
os links manualmente, teramos que revisar todas as pginas e alter-los. Se estivermos utilizando
o componente Content Link, a nica coisa que precisa ser feita alterar o arquivo de contedo,
inserindo a nova pgina na posio correta e renomear as demais, conforme indicado a seguir:
intro.asp Introduo Pgina inicial do manual e introduo
cap1.asp Captulo 1 Captulo 1 do Manual
cap2.asp Captulo 2 Captulo 2 do Manual
cap3.asp Captulo 3 Captulo 3 do Manual
cap4.asp Captulo 4 Captulo 4 do Manual
cap5.asp Captulo 5 Captulo 5 do Manual
cap6.asp Captulo 6 Captulo 6 do Manual
e todos os links sero, automaticamente, recalculados.
Pode parecer que no vantagem utilizar o componente Content Link quando utilizamos um
nmero pequeno de pginas, porm quando o nmero de pginas comea a crescer (eu diria
cinco ou mais pginas) para uma determinada documentao, o componente Content Link
um auxiliar valioso.
Na Figura 10.8, vemos o resultado quando o usurio carrega a pgina cap4.asp.
Criando Sites Dinmicos com ASP 3.0
5 9 6
Figura 1 0.8: A pgina cap4 . asp.
Se voc posicionar o mouse sobre os links, sem clicar, ver que os mesmos foram
automaticamente recalculados. Por exemplo, o link [Prxima] aponta para cap5.asp, o link
[Anterior] aponta para cap3.asp e assim por diante.
As outras pginas do nosso manual somente iro diferir da pgina intro.asp no contedo que
apresentam. Para isto basta inserir o contedo especfico de cada pgina, a partir do seguinte pargrafo:
35 <P>Aqui colocaramos o contedo da Introduo.</P>
Com isso encerramos o estudo do componente Content Link.
O Component e Ad Rot at or
O componente Ad Rotator permite que uma pgina ASP exiba um grfico diferente a cada vez
em que carregada. Sempre que um usurio abre ou recarrega a pgina da Web, o componente
Ad Rotator exibe um novo anncio baseado nas informaes especificadas em um arquivo de
texto, conhecido como Arquivo de Programao de Rotatria. Neste arquivo esto as diversas
informaes necessrias para que o componente funcione corretamente.
5 9 7
Captulo 10 Utilizando Componentes do IIS
Este componente normalmente utilizado para exibir imagens animadas que funcionam como
anncios e propaganda. Cada vez que o usurio carrega a pgina exibido um anncio diferente.
Alm disso, possvel registrar quantos usurios clicam em cada anncio definindo o parmetro
URL no Arquivo de Programao de Rotatria para redirecionar os usurios para uma
determinada pgina, quando o usurio clicar no anncio. Quando especificamos esse parmetro,
cada salto para a URL de um anunciante registrado nos logs de atividade do servidor Web.
No Arquivo de Programao de Rotatria tambm podemos configurar uma determinada
freqncia para cada um dos anncios, de tal maneira que um anncio aparea um nmero
maior de vezes do que os outros. Desta forma estaramos priorizando um ou mais anncios
em detrimento de outros.
Para utilizar este componente necessitamos dos seguintes arquivos:
adrot.dll: Este o arquivo onde est implementada a funcionalidade do componente.
Este arquivo encontra-se, normalmente, na pasta \winnt\system32\inetsrv, do drive
onde est instalado o Windows 2000.
Arquivo de Programao da Rotatria: Um arquivo de texto que contm informaes
sobre o arquivo e a programao de exibio de anncios, tais como quais os anncios
que sero exibidos e qual o percentual de vezes, em relao ao total, que cada um
deve ser exibido. Esse arquivo deve estar disponvel em um caminho virtual do
servidor da Web.
Arquivo de Redirecionamento: Um arquivo opcional que implementa o redirecio-
namento e permite que o componente Rotatria de anncios registre quantos usurios
clicam em cada anncio.
Para criar um objeto do tipo Ad Rotator, podemos utilizar a seguinte sintaxe:
Set nome_objeto = Server.CreateObject( MSWC.AdRotator )
onde MSWC.AdRotator o nome com o qual o componente Ad Rotator foi registrado no
servidor onde est instalado o IIS.
Agora vamos conhecer um pouco mais sobre o Arquivo de Programao da Rotatria e o
Arquivo de Redirecionamento.
O Ar quivo de Pr ogr amao da Rot at r ia
O Arquivo de Programao de Rotatria contm informaes que o componente Ad Rotator
usa para gerenciar e exibir as vrias imagens de anncios. Podemos especificar os detalhes
dos anncios, como o tamanho do espao do anncio, arquivos de imagem a serem usados e
porcentagem de tempo de exibio de cada arquivo.
Criando Sites Dinmicos com ASP 3.0
5 9 8
O Arquivo de Programao de Rotatria tem duas sees. A primeira seo define parmetros
que se aplicam a todas as imagens de anncios na programao de rotao. A segunda seo
especifica as informaes sobre o arquivo e a localizao de cada anncio individual e a
porcentagem de tempo de exibio que cada anncio deve receber. As duas sees so
separadas por uma linha que contm somente um asterisco (*).
Na primeira seo existem quatro parmetros globais, cada um consistindo em uma palavra-
chave e um valor. Todos eles so opcionais. Se voc no especificar valores para os parmetros
globais, o componente Ad Rotator usar os valores padro. Nesse caso, a primeira linha do
arquivo deve conter somente um asterisco (*).
Sintaxe
[REDIRECT URL]
[WIDTH Largura]
[HEIGHT Altura]
[BORDER Borda]
*
URL_anncio
URL_home_page_anncio
Texto
impresses
Vamos entender o que significa cada um destes parmetros:
URL
Especifica o caminho para o arquivo dynamic link library (.dll, biblioteca de link dinmico)
ou de aplicativo (.asp) que implementa o redirecionamento. Esse caminho pode ser
especificado por completo (http://MyServer/MyDir/redirect.asp) ou em relao ao diretrio
virtual (/MyDir/redirect.asp).
Lar gur a
Especifica a largura do anncio na pgina, em pixels. O padro so 440 pixels.
Alt ur a
Especifica a altura do anncio na pgina, em pixels. O padro so 60 pixels.
5 9 9
Captulo 10 Utilizando Componentes do IIS
Bor da
Especifica a espessura da borda do link em torno do anncio, em pixels. O padro uma
borda de 1 pixel. Defina esse parmetro para 0 para um link sem borda.
Estes quatro primeiros parmetros so opcionais e caso sejam definidos tm efeitos sobre
todos os anncios a serem exibidos. Caso um ou mais destes parmetros no seja definido,
sero utilizados os valores padro. Mesmo que nenhum destes parmetros seja definido,
devemos colocar o * em uma linha, antes de iniciarmos a segunda seo do documento.
A partir de agora veremos os parmetros para a segunda seo do documento, aps a linha
com *. Estes parmetros definem cada um dos anncios a serem exibidos, individualmente.
URL_ anncio
A localizao do arquivo de imagem do anncio. Por exemplo: images/anuncio1.gif.
URL_ home_ page_ anncio
A localizao da home page do anncio, isto , a pgina que ser carregada se o usurio clicar
no anncio. Se o anncio no tiver uma home page, coloque um hfen (-) nessa linha para
indicar que no existe qualquer link para esse anncio.
Text o
Um texto alternativo exibido se o navegador no oferecer suporte a elementos grficos ou se
seus recursos grficos estiverem desativados.
Impr esses
Um nmero entre 0 e 10000 que indica a densidade relativa do anncio.
Por exemplo, se um Arquivo de Programao de Rotatria contm trs anncios com o parmetro
impresses definido para 2, 3 e 5, o primeiro anncio ser exibido durante 20 % do tempo, o
segundo, durante 30 % do tempo e o terceiro, durante 50 % do tempo. Se a soma dos parmetros de
impresso de todos os itens exceder 10000, ser gerado um erro na primeira vez que o Arquivo de
Programao de Rotatria for acessado por uma chamada do mtodo GetAdvertisement.
Criando Sites Dinmicos com ASP 3.0
6 0 0
Exemplo
O script a seguir demonstra como voc pode usar um Arquivo de Programao de Rotatria
para exibir vrios anncios e como incluir um arquivo de redirecionamento.
Capitulo10\rotatoria.txt
WIDTH 236
HEIGHT 56
BORDER 4
*
/capitulo10/imagens/anuncio1.gif
-
Pgina do Anunciante 1
20
/capitulo10/imagens/anuncio2.gif
http://servidor/capitulo10/anunciante2.htm
Pgina do Anunciante 2
30
/capitulo10/imagens/anuncio3.gif
http://servidor/capitulo10/anunciante3.htm
Pgina do Anunciante 3
50
Observe que quando for exibido anuncio1.gif, o mesmo no ser exibido como um link.
O Ar quivo de Redir ecionament o
O Arquivo de Redirecionamento um arquivo criado pelo desenvolvedor da aplicao Web.
Ele inclui geralmente um script para a anlise da seqncia de caracteres da solicitao pelo
objeto Ad Rotator e para o redirecionamento do usurio para a URL associada ao anncio no
qual o usurio clicou.
Voc tambm pode incluir um script no Arquivo de Redirecionamento para contar o nmero
de usurios que clicaram em um anncio especfico e salvar essas informaes em um arquivo
no servidor.
Exemplo
O exemplo a seguir redireciona o usurio para a home page do anncio.
6 0 1
Captulo 10 Utilizando Componentes do IIS
redireciona.asp
<% Response.Redirect(Request.QueryString(url)) %>
Observe que o parmetro URL passado no prprio link quando o usurio clica no anncio.
por isso que estamos utilizando Request.QueryString.
O nome do arquivo de imagem tambm passado como parmetro atravs da URL. Podemos
utilizar este parmetro para calcular o nmero de vezes que cada anncio clicado. No
fragmento de cdigo abaixo temos um exemplo de como calcular quantas vezes foram clicados
cada um dos anncios do nosso exemplo:
anuncio1.gif
anuncio2.gif
anuncio3.gif
Arquivo redireciona.asp que faz a contabilidade de cliques em cada anncio:
<%
Select case Request.QueryString(image)
Case anuncio1.gif
count_anuncio1=count_anuncio1+1
Case anuncio2.gif
count_anuncio2=count_anuncio2+1
Case anuncio3.gif
count_anuncio3=count_anuncio3+1
End Select
Cdigo para salvar o valor do contador para cada anncio no banco de dados
...
Cdigo para redirecionar para a pgina especfica de cada anncio
...
%>
Onde temos Cdigo para salvar o valor do contador para cada anncio no banco de dados,
poderamos estabelecer uma conexo com um banco de dados e salvar o valor de cada contador
no banco de dados, pois aps a pgina de redirecionamento ter sido abandonada, os valores
dos contadores seriam perdidos. Assim, salvando-os no banco de dados, podemos mant-los,
que justamente o objetivo.
Pr opr iedades do Objet o Ad Rot at or
Na Tabela 10.2, temos uma descrio das propriedades do objeto Ad Rotator.
Criando Sites Dinmicos com ASP 3.0
6 0 2
Tabela 10.2 Propriedades do objeto Ad Rotator.
M t odo do Objet o Ad Rot at or
isto mesmo: mtodo do objeto Ad Rotator, j que o mesmo s possui um mtodo, o
GetAdvertisement.
O mtodo GetAdvertisement recupera o prximo anncio do arquivo de programao de
rotatria. Sempre que o script executado, ou quando um usurio abre ou atualiza uma
pgina, o mtodo recupera o prximo anncio programado.
Sintaxe:
GetAdvertisement(arquivo de rotatria)
O nico parmetro para este mtodo especifica o local do arquivo de programao de rotatria
em relao ao diretrio virtual. Por exemplo, se o caminho fsico fosse C:\Inetpub\wwwroot\
Ads\Adrot.txt (no qual wwwroot o diretrio virtual /), voc especificaria o caminho \Ads\
Adrot.txt. No nosso exemplo, temos a pasta Capitulo10 dentro da pasta wwwroot, a qual est
localizada em E:\Inetpub\wwwroot\Capitulo10\rotatoria.txt. Vamos especificar \Capitulo10\
rotatoria.txt.
Este mtodo retorna o cdigo HTML que exibe o anncio na pgina atual.
Vamos a um exemplo de utilizao do componente Ad Rotator.
Considere a pgina usaadrotator.asp da Listagem 10.9.
Propriedade Descrio
Border Especifica o tamanho da borda em torno do anncio. Para
definir a borda utilizamos a sintaxe:objeto.border=tamanho.
Onde tamanho especifica a espessura da borda que circunda
o anncio exibido. O padro o valor definido no cabealho
do Arquivo de Programao de Rotatria. Ex: objeto.border = 2.
Clickable Define se o anncio ser ou no um link para uma outra
pgina. Pode ter os valores True ou False. A sintaxe para esta
propriedade a seguinte: objeto.clickable=true ou
objeto.clickable=false.
TargetFrame Esta propriedade especifica o nome do Frame onde deve ser
carregado o anncio. Utilizamos a seguinte sintaxe:
objeto.TargetFrame=nome_do_frame.
6 0 3
Captulo 10 Utilizando Componentes do IIS
Listagem 10.9 Utilizando o componente Ad Rotator usaadrotator.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <BODY>
6 <%
7 Cria um objeto do tipo AdRotator
8 Set conteudo=Server.CreateObject(MSWC.AdRotator)
9 conteudo.Clickable = True
10 %>
11 <HR>
12 <P>Clique no Banner abaixo:</P>
13 <HR>
14 <% =conteudo.GetAdvertisement(/Capitulo10/rotatoria.txt)
15 %>
16 <HR>
17 <P> Contedo da Pgina.</P>
18 </BODY>
19 </HTML>
Na Figura 10.9, vemos o resultado quando o usurio carrega a pgina usaadrotator.asp.
Se o usurio atualizar a pgina, ser carregado um anncio diferente, conforme indicado na
Figura 10.10.
Os anncios sero carregados na proporo definida no arquivo rotatoria.txt que a seguinte:
anuncio1.gif 20%
anuncio2.gif 30%
anuncio3.gif 50%
Criando Sites Dinmicos com ASP 3.0
6 0 4
Figura 1 0.9: A pgina usaadr ot at or. asp.
Figura 1 0.1 0: Ao car r egar a pgina foi exibido um annicio difer ent e.
Assim, em metade das vezes que a pgina for acessada, ser exibido o anncio 3 (50%).
6 0 5
Captulo 10 Utilizando Componentes do IIS
O Component e Page Count er
O componente Page Counter pode ser utilizado para contar quantas vezes uma determinada
pgina acessada pelos usurios. A informao sobre o nmero de acessos salva em um
arquivo de texto, de tal forma que quando o IIS parado por algum motivo, a informao
sobre o nmero de acessos no perdida. O componente Page Counter cria um objeto
PageCounter que conta e exibe o nmero de vezes em que uma pgina da Web foi aberta. A
intervalos regulares, o objeto grava o nmero de acessos em um arquivo de texto para que, no
caso de o servidor desligar, os dados no sejam perdidos. O componente Contador de pgina
usa um objeto Central Management interno para registrar quantas vezes cada pgina do
aplicativo foi aberta.
Quando uma instncia do objeto PageCounter criada em uma pgina pelo mtodo
Server.CreateObject, o objeto recupera a contagem atual de acessos pgina da Web
especificada do objeto Central Management. Em seguida, o objeto pode ser manipulado com
os mtodos que expe.
O componente Contador de pgina usa os seguintes arquivos:
Pagecnt.dll: Este o arquivo onde est implementada a funcionalidade do componente.
Este arquivo encontra-se, normalmente, na pasta \winnt\system32\inetsrv, do drive
onde est instalado o Windows 2000.
Arquivo Hit Count Data: Este um arquivo de texto, onde periodicamente so salvas
as informaes sobre o nmero de acessos pgina. Este arquivo gerenciado pelo
objeto Central Management, no sendo recomendada a edio desse arquivo, pois erros
na formatao do mesmo no permitiro que o objeto PageCounter carregue apropriada-
mente as informaes de contagem de acessos.
Para criar um objeto Page Counter, utilizamos a seguinte sintaxe:
Set nome_objeto = Server.CreateObject( MSWC.PageCounter )
onde nome_objeto especifica o nome do objeto PageCounter criado pela chamada do
Server.CreateObject.
O componente Contador de pgina cria entradas na Registry do Windows 2000. Ele adiciona
a chave MSWC.PageCounter ao registro quando o objeto compilado ou registrado. A chave
adicionada abaixo de HKEY_CLASSES_ROOT e contm os seguintes valores nomeados:
File_Location: Uma seqncia de caracteres que especifica o caminho e o nome do
arquivo Hit Count Data. O nome de arquivo padro Hitcnt.cnt. Esse arquivo est
localizado em diretrio \winnt\system32\inetsrv\Data. O ideal deixar que o prprio
IIS gerencie este arquivo.
Criando Sites Dinmicos com ASP 3.0
6 0 6
Save_Count: Um parmetro, do tipo DWORD, que especifica o nmero de acessos antes
que a contagem de acessos seja salva no arquivo Hit Count Data. Observe que esse nmero
o nmero total de acessos, no o nmero de acessos por pgina. O valor padro 25.
Abaixo temos um exemplo de criao de um objeto do tipo Page Counter:
<%
Set contador = Server.CreateObject(MSWC.PageCounter)
%>
Antes de apresentarmos um exemplo prtico de utilizao deste componente, vamos aprender
a utilizar os mtodos do mesmo.
Os M t odos do Component e Page Count er
A seguir temos uma descrio dos mtodos do objeto Page Counter.
Mtodo Hits: O mtodo Hits retorna o nmero de vezes, que uma pgina da Web
especificada, foi aberta.
Utilizamos a seguinte sintaxe:
nome_objecto.Hits( [Info_caminho] )
Considere o exemplo:
contador.Hits(/capitulo10/anuncio1.asp)
Onde: Info_caminho um parmetro opcional que especifica o PATH_INFO da pgina da
Web usando o formato /nome_do_diretrio_virtual/nome_do_arquivo.asp. Se esse parmetro
no for especificado, a contagem de acessos para a pgina atual ser exibida.
NOTA
O mtodo Hits retorna um nmero do tipo LONG que indica o nmero de vezes que uma
pgina da Web especfica foi aberta.
PageHit: O mtodo PageHit incrementa em 1 a contagem de acessos pgina da Web atual.
Utilizamos a seguinte sintaxe:
nome_objeto.PageHit( )
Considere o exemplo:
contador.PageHit( )
Reset: O mtodo Reset define a contagem de acessos uma pgina da Web
especificada para 0.
6 0 7
Captulo 10 Utilizando Componentes do IIS
Utilizamos a seguinte sintaxe:
nome_objeto.Reset([Info_caminho])
Veja o exemplo:
contador.Reset(/capitulo10/anuncio1.asp)
Onde: Info_caminho um parmetro opcional que especifica o PATH_INFO da pgina da
Web usando o formato /nome_do_diretrio_virtual/nome_do_arquivo.asp. Se esse parmetro
no for especificado, a contagem de acessos para a pgina atual ser redefinida.
Vamos a um exemplo de utilizao do componente Page Counter.
Considere a pgina usapagecounter.asp da Listagem 10.10.
Listagem 10.10 Utilizando o componente Page Counter usapagecounter.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 <TITLE>Pgina que usa o componente Page Counter.</TITLE>
5 </HEAD>
6 <BODY>
7 <HR>
8 <FONT color=#000080 size=6><B>Pgina da empresa ABC:</B></FONT>
9 <%
10 O primeiro passo criar o objeto Page Counter.
11 Set contador=Server.CreateObject(MSWC.PageCounter)
12 %>
13 <FONT color=#000080 size=6><B>Esta pgina j foi acessada:
14 <%
15 contador.PageHit
16 Response.Write contador.Hits
17 %>
18 <%
19 If contador.Hits =1 Then
20 Response.Write Vez
Criando Sites Dinmicos com ASP 3.0
6 0 8
21 Else
22 Response.Write Vezes
23 End If
24 %>
25 </B></FONT>
26 <HR>
27 </BODY>
28 </HTML>
Na primeira vez que esta pgina for acessada, obteremos o resultado indicado na Figura 10.11.
Figura 1 0.1 1 : O pr imeir o acesso pgina usapagecount er. asp.
Na segunda vez que a pgina for acessada o contador j estar em 2, conforme indicado na
Figura 10.12, e assim sucessivamente.
Figura 1 0.1 2: O cont ador incr ement ado a cada acesso pgina.
6 0 9
Captulo 10 Utilizando Componentes do IIS
Na Figura 10.13, temos uma noo do arquivo hitcnt.cnt onde so armazenadas as informaes
sobre o nmero de acessos.
Figura 1 0.1 3: O ar quivo \winnt \syst em3 2 \inet sr v\Dat a\hit cnt . cnt .
O Component e Br owser Capabilit ies Capacidades do Navegador
Um dos maiores problemas do desenvolvimento para a Web foi, e continua sendo, as
diferenas entre os principais navegadores do mercado, notadamente o Internet Explorer e
o Netscape Navigator.
Diferente do ambiente Cliente/Servidor tradicional, onde podemos controlar o aplicativo que
ser instalado na mquina de cada cliente, quando desenvolvemos para a Internet no podemos
exigir que o usurio esteja utilizando um navegador especfico. Claro que invivel desenvolver
levando em considerao todos os navegadores existentes, porm, no mnimo precisamos
criar aplicaes Web que rodem sem problemas no Internet Explorer e no Netscape Navigator.
Porm esta, realmente, no uma tarefa simples. Apenas para ter uma idia das dificuldades:
Os Modelos de Objetos do Internet Explorer e do Netscape Navigator so diferentes.
Existem, tambm, diferenas na implementao de DHTML e Java Script, que no Internet
Explorer era conhecido como JScript, agora foi definido um padro conhecido com
ECMA Script, na tentativa de unificar a implementao dos dois principais navegadores.
A maneira como as tags so interpretadas no exatamente a mesma, podendo existir
diferenas na apresentao das pginas.
Isto significa que o desenvolvimento Web para a Internet uma misso quase impossvel? De
maneira alguma, esta a o sucesso da Internet e dos sites de Comrcio Eletrnico para
comprovar que o modelo Web j se estabeleceu e s tende a crescer.
Para procurar resolver os problemas de compatibilidade entre os navegadores que foi
desenvolvido o componente Browser Capabilities. Com ele podemos detectar as diversas
Criando Sites Dinmicos com ASP 3.0
6 1 0
capacidades do navegador do cliente, e com base nestas capacidades, carregar uma ou outra
verso da pgina, especfica para cada caso.
O componente Browser Capabilities cria um objeto do tipo BrowserType, o qual disponibiliza
para o script, uma descrio dos recursos do navegador da Web do cliente.
Quando um navegador se conecta com o servidor Web, ele envia automaticamente um
cabealho Agente de usurio do HTTP. Esse cabealho uma seqncia de caracteres ASCII
que identifica o navegador e seu nmero de verso. O objeto BrowserType compara o cabealho
com entradas no arquivo Browscap.ini.
Se ele encontrar uma correspondncia, o objeto BrowserType assumir as propriedades da
listagem do navegador que correspondeu ao cabealho Agente de usurio.
Se o objeto no encontrar uma correspondncia para o cabealho no arquivo browscap.ini,
ele procurar a correspondncia mais prxima usando os curingas * e ?. Se no for possvel
encontrar uma correspondncia usando os curingas, o objeto usar as configuraes do
navegador padro, se elas tiverem sido especificadas no arquivo browscap.ini. Se o objeto
no encontrar uma correspondncia e as configuraes do navegador padro no tiverem
sido especificadas no arquivo browscap.ini, o objeto definir todas as propriedades para a
seqncia de caracteres UNKNOWN.
Voc pode adicionar propriedades ou novas definies de navegador a esse componente
simplesmente atualizando o arquivo browscap.ini.
O componente Browser Capabilities usa os seguintes arquivos:
Browscap.dll: Este o arquivo onde est implementada a funcionalidade do
componente. Este arquivo encontra-se, normalmente, na pasta \winnt\system32\inetsrv,
do drive onde est instalado o Windows 2000.
Browscap.ini: um arquivo de texto que mapeia os recursos do navegador para o
cabealho Agente de usurio do HTTP. Esse arquivo deve estar no mesmo diretrio
que o arquivo Browscap.dll.
Utilizamos a seguinte sintaxe para criar um objeto do tipo BrowserType:
Set nome_objeto = Server.CreateObject(MSWC.BrowserType)
Onde temos:
nome_objeto: Especifica o nome do objeto BrowserType criado pela chamada do
Server.CreateObject.
MSWC.BrowserType: o nome pelo qual o componente identificado no servidor IIS.
6 1 1
Captulo 10 Utilizando Componentes do IIS
Na Listagem 10.11, temos um pequeno exemplo retirado do Help do IIS, onde so detectadas
algumas capacidades do navegador.
Listagem 10.11 Utilizando o componente Browser Capabilities capacidades.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <BODY>
6 <% Set bc = Server.CreateObject(MSWC.BrowserType) %>
7 <TABLE BORDER=1>
8 <TR>
9 <TD>Browser</TD>
10 <TD> <%= bc.browser %> </TD>
11 <TR>
12 <TD>Version</TD>
13 <TD> <%= bc.version %> </TD>
14 </TR>
15 <TR>
16 <TD>Frames</TD>
17 <TD>
18 <% if (bc.frames = TRUE) then %> TRUE
19 <% else %> FALSE
20 <% end if %>
<TD>
21 </TR>
22 <TR>
23 <TD>Tables</TD>
24 <TD>
25 <% if (bc.tables = TRUE) then %> TRUE
26 <% else %> FALSE
27 <% end if %>
28 </TD>
29 </TR>
Criando Sites Dinmicos com ASP 3.0
6 1 2
30 <TR>
31 <TD>BackgroundSounds</TD>
32 <TD>
33 <% if (bc.BackgroundSounds = TRUE) then %> TRUE
34 <% else %> FALSE
35 <% end if %> </TD>
36 </TR>
37 <TR>
38 <TD>VBScript</TD>
39 <TD>
40 <% if (bc.vbscript = TRUE) then %> TRUE
41 <% else %> FALSE
42 <% end if %>
43 </TD>
44 </TR>
45 <TR>
46 <TD>JScript</TD>
47 <TD>
48 <% if (bc.javascript = TRUE) then %> TRUE
49 <% else %> FALSE
50 <% end if %>
51 </TD>
52 </TR>
53 </TABLE>
54 </BODY>
55 </HTML>
Ao carregarmos este exemplo no Internet Explorer, obtemos o resultado indicado na Figura 10.14.
Ao carregarmos este mesmo exemplo no Nestcape Navigator, obtemos o resultado indicado
na Figura 10.15.
6 1 3
Captulo 10 Utilizando Componentes do IIS
Figura 1 0.1 4: O ar quivo capacidades. asp car r egado no Int er net Explor er.
Conforme podemos observar na Listagem 10.11, utilizamos uma srie de propriedades do
objeto Browser Capabilities. Na Tabela 10.3 temos uma descrio das propriedades do objeto
Browser Capabilities.
Figura 1 0.1 5: O ar quivo capacidades. asp car r egado no Net scape Navigat or.
Criando Sites Dinmicos com ASP 3.0
6 1 4
Tabela 10.3 Propriedades do objeto Browser Capabilities.
Propriedade Descrio
ActiveXControls Retorna True se o navegador suporta controles
ActiveX.
Backgroundsounds Retorna True se o navegador suporta sons de
fundo.
Beta Retorna True se o navegador for uma verso Beta.
Browser Retorna o nome do navegador.
Cookies Retorna True se o navegador suporta Cookies.
Frames Retorna True se o navegador suporta Frames.
JScript Retorna True se o navegador suporta JScript.
Plataform Especifica a plataforma (Sistema Operacional),
no qual roda o navegador.
Tables Retorna True se o navegador suporta Tabelas.
VBScript Retorna True se o navegador suporta VBScript.
Version Retorna a verso do navegador.
Como um exemplo final, podemos utilizar este componente para detectar se o navegador o
Internet Explorer ou o Netscape e, com base nesta informao, redirecionar o usurio para
uma pgina desenvolvida especificamente para cada um dos navegadores.
Na Listagem 10.12, temos este exemplo.
Listagem 10.12 Utilizando o componente Browser Capabilities para redirecionar o usurio.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <BODY>
6 <% Set bc = Server.CreateObject(MSWC.BrowserType) %>
7 <% If bc.browser=IE Then
8 Response.Redirect(paginaie.asp)
6 1 5
Captulo 10 Utilizando Componentes do IIS
9 ElseIf bc.browser=Default Then
10 Response.Redirect(paginanetscape.asp)
11 Else
12 Response.Redirect(outros.asp)
13 End If
14 %>
15 </BODY>
16 </HTML>
Ao carregarmos esta pgina no Internet Explorer, o servidor redireciona o usurio para a
pgina paginaie.asp. Na prtica, ser carregada a pgina paginaie.asp. Com isso a pgina
pode ser desenvolvida para utilizar quaisquer recursos do Internet Explorer.
Ao carregarmos esta pgina no Netscape Navigator, o servidor redireciona o usurio para a
pgina paginanetscape.asp. Na prtica, ser carregada a pgina paginanetscape.asp. Com isso
a pgina pode ser desenvolvida para utilizar quaisquer recursos do Netscape Navigator.
Ao carregarmos esta pgina em qualquer outro navegador, o servidor redireciona o usurio
para a pgina outros.asp. Na prtica, ser carregada a pgina outros.asp. Portanto, a pgina
dever ser desenvolvida utilizando somente elementos que so padro e comuns maioria
dos navegadores.
Concluso
Neste captulo estudamos, detalhadamente, alguns componentes importantes na criao de
aplicativos Web, utilizando ASP e o IIS.
Iniciamos o captulo por um estudo completo do objeto Server. Vimos todos os mtodos e a
nica propriedade deste objeto. Depois, foi apresentado um exemplo prtico, o qual soluciona
um problema bastante comum na criao de aplicaes Web: como tornar o nome de um
usurio ou produto em um link, para o registro do funcionrio ou produto no banco de dados.
Com a utilizao dos mtodos do objeto Server foi simples a soluo deste problema.
Depois, passamos a estudar uma srie de componentes do IIS. Estudamos em detalhes, cada
um dos seguintes componentes:
Content Link.
Ad Rotator.
Page Counter.
Browser Capabilities.
Criando Sites Dinmicos com ASP 3.0
6 1 6
Para cada um destes componentes foram apresentados exemplos completos, que ilustraram a
utilizao e as capacidades dos mesmos.
No prximo captulo estaremos tratando de alguns tpicos avanados na criao de aplicaes
Web com ASP. At l ento.
6 1 7
Captulo 11 Os Objetos FileSystemObject, Drive, Folder e File
Capt ul o 11
Os Objetos FileSystemObject,
Drive, Folder e File
Criando Sites Dinmicos com ASP 3.0
6 1 8
Int r oduo
Iniciaremos o captulo por um estudo detalhado do objeto FileSystemObject. Este objeto nos
fornece uma srie de recursos para acesso ao sistema de arquivos do servidor, atravs de
nossas pginas ASP.
Veremos uma srie de mtodos e uma propriedade que fazem parte deste objeto. Com a
utilizao do objeto FileSystemObject podemos criar pginas ASP para execuo de funes
administrativas, como por exemplo:
Verificao do espao disponvel em disco e unidades da rede.
Efetuar cpia de segurana entre unidades de disco.
Verificar se determinadas unidades, como gravador de CD ou ZIP Drive, esto
disponveis para uso.
Fazer um levantamento do espao utilizado em cada drive do sistema.
O objeto FileSystemObject , com certeza, um dos que oferece o maior nmero de mtodos.
Vamos estudar todos, detalhadamente. Tambm estudaremos alguns objetos derivados do
objeto FileSystemObject. Vamos estudar o objeto Drive e suas diversas propriedades. Um
pequeno exemplo de utilizao destas propriedades ser apresentado. Vamos estudar tambm
os objetos Folder e File suas diversas propriedades e mtodos. Um pequeno exemplo de
utilizao das propriedades de cada objeto ser apresentado.
No final do captulo, apresentaremos um exemplo prtico que utiliza os diversos objetos que
foram mostrados neste captulo.
O Objet o FileSyst emObject
O objeto FileSystemObject nos fornece uma srie de recursos para acesso ao sistema de arquivos
do servidor, atravs de nossas pginas ASP. Com os recursos oferecidos por este objeto, podemos
manipular arquivos de texto, pastas e drives a partir do cdigo ASP.
Para criarmos um objeto do tipo FileSystemObject, podemos utilizar a seguinte sintaxe:
Set nome_objeto = Server.CreateObject(Scripting.FileSystemObject)
Por exemplo, podemos criar um objeto chamado fileobj:
Set fileobj = Server.CreateObject(Scripting.FileSystemObject)
Agora vamos passar ao estudo da propriedade e dos mtodos deste objeto.
6 1 9
Captulo 11 Os Objetos FileSystemObject, Drive, Folder e File
Pr opr iedade do Objet o FileSyst emObject
Temos uma nica propriedade que a propriedade Drives, a qual retorna todos os drives
disponveis no servidor IIS onde a pgina est gravada, inclusive drives de rede mapeados.
Considere o prximo fragmento de cdigo:
<%
O primeiro passo a criao do objeto FileSystemObject.
Set fileobj=Server.CreateObject(Scripting.FileSystemObject)
For each drive in fileobj.Drives
Response.Write drive & <BR>
Next
%>
Este fragmento produz a sada indicada na Figura 11.1:
Figura 1 1 .1 : Result ado pr oduzido pelo uso da pr opr iedade Dr ives.
Agora vamos passar ao estudo dos mtodos do objeto FileSystemObject.
Criando Sites Dinmicos com ASP 3.0
6 2 0
M t odos do Objet o FileSyst emObject
Este objeto apresenta uma srie de mtodos, os quais facilitam o trabalho com drives, pastas
e arquivos. Por isso iremos dividir a apresentao dos mtodos, conforme os mesmos se
destinam: ao trabalho com drives, pastas ou arquivos.
M t odos do Objet o FileSyst emObject Par a Tr abalho com Dr ives
Temos trs mtodos para tratar com drives:
O mtodo DriveExist: Este mtodo retorna True se o drive passado como parmetro
existe e False caso contrrio. O parmetro passado para este mtodo pode ser uma letra
de drive (inclusive de um drive mapeado), uma String de texto ou o caminho completo
para uma pasta ou arquivo.
Para drives de dispositivos removveis, como um CD-ROM ou um ZIP Drive, este mtodo
retorna True, mesmo que no exista uma mdia no drive.
NOTA
Podemos utilizar a propriedade IsReady do objeto Drive para determinar se o mesmo est
pronto para ser acessado. No exemplo do CD-ROM, podemos utilizar a propriedade IsReady
para determinar se existe ou no um CD-ROM no drive de CD. Aprenderemos a utilizar a
propriedade IsReady quando estudarmos o objeto Drive mais adiante neste captulo.
A seguir temos um exemplo de utilizao deste mtodo:
<%
Set fileobj = CreateObject(Scripting.FileSystemObject)
If fileobj.DriveExists(X:) Then
Response.Write Drive X: Existe !!
Else
Response.Write Drive X: No Existe !!
End If
%>
O mtodo GetDrive: Este mtodo retorna um objeto do tipo Drive, correspondente ao
caminho passado como parmetro. Podemos passar como parmetro a identificao
de um drive, como por exemplo: d, d:, d:\ ou um caminho para um drive da rede,
no tradicional formato \\nome_do_computador\nome_do_compartilhamento.
6 2 1
Captulo 11 Os Objetos FileSystemObject, Drive, Folder e File
NOTA
Estudaremos o objeto Drive mais adiante neste captulo.
A seguir temos um exemplo de utilizao deste mtodo:
<%
Set drive = fileobj.GetDrive(E:)
Agora vamos calcular o espao livre no drive E:
espaco=(drive.freespace)/(1024*1024)
Response.Write Espao livre em E: & FormatNumber(espaco,0) & MB
%>
Neste exemplo utilizamos a propriedade freespace do objeto Drive e a dividimos duas vezes
por 1024 para obter o espao livre em MB. Depois utilizamos a funo FormatNumber, para
exibir o valor obtido sem as casas decimais. O resultado deste trecho de cdigo algo do tipo:
Espao livre em E: 1.070 MB
O mtodo GetDriveName: Este mtodo retorna o nome do drive que foi passado como
parmetro.
A seguir temos um exemplo de utilizao deste mtodo.
<%
O primeiro passo a criao do objeto FileSystemObject.
Set fileobj=Server.CreateObject(Scripting.FileSystemObject)
For each drive in fileobj.Drives
Response.Write drive & <BR>
Response.Write Nome do drive: & fileobj.GetDriveName(drive) & <BR>
Next
%>
Com isso encerramos o estudo dos mtodos para tratamento de drives.
M t odos do Objet o FileSyst emObject Par a Tr abalho com Past as
Temos dez mtodos para tratar com pastas.
Mtodo BuildPath(caminho,nome): Este mtodo adiciona o arquivo ou pasta
especificado no parmetro nome pasta especificada no parmetro caminho. Caso
seja necessrio, o mtodo adiciona o separador de pastas \.
Criando Sites Dinmicos com ASP 3.0
6 2 2
Considere o seguinte exemplo:
<%
Set fileobj=Server.CreateObject(Scripting.FileSystemObject)
novapasta = fileobj.BuildPath(C:\,pasta123")
Response.Write novapasta
%>
Este fragmento produz a seguinte sada: C:\pasta123.
importante observar que a pasta C:\pasta123 no ser criada pela utilizao deste mtodo.
Apenas estamos atribuindo varivel novapasta, o caminho C:\pasta123. Para criar uma nova
pasta, podemos utilizar o mtodo CreateFolder, que veremos logo adiante.
O mtodo CopyFolder fonte,destino,substituir: Copia uma ou mais pastas
especificadas no parmetro fonte. Podemos copiar mais do que um pasta, pois podemos
utilizar caracteres curinga, como por exemplo C:\documentos\*. As pastas de origem
so copiadas para a pasta especificada pelo parmetro destino. Todos os arquivos
contidos nas pastas de origem sero copiados para o destino. O parmetro substituir
opcional. Ele pode conter os valores True ou False. Este parmetro especifica se arquivos
j existentes no destino devem ou no ser sobrescritos. Se a pasta de destino j existe
e o parmetro substituir definido em Falso, ir ocorrer um erro. O valor padro para
o parmetro substituir True.
IMPORTANTE
Somente podemos utilizar caracteres curinga na parte final do caminho. Considere o seguinte
exemplo:
FileSystemObject.CopyFolder C:\mydocuments\letters\*, C:\tempfolder\
Porm o prximo exemplo est incorreto:
FileSystemObject.CopyFolder C:\mydocuments\*\*, C:\tempfolder\
Se a pasta de destino ainda no existe, ser criada, e a pasta de origem e todo o seu contedo
sero copiados.
Se o parmetro de destino for o nome de um arquivo existente, ocorrer um erro.
Se o destino for o nome de uma pasta, o mtodo tentar copiar a pasta de origem e todo o seu
contedo para a pasta de destino. Se um arquivo que est sendo copiado j existir na pasta de
destino e o parmetro substituir estiver definido como False, ir ocorrer um erro. Caso contrrio,
o arquivo do diretrio de origem ser copiado sobre o arquivo do diretrio de destino.
6 2 3
Captulo 11 Os Objetos FileSystemObject, Drive, Folder e File
O mtodo CopyFolder pra na ocorrncia do primeiro erro. Nenhuma tentativa de reverter as
alteraes que j foram feitas ser efetuada, isto , os arquivos que foram copiados antes da
ocorrncia do erro no sero eliminados da pasta de destino.
Considere o seguinte exemplo:
fileobj.CopyFolder C:\meus documentos,C:\teste
Esta linha de cdigo ir copiar todo o contedo da pasta C:\meus documentos para a pasta
C:\teste. Caso a pasta C:\teste no exista, a mesma ser automaticamente criada antes que a
cpia seja efetuada.
O mtodo CreateFolder(nomepasta): Este mtodo cria uma pasta de acordo com o
parmetro que foi passado para o mesmo. Caso a pasta j exista, ser gerado um erro.
O exemplo a seguir, cria uma pasta chamada C:\teste123:
fileobj.CreateFolder(C:\teste123)
Caso a pasta j exista obteremos a mensagem de erro indicada na Figura 11.2.
Figura 1 1 .2: Er r o ger ado pelo mt odo Cr eat eFolder quando a past a j exist e.
O mtodo DeleteFolder(pastaname,force): Este mtodo elimina a pasta especificada no
parmetro pastaname e todo o seu contedo. O parmetro force pode ser True ou
False. Este parmetro determina se o contedo de uma pasta, que possui o atributo de
somente leitura, para ser deletado ou no. O valor padro False.
Criando Sites Dinmicos com ASP 3.0
6 2 4
Ser gerado um erro se a pasta especificada pelo parmetro pastaname no for encontrada.
Este mtodo encerra a sua execuo na ocorrncia do primeiro erro, sendo que as alteraes
que j foram feitas no sero desfeitas.
Considere o exemplo:
fileobj.DeleteFolder(C:\teste123)
Este comando elimina a pasta C:\teste123.
Caso a pasta a ser eliminada no exista, obteremos a mensagem de erro indicada na Figura 11.3.
Figura 1 1 .3: Er r o ger ado pelo mt odo Delet eFolder quando a past a no exist e.
O mtodo FolderExists(nomepasta): Este mtodo retorna True se a pasta passada como
parmetro existe e False caso contrrio. O parmetro nomepasta pode conter um
caminho absoluto ou relativo.
Considere o exemplo abaixo:
<%
Set fileobj=Server.CreateObject(Scripting.FileSystemObject)
For each drive in fileobj.Drives
6 2 5
Captulo 11 Os Objetos FileSystemObject, Drive, Folder e File
Response.Write drive & <BR>
caminho=fileobj.BuildPath(drive,\meus documentos)
If fileobj.FolderExists(caminho) then
Response.Write <B>Este drive possui a pasta Meus documentos<B> <HR>
Else
Response.Write <B>Este drive no possui a pasta Meus documentos
<B><HR>
End If
Next
%>
Este fragmento produz o resultado indicado na Figura 11.4.
Figura 1 1 .4: Ut ilizando o mt odo Folder Exist s.
O mtodo GetAbsolutePathName(parmetro): Este mtodo recebe como parmetro o
nome de uma pasta ou outra especificao de caminho vlida, e retorna o caminho
completo para esta pasta, tendo como base a pasta atual. Por exemplo, se a pasta atual
Criando Sites Dinmicos com ASP 3.0
6 2 6
for C:\meus documentos e o parmetro passado para este mtodo for cartas, o valor
de retorno ser C:\meus documentos\cartas.
Vamos a mais alguns exemplos para esclarecer o comportamento deste mtodo. Vamos supor
que a pasta atual C:\meus documentos\cartas. Na Tabela 11.1 temos alguns exemplos de
retorno deste mtodo.
Tabela 11.1 Valores de retorno do mtodo GetAbsolutePathName.
O mtodo GetFolder(caminhopasta): Retorna um objeto do tipo Folder, correspondente
pasta que foi passada como parmetro. Ocorrer um erro se a pasta, passada como
parmetro, no existir. Estudaremos o objeto Folder em detalhes ainda neste captulo.
Considere o seguinte exemplo:
<%
O primeiro passo a criao do objeto FileSystemObject.
Set fileobj=Server.CreateObject(Scripting.FileSystemObject)
Set pasta=fileobj.GetFolder(C:\meus documentos)
For each subpasta in pasta.subfolders
Response.Write subpasta & <HR>
Next
%>
O resultado deste fragmento de cdigo indicado na Figura 11.5.
Parmetro Valor de retorno
C: C:\meus documentos\cartas
C:.. C:\meus documentos
C:\\\ C:\
C:*.*\abril96 C:\meus documentos\cartas\*.*\abril96
filial5 C:\meus documentos\cartas\filial5
6 2 7
Captulo 11 Os Objetos FileSystemObject, Drive, Folder e File
Figura 1 1 .5: Ut ilizando o mt odo Get Folder.
Observe que j utilizamos a coleo subfolders do objeto Folder. Conforme citado
anteriormente, estudaremos o objeto Folder em detalhes, ainda neste captulo.
O mtodo GetParentFolderName(pasta): Este mtodo retorna uma String com o nome
da pasta na qual est contido pasta ou arquivo passado como parmetro. Este mtodo
no faz a verificao para saber se a pasta existe ou no. Se a pasta ou arquivo j
estiver na raiz do drive, ser retornada uma String de tamanho zero.
Considere o exemplo:
pastacontem = fileobj.GetParentFolderName(C:\meus documentos\word)
Este comando retorna na varivel pastacontem a String: C:\meus documentos.
O mtodo GetSpecialFolder(folderespvalor): Retorna um objeto do tipo Folder,
correspondente a um dos tipos especiais de pasta do Windows. Os valores possveis
para folderespvalor so os seguintes:
0 Pasta do Windows.
1 Pasta de Sistema.
2 Pasta temporria.
Criando Sites Dinmicos com ASP 3.0
6 2 8
Considere o exemplo a seguir:
<%
O primeiro passo a criao do objeto FileSystemObject.
Set fileobj=Server.CreateObject(Scripting.FileSystemObject)
Set temppasta=fileobj.GetSpecialFolder(2)
%>
Com este fragmento de cdigo, criamos um objeto do tipo Folder, o qual est ligado pasta
temporria do Windows e pode ser acessado pela varivel temppasta.
O mtodo MoveFolder(origem,destino): Move a pasta especificada no parmetro origem,
para a pasta especificada no parmetro destino. Podemos incluir caracteres curinga na
origem, porm no no destino.
Se a origem contm caracteres curinga ou o destino termina com o caractere \, o mtodo
MoveFolder considera que o destino representa o nome de uma pasta j existente, para a qual
deve ser movida a pasta de origem. Caso contrrio o mtodo assume que o parmetro destino
especifica o nome de uma pasta que deve ser criada e para a qual deve ser movido o contedo
da pasta de origem. Em ambos os casos, devemos considerar o seguinte:
1. Se a pasta de destino no existe, a pasta de origem ser movida, sendo que a pasta de
destino ser criada antes, pelo prprio mtodo MoveFolder.
2. Se o parmetro destino for o nome de um arquivo, ser gerado um erro.
3. Se o parmetro destino for o nome de uma pasta que j existe, ser gerado um erro.
O mtodo MoveFolder ser interrompido na ocorrncia do primeiro erro. Quaisquer alteraes
que tenham sido feitas no sero revertidas.
Considere o exemplo:
fileobj.MoveFolder C:\teste1, C:\teste2
Com isso encerramos o estudo dos mtodos para tratamento de Pastas.
M t odos do Objet o FileSyst emObject Par a Tr abalho com Ar quivos
Temos onze mtodos para tratar com arquivos.
Mtodo CopyFile(origem,destino,substituir): Copia um ou mais arquivos especificados
pelo parmetro origem (podemos utilizar caracteres curinga) para a pasta especificada
no parmetro destino.
Se a origem contm caracteres curinga ou o destino termina com o caractere \, o mtodo
CopyFile considera que o destino representa o nome de uma pasta j existente, para a qual
6 2 9
Captulo 11 Os Objetos FileSystemObject, Drive, Folder e File
devem ser copiados os arquivos especificados pelo parmetro origem. Caso contrrio o mtodo
assume que o parmetro destino especifica o nome de um arquivo que deve ser criado. Em
ambos os casos, devemos considerar o seguinte:
1. Se a pasta de destino no existe, os arquivos especificados no parmetro origem sero
copiados, sendo que a pasta de destino ser criada antes, pelo prprio mtodo CopyFile.
2. Se o parmetro destino for o nome de um arquivo que j existe, ser gerado um erro
caso o parmetro substituir esteja definido como False; caso contrrio o arquivo existente
ser substitudo.
3. Se o parmetro destino for o nome de uma pasta, ser gerado um erro.
O mtodo CopyFile ser interrompido na ocorrncia do primeiro erro. Quaisquer alteraes
que tenham sido feitas no sero revertidas.
A seguir temos um exemplo de utilizao do mtodo CopyFile:
FileSystemObject.CopyFile c:\meus documentos\oficios\*.doc, e:\copia de segurana\
oficios\
O mtodo CreateTextFile(nomearquivo,substituir,unicode): Este mtodo cria o arquivo
de texto especificado pelo parmetro nomearquivo e retorna um objeto do tipo
TextStream, o qual pode ser utilizado para gravar informaes no arquivo e ler
informaes do arquivo.
O parmetro substituir pode assumir os valores True ou False. Quando este parmetro tiver o
valor True, se o arquivo j existir, o mesmo ser eliminado e um novo arquivo ser criado. O
padro para o parmetro substituir False. Este parmetro opcional.
O parmetro unicode pode assumir os valores True ou False. Se este parmetro tiver o valor
True, o texto ser salvo com caracteres unicode, os quais utilizam 2 bytes por caractere, ao
invs de 1 byte por caractere como o caso do padro ASCII. O valor padro para o parmetro
unicode False. Este parmetro opcional.
Considere o exemplo a seguir:
<%
Set fileobj=Server.CreateObject(Scripting.FileSystemObject)
Set arqtexto = fileobj.CreateTextFile(c:\teste.txt,true)
arqtexto.WriteLine(*************************)
arqtexto.writeline(LINHA 1 DO TEXTO)
arqtexto.writeline(LINHA 2 DO TEXTO)
arqtexto.writeline(LINHA 3 DO TEXTO)
arqtexto.writeline(*************************)
%>
Criando Sites Dinmicos com ASP 3.0
6 3 0
Este fragmento de cdigo cria um objeto do tipo TextStream, o qual associado varivel arqtexto.
Depois utilizamos o mtodo writeline para escrever linhas de texto no arquivo c:\teste.txt.
Na Figura 11.6 temos o contedo do arquivo teste.txt, aps a execuo do cdigo do nosso exemplo.
Figura 1 1 .6: Ut ilizando o mt odo Cr eat eText File.
O mtodo DeleteFile(arquivo,force): Este mtodo elimina um ou mais arquivos definidos
pelo parmetro arquivo. Podem ser utilizados caracteres curinga. O parmetro force
pode assumir os valores True ou False. Se o parmetro force for definido como True, o
arquivo ser eliminado mesmo se tiver o atributo de Somente leitura marcado. O valor
padro do atributo force False.
Se o arquivo especificado no for encontrado, ser gerado um erro. O mtodo DeleteFile ser
interrompido na ocorrncia do primeiro erro. Quaisquer alteraes que tenham sido feitas
no sero revertidas.
Considere o exemplo:
fileobj.DeleteFile(C:\meus documentos\oficio.doc,true)
O mtodo FileExists(arquivo): Este mtodo retorna True se o arquivo passado como
parmetro existe, caso contrrio o mtodo ir retornar False.
Considere o seguinte exemplo:
<%
If fileobj.FileExists(C:\meus documentos\relatorio.doc) Then
Response.Write O arquivo com o relatrio j foi salvo na pasta Meus
documentos
Else
Response.Write O arquivo com o relatrio ainda no foi salvo na pasta Meus
documentos
End If
%>
6 3 1
Captulo 11 Os Objetos FileSystemObject, Drive, Folder e File
O mtodo GetBaseName(arquivo): Este mtodo retorna apenas o nome do arquivo
passado como parmetro, sem a extenso ou qualquer informao de caminho.
Considere o exemplo:
<%
Response.Write fileobj.GetBaseName(C:\meus documentos\vendas.xls)
%>
Este comando retorna apenas vendas.
O mtodo GetExtensionName(arquivo): Este mtodo retorna apenas a extenso do
arquivo passado como parmetro. Uma String de tamanho zero ser retornada se
o arquivo passado como parmetro no for encontrado.
Considere o exemplo:
<%
Response.Write fileobj.GetExtensionName(C:\meus documentos\vendas.xls)
%>
Este comando ir retornar apenas xls.
O mtodo GetFile(arquivo): Este mtodo retorna um objeto do tipo File e ligado ao
arquivo passado como parmetro. Se o arquivo passado como parmetro no existir,
ser gerado um erro.
NOTA
Iremos estudar o objeto File em detalhes, ainda neste captulo.
Considere o exemplo:
<%
Set fileobj=Server.CreateObject(Scripting.FileSystemObject)
Set arquivo=fileobj.GetFile(C:\autoexec.bat)
Response.Write Caminho do arquivo: & arquivo.path & <HR>
Response.Write Data de criao: & arquivo.DateCreated & <HR>
Response.Write Data ltimo acesso: & arquivo.DateLastAccessed & <HR>
%>
O resultado deste fragmento de cdigo indicado na Figura 11.7.
Criando Sites Dinmicos com ASP 3.0
6 3 2
Figura 1 1 .7: Ut ilizando o mt odo Get File.
NOTA
Observe que j utilizamos algumas propriedades do objeto File. Conforme descrito
anteriormente, iremos estudar este objeto ainda neste captulo.
O mtodo GetFileName(caminho): Retorna o nome do ltimo arquivo ou pasta que foi
especificado no parmetro caminho. Por exemplo, se passarmos C:\meus
documentos\clientes.mdb como parmetro ser retornado clientes.mdb. J se passarmos
C:\meus documentos, ser retornado meus documentos. Se o parmetro passado no
terminar com o nome de uma pasta ou arquivo, o mtodo GetFileName retornar uma
String de tamanho zero .
NOTA
Este mtodo no verifica se o caminho passado como parmetro existe ou no.
O mtodo GetTempName( ): Retorna o nome de um arquivo ou pasta, nome este que
gerado randomicamente. Este arquivo ou pasta pode ser utilizado para operaes que
necessitam de um local de armazenamento temporrio.
Este mtodo no cria um arquivo temporrio. Ele apenas gera um nome que pode ser utilizado
pelo mtodo CreateTextFile, o qual pode ser usado para criar o arquivo.
Considere o exemplo:
<%
Set fileobj=Server.CreateObject(Scripting.FileSystemObject)
6 3 3
Captulo 11 Os Objetos FileSystemObject, Drive, Folder e File
tempname=fileobj.GetTempName
Set txttemp=fileobj.CreateTextFile(tempname)
%>
O mtodo MoveFile(origem, destino): Este mtodo pode ser utilizado para mover o
arquivo passado no parmetro origem para a localizao especificada no parmetro
destino. Podemos utilizar caracteres curinga na origem, porm no no destino.
Se a origem contm caracteres curinga ou o destino termina com o caractere \, o mtodo
MoveFile considera que o destino representa o nome de uma pasta j existente, para a qual
deve ser movido o arquivo de origem. Caso contrrio, o mtodo assume que o parmetro
destino especifica o nome de uma pasta e arquivo para o qual deve ser movido o arquivo de
origem. Em ambos os casos, devemos considerar o seguinte:
1. Se o destino no existe, o arquivo de origem ser movido, sendo que a pasta de destino
ser criada antes, pelo prprio mtodo MoveFile.
2. Se o parmetro destino for o nome de um arquivo existente, ser gerado um erro.
3. Se o parmetro destino for o nome de uma pasta, ser gerado um erro.
O mtodo MoveFile ser interrompido na ocorrncia do primeiro erro. Quaisquer alteraes
que tenham sido feitas no sero revertidas.
Considere o exemplo:
<%
Set fileobj=Server.CreateObject(Scripting.FileSystemObject)
fileobj.MoveFile C:\teste.txt, D:\documentos\teste.txt
%>
O mtodo OpenTextFile(arquivo,iomode,create,format): Cria um arquivo com o nome
passado no parmetro arquivo ou abre um arquivo existente. Este mtodo retorna um
objeto do tipo TextStream que faz referncia ao arquivo especificado pelo parmetro arquivo.
O parmetro iomode determina o tipo de acesso que teremos ao arquivo. Os valores permitidos
para este parmetro so os seguintes:
1 ForReading: Somente para leitura. Este o valor padro.
2 ForWriting: Somente para escrita. No podemos ler o contedo j existente.
8 ForAppending: Abre o arquivo e grava informaes no final do mesmo.
Se o parmetro create for definido como True quando tentarmos escrever ou adicionar
(Appending) contedo a um arquivo que no existe, um novo arquivo ser criado. O valor
padro para este parmetro False.
Criando Sites Dinmicos com ASP 3.0
6 3 4
O parmetro format pode assumir os seguintes valores:
0 TristateFalse: Abre o arquivo como sendo ASCII. o valor padro.
-1 TristateTrue: Abre o arquivo como sendo Unicode.
-2 TristateUseDefault: Abre o arquivo utilizando o formato padro do sistema.
Considere o exemplo:
<%
Set fileobj=Server.CreateObject(Scripting.FileSystemObject)
Set arquivo = fileobj.OpenTextFile(C:\testfile.txt, ForWriting, True)
%>
Com isso finalizamos o estudo dos mtodos relacionados com arquivos e tambm o estudo
do objeto FileSystemObject. Agora iniciaremos o estudo dos objetos Drive, Folder e File.
O Objet o Dr ive
Para criar um objeto do tipo Drive, utilizamos o mtodo GetDrive do objeto FileSystemObject,
conforme descrito anteriormente.
No exemplo a seguir, criamos um objeto do tipo Drive, chamado driveobj:
<%
Set fileobj=Server.CreateObject(Scripting.FileSystemObject)
Set driveobj = fileobj.GetDrive(D:)
%>
Agora podemos ter acesso a todas as propriedades do objeto driveobj. Ento vamos ao estudo
destas propriedades.
Pr opr iedades do Objet o Dr ive
Na Tabela 11.2 temos uma descrio das propriedades do objeto Drive.
Tabela 11.2 Propriedades do objeto Drive.
Propriedade Descrio
AvailableSpace Retorna a quantidade de espao livre, disponvel no drive
para o usurio. Esta propriedade leva em considerao a
definio de quotas de disco e outras restries que podem
6 3 5
Captulo 11 Os Objetos FileSystemObject, Drive, Folder e File
Na Listagem 11.1, podemos ver um exemplo de utilizao das propriedades do objeto Drive.
Propriedade Descrio
ser impostas pelo Windows 2000. O valor retornado
em bytes. Caso no existam definio de quotas ou
outras restries, esta propriedade retornar o mesmo
valor que a propriedade FreeSpace.
DriveLetter Retorna a letra do drive.
DriveType Retorna o tipo do drive. Os valores de retorno so os
seguintes: Desconhecido (0), Removvel (1), Fixo (2),
Rede (3), CD-Rom (4) e RamDisk (5). Esta propriedade
retorna o valor numrico, isto , 0, 1, 2, 3, 4 ou 5.
FileSystem Retorna o tipo de sistema de arquivo que est sendo
utilizado. Os valores possveis so: FAT, FAT32, NTFS
ou CDFS.
FreeSpace Retorna a quantidade total de espao livre, disponvel
no drive. O valor retornado em bytes.
IsReady Retorna True se o drive est pronto para ser usado e False
em caso contrrio. Por exemplo, se um drive de CD-Rom
estiver sem CD esta propriedade ir retornar False.
Path Retorna o caminho para o drive, no seguinte formato C:,
D:, etc.
RootFolder Retorna um objeto do tipo Folder, o qual representa a
pasta raiz do drive.
SerialNumber Retorna um nmero serial, utilizado para identificar de
maneira nica o drive.
ShareName Retorna o nome do compartilhamento de rede para o
drive, se o mesmo for um drive de rede.
TotalSize Retorna o tamanho total do drive em bytes.
VolumeName Pode ser utilizado para definir ou retornar o Label do
drive.
Criando Sites Dinmicos com ASP 3.0
6 3 6
Listagem 11.1 Utilizando as propriedades do objeto Drive.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 <TITLE>Utilizando o objeto Drive. </TITLE>
5 </HEAD>
6 <BODY>
7 <%
8 O primeiro passo a criao do objeto FileSystemObject.
9 Set fileobj=Server.CreateObject(Scripting.FileSystemObject)
10 <HR>
11 <%
12 Set objdrive=fileobj.GetDrive(D:)
13 Response.Write Espao disponvel em D para o usurio atual:<B> & objdrive.
AvailableSpace & </B><BR>
14 Response.Write Letra do drive D:<B> & objdrive.DriveLetter & </B><BR>
15 Response.Write Tipo do drive D: <B> & objdrive.DriveType & </B><BR>
16 Response.Write Sistema de arquivos do drive D:<B> & objdrive.FileSystem &
</B><BR>
17 Response.Write Espao livre em D:<B> & objdrive.FreeSpace & </B><BR>
18 Response.Write O drive D: pode ser usado? <B> & objdrive.IsReady & </B><BR>
19 Response.Write Caminho para o drive D: ><B> & objdrive.Path & </B><BR>
20 Response.Write Pasta raiz para o drive D: <B> & objdrive.RootFolder & </B><BR>
21 Response.Write Nmero Serial do drive D: <B> & objdrive.SerialNumber & </B><BR>
22 Response.Write Espao total do drive D: <B> & objdrive.TotalSize & bytes</B><BR>
23 Response.Write Nome do drive D: <B> & objdrive.VolumeName & </B><BR>
24 %>
25 <HR>
26 </BODY>
27 </HTML>
Ao carregarmos esta pgina, obteremos os resultados indicados na Figura 11.8.
6 3 7
Captulo 11 Os Objetos FileSystemObject, Drive, Folder e File
Figura 1 1 .8: Ut ilizando as pr opr iedades do objet o Dr ive.
Com isso encerramos o estudo do objeto Drive. Agora vamos ao estudo do objeto Folder.
O Objet o Folder
Para criar um objeto do tipo Folder, utilizamos o mtodo GetFolder ou o mtodo
GetSpecialFolder do objeto FileSystemObject, conforme descrito anteriormente. Um objeto
do tipo Folder tambm retornado pela propriedade RootFolder do objeto Drive.
No exemplo a seguir, criamos um objeto do tipo Folder, chamado folderobj:
<%
Set fileobj=Server.CreateObject(Scripting.FileSystemObject)
Set folderobj = fileobj.GetFolder(D:\meus documentos)
%>
Agora podemos ter acesso a todas as propriedades e mtodos do objeto folderobj. Ento vamos
ao estudo destas propriedades e mtodos.
Criando Sites Dinmicos com ASP 3.0
6 3 8
Pr opr iedades do Objet o Folder
Na Tabela 11.3, temos uma descrio das propriedades do objeto Folder.
Tabela 11.3 Propriedades do objeto Folder.
Propriedade Descrio
Attributes Pode ser utilizada para definir ou retornar os atributos
para a pasta. Os valores possveis so os seguintes:
0 - Arquivo normal, sem nenhum atributo definido;
1 - Somente leitura; 2- Arquivo oculto; 4 - Arquivo de
sistema; 8 - Label do drive; 16 - Pasta ou subpasta;
32 - Indica se o arquivo foi alterado desde o ltimo
backup; 64 - Link ou atalho e 128 - Arquivo compactado.
DateCreated Retorna a data e a hora de criao da pasta.
DateLastAccessed Retorna a data e a hora da ltima vez que a pasta foi
acessada.
DateLastModified Retorna a data e a hora da ltima vez que a pasta foi
modificada.
Drive Retorna a letra do drive onde est a pasta.
Files Retorna uma coleo, a qual contm todos os arquivos
existentes no objeto Folder.
IsRootFolder Retorna True se a pasta for a raiz do drive e False caso
contrrio.
Name Pode ser utilizada para definir ou retornar o nome da pasta.
ParentFolder Retorna um objeto Folder que o objeto de nvel
superior para a pasta, isto , a pasta dentro da qual a
pasta atual encontra-se. Por exemplo, para a pasta
C:\documentos\cartas, a pasta de nvel superior
C:\documentos. Em ingls o termo conhecido como
Parent Folder.
Path Retorna o caminho completo para a pasta, inclusive
utilizando nomes longos.
ShortName Retorna o nome no formato antigo 8.3 da poca do DOS.
6 3 9
Captulo 11 Os Objetos FileSystemObject, Drive, Folder e File
No exemplo da Listagem 11.2, podemos ver um exemplo de utilizao das propriedades do
objeto Folder.
Listagem 11.2 Utilizando as propriedades do objeto Folder.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 <TITLE>Utilizando o objeto Folder. </TITLE>
5 </HEAD>
6 <BODY>
7 <%
8 O primeiro passo a criao do objeto FileSystemObject.
9 Set fileobj=Server.CreateObject(Scripting.FileSystemObject)
10 %>
11 <HR>
12 <%
13 Set objfolder=fileobj.GetFolder(C:\meus documentos)
14 Response.Write Atributos de C:\Meus documentos:<B> & objfolder.Attributes &
</B><BR>
15 Response.Write Data e hora de criao de C:\Meus documentos:<B> & objfolder.
DateCreated & </B><BR>
16 Response.Write Data e hora do ltimo acesso C:\Meus documentos:<B> &objfolder.
DateLastAccessed & </B><BR>
17 Response.Write Data e hora da ltima modificao em C:\Meus documentos:<B> &
objfolder.DateLastModified & </B><BR>
Propriedade Descrio
ShortPath Retorna o caminho completo no formato antigo da
poca do DOS, sem a utilizao de nomes longos.
Size Retorna o tamanho total da pasta, incluindo todos os
seus arquivos e subpastas.
SubFolders Retorna uma coleo, a qual contm todas as subpastas,
inclusive as subpastas ocultas e de sistema.
Type Retorna uma String que a descrio do tipo da pasta.
Criando Sites Dinmicos com ASP 3.0
6 4 0
18 Response.Write A pasta C:\Meus documentos est no drive:<B> & objfolder.Drive
& </B><BR>
19 Response.Write A pasta C:\Meus documentos raiz? <B> & objfolder.
IsRootFolder & </B><BR>
20 Response.Write Nome da pasta C:\Meus documentos:<B> & objfolder.Name & </B>
<BR>
21 Response.Write Parent Folder de C:\Meus documentos:<B> & objfolder.
ParentFolder & </B><BR>
22 Response.Write Path de C:\Meus documentos:<B> & objfolder.Path & </B><BR>
23 Response.Write Nome curto de C:\Meus documentos:<B> & objfolder.ShortName & </B>
<BR>
24 Response.Write Nome curto do caminho de C:\Meus documentos:<B> & objfolder.
ShortPath & </B><BR>
25 Response.Write Tamanho total de C:\Meus documentos:<B> & objfolder.Size &
bytes</B><BR>
26 Response.Write Tipo de C:\Meus documentos:<B> & objfolder.Type & </B><BR>
27 Response.Write <HR>
28 Response.Write SUBPASTAS DA PASTA C:\MEUS DOCUMENTOS <HR>
29 For each pasta in objfolder.subfolders
30 Response.Write Pasta de C:\meus documentos: <B><I> & pasta & </B></I><BR>
31 Next
32 Response.Write <HR>
33 Response.Write ARQUIVOS DA PASTA C:\MEUS DOCUMENTOS <HR>
34 For each arquivo in objfolder.Files
35 Response.Write Arquivo de C:\meus documentos: <B><I> & arquivo &
</B></I><BR>
36 Next
37 %>
38 </BODY>
39 </HTML>
A Figura 11.9 mostra a parte inicial do resultado desta pgina ao ser carregada no Internet
Explorer.
6 4 1
Captulo 11 Os Objetos FileSystemObject, Drive, Folder e File
Figura 1 1 .9: Ut ilizando as pr opr iedades do objet o Dr ive.
Na Figura 11.10 vemos uma parte do resultado, onde so exibidos os elementos da coleo Files.
Figura 1 1 .1 0: A coleo Files do objet o Folder.
Criando Sites Dinmicos com ASP 3.0
6 4 2
M t odos do Objet o Folder
O objeto Folder possui quatro mtodos.
Mtodo Copy(destino,substituir): Este mtodo copia o objeto Folder atual, para o local
especificado no parmetro destino.
Se o destino termina com o caractere \, o mtodo Copy considera que o destino representa
o nome de uma pasta j existente, para a qual deve ser copiada a pasta representada pelo
objeto Folder. Caso contrrio o mtodo assume que o parmetro destino especifica o nome
completo de uma nova pasta que deve ser criada.
O parmetro substituir pode assumir os valores True ou False. O valor padro True. Se a
pasta especificada no parmetro destino j existe e o parmetro substituir estiver definido em
False, ocorrer um erro.
Considere o exemplo:
<%
Set fileobj=Server.CreateObject(Scripting.FileSystemObject)
Set folderobj = fileobj.GetFolder(D:\meus documentos)
folderobj.copy(E:\meus documentos,true)
%>
O mtodo CreateTextFile(nomearquivo,substituir,unicode): Este mtodo cria o arquivo
de texto especificado pelo parmetro nomearquivo e retorna um objeto do tipo
TextStream, o qual pode ser utilizado para gravar informaes no arquivo e ler
informaes do arquivo.
O parmetro substituir pode assumir os valores True ou False. Quando este parmetro tiver o
valor True, se o arquivo j existir o mesmo ser eliminado e um novo arquivo ser criado. O
padro para o parmetro substituir False. Este parmetro opcional.
O parmetro unicode pode assumir os valores True ou False. Se este parmetro tiver o valor
True, o texto ser salvo com caracteres unicode, os quais utilizam 2 bytes por caractere, ao
invs de 1 byte por caractere como o caso do padro ASCII. O valor padro para o parmetro
unicode False. Este parmetro opcional.
Considere o exemplo a seguir:
<%
Set fileobj=Server.CreateObject(Scripting.FileSystemObject)
Set folder=fileobj.GetFolder(C:\)
Set arqtexto = folder.CreateTextFile(C:\teste.txt,true)
arqtexto.WriteLine(*************************)
6 4 3
Captulo 11 Os Objetos FileSystemObject, Drive, Folder e File
arqtexto.writeline(LINHA 1 DO TEXTO)
arqtexto.writeline(LINHA 2 DO TEXTO)
arqtexto.writeline(LINHA 3 DO TEXTO)
arqtexto.writeline(*************************)
%>
Este fragmento de cdigo cria um objeto do tipo TextStream, o qual associado varivel
arqtexto. Depois utilizamos o mtodo writeline para escrever linhas de texto no arquivo
C:\teste.txt.
Na Figura 11.11 temos o contedo do arquivo teste.txt, aps a execuo do cdigo do nosso
exemplo.
Figura 1 1 .1 1 : Ut ilizando o mt odo Cr eat eText File do objet o Folder.
O mtodo Delete(force): Este mtodo elimina a pasta associada com o objeto Folder e
todo o seu contedo, isto , arquivos e subpastas. O parmetro force pode assumir os
valores True ou False. Se o parmetro force for definido como True, a pasta ser
eliminada mesmo se a mesma ou qualquer um de seus arquivos ou subpastas, tiver o
atributo de Somente leitura marcado. O valor padro do atributo force False.
Considere o exemplo:
folderobj.Delete(True)
O mtodo Move destino: Move a pasta e todo o seu contedo, para a pasta especificada
no parmetro destino.
Se o destino termina com o caractere \, o mtodo Move considera que o destino representa
o nome de uma pasta j existente, para a qual deve ser movida a pasta. Caso contrrio o
mtodo assume que o parmetro destino especifica o nome de uma nova pasta que deve ser
criada e para a qual deve ser movido o contedo da pasta de origem.
Caso a pasta de destino j exista, ocorrer um erro.
Criando Sites Dinmicos com ASP 3.0
6 4 4
Considere o exemplo:
folderobj.Move C:\copia de seguranca\documentos
Com isso, encerramos o estudo do objeto Folder. Agora vamos ao estudo do objeto File.
O Objet o File
Para criar um objeto do tipo File, utilizamos o mtodo GetFile do objeto FileSystemObject,
conforme descrito anteriormente.
No exemplo a seguir, criamos um objeto do tipo File, chamado arqobj:
<%
Set fileobj=Server.CreateObject(Scripting.FileSystemObject)
Set arqobj = fileobj.Getfile(C:\meus documentos\nwind.mdb)
%>
Agora podemos ter acesso a todas as propriedades e mtodos do objeto arqobj. Ento vamos
ao estudo destas propriedades e mtodos.
Pr opr iedades do Objet o File
Na Tabela 11.4 temos uma descrio das propriedades do objeto File.
Tabela 11.4 Propriedades do objeto File.
Propriedade Descrio
Attributes Pode ser utilizada para definir ou retornar os atributos
para o arquivo. Os valores possveis so os seguintes:
0 - Arquivo normal, sem nenhum atributo definido;
1 - Somente leitura; 2- Arquivo oculto; 4 - Arquivo de
sistema; 16 - Pasta ou subpasta; 32 - Indica se o arquivo
foi alterado desde o ltimo backup; 1024 - Link ou
atalho e 2048 - Arquivo compactado.
DateCreated Retorna a data e a hora de criao do arquivo.
DateLastAccessed Retorna a data e a hora da ltima vez que o arquivo foi
acessado.
DateLastModified Retorna a data e a hora da ltima vez que o arquivo foi
modificado.
6 4 5
Captulo 11 Os Objetos FileSystemObject, Drive, Folder e File
No exemplo da Listagem 11.3, podemos ver um exemplo de utilizao das propriedades do
objeto File.
Listagem 11.3 Utilizando as propriedades do objeto File.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 <TITLE>Utilizando o objeto File. </TITLE>
5 </HEAD>
6 <BODY>
7 <%
8 O primeiro passo a criao do objeto FileSystemObject.
9 Set fileobj=Server.CreateObject(Scripting.FileSystemObject)
Propriedade Descrio
Drive Retorna a letra do drive onde est o arquivo.
Name Pode ser utilizada para definir ou retornar o nome do
arquivo.
ParentFolder Retorna um objeto Folder que o objeto de nvel
superior para o arquivo, ou seja, a pasta dentro da
qual o arquivo encontra-se. Por exemplo, para o arquivo
C:\documentos\nwind.mdb, a pasta de nvel superior
C:\documentos. Em ingls o termo conhecido como
Parent Folder.
Path Retorna o caminho completo para o arquivo, inclusive
utilizando nomes longos.
ShortName Retorna o nome no formato antigo 8.3 da poca do DOS.
ShortPath Retorna o caminho completo no formato antigo da
poca do DOS, sem a utilizao de nomes longos.
Size Retorna o tamanho total do arquivo em bytes.
Type Retorna uma String que a descrio do tipo do arquivo,
como por exemplo Documento do Word para um
arquivo .doc.
Criando Sites Dinmicos com ASP 3.0
6 4 6
10 %>
11 <HR>
12 <%
13 Set arqobj=fileobj.GetFile(C:\meus documentos\nwind.mdb)
14 Response.Write Atributos de nwind.mdb:<B> & arqobj.Attributes & </B><BR>
15 Response.Write Data e hora de criao de nwind.mdb:<B> & arqobj.DateCreated &
</B><BR>
16 Response.Write Data e hora do ltimo acesso a nwind.mdb:<B> &
arqobj.DateLastAccessed & </B><BR>
17 Response.Write Data e hora da ltima modificao em nwind.mdb:<B> &
arqobj.DateLastModified & </B><BR>
18 Response.Write O arquivo nwind.mdb est no drive:<B> & arqobj.Drive &
</B><BR>
19 Response.Write Nome do arquivo nwind.mdb:<B> & arqobj.Name & </B><BR>
20 Response.Write Parent Folder do arquivo nwind.mdb:<B> & arqobj.ParentFolder &
</B><BR>
21 Response.Write Path do arquivo nwind.mdb:<B> & arqobj.Path & </B><BR>
22 Response.Write Nome curto do arquivo nwind.mdb:<B> & arqobj.ShortName &
</B><BR>
23 Response.Write Nome curto do caminho de C:\Meus documentos\nwind.mdb:<B> &
arqobj.ShortPath & </B><BR>
24 Response.Write Tamanho total do arquivo nwind.mdb:<B> & arqobj.Size &
bytes</B><BR>
25 Response.Write Tipo do arquivo nwind.mdb:<B> & arqobj.Type & </B><BR>
26 Response.Write <HR>
27 %>
28 </BODY>
29 </HTML>
A Figura 11.12 mostra a pgina da Listagem 11.3 carregada no Internet Explorer.
6 4 7
Captulo 11 Os Objetos FileSystemObject, Drive, Folder e File
Figura 1 1 .1 2: Ut ilizando as pr opr iedades do objet o File.
M t odos do Objet o File
O objeto File possui quatro mtodos.
Mtodo Copy(destino,substituir): Este mtodo copia o objeto File atual, para o local
especificado no parmetro destino.
Se o destino termina com o caractere \, o mtodo Copy considera que o destino representa
o nome de uma pasta j existente, para a qual deve ser copiado o arquivo representado pelo
objeto File. Caso contrrio o mtodo assume que o parmetro destino especifica o nome
completo de um novo arquivo a ser criado.
O parmetro substituir pode assumir os valores True ou False. O valor padro True. Se o
arquivo especificado no parmetro destino j existe e o parmetro substituir estiver definido
em False, ocorrer um erro.
Considere o exemplo:
<%
Set fileobj=Server.CreateObject(Scripting.FileSystemObject)
Set arqobj = fileobj.GetFile(C:\meus documentos\nwind.mdb)
arqobj.copy(E:\backup\nwind.mdb,true)
%>
Criando Sites Dinmicos com ASP 3.0
6 4 8
O mtodo Delete(force): Este mtodo elimina o arquivo associado com o objeto File. O
parmetro force pode assumir os valores True ou False. Se o parmetro force for definido
como True, o arquivo ser eliminado mesmo que tenha o atributo de Somente leitura.
O valor padro do atributo force False.
Considere o exemplo:
arqobj.Delete(True)
O mtodo Move destino: Move o arquivo para a pasta especificada no parmetro destino.
Se o destino termina com o caractere \, o mtodo Move considera que o destino representa o
nome de uma pasta j existente, para a qual deve ser movido o arquivo. Caso contrrio o mtodo
assume que o parmetro destino especifica o nome de um novo arquivo que deve ser criado.
Caso o arquivo especificado pela parmetro destino j exista, ocorrer um erro.
Considere o exemplo:
arqobj.Move C:\copia de seguranca\
O mtodo OpenAsTextStream (iomode,format): Abre o arquivo associado ao objeto
File. Este mtodo retorna um objeto do tipo TextStream que faz referncia ao arquivo
ligado ao objeto File.
O parmetro iomode determina o tipo de acesso que teremos ao arquivo. Os valores permitidos
para este parmetro so os seguintes:
1 ForReading: Somente para leitura. Este o valor padro.
2 ForWriting: Somente para escrita. No podemos ler o contedo j existente.
8 ForAppending: Abre o arquivo e grava informaes no final do mesmo.
O parmetro format pode assumir os seguintes valores:
0 TristateFalse: Abre o arquivo como sendo ASCII. o valor padro.
-1 TristateTrue: Abre o arquivo como sendo Unicode.
-2 TristateUseDefault: Abre o arquivo utilizando o formato padro do sistema.
Considere o exemplo:
<%
Set fileobj=Server.CreateObject(Scripting.FileSystemObject)
Set arqobj = fileobj.GetFile(C:\testfile.txt)
arqobj.OpenAsTextStream(1,0)
%>
Este exemplo abre o arquivo C:\testfile.txt como somente leitura e no formato ASCII.
6 4 9
Captulo 11 Os Objetos FileSystemObject, Drive, Folder e File
Com isso encerramos o estudo do objeto File. Agora vamos a um exemplo prtico de aplicao
do que nos aprendemos neste captulo.
Exemplo Pr t ico
Neste exemplo vamos considerar o problema a seguir.
Temos uma pasta virtual no servidor IIS chamada informativos. Dentro desta pasta colocamos
diariamente informativos, que so numerados: inf01.htm, inf02.htm e assim por diante. Dentro
da pasta informativos existe, tambm, um arquivo index.asp que apresenta uma tabela com
todos os informativos disponveis. Porm no queremos atualizar esta tabela manualmente.
Desejamos que cada vez que um novo arquivo seja salvo na pasta informativos, o mesmo,
automaticamente aparea na tabela de informativos do arquivo index.asp. O nosso trabalho
ser construir a pgina index.asp, de tal maneira que a mesma seja capaz de ler e identificar
os arquivos inf01.htm, inf02.htm, etc. existentes, e criar uma tabela com um link para todos
estes arquivos. Alm disso esta tabela deve exibir um mximo de seis colunas. Ento, mos
obra, vamos pr os objetos que aprendemos neste captulo para funcionar.
Na Listagem 11.4, temos a soluo para o problema proposto.
Listagem 11.4 Gerando uma tabela de contedo automaticamente.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <BODY>
6 <P align=center><FONT size=4><B>INFORMATIVOS da Empresa ABC Ltda.
7 </B></FONT>
8 </P>
9 <HR>
10 <%
11 Crio um objeto do tipo FileSystemObject.
12 Set fileobj=Server.CreateObject(Scripting.FileSystemObject)
13 Crio um objeto do tipo Folder, utilizando o mtodo GetFolder.
14 Set informativos = fileobj.GetFolder(E:\inetpub\wwwroot\informativos)
Criando Sites Dinmicos com ASP 3.0
6 5 0
15 Agora posso utilizar a coleo files do objeto
16 Folder para percorrer todos os arquivos da pasta
17 E:\inetpub\wwwroot\informativos
18 linha=0
19 Response.Write <TABLE border=1>
20 For each arquivo in informativos.Files
21 If arquivo.name<>index.asp then
22 If linha=0 Then
23 Response.Write <TR>
24 End If
25 Response.Write <TD><A HREF=http://servidor/informativos/ & arquivo.name
& > & Left(arquivo.name,5) & </TD>
26 linha=linha+1
27 If linha=6 Then
28 Response.Write </TR>
29 linha=0
30 End If
31 End If
32 Next
33 Response.Write </TABLE>
34 %>
35 </BODY>
36 </HTML>
Neste exemplo criamos um objeto do tipo FileSystemObject, depois utilizamos o mtodo
GetFile para obter um objeto do tipo Folder. O nosso objeto Folder est ligado pasta
E:\inetpub\wwwroot\informativos, que justamente onde esto os informativos do nosso
problema.
Depois, utilizamos a coleo Files do objeto Folder, para acessar todos os arquivos desta pasta.
Tambm fizemos uso de uma varivel auxiliar linha. Est varivel utilizada para que possamos
exibir seis links por linha. Alm disso fizemos uso da propriedade nome para cada um dos
arquivos, de tal maneira que sejam exibidos apenas os nomes dos arquivos, e no o caminho
completo. Por exemplo, ao invs de exibirmos E:\inetpub\wwwroot\informativos\inf01.htm,
6 5 1
Captulo 11 Os Objetos FileSystemObject, Drive, Folder e File
utilizando a propriedade name, exibimos apenas inf01.htm. Mas, alm disso, fizemos uso da
funo Left(arquivo.nome,5), de tal maneira que fosse exibido apenas o nome do arquivo (cinco
primeiros caracteres), sem a extenso. Desta forma exibido apenas inf01.
Conforme podemos ver na Figura 11.13, existem 20 informativos na pasta E:\inetpub\
wwwroot\informativos.
Figura 1 1 .1 3: Exist em 2 0 infor mat ivos na past a de infor mat ivos.
Na Figura 11.14, vemos o resultado ao carregar o arquivo index.asp.
Figura 1 1 .1 4: O ar quivo index. asp mont a a t abela de links aut omat icament e.
Criando Sites Dinmicos com ASP 3.0
6 5 2
Agora toda vez que um novo informativo for gravado na pasta informativos, o usurio, ao
carregar a pgina index.asp, j ver o link para o novo informativo. Por exemplo, vamos
supor que foram adicionados os informativos inf21.htm e inf22.htm. Bastaria recarregar a
pgina index.asp que o link para os dois novos informativos j seriam, automaticamente,
exibidos, conforme indicado na Figura 11.15.
Figura 1 1 .1 5: Exibindo os links par a os novos infor mat ivos.
Concluso
Neste captulo fizemos um estudo completo do objeto FileSystemObject e de seus derivados,
tais como os objetos Drive, Folder e File.
Com o entendimento destes objetos podemos construir aplicaes bastante interessantes
utilizando ASP. Desde funes administrativas, tais como gravar informaes em um arquivo
de Log, monitorar a ocupao de espao de diversos drives, at a criao dinmica de links
conforme o exemplo mostrado no item anterior.
Com certeza o objeto FileSystemObject um dos mais complexos devido ao grande nmero
de mtodos e objetos derivados que o mesmo apresenta. Porm, conforme podemos constatar
no decorrer deste captulo, extremamente simples sua utilizao.
6 5 3
Captulo 11 Os Objetos FileSystemObject, Drive, Folder e File
Alguns cuidados devem ser tomados, principalmente, com mtodos que movem ou eliminam
arquivos, pois se ocorrem erros, o mtodo ter a execuo suspensa na ocorrncia do primeiro
erro e modificaes que j tenham sido feitas no sero revertidas.
Por exemplo, se estivermos movendo uma pasta e todas as suas subpastas de uma localizao
para outra e ocorrer um erro no meio do processo, alguns arquivos tero sido movidos e outros
no. Aqueles que foram movidos no sero restaurados ao local de origem. Por isso, sempre
uma boa idia testar a pgina ASP que utiliza estes mtodos em um ambiente de testes, para
somente depois coloc-las em produo. Alis, ter um ambiente especfico para testes uma
excelente idia no s no desenvolvimento para a Web, mas em qualquer tipo de desenvolvimento
de software.
No captulo final deste livro estudaremos uma srie de tcnicas adicionais que auxiliam e
facilitam a criao e a padronizao no desenvolvimento de pginas ASP.
6 5 5
Captulo 12 Tratamento de Erros, Transaes e Outros Assuntos
Capt ul o 12
Tratamento de Erros,
Transaes e Outros Assuntos
Criando Sites Dinmicos com ASP 3.0
6 5 6
No incio deste captulo aprenderemos um pouco sobre tratamento de erro em ASP.
Apresentaremos o objeto ASPError, bem como algumas dicas e tcnicas para o tratamento de
erros em pginas ASP.
O tratamento de erros uma das partes mais importantes de qualquer aplicao. Porm,
muitas vezes, simplesmente ignorado, ou no feito como deveria ser. Sem um tratamento
de erro adequado, a aplicao retorna mensagens pouco elucidativas, ou simplesmente pra
de funcionar. Com o tratamento de erros, tratamos situaes de exceo, procurando prever o
maior nmero possvel de casos que podem gerar erros. Alm de prever estas situaes,
escrevemos cdigo para trat-las adequadamente.
Um dos exemplos clssicos de tratamento de erro o de validao dos dados de um formulrio.
Vamos supor que tenhamos criado um formulrio para cadastro de clientes. Este formulrio
ir gravar um registro em uma tabela de um banco de dados do Microsoft Access. Vamos
supor que os campos Nome e CPF tenham sido definidos como obrigatrios no banco de
dados, isto , o Microsoft Access no ir aceitar que estes campos sejam deixados em branco.
Se no fizermos a validao dos dados do formulrio, antes de tentar gravar o registro no
banco de dados, pode acontecer de o usurio ter deixado um dos campos obrigatrios em
branco. Neste caso, ao tentar gravar o registro no banco de dados, ser retornada uma pgina
com uma mensagem de erro tcnica do tipo: Erro Driver ODBC 840c..... Para usurio comum,
esta mensagem de erro grego. O ideal escrevermos cdigo para verificar se todos os
campos obrigatrios foram digitados. Caso algum campo obrigatrio no tenha sido preenchido,
devolvemos o formulrio para o usurio, indicando qual o campo obrigatrio que est faltando
e mantendo os demais valores j digitados. Com isso o usurio pode preencher o valor que
est faltando e salvar o registro sem maiores problemas.
NOTA
Implementamos esta tcnica de validao de campos em um formulrio, em um exemplo do
Captulo 6.
Com isso podemos notar que um correto tratamento de erros torna os nossos aplicativos Web
mais amigveis e fceis de trabalhar. Sempre que possvel devemos evitar situaes onde o
usurio recebe mensagens de erro tcnicas, enviadas pelo servidor. Sempre que possvel
devemos introduzir cdigo para tratamento destes erros, de tal forma que os mesmos possam
ser interceptados e, se no corrigidos a tempo, pelo menos possamos enviar uma mensagem
mais amigvel, para que o usurio saiba onde est o problema.
Na seqncia aprenderemos sobre o conceito de transaes e o Microsoft Transaction Services.
Veremos que a utilizao do conceito de transaes garante que nossas aplicaes Web tenham
acesso a dados mais depurados e livres de erros.
6 5 7
Captulo 12 Tratamento de Erros, Transaes e Outros Assuntos
Na parte final do captulo estaremos tratando de assuntos diversos, tais como a utilizao da
diretiva #include e tambm o uso de diretivas como @CODEPAGE e @TRANSACTION.
O Objet o ASPEr r or
O objeto ASPError uma das novidades da verso 3.0 do ASP. Para obtermos um objeto do
tipo ASPError, utilizamos o mtodo GetLastError do objeto Server. O objeto ASPError, atravs
de suas diversas propriedades, nos fornece uma srie de informaes a respeito do ltimo
erro ocorrido em nossa aplicao Web.
NOTA
Quando o IIS encontrar um erro ao compilar ou executar um arquivo .asp, ele gerar um erro
personalizado 500;100. Por padro, todos os aplicativos e sites da Web iro transferir o
processamento de um erro personalizado 500;100 para o arquivo .asp padro. Aps a gerao
de um erro personalizado 500;100, o IIS tambm criar uma instncia do objeto ASPError que
descrever a condio de erro.
Antes de apresentarmos um exemplo de utilizao, vamos estudar as propriedades do objeto ASPError.
Pr opr iedades do Objet o ASPEr r or
Para utilizar as propriedades do objeto ASPError, utilizamos a sintaxe padro para acesso s
propriedades, conforme indicado a seguir:
nome_objeto.Nome_propriedade
Na Tabela 12.1, temos a descrio de todas as propriedades do objeto ASPError.
Tabela 12.1 Propriedades do objeto ASPError.
Propriedade Descrio
ASPCode Retorna um nmero inteiro, correspondente ao nmero do
erro gerado pelo IIS.
ASPDescription Retorna uma descrio mais detalhada a respeito do erro.
Category Retorna a origem do erro. Por exemplo, se foi o cdigo ASP,
a linguagem de Script ou um determinado objeto.
Column Retorna a coluna exata onde ocorreu o erro, na linha
do erro.
Criando Sites Dinmicos com ASP 3.0
6 5 8
No fragmento de cdigo a seguir, utilizamos as diversas propriedades do objeto ASPError.
<%
Set objerro=Server.GetLastError
Response.Write DESCRIO DO LTIMO ERRO:<HR>
Response.Write objerro.ASPCode & <BR>
Response.Write objerro.ASPDescription & <BR>
Response.Write objerro.Category & <BR>
Response.Write objerro.Column & <BR>
Response.Write objerro.Description & <BR>
Response.Write objerro.File & <BR>
Response.Write objerro.Line & <BR>
Response.Write objerro.Number & <BR>
Response.Write objerro.Source & <BR>
%>
Algumas Dicas Par a M inimizar Er r os
Alm do tratamento de erros que fundamental para qualquer aplicao, devemos levar em
considerao algumas tcnicas que podem minimizar a gerao de erros. Neste item daremos
algumas sugestes que podem ajudar na reduo e tratamento de erros.
Antes vamos descrever os tipos de erro mais comuns.
Er r os de Sint axe
Este um dos tipos de erro mais comuns. Considere o comando a seguir:
Response.Write Informativos da empresa ABC Ltda!
Propriedade Descrio
Description Retorna uma descrio resumida do erro.
File Retorna o nome do arquivo que estava sendo processado
quando ocorreu o erro.
Line Retorna um nmero inteiro indicando a linha de
ocorrncia do erro.
Number Retorna um cdigo de erro do padro COM.
Source Retorna, quando possvel, o cdigo da linha que causou
o erro.
6 5 9
Captulo 12 Tratamento de Erros, Transaes e Outros Assuntos
Observe que nesta linha o desenvolvedor esqueceu de fechar aspas. Este pequeno engano
suficiente para gerar o erro indicado na Figura 12.1.
Figura 1 2.1 : M ensagem de er r o causado por um er r o de sint axe.
Observe que na prpria mensagem de erro j existe um indicativo da linha e do comando que
est gerando o erro. Estas informaes facilitam enormemente a correo do problema. Sem
a menor sombra de dvida, os erros de sintaxe so os mais fceis de corrigir, principalmente
pelo fato que a pgina simplesmente no carregada se houverem erros de sintaxe.
Para corrigir o nosso problema, bastaria fechar aspas, conforme indicado a seguir:
Response.Write Informativos da empresa ABC Ltda!
Er r os de Semnt ica ou de Tempo de Execuo
Este tipo de erro mais difcil de detectar do que os erros de sintaxe, pois normalmente s se
manifestam na hora que tentamos carregar a pgina e no so to evidentes como um simples
fechar de aspas.
No fragmento de cdigo a seguir temos um tpico exemplo:
<%
Crio um array para armazenar 10 elementos
Lembre que o ndice de um array comea com 0.
Criando Sites Dinmicos com ASP 3.0
6 6 0
Dim arrayinteiros(9)
arrayinteiros(10)=25
%>
Neste exemplo estamos criando um array com 10 elementos: ndice 0 at o ndice 9, porm
estamos tentando utilizar o ndice 10. Este cdigo ir gerar um erro em tempo de execuo,
conforme indicado na Figura 12.2.
Figura 1 2.2: Er r o ger ado pela ut ilizao indevida de um ar r ay.
Observe que a mensagem de erro informa que existe um ndice fora do intervalo permitido.
Tambm devemos salientar que a deteco deste tipo de erro mais difcil do que os erros de
sintaxe. Muitas vezes o erro pode estar ainda mais disfarado, como no exemplo a seguir:
<%
Dim arrayinteiros(9)
For i=1 to 10
arrayinteiros(i)=5*i+10
Next
%>
Este fragmento ir gerar a mensagem de erro indicada na Figura 12.3.
6 6 1
Captulo 12 Tratamento de Erros, Transaes e Outros Assuntos
Figura 1 2.3: Er r o ger ado pela ut ilizao indevida de um ar r ay.
Observe que agora a mensagem no to indicativa de onde est o problema. Agora imagine
em aplicaes maiores. Se o programador no for disciplinado, pode ser gerado cdigo de
difcil depurao.
Er r os Lgicos
Este, com certeza, o pior tipo de erro. O cdigo executa aparentemente sem problemas, a
pgina carregada, porm os resultados obtidos no so os esperados. Este tipo de erro acontece
porque o programador utilizou um algoritmo incorreto.
Por exemplo, ao pesquisar em um banco de dados, na tabela Pedidos. Se quisermos somente
os pedidos para o Brasil ou para a Argentina, devemos utilizar a seguinte instruo SQL:
Select * from Pedidos where Pais=Brazil Or Pais=Argentina
Se o programador simplesmente trocar o Or por um And, no ir retornar nenhum registro, pois
cada pedido somente para um pas. Porm, este tipo de erro ainda no seria dos piores, pois em
no retornando nenhum registro o desenvolvedor ir desconfiar de que algo est errado.
O pior tipo de erro lgico aquele que retorna um resultado, porm um resultado incorreto.
Criando Sites Dinmicos com ASP 3.0
6 6 2
Vamos supor que voc queira calcular os valores de uma aplicao utilizando a seguinte frmula:
Total= Emprstimo multiplicado pelos juros mais adicional de risco e tudo isso
dividido por 1.33.
Um erro comum construir a frmula da seguinte maneira:
Total=emp*juros+risco/1.33
Esta frmula ir efetuar os clculos porm de maneira incorreta. Primeiro o emprstimo ser
multiplicado pelos juros. Depois o risco dividido por 1.33 e os dois resultados somados.
Porm no isso que queremos. Para fazer com que a frmula seja calculada corretamente,
podemos fazer o uso de parnteses, conforme indicado a seguir:
Total =((emp*juros)+risco)/(1.33)
Desta maneira garantimos a ordem correta das operaes e deixamos o cdigo mais fcil de ler.
Este apenas um pequeno exemplo de erro lgico. Existe uma infinidade de armadilhas e
situaes possveis de ocorrncia de erros lgicos. Em muitas delas difcil a deteco do erro
se o programador no for disciplinado e o processo como um todo no estiver bem documentado.
Algumas Dicas Par a Reduzir a Ocor r ncia de Er r os
Aqui colocamos algumas dicas bem conhecidas, mas que sempre vale a pena repetir:
No despreze a possibilidade e os problemas causados pelos erros: Muitas vezes devido
a prazos cada vez menores e presses da administrao, a verificao de erros acaba
sendo deixada em segundo plano. A menos que o presidente da empresa esteja na sua
sala de arma na mo, no faa isso. Leve em considerao a possibilidade de ocorrncia
de erros e as conseqncias que os mesmos podem causar. Est mais do que comprovado
que quanto mais cedo for descoberto um erro mais fcil e barato ser para corrigi-lo.
Crie e mantenha um ambiente de testes capaz de realizar um nmero massivo de testes
em sua aplicao. Considere a hiptese de adquirir um software capaz de gerar entradas
para a sua aplicao e simular o acesso de diversos usurios simultaneamente. Estes
programas so teis no s para a deteco de erros como tambm para a determinao
do limite prtico em termos de desempenho da sua aplicao Web e do servidor onde a
mesma reside. Muitas aplicaes so desenvolvidas e testadas em ambientes muito
diferentes de onde sero utilizadas. Com o uso de um software para testes podemos
simular da maneira mais prxima possvel o ambiente de produo.
Crie um padro para o nome de variveis e objetos que voc ir utilizar em seu cdigo
ASP. Por exemplo, o nome de todo objeto do tipo RecordSet comea com RS, o nome de
todo objeto do tipo Connection comea com CN e assim por diante. Manter um padro
para o nome de variveis e objetos ajuda bastante na hora de fazer a depurao do cdigo.
6 6 3
Captulo 12 Tratamento de Erros, Transaes e Outros Assuntos
Use indentao do cdigo. Isto facilita muito a leitura do cdigo e demonstra quais
linhas de cdigo pertencem a cada estrutura de controle. Observe o exemplo a seguir:
<%
If criar=Sim Then
total = total+juros
Response.Write Valor devido: & total
Else
total = total-juros
Response.Write Valor devido: & total
End If
%>
A indentao deixa o cdigo mais legvel e facilita na hora de procurar e corrigir erros.
Se voc tiver uma determinada rotina de clculo ou acesso a banco de dados, que
utilizada em diversos locais na sua aplicao, pense em escrev-la e salv-la em um
arquivo separado e depois utilizar a diretiva #include para incluir este cdigo nos
locais onde o mesmo necessrio. Isto evita que voc tenha que escrever o mesmo
cdigo em diversos locais e principalmente que o escreva de maneira diferente. Alm
disso se forem necessrias modificaes, basta faz-las no arquivo original e no em
diversos lugares. Isto minimiza a possibilidade de estar utilizando algoritmos diferentes
para a mesma rotina.
NOTA
Estaremos aprendendo a utilizar a diretiva #include ainda neste captulo.
Documentar, documentar e documentar. Este um dos princpios bsicos para o desen-
volvimento de aplicaes. Mas infelizmente poucos o levam muito a srio. Documentar
detalhadamente a sua aplicao no perda de tempo; muito pelo contrrio. Quando
surgem problemas ou so necessrias modificaes na aplicao, a documentao o
auxiliar mais valioso que podemos ter mo. No despreze este aspecto.
O Conceit o de Tr ansaes e a Ut ilizao
de Tr ansaes em Pginas ASP
Neste tpico teremos uma introduo ao conceito de transao bem como sobre a utilizao
de transaes em pginas ASP.
Criando Sites Dinmicos com ASP 3.0
6 6 4
O Conceit o de Tr ansao
Na era da Internet e do Comrcio Eletrnico temos questes bastante complexas a serem
tratadas no desenvolvimento de aplicaes Web. Uma destas questes sobre a integridade
das bases de dados. Existem determinadas operaes que envolvem entrada e atualizao de
informaes em diversas tabelas ou at mesmo em diversos bancos de dados.
Para que possamos entender exatamente o conceito de transao, vamos fazer uso de um
exemplo clssico: O usurio que utiliza o site do seu banco na Internet para fazer uma
transferncia entre contas correntes.
Para que a transferncia ocorra com sucesso, as seguintes aes devem ser executadas:
Debitar da conta do usurio o valor a ser transferido.
Creditar o valor que est sendo transferido na conta do destinatrio.
Estas duas operaes devem ser finalizadas com sucesso e de maneira nica, ou seja, ou as
duas operaes so executadas com sucesso ou nenhuma delas. Por exemplo, se a operao
de debitar da conta do usurio aconteceu com sucesso e na hora de creditar na conta do
destinatrio houve algum problema, a operao de dbito da conta do usurio deve ser
revertida, ou seja, a conta do usurio deve ter creditado o valor anteriormente debitado.
Neste caso a operao falha como um todo e as duas contas continuam com o saldo que
tinham antes da operao.
Este exemplo serve para que possamos definir exatamente o que uma transao.
Uma transao um conjunto de uma ou mais operaes que devem acontecer como um
todo, ou seja, ou todas as operaes so realizadas com sucesso ou nenhuma das operaes
realizada. Se ocorrer algum problema depois que algumas operaes j foram efetuadas, as
mesmas devero ser revertidas, de tal maneira que a situao dos dados retorne ao seu estado
original antes das modificaes efetuadas pela transao.
medida que as aplicaes tornam-se mais e mais complexas, a utilizao de transaes
um requisito obrigatrio.
Durante algum tempo, o prprio desenvolvedor precisou codificar a funcionalidade de
transaes, de tal maneira que a integridade dos dados fosse garantida. Hoje, a funcionalidade
de transaes est embutida nos chamados servidores de Aplicao. Com isso, o desenvolvedor
no precisa escrever o cdigo para transaes, ao invs disso podem ser utilizadas as
funcionalidades oferecidas pelo servidor de Aplicao. No caso do IIS 5.0 no Windows 2000,
podemos utilizar as funcionalidades do Microsoft Transaction Services. No Windows NT
4.0, com IIS 4.0, tnhamos o Microsoft Transaction Server, o qual fazia parte do pacote de
software conhecido como Option Pack 4.0.
6 6 5
Captulo 12 Tratamento de Erros, Transaes e Outros Assuntos
Uma transao deve apresentar as caractersticas conhecidas como ACID, onde temos o
seguinte: A Atomicidade; C Consistncia; I Isolamento; D Durabilidade.
Atomicidade: Esta propriedade define que a transao deve acontecer como um todo, ou
seja, todas as aes embutidas na transao devem ocorrer com sucesso ou falhar como
um todo. Se algum erro acontecer, o sistema deve retornar ao seu estado anterior transao.
Consistncia: Esta propriedade garante que ao final da transao o sistema estar em
um estado consistente. Se todas as aes da transao forem executadas com sucesso,
as alteraes sero salvas no banco de dados e o sistema estar disponvel para uso. Se
ocorrer algum problema as alteraes sero desfeitas e o sistema tambm estar
disponvel para uso.
Isolamento: Esta propriedade muitas vezes conhecida como Serializao. Cada transao
executada como se no houvesse outras transaes. Isso feito para que, quando a
transao estiver executando, a mesma no acesse dados inconsistentes, isto , dados
que esto sendo alterados por outra transao. Com isso garantido que o sistema estar
em um estado consistente e pronto para ser utilizado ao final de cada transao.
Durabilidade: Este princpio garante que, uma vez completada a transao, as alteraes
que a mesma efetuou sero permanentemente gravadas no banco de dados, mesmo
que acontea alguma falha no sistema. No exemplo da transferncia entre contas, temos
que garantir que o valor ser realmente debitado da conta do usurio e creditado na
conta do destinatrio.
Colocando uma Pgina ASP no Cont ext o de uma Tr ansao
Podemos definir que uma pgina ASP deve ocorrer no contexto de uma transao. Para isso
podemos colocar a seguinte diretiva na primeira linha de cdigo da pgina:
<%@ TRANSACTION =required %>
Usando os mtodos Server.Transfer e Server.Execute, uma transao pode ocupar vrias
pginas ASP. Se um script contiver a diretiva @TRANSACTION, com o valor especificado
como Required (Necessrio), e o script for chamado pelo mtodo Server.Transfer ou
Server.Execute, ele continuar a transao do arquivo .asp que chama, caso esse arquivo
tenha sido transacionado. Se o arquivo .asp que chama no tiver sido transacionado, o arquivo
.asp chamado criar automaticamente uma nova transao.
Por exemplo, o script a seguir inicia uma transao:
<%@ TRANSACTION=Required %>
<HTML>
<BODY>
Criando Sites Dinmicos com ASP 3.0
6 6 6
<%
.
End transaction.
Server.Transfer(/Capitulo10/segunda.asp)
%>
No entanto, o script abaixo chama um outro script que tambm inicializa uma transao:
<%@ TRANSACTION=Required %>
<%
Instancia um componente do Microsoft Transaction Services.
Set objVendas = Server.CreateObject(VendasTransacted.Complete)
.
.
.
%>
No entanto, a interao entre os dois scripts constituiria em uma transao nica.
Est abelecendo um Scr ipt Tr ansacional
Quando voc declarar uma pgina como sendo transacional, quaisquer comandos de script e
objetos utilizados na pgina sero executados no mesmo contexto de transao. Os Servios
de componente controlam os detalhes da criao da transao e determinam se a transao
foi bem-sucedida (confirma) ou falhou (anula). Para declarar uma pgina transacional, adicione
a diretiva @TRANSACTION ao topo da pgina:
<%@ TRANSACTION = valor %>
Onde o parmetro valor pode assumir um dos seguintes valores:
Required: O script inicia uma nova transao.
Requires_New: O script inicia uma nova transao.
Supported: O script no inicia uma nova transao.
Not_Supported: O script no inicia uma nova transao.
A diretiva @TRANSACTION dever estar na primeira linha da pgina; caso contrrio, ser
gerado um erro. Voc deve adicionar a diretiva a cada pgina a ser executada em uma transao.
A transao atual finalizada quando o processamento do script termina.
A maioria dos aplicativos requer o contexto de transao somente para determinadas operaes.
Por exemplo, o site de uma companhia area pode usar scripts transacionais para operaes de
6 6 7
Captulo 12 Tratamento de Erros, Transaes e Outros Assuntos
compra de passagem e reserva de assento. Todos os demais scripts podem ser executados de
maneira segura sem um contexto de transao.
IMPORTANTE
Visto que as transaes devem ser utilizadas apenas para pginas que necessitam de
processamento de transao, voc no pode declarar o arquivo global.asa de um aplicativo
como transacional.
Se uma transao for anulada, os Servios de componente (COM+) revertero quaisquer
alteraes efetuadas nos recursos que oferecem suporte a transaes. No momento, somente
os servidores de Banco de dados do suporte integral a transaes, pois esses dados so os
mais importantes para os aplicativos de empresa. Os Servios de componente no revertem
alteraes efetuadas em um disco rgido, em uma sesso ASP e em variveis ou colees de
aplicativos. No entanto, voc pode gravar scripts que restauram variveis e colees atravs
da gravao de eventos de transao, conforme descrito mais adiante neste tpico. Seu script
tambm poder confirmar ou anular explicitamente uma transao em caso de falha de uma
operao como, por exemplo, a gravao de dados em um arquivo.
Rest abelecendo ou Abor t ando um Scr ipt
Como os Servios de componente controlam o processamento de transaes, eles determinam
se uma transao foi concluda com xito ou se falhou. Um script pode declarar explicitamente
que est anulando uma transao atravs da chamada de ObjectContext.SetAbort. Por exemplo,
o seu script poder anular uma transao se receber um erro de um componente, se uma
regra comercial for violada (por exemplo, se o saldo da conta ficar negativo) ou se uma operao
no transacional, como a leitura ou gravao de um arquivo, falhar.
IMPORTANTE
A transao tambm ser anulada se a pgina exceder o tempo limite antes da concluso da
transao.
Gr avando Event os de Tr ansao
O prprio script no pode determinar se uma transao obteve xito ou falhou. No entanto,
voc pode gravar eventos que sero chamados quando a transao for confirmada ou anulada.
Por exemplo, suponha que voc tenha um script que efetua crditos em uma conta bancria
Criando Sites Dinmicos com ASP 3.0
6 6 8
e deseje retornar pginas diferentes ao usurio, dependendo do status da transao. Voc
pode usar os eventos OnTransactionCommit e OnTransactionAbort para gravar diferentes
respostas para o usurio.
NOTA
Observe o exemplo a seguir, retirado da documentao do IIS 5.0. Nele estamos utilizando um
componente chamado MyExample.BankComponent. Este um componente que foi registrado
e pode ser gerenciado atravs do Microsoft Transaction Services. Existe uma infinidade de
componentes comerciais que podem ser adquiridos e instalados de tal forma que os mesmos
possam ser utilizados em nossas pginas ASP.
<%@ TRANSACTION=Required %>
<%
Response.Buffer = True
%>
<HTML>
<BODY>
<H1>Bem-vindo ao servio bancrio on-line</H1>
<%
Set BankAction = Server.CreateObject(MyExample.BankComponent)
BankAction.Deposit(Request(AcctNum))
%>
<P>Obrigado. A sua transao est sendo processada.</P>
</BODY>
</HTML>
<%
Mostra esta pgina em caso de sucesso da transao.
Sub OnTransactionCommit()
%>
<HTML>
<BODY>
Obrigada. A sua conta foi creditada.
</BODY>
</HTML>
<%
Response.Flush()
6 6 9
Captulo 12 Tratamento de Erros, Transaes e Outros Assuntos
End Sub
%>
<%
Mostra esta pgina se a transao falhar.
Sub OnTransactionAbort()
Response.Clear()
%>
<HTML>
<BODY>
No foi possvel concluir a transao.
</BODY>
</HTML>
<%
Response.Flush()
End Sub
%>
Regist r ando um Component e no Ger enciador de Ser vios de Component e
Para participar de uma transao, um componente deve estar registrado em um aplicativo
COM+, e deve estar configurado para requerer uma transao. Por exemplo, se o seu script
processar pedidos chamando um componente que atualiza um banco de dados de inventrio
e um componente que atualiza um banco de dados de pagamento, voc desejar que os dois
componentes sejam executados em um contexto de transao. Os Servios de componente
garantem que, se um dos componentes falhar, o pedido inteiro ser revertido e nenhum banco
de dados ser atualizado. Alguns componentes no exigem transaes; por exemplo, o
componente AdRotator no precisa de transaes.
Utilize o Gerenciador de servios de componente (Iniciar/Programas/Ferramentas administra-
tivas/Servios de componentes) para registrar e configurar um componente transacional. Os
componentes devem ser registrados em um aplicativo COM+. No coloque os seus
componentes no aplicativo COM+ em processo do IIS; em vez disso, crie o seu prprio
aplicativo COM+. Normalmente, voc deve colocar todos os seus componentes em um
aplicativo de biblioteca. Os componentes de aplicativos de biblioteca podem ser usados por
vrios aplicativos ASP e so executados no processo do aplicativo ASP.
Criando Sites Dinmicos com ASP 3.0
6 7 0
Voc tambm pode registrar componentes transacionais em um aplicativo do servidor, um
aplicativo COM+ que sempre executado em um processo separado no servidor. Utilize os
aplicativos do servidor para os componentes transacionais, a fim de utilizar segurana baseada
em funo, ou para que o acesso aos componentes seja possvel a partir de aplicativos em
computadores remotos.
Para que voc possa usar o Gerenciador de servios de componente, necessrio que os
Servios de componente estejam instalados.
Para acessar o Servio de componentes faa o seguinte:
1. Faa o logon com permisses de administrador.
2. Selecione Iniciar/Programas/Ferramentas Administrativas/Servios de componentes.
3. Surge o Snap-in indicado na Figura 12.4.
Figura 1 2.4: O Snap- in par a ger enciament o do Ser vio de component es.
4. D um clique no sinal de + ao lado de Servios de componente.
5. Nas opes que surgem, d um clique no sinal de + ao lado de Computadores.
6. Nas opes que surgem, d um clique no sinal de + ao lado de Meu computador.
7. Nas opes que surgem, d um clique no sinal de + ao lado de Aplicativos do COM+.
8. Surge a janela indicada na Figura 12.5.
9. Para instalar um novo componente COM+, clique com o boto direito na opo
Aplicativos do COM+, aponte para a opo Novo e d um clique sobre Aplicativo.
6 7 1
Captulo 12 Tratamento de Erros, Transaes e Outros Assuntos
Figura 1 2.5: Os component es COM + disponveis nest e comput ador.
10. Ser aberto o Assistente de instalao de aplicativos do COM, conforme indicado na
Figura 12.6.
Figura 1 2.6: O assist ent e par a inst alao de aplicat ivos COM .
11. Agora s seguir os passos do assistente.
Criando Sites Dinmicos com ASP 3.0
6 7 2
NOTA
Para maiores informaes sobre a instalao de Aplicativos e componentes COM, consulte a
ajuda do Windows 2000.
Escopo de Objet o
Normalmente, voc no deve armazenar objetos criados a partir de um componente do COM
nos objetos ASP Application ou Session. Os objetos COM sero desativados quando a transao
for concluda. Como os objetos Session e Application se destinam a instncias de objeto que
podem ser utilizadas em mltiplas pginas ASP, voc no dever utiliz-los para manter
objetos que sero liberados ao final de uma transao.
Um script ASP a raiz, ou o incio, de uma transao declarada. Qualquer objeto COM utilizado
em uma pgina ASP transacional ser considerado parte da transao. Quando a transao
estiver concluda, os objetos COM utilizados na pgina sero desativados, incluindo objetos
armazenados no objeto Session ou Application. Tentativas posteriores de chamar o objeto
com o escopo Session ou Application de outra pgina transacional falharo.
Colocando Tr ansaes em Fila
Atualizaes em um banco de dados de um servidor remoto podem atrasar ou anular a
concluso de uma transao devido a falhas na rede. Visto que todas as partes de uma transao
devem ser confirmadas, o aplicativo poder ficar aguardando a mensagem de confirmao ou
anulao do servidor remoto, ou poder anular uma transao porque a atualizao do banco
de dados no pde ser enviada dentro do tempo de TimeOut.
No caso de atualizaes que devem ser concludas simultaneamente, aconselhvel anular
ou mesmo atrasar a concluso da transao at que todos os participantes da transao possam
ser confirmados. Por exemplo, um aplicativo de compra de passagens de uma companhia
area deve concluir simultaneamente o dbito na conta corrente do cliente e o crdito na
conta corrente da companhia area. Caso uma atualizao seja essencial para uma transao,
mas possa ocorrer depois das outras atualizaes, talvez seja prefervel no fazer o cliente
aguardar a concluso da atualizao. Por exemplo, uma transao para solicitar uma passagem
area tambm poderia enviar uma solicitao de refeio especial a um fornecedor de servios
alimentcios ou atualizar a milhagem do cliente. Essas atividades devem ser concludas, mas
isso poder ser feito posteriormente.
O enfileiramento de mensagens permite que voc agrupe uma atualizao ou um conjunto de
atualizaes em uma mensagem transacional, que enviada a um servidor remoto. Garante
6 7 3
Captulo 12 Tratamento de Erros, Transaes e Outros Assuntos
que as atualizaes sejam enviadas ao servidor remoto, mesmo que a rede no esteja disponvel
no momento. O seu aplicativo receber uma mensagem de confirmao e poder continuar a
transao. Para o enfileiramento de mensagens podemos utilizar o Microsoft Queue Server.
NOTA
Para maiores detalhes sobre o Microsoft Queue Server consulte a ajudo do Windows 2000 ou o
site da Microsoft (www.microsoft.com).
Ut ilizando a Dir et iva # include
Existem trechos de cdigo que precisam ser utilizados em diversas pginas ASP da mesma
aplicao, ou at mesmo de aplicaes diferentes. Uma abordagem seria criar o cdigo em
cada uma das pginas no qual o mesmo seja necessrio. Porm, este procedimento traz alguns
inconvenientes, dentro os quais podemos destacar:
Necessidade de atualizar o cdigo em diversos locais quando forem necessrias
modificaes.
Maior probabilidade de introduo de erros, uma vez que o cdigo ter que ser digitado
diversas vezes.
Para solucionar este tipo de problema, podemos colocar o cdigo que deve ser utilizado por
diversas pginas em um arquivo com a extenso .inc e depois utilizar a diretiva #include
para inserir este cdigo nos diversos locais onde ele seja necessrio.
A diretiva #include possui o seguinte formato:
<! #include file=arquivo.inc >
Por exemplo:
<! #include file=conexao.inc >
Ao encontrar esta diretiva em uma pgina ASP, o IIS substitui a diretiva pelo texto do arquivo
conexao.inc. como se o cdigo do arquivo conexao.inc tivesse sido digitado diretamente na
pgina ASP. Somente depois que a substituio feita, que o script executado.
Por exemplo, o nosso arquivo conexao.inc poderia conter o cdigo necessrio para estabelecer
uma conexo com o banco de dados nwind.mdb. Com isso teramos o seguinte cdigo no
arquivo conexao.inc:
<%
O primeiro passo criar a conexo com o banco de dados
Para isto crio um objeto do tipo Connection
Cria um objeto do tipo ADODB.Connection
Criando Sites Dinmicos com ASP 3.0
6 7 4
Set conn=Server.CreateObject(ADODB.Connection)
Agora abro uma conexo com a fonte ODBC nwind
criada anteriormente.
conn.ConnectionString = PROVIDER=MICROSOFT.JET.OLEDB.4.0;
DATA SOURCE=c:\meus documentos\nwind.mdb
conn.Open
%>
Cada vez que uma pgina precisasse estabelecer uma conexao com o banco de dados Nwind
s incluir a diretiva a seguir, na primeira linha, logo abaixo da tag <BODY>:
<! #include file=conexao.inc >
Se por algum motivo o arquivo nwind.mdb tivesse que ser movido para outro drive, a string
de conexo teria que ser reconfigurada. Utilizando a diretiva #include, somente precisaramos
alterar em um nico lugar: no arquivo conexao.inc. A partir deste momento, todas as pginas
que acessam o arquivo conexao.inc passaro a ter acesso s modificaes efetuadas no arquivo
conexao.inc. Veja o quanto esta tcnica facilita a manuteno de nossas pginas ASP, evitando
que uma mudana simples como esta, tivesse que ser feita em dezenas de pginas.
IMPORTANTE
A conta com a qual o usurio est fazendo acesso ao site deve ter permisses para acessar o
arquivo .inc. Caso contrrio ocorrer um erro. Por exemplo, se o usurio est autenticado
como usurio annimo, a conta IUSR_NOME_DO_COMPUTADOR deve ter permisses NTFS
sobre os arquivos que forem acessados via diretiva #include, caso contrrio o usurio receber
uma mensagem de erro.
Vamos dar uma olhada na sintaxe da diretiva #include.
A sintaxe completa para a diretiva include a seguinte:
<! #include Tipo_de_caminho = Nome_do_arquivo >
Onde temos os seguintes parmetros:
Tipo_de_caminho: Especifica o tipo do caminho. O tipo de caminho pode ter um dos
seguintes valores:
File: O nome de arquivo um caminho relativo do diretrio que contm o documento
com a diretiva #include. O arquivo includo pode estar no mesmo diretrio ou em um
subdiretrio; ele no pode estar em um diretrio acima da pgina com a diretiva #in-
clude. Por exemplo, se a pgina .asp est no diretrio wwwroot/Capitulo12 e o arquivo
conexao.inc est no diretrio wwwroot/Capitulo12/padroes, usaremos a seguinte diretiva:
<! #include file=padroes/conexao.inc >
6 7 5
Captulo 12 Tratamento de Erros, Transaes e Outros Assuntos
Virtual O nome de arquivo um caminho completo virtual de um diretrio virtual
em seu site da Web.
Nome de arquivo: Especifica o nome do arquivo a ser includo. Nome_do_arquivo
deve conter a extenso de nome de arquivo e dever estar entre aspas (). Geralmente
utilizamos a extenso .inc. Porm tambm podem ser utilizadas outras extenses.
Os arquivos includos podem ter qualquer extenso de nome de arquivo, mas recomenda-se
fornecer a extenso .inc.
Exemplos:
<!O arquivo includo est no mesmo diretrio que o arquivo pai. >
<! #include file = meu_arquivo.inc >
<! O arquivo includo est no diretrio virtual Scripts. >
<! #include virtual = /scripts/tools/global.inc >
As Dir et ivas @
Nesta seo aprenderemos um pouco mais sobre as chamadas Diretivas de processamento ou
diretivas @. Utilizamos as Diretivas de processamento @ em scripts para enviar informaes
ao IIS sobre como processar um arquivo .asp. Por exemplo, o script a seguir usa a Diretiva de
processamento @LANGUAGE para definir a linguagem de script como VBScript.
<%@LANGUAGE=VBScript %>
IMPORTANTE
Estas diretivas devem aparecer na primeira linha do arquivo .asp, antes que qualquer entrada
tenha sido enviada para o navegador do cliente.
No IIS 5.0, temos acesso a cinco diretivas:
@CODEPAGE
@ENABLESESSIONSTATE
@LANGUAGE
@LCID
@TRANSACTION
Criando Sites Dinmicos com ASP 3.0
6 7 6
A Dir et iva de Pr ocessament o @ CODEPAGE
Voc pode usar a diretiva @CODEPAGE para definir a pgina de cdigo a ser usada para o
arquivo .asp. Uma pgina de cdigo um conjunto de caracteres, que pode incluir nmeros,
marcas de pontuao e outros smbolos. Diferentes idiomas e locais podem usar diferentes
pginas de cdigo.
Por exemplo, a pgina de cdigo ANSI 1252 usada para o ingls americano e a maioria dos
idiomas europeus; a pgina de cdigo OEM 932 usada para o Kanji japons.
Uma pgina de cdigo pode ser representada em uma tabela como um mapeamento de
caracteres para valores de byte nico ou valores de vrios bytes. Por exemplo, quando
utilizamos caracteres Unicode, cada caractere utiliza 2 bytes.
Tambm podemos substituir a pgina de cdigo definida pela diretiva @CODEPAGE com a
propriedade Session.CodePage, conforme aprendemos no Captulo 8. No entanto, essa ao
se aplicar somente a scripts em execuo dentro do escopo da sesso.
Sintaxe:
<%@ CODEPAGE = pgina_de_cdigo%>
Onde: pgina_de_cdigo um nmero inteiro que representa uma pgina de cdigo vlida
para o sistema que est executando o interpretador ASP.
Na Tabela 12.2, temos o valor para alguns dos principais Cdigos de Pgina.
Tabela 12.2 Valores de Cdigos de Pgina.
Cdigo Descrio Alias
1200 Alfabeto Universal unicode
1201 Alfabeto Universal (Big-Indiano) unicodeFEFF
1250 Alfabeto da Europa Central (Windows) windows-1250
1251 Alfabeto Cirylico (Windows) windows-1251
1252 Alfabeto Oeste Ocidental iso-8859-1
1253 Alfabeto Grego (Windows) windows-1253
1254 Alfabeto Turco iso-8859-9
1255 Alfabeto Hebreu (Windows) iso-8859-8
6 7 7
Captulo 12 Tratamento de Erros, Transaes e Outros Assuntos
A Dir et iva de Pr ocessament o @ ENABLESESSIONSTATE
Utilizamos a diretiva @ENABLESESSIONSTATE para desativar o controle de sesses de uma
pgina. O controle de sesses mantm informaes sobre um conjunto de solicitaes emitidas
por um nico cliente. Se sua pgina no depende de informaes de sesso, a desativao
deste controle pode reduzir o tempo que o IIS demora para processar o script.
Utilizamos a seguinte sintaxe:
<%@ ENABLESESSIONSSTATE = True ou False %>
Cdigo Descrio Alias
1256 Alfabeto Arbico (Windows) windows-1256
1257 Alfabeto Bltico (Windows) windows-1257
1258 Alfabeto Vietnamita (Windows) windows-1258
20866 Alfabeto Cirylico (KOI8-R) koi8-r
21866 Alfabeto Ucraniano (KOI8-RU) koi8-ru
28592 Alfabeto Europa Central (ISO) iso-8859-2
28593 Alfabeto Latino 3 (ISO) iso-8859-3
28594 Alfabeto Bltico (ISO) iso-8859-4
28595 Alfabeto Cirylico (ISO) iso-8859-5
28596 Alfabeto Arbico (ISO) iso-8859-6
28597 Alfabeto Grego (ISO) iso-8859-7
50220 Japons (JIS) iso2022-jp
50225 Coreano (ISO) iso-2022-cr
51949 Coreano (EUC) euc-cr
852 Europa Central (DOS) ibm852
866 Alfabeto Cirylico (DOS) cp866
936 Alfabeto Chins Simplificado gb2312
949 Coreano ks_c_5601-1987
950 Chins Tradicional (big5) big5
Criando Sites Dinmicos com ASP 3.0
6 7 8
True: Ativa o controle de sesso.
False: Desativa o controle de sesso.
A Dir et iva de Pr ocessament o @ LANGUAGE
possvel usar a diretiva @LANGUAGE para definir a linguagem que ser usada para interpretar
os comandos em um script. Voc pode definir sua linguagem de Script para qualquer
interpretador instalado no IIS. A linguagem padro VBScript, portanto, se voc no incluir
uma diretiva @LANGUAGE no seu script, o mesmo ser interpretado pelo interpretador
VBScript.
Sintaxe:
<%@ LANGUAGE = nome_interpretador %>
Onde: nome_interpretador o nome do interpretador que deve executar o script. O IIS
fornecido com dois interpretadores, o VBScript e o JScript. Tambm possvel instalar outros
interpretadores, como por exemplo, o interpretador para a linguagem Perl.
A Dir et iva de Pr ocessament o @ LCID
Podemos usar a diretiva @LCID para definir o Identificador de Local (LCID, identificador de
local) para um script. O LCID um parmetro do tipo DWORD que contm o identificador de
linguagem na palavra inferior e um valor reservado na palavra superior. O identificador
fornecido em um LCID uma abreviao numrica internacional padro. Esse LCID tem os
componentes necessrios para identificar com exclusividade um dos locais definidos pelo
sistema instalado. Existem dois valores de LCID predefinidos. LOCALE_SYSTEM_DEFAULT
o local padro do sistema, e LOCALE_USER_DEFAULT o local do usurio atual.
Sintaxe
<%@ LCID = identificador_de_local %>
O identificador de local define, dentre outros, os seguintes aspectos:
Smbolo da moeda.
Formato para a data e a hora.
Se o relgio de 12 ou de 24 horas.
Nmero de casas a usar depois da vrgula; tanto para nmeros como para valores de
moeda.
6 7 9
Captulo 12 Tratamento de Erros, Transaes e Outros Assuntos
Em muitas tabelas com a relao dos LCIDs, o valor fornecido em hexadecimal. Por exemplo,
o valor de LCID para o Brasil fornecido como 0416. Na verdade este valor deve ser convertido
para decimal. Convertendo 0416 de hexadecimal para decimal, obteremos 1046. A podemos
utilizar o seguinte comando:
<% @LCID=1046 %>
para definir o cdigo de localidade para o Brasil.
NOTA
Tambm podemos alterar o cdigo LCID utilizando a propriedade LCID do objeto Session,
conforme descrito no Captulo 8.
A Dir et iva de Pr ocessament o @ TRANSACTION
Podemos usar a diretiva @TRANSACTION para indicar que o script deve ser tratado como
uma transao. Se um script for tratado como uma transao, os Servios de componente
(COM) criaro uma transao para coordenar a atualizao de recursos.
Utilizamos a seguinte sintaxe:
<%@ TRANSACTION = valor %>
Onde:
Valor uma cadeia de caracteres que indica o tipo de suporte de transao. Os valores possveis so:
Required O script iniciar uma transao.
Requires_New O script iniciar uma transao.
Supported O script no iniciar uma transao.
Not_Supported O script no iniciar uma transao.
Se um script contiver a diretiva @TRANSACTION, ela dever ser a primeira linha do arquivo .asp,
caso contrrio, ser gerado um erro. Voc deve adicionar a diretiva a cada pgina a ser executada em
uma transao. A transao atual finalizada quando o processamento do script termina.
Se o script que contm a diretiva @TRANSACTION foi chamado pelo mtodo Server.Transfer
ou Server.Execute e o valor foi especificado como Required, o mesmo continuar a transao
do arquivo .asp de chamada, se essa transao tiver sido criada. Se a transao do arquivo
.asp de chamada no tiver sido criada, o arquivo .asp chamado criar uma nova transao.
Criando Sites Dinmicos com ASP 3.0
6 8 0
Por exemplo, os dois scripts a seguir seriam considerados uma transao:
ASP1
<%@ TRANSACTION=Required %>
<%
Server.Transfer(asp2.asp)
%>
ASP2
<%@ TRANSACTION=Required%>
<%
Server.CreateObject(MeuComponente.Closeout)
%>
Concluso
Neste captulo analisamos uma miscelnea de assuntos a respeito de ASP.
Iniciamos o captulo falando sobre o objeto ASPError e sobre a importncia do tratamento de
erros em nossas aplicaes Web. Tambm foram dadas algumas sugestes para reduzir a
ocorrncia de erros e gerar cdigo de melhor qualidade.
Depois passamos ao conceito de transaes. Vimos o que significa cada uma das letras da
sigla ACID. Aprendemos a utilizar a diretiva @TRANSACTION para inserir uma pgina ASP
no contexto de uma transao.
Na seqncia, passamos ao estudo da diretiva #include, a qual facilita a padronizao e
manuteno do cdigo, uma vez que podemos escrever cdigo que comum a muitas pginas
em um nico arquivos, e depois inserir este arquivo, onde for necessrio, utilizando a diretiva
#include.
Para finalizar o captulo tratamos das diretivas @, conhecidas como Diretivas de
processamento. Estas diretivas orientam o servidor IIS sobre como o mesmo deve processar
cada pgina. Atravs destas diretivas podemos definir qual o interpretador que deve ser usado,
qual o cdigo de localidade e assim por diante.
Com isso, estamos encerrando este trabalho. Procurei colocar informaes teis para usurios
desde o iniciante at o usurio mais experiente. Obviamente que este trabalho no esgota o
assunto, pois o mesmo muito extenso.
6 8 1
Apndice Referncia Rpida da Linguagem VBScript
Apndi ce
Referncia Rpida
da Linguagem VBScript
Criando Sites Dinmicos com ASP 3.0
6 8 2
Neste anexo apresentaremos um guia de referncia rpida para a Linguagem VBScript.
Lembrando que nos diversos exemplos apresentados neste livro, estivemos utilizando a
linguagem VBScript. Optamos pela utilizao deesta linguagem devido a facilidade de
aprendizagem aliada a sua versatilidade e poder. Mesmo sendo uma linguagem de Script,
incrvel o nmero de recursos que a mesma oferece. Alm disso, por ser derivada do Visual
Basic, sendo classificada inclusive como um subconjunto do Visual Basic, de fcil assimilao
para quem j trabalha com Visual Basic ou VBA Visual Basic for Applications.
Podemos ter cdigo VBScript que roda no cliente ou que roda no servidor.
Para declarar um bloco de cdigo que roda no cliente, utilizamos a seguinte sintaxe:
<SCRIPT LANGUAGE=vbscript>
<!
Comando1
Comando2
...
Comandon
>
</SCRIPT>
Para declarar um bloco de cdigo que roda no servidor, utilizamos a seguinte sintaxe:
<SCRIPT LANGUAGE=vbscript RUNAT=Server>
Comando1
Comando2
...
Comandon
</SCRIPT>
Tambm podemos utilizar o VBScript dentro de qualquer trecho de cdigo ASP. Nos exemplos
deste livro, sempre utilizamos a diretiva @LANGUAGE, para definir que o interpretador
VBScript que devia ser utilizado para executar os comandos dentro dos trechos de cdigo
ASP. Para definir que o VBScript deve ser utilizado, podemos usar o seguinte comando:
<%@ Language=VBScript %>
NOTA
Lembre que as diretivas de processamento (diretivas @) devem ser o primeiro comando da
pgina, antes que tenha sido enviada qualquer sada para o navegador do cliente.
6 8 3
Apndice Referncia Rpida da Linguagem VBScript
Outra opo que teramos seria a utilizao de Java Script, que na verso da Microsoft
conhecido como JScript. Conforme descrito anteriormente, optamos pela utilizao de
VBScript, que no ponto de vista deste autor parece ser a escolha mais indicada quando
trabalhamos com pginas ASP.
Declar ando Var iveis com VBScr ipt
Para declarar variveis com o VBScript, utilizamos o comando Dim. Observe os exemplos.
Dim a,b,c
Dim nomes(20)
O primeiro comando declara trs variveis sem tipo definido, ou melhor, do tipo Variant. No
VBScript, diferente do Visual Basic ns no declaramos o tipo da varivel. Por padro, todas
as variveis so do tipo Variant, isto , podem conter qualquer valor. Para que possamos ter
um tratamento mais refinado em relao as variveis so definidos os chamados subtipos de
Variant, os quais esto descritos na Tabela A.1.
Na Tabela A.1, temos a descrio para os subtipos do tipo Variant.
Tabela A.1 Subtipos do tipo Variant.
Subtipo Descrio
Empty uma varivel no inicializada.
NULL A varivel intencionalmente no contm um valor vlido.
Boolean Pode conter True ou False.
Byte Pode conter um inteiro de 0 a 250.
Integer Pode conter um inteiro entre 32.768 e 32.767.
Currency de 922.337.203.685.477,5808 at 922.337.203.685.447,5807.
Long Pode conter um inteiro de 2.147.483.648 at 2.147.483.647.
Single Pode conter um nmero de preciso simples, na faixa de
3,402823E38 at 1,402398E-45 para valores negativos e
1.401298E-45 at 3.402823E38 para valores positivos.
Double Pode conter um nmero de preciso dupla na faixa de
1,79769313486232E308 at 4,94065645841247E-324 para
valores negativos e de 4,94065645841247E-324 at
1,79769313486232E308 para valores positivos.
Criando Sites Dinmicos com ASP 3.0
6 8 4
O segundo comando Dim nomes(20), declara um array com 21 elementos. Isto mesmo, so
21 e no 20 elementos. No esquea que o primeiro elemento o de ndice 0 (zero) e no o de
ndice 1 (um).
Mais adiante veremos sobre as funes para converso de tipos.
IMPORTANTE
Embora no seja obrigatria a declarao das variveis em VBScript, sempre uma boa prtica
de programao declarar e comentar todas as variveis que utilizamos em nosso cdigo.
Tambm podemos criar arrays dinmicos, utilizando a seguinte declarao:
Dim nomes( ).
ou at mesmo arrays de mltiplas dimenses. Por exemplo, podemos criar uma Matriz-array
de duas dimenses, utilizando o seguinte comando:
Dim produo(4,10).
Oper ador es
Para realizar desde operaes bastante simples, at operaes mais complexas, VBScript nos
disponibiliza uma srie de operadores, os quais esto descritos na Tabela A.2.
Na Tabela A.2, temos a descrio dos operadores do VBScript.
Tabela A.2 Operadores do VBScript.
Operador Descrio
+ Adio
- Subtrao
Subtipo Descrio
Date(Time) Contm um nmero, o qual representa a data entre 01 de
Janeiro do ano 100 e 31 de Dezembro de 9999.
String Contm uma String de tamanho varivel com no mximo 2
bilhes de caracteres.
Object Contm um objeto.
Error Contm um nmero de erro.
6 8 5
Apndice Referncia Rpida da Linguagem VBScript
Est r ut ur as de Deciso e Laos de Cont r ole em VBScr ipt
No VBScript temos acesso s estruturas de deciso e laos de controle mais comuns, existentes
na maioria das linguagens.
Est r ut ur a de Deciso If Then Else
If teste_lgico Then
Comandos se o teste lgico for verdadeiro.
Else
Comandos se o teste lgico for falso.
End If
Operador Descrio
* Multiplicao
/ Diviso
& Operador And em expresses lgicas e tambm
operador de concatenao de Strings.
^ Exponenciao
\ Retorna o valor inteiro da diviso de dois nmeros.
MOD Retorna o resto da diviso entre dois nmeros.
OR Operador lgico OU.
Temos tambm os operadores de comparao, descritos na Tabela A.3.
Tabela A.3 Operadores de comparao do VBScript.
Operador Descrio
> Maior do que.
< Menor do que.
>= Maior ou igual .
<= Menor ou igual .
<> Diferente de.
Criando Sites Dinmicos com ASP 3.0
6 8 6
Est r ut ur a de deciso If Then ElseIf
If teste_lgico1 Then
Comandos se o teste lgico 1 for verdadeiro.
ElseIf teste_lgico2 Then
Comandos se o teste lgico 2 for verdadeiro.
Else
Comandos se nenhum dos testes anteriores for verdadeiro.
End If.
Neste caso, assim que um dos testes lgicos for verdadeiro, os comandos respectivos so
executados e a estrutura abandonada. Por exemplo, se o teste_lgico1 for verdadeiro, os
comandos respectivos sero executados e os demais testes nem sequer sero avaliados.
O Lao For. . . Next
Este lao executa um bloco de cdigo um nmero determinado de vezes.
For i=1 to 10
i=i+1
msgbox i
Next
O Lao For Each. . . Next
Este lao repete um bloco de cdigo para cada elemento de um array ou coleo.
<%
For each campo in Request.Form
Response.Write O nome do campo : & campo
Next
%>
A Est r ut ur a Select Case. . . End Select
Esta estrutura pode ser utilizada em substituio a uma srie de instrues If Then... Else.
Select Case Month(Date())
Case 1
MsgBox Estamos no ms de Janeiro
Case 2
MsgBox Estamos no ms de Fevereiro
Case 3
6 8 7
Apndice Referncia Rpida da Linguagem VBScript
MsgBox Estamos no ms de Maro
Case 4
MsgBox Estamos no ms de Abril
Case 5
MsgBox Estamos no ms de Maio
Case 6
MsgBox Estamos no ms de Junho
Case 7
MsgBox Estamos no ms de Julho
Case 8
MsgBox Estamos no ms de Agosto
Case 9
MsgBox Estamos no ms de Setembro
Case 10
MsgBox Estamos no ms de Outubro
Case 11
MsgBox Estamos no ms de Novembro
Case 12
MsgBox Estamos no ms de Dezembro
End Select.
A Est r ut ur a Do While Condio. . . Loop
Neste caso, estamos utilizando o operador condicional While, no incio do lao. O formato
geral, neste caso o seguinte:
Do While condio
Comando1
Comando2
...
Comandon
Loop
Nesta estrutura, enquanto a condio for Verdadeira, o cdigo dentro do lao executado.
Quando a condio tornar-se Falsa, o primeiro comando aps o final do lao ser executado.
Neste caso, se a condio for Falsa j na primeira vez, o lao no ser executado nenhuma vez.
Criando Sites Dinmicos com ASP 3.0
6 8 8
IMPORTANTE
O cdigo dentro do lao deve ser capaz de alterar a condio para Falso, quando for necessrio,
pois caso contrrio a condio ser sempre Verdadeira, e os comandos dentro do lao ficaro
em execuo, infinitamente, ou at o programa travar. A criao de laos infinitos, devido a
erros de programao, uma causa comum de erros e travamentos.
Considere o exemplo:
<SCRIPT LANGUAGE=vbscript>
<!
Dim x
x=10
Contador=1
Soma=0
Faz a soma dos 10 primeiros nmeros maiores do que zero
Do While Contador <= x
Soma = Soma + Contador
Contador = Contador + 1
Loop
>
</SCRIPT>
A Est r ut ur a Do. . . Loop While Condio
Neste caso, deslocamos o teste de condio para o final do lao. Com o teste no final do lao,
o cdigo dentro do lao, ser executado, pelo menos uma vez, pois o teste somente feito no
final, e continuar sendo executado, enquanto a condio for Verdadeira. O formato geral,
neste caso o seguinte:
Do
Comando1
Comando2
...
Comandon
Loop While condio
6 8 9
Apndice Referncia Rpida da Linguagem VBScript
Nesta estrutura, enquanto a condio for Verdadeira, o cdigo dentro do lao executado.
Quando a condio tornar-se Falsa, o primeiro comando aps o final do lao ser executado.
Neste caso, se a condio for Falsa j na primeira vez, o lao ser executado uma nica vez.
IMPORTANTE
O cdigo dentro do lao deve ser capaz de alterar a condio para Falso, quando for necessrio,
pois caso contrrio a condio ser sempre Verdadeira, e os comandos dentro do lao ficaro
em execuo, infinitamente, ou at o programa travar. A criao de laos infinitos, devido a
erros de programao, uma causa comum de erros e travamentos.
Considere o exemplo:
<SCRIPT LANGUAGE=vbscript>
<!
Dim x
x=10
Contador=1
Soma=0
Faz a soma dos 10 primeiros nmeros maiores do que zero
Do
Soma = Soma + Contador
Contador = Contador + 1
Loop While Contador <= x
MsgBox Valor da Soma = & Soma
>
</SCRIPT>
A Est r ut ur a Do Unt il Condio. . . Loop
Neste caso, estamos utilizando o operador condicional Until, no incio do lao. O formato
geral, neste caso o seguinte:
Do Until condio
Comando1
Comando2
...
Comandon
Loop
Criando Sites Dinmicos com ASP 3.0
6 9 0
Nesta estrutura, enquanto a condio for Falsa, o cdigo dentro do lao executado. Quando a
condio tornar-se Verdadeira, o primeiro comando aps o final do lao ser executado. Neste
caso, se a condio for Verdadeira, j na primeira vez, o lao no ser executado nenhuma vez.
IMPORTANTE
O cdigo dentro do lao deve ser capaz de tornar a condio Verdadeira, quando for necessrio,
pois caso contrrio a condio ser sempre Falsa, e os comandos dentro do lao ficaro em
execuo, infinitamente, ou at o programa travar. A criao de laos infinitos, devido a erros
de programao, uma causa comum de travamentos e erros.
Considere o exemplo:
<SCRIPT LANGUAGE=vbscript>
<!
Dim x
x=10
Contador=1
Soma=0
Faz a soma dos 10 primeiros nmeros maiores do que zero
Do Until Contador > x
Soma = Soma + Contador
Contador = Contador + 1
Loop
MsgBox Valor da Soma = & Soma
>
</SCRIPT>
A Est r ut ur a Do. . . Loop Unt il Condio
Neste caso, deslocamos o teste de condio para o final do lao. Com o teste no final do lao,
o cdigo dentro do lao ser executado, pelo menos uma vez, pois o teste somente feito no
final, e continuar sendo executado, enquanto a condio for Falsa. O formato geral, neste
caso o seguinte:
Do
Comando1
Comando2
6 9 1
Apndice Referncia Rpida da Linguagem VBScript
...
Comandon
Loop Until condio
Nesta estrutura, enquanto a condio for Falsa, o cdigo dentro do lao executado. Quando a
condio tornar-se Verdadeira, o primeiro comando aps o final do lao ser executado. Neste
caso, se a condio for Verdadeira, j na primeira vez, o lao ser executado uma nica vez.
IMPORTANTE
O cdigo dentro do lao deve ser capaz de tornar a condio Verdadeira, quando for necessrio,
pois caso contrrio a condio ser sempre Falsa, e os comandos dentro do lao ficaro em
execuo, infinitamente, ou at o programa travar. A criao de laos infinitos, devido a erros
de programao, uma causa comum de erros e travamentos.
Considere o exemplo:
<SCRIPT LANGUAGE=vbscript>
<!
Dim x
x=10
Contador=1
Soma=0
Faz a soma dos 10 primeiros nmeros maiores do que zero
Do
Soma = Soma + Contador
Contador = Contador + 1
Loop Until Contador > x
MsgBox Valor da Soma = & Soma
>
</SCRIPT>
Coment r ios em VBScr ipt
Em blocos de cdigo VBScript podemos utilizar a palavra Rem para criar uma linha de
comentrio:
Rem Esta linha um comentrio.
Criando Sites Dinmicos com ASP 3.0
6 9 2
J em blocos de cdigo ASP podemos utilizar o apstrofe para criar uma linha de comentrio.
<%
Esta linha de comentrio.
%>
Funes no VBScr ipt
A linguagem VBScript nos oferece uma grande quantidade de funes. Temos funes para
converso de tipos de valores, outras para trabalhar com datas, com Strings para formatao
de nmeros e assim por diante.
Vamos apresentar um resumo das principais funes do VBScript, divididas em Categorias.
Funes Par a Conver so de Valor es
Estas funes so utilizadas para converter valores de um subtipo para outro subtipo.
Na seqncia, temos a apresentao das principais funes desta categoria.
ASC( St r ing)
Retorna o valor numrico do cdigo ANSI para o primeiro caractere da String passada como
parmetro.
Asc(G)
Retorna: 71
Chr ( nmer o)
Retorna o caractere ASCII correspondente ao nmero passado como parmetro.
Chr(65)
Retorna: A
CBool( expr esso)
Retorna Verdadeiro ou Falso, dependendo da expresso que foi passada como parmetro.
Cbool(2>3)
Retorna: False (Falso)
6 9 3
Apndice Referncia Rpida da Linguagem VBScript
Cbool(2<3)
Retorna: True (Verdadeiro)
CByt e( expr esso)
Converte a expresso passada como parmetro para um Variant do subtipo Byte.
Cbyte(20)
Retorna: 20
Cbyte(300)
Retorna: Um erro
Tipo de erro:
Erro de tempo de execuo do Microsoft VBScript (0x800A0006)
Sobrecarga: Cbyte
Pois o subtipo Byte s admite valores at 250.
CCur ( expr esso)
Converte a expresso passada como parmetro para um Variant do subtipo Currency.
Observe o exemplo:
Valor = 543.214588
Response.Write valor*2
Retorna: 1086,429176
Agora vamos utilizar a funo CCur:
Valor = 543.214588
Response.Write CCur(valor*2)
Retorna: 1086,4292
CDat e( dat a)
Converte a data passada como parmetro para um Variant do subtipo Date. Onde data
qualquer expresso de data vlida.
CDate(Novembro 10,1991)
Retorna: 10/11/1991
Criando Sites Dinmicos com ASP 3.0
6 9 4
CDbl( dat a)
Converte a expresso passada como parmetro para um Variant do subtipo Double.
Observe o exemplo:
Dim Moeda, ValorDouble
Moeda = CCur(234.456784) Moeda igual a Currency (234.4567).
ValorDouble = CDbl(CCurr * 8.2 * 0.01) Converte o resultado para Double
(19.2254576).
CInt ( expr esso)
Converte a expresso passada como parmetro para um Variant do subtipo Integer.
CInt(30/7)
Retorna: 4
CLng( expr esso)
Converte a expresso passada como parmetro para um Variant do subtipo Long.
Considere o exemplo:
Dim MyVal1, MyVal2, MyLong1, MyLong2
MyVal1 = 25427.45
MyVal2 = 25427.55 MyVal1, MyVal2 so do tipo Double
MyLong1 = CLng(MyVal1) MyLong1 contm 25427.
MyLong2 = CLng(MyVal2) MyLong2 contm 25428.
CSng( expr esso)
Converte a expresso passada como parmetro para um Variant do subtipo Single.
Considere o exemplo:
Dim MyDouble1, MyDouble2, MySingle1, MySingle2
MyDouble1, MyDouble2 contero valores do tipo Double.
MyDouble1 = 75.3421115
MyDouble2 = 75.3421555
MySingle1 = CSng(MyDouble1) MySingle1 contm 75.34211.
MySingle2 = CSng(MyDouble2) MySingle2 contm 75.34216.
6 9 5
Apndice Referncia Rpida da Linguagem VBScript
CSt r ( expr esso)
Converte a expresso passada como parmetro para um Variant do subtipo String.
CStr(233)
Retorna a String: 233
Fix( expr esso)
Retorna a parte inteira do nmero.
Fix(30/7)
Retorna: 4
Hex( expr esso)
Retorna uma String representando o valor hexadecimal do nmero.
Hex(1562)
Retorna: 61A
Int ( expr esso)
Converte a expresso passada como parmetro para um Variant do subtipo Integer.
Int(30/7)
Retorna: 4
Oct ( expr esso)
Retorna uma String representando o valor octal do nmero.
Oct(1562)
Retorna: 3032
Round( expr esso, numcasasdecimais)
Retorna um nmero com a quantidade de casas decimais definidas pelo parmetro
numcasasdecimais.
Round(235.3658,2)
Retorna: 235,37
Criando Sites Dinmicos com ASP 3.0
6 9 6
Sgn( expr esso)
Retorna um nmero inteiro indicando o sinal do nmero.
Sgn(-23)
Retorna: -1
Sgn(23)
Retorna: 1
Funes Par a Tr abalho com Dat as
Estas funes so utilizadas para facilitar o trabalho com datas e horas.
Na seqncia temos a apresentao das principais funes desta categoria.
Dat e( )
Esta funo retorna a data do sistema.
Date ( )
Retorna: 21/08/2000.
Dat eAdd( int er valo, numer odeint er valos, dat a)
Esta funo utilizada para retornar uma data a partir de um intervalo que foi adicionado.
Utilizamos a seguinte sintaxe:
DateAdd(intervalo,numerodeintervalos,data)
onde, o parmetro intervalo especifica o tipo de intervalo que deve ser adicionado. Na Tabela
A.3 temos os valores possveis para este parmetro.
Tabela A.3 Valores possveis para o parmetro intervalo.
Valor Descrio
yyyy Ano
q Trimestre
m Ms
d Dias
6 9 7
Apndice Referncia Rpida da Linguagem VBScript
Por exemplo, para saber que data teremos contados 10000 dias a partir da data atual,
podemos utilizar:
DateAdd(d,10000,Date())
Retorna algo do tipo: 19/12/2027.
Para saber em que data ter transcorrido um milho de dias aps 01/01/1900, podemos utilizar
o seguinte comando:
DateAdd(d,1000000,01/01/1900)
Retornar: 26/11/4637 00:00:45
DateDiff(intervalo,data1,data2)
Esta funo utilizada para calcular a diferena entre duas datas. Esta diferena pode ser
calculada em intervalos de tempo conforme definido pelo parmetro intervalo. Os valores
possveis para o parmetro intervalo esto indicados na tabela A.3.
Por exemplo, para saber o nmero de dias entre a data atual e a data do Descobrimento do
Brasil, podemos utilizar o seguinte comando:
DateDiff(d,22/04/1500,Date())
Retorna algo do tipo: 36740.
Dat ePar t ( int er valo, dat a)
Esta funo retorna apenas uma parte da data. A parte que ser retornada definida pelo parmetro
intervalo. Os valores possveis para o parmetro intervalo esto indicados na tabela A.3.
DatePart (yyyy,01/05/2000)
Retorna: 2000.
Valor Descrio
w Dia de semana
ww Semanas
h Horas
m Minutos
s Segundos
Criando Sites Dinmicos com ASP 3.0
6 9 8
Dat eSer ial( ano, ms, dia)
Esta funo retorna uma variante do subtipo Data.
DateSerial (1990+10,12-4,31)
Retorna: 31/08/2000.
Dat eValue( St r ing)
Esta funo retorna uma variante do subtipo Data. A String deve conter um formato de data vlida.
DateValue (Novembro 23,1997)
Retorna: 23/11/1997.
Day( dat a)
Retorna apenas o dia da data que foi passada como parmetro.
Day(25/02/2000)
Retorna: 25.
Hour ( t empo)
Retorna apenas a hora do tempo passado como parmetro.
Hour(18:22:31)
Retorna: 18.
M inut e( t empo)
Retorna apenas os minutos do tempo passado como parmetro.
Minute(18:22:31)
Retorna: 22.
M ont h( dat a)
Retorna apenas o ms da data que foi passada como parmetro.
Month(25/02/2000)
Retorna: 02.
6 9 9
Apndice Referncia Rpida da Linguagem VBScript
M ont hName( dat a)
Retorna uma String referente ao ms da data.
MonthName(02)
Retorna: fevereiro.
Para receber o nome do ms abreviado utilize a seguinte sintaxe:
MonthName(02,True)
Retorna: fev.
Now( )
Esta funo retorna a data e a hora do sistema.
Now ()
Retorna algo do tipo: 2/8/2000 05:08:51.
Second( t empo)
Retorna apenas os segundos do tempo passado como parmetro.
Second(18:22:31)
Retorna: 31.
Time( )
Esta funo retorna um Variant do subtipo Date, a qual indica a hora do sistema.
Time ( )
Retorna algo do tipo: 05:08:51.
TimeSer ial( hor a, minut o, segundo)
Esta funo retorna um Variant do subtipo Date, a qual representa os parmetros passados.
TimeSerial (12+3,23,45-8)
Retorna: 15:23:37.
Criando Sites Dinmicos com ASP 3.0
7 0 0
TimeValue( St r ing)
Esta funo retorna um Variant do subtipo Date, de acordo com a String passada como
parmetro. A String deve ser um formato de hora vlido.
TimeValue(12:23:45)
Retorna: 12:23:45.
WeekDay( dat a)
Retorna um nmero indicativo do dia da semana.
WeekDay(21/08/2000)
Retorna: 2 (indicando segunda-feira).
WeekDayName( nmer o)
Retorna uma String com o nome do dia da semana.
WeekDayName(2)
Retorna: segunda-feira.
WeekDayName(4)
Retorna: quarta-feira.
WeekDayName(2,true)
Retorna: seg.
O True como segundo parmetro indica que para retornar o nome abreviado.
Year ( dat a)
Retorna apenas o ano da data que foi passada como parmetro.
Year(25/02/2000)
Retorna: 2000.
Funes M at emt icas
Estas funes so utilizadas para facilitar os clculos matemticos.
Na seqncia temos a apresentao das principais funes desta categoria.
7 0 1
Apndice Referncia Rpida da Linguagem VBScript
At n( nmer o)
Esta funo retorna Arco tangente de um nmero. O nmero representa um valor em radianos.
Atn(3.14)
Retorna: 1,26248066459947.
Cos( nmer o)
Esta funo retorna o coseno de um nmero. O nmero representa um valor em radianos.
Cos(3.14)
Retorna: -1.
Exp( nmer o)
Retorna o logaritmo neperiano e elevado ao nmero passado como parmetro.
Exp(1)
Retorna: 2,71828182845905.
Log( nmer o)
Esta funo retorna o logaritmo natural do nmero passado como parmetro. o logaritmo
na base e.
Log(1000)
Retorna: 6,90775527898214.
Randomize( )
Inicializa o gerador de nmeros aleatrios.
Randomize( )
Rnd( nmer o)
Esta funo gera um nmero aleatrio entre 0 e 1.
Randomize
Rnd(100)
Pode retornar qualquer valor entre 0 e 1.
Criando Sites Dinmicos com ASP 3.0
7 0 2
Sin( nmer o)
Esta funo retorna o seno de um nmero. O nmero representa um valor em radianos.
Sin(3.14)
Retorna: 0.
Sqr ( nmer o)
Esta funo retorna a raiz quadrada do nmero passado como parmetro.
Sqr(25)
Retorna: 5.
Tan( nmer o)
Esta funo retorna a tangente de um nmero. O nmero representa um valor em radianos.
Tan(3.14)
Retorna: 0.
Funes Par a M anipulao de St r ings
Estas funes so utilizadas para facilitar o tratamento de Strings de texto.
Na seqncia temos a apresentao das principais funes desta categoria.
For mat Cur r ency( expr esso)
Retorna uma String formatada com o smbolo de Moeda definido nas Opes regionais do
Painel de controle.
FormatCurrency(1000.25)
Retorna: R$ 1.000,25
For mat Dat eTime( expr esso, opo)
Retorna uma String formatada como data e hora. O parmetro opo no obrigatrio. Este
parmetro pode conter os valores 0, 1, 2, 3 ou 4 e utilizado para definir o formato de retorno,
conforme indicado pelos exemplos a seguir:
7 0 3
Apndice Referncia Rpida da Linguagem VBScript
FormatDateTime(10-01-2000 3:12:45,0) & <BR>
Retorna: 10/1/2000 03:12:45.
FormatDateTime(10-01-2000 3:12:45,1) & <BR>
Retorna: segunda-feira, 10 de janeiro de 2000.
FormatDateTime(10-01-2000 3:12:45,2) & <BR>
Retorna: 10/1/2000.
FormatDateTime(10-01-2000 3:12:45,3) & <BR>
Retorna: 03:12:45.
FormatDateTime(10-01-2000 3:12:45,4) & <BR>
Retorna: 03:12.
For mat Number ( expr esso, numdigit os)
Retorna o resultado da expresso com uma String, com o nmero de casas decimais definidos
pelo parmetro numdigitos.
FormatNumber(1235.36258,3)
Retorna: 1235,362.
For mat Per cent ( expr esso, numdigit os)
Retorna o resultado da expresso com uma String formatada como porcentagem (multiplicada
por 100) e com o sinal de %, com o nmero de casas decimais definidos pelo parmetro
numdigitos.
FormatPercent(25.32/100,2)
Retorna: 25,32%.
InSt r ( St r ing1 , St r ing2 )
Retorna a posio da primeira ocorrncia de String2 em String1.
InStr(Antnio Cndido da Silva,Silva)
Retorna: 20.
Criando Sites Dinmicos com ASP 3.0
7 0 4
LCase( st r ing)
Converte uma String para minsculas.
LCase(Jos da Silva)
Retorna: jos da silva.
Lef t ( st r ing, nmer o)
Retorna um nmero especificado de caracteres a partir do incio da String. Espaos em branco
tambm contam como caractere.
Left(Jos da Silva,4)
Retorna: Jos.
Left(Jos da Silva,7)
Retorna: Jos da.
Len( st r ing)
Retorna o tamanho da String ou o nmero de bytes necessrios para armazenar a varivel.
Len(Jos da Silva)
Retorna: 13.
LTr im( st r ing)
Retorna uma cpia da String sem espaos em branco esquerda da String.
LTrim( Jos da Silva)
Retorna: Jos da Silva.
M id( st r ing, st ar t , nmer o)
Retorna um nmero especificado de caracteres (nmero) de uma String, a partir de uma
posio especificada (start).
Mid(Jos da Silva,6,8)
Retorna: da Silva.
7 0 5
Apndice Referncia Rpida da Linguagem VBScript
Replace( st r ing, ocor r ncia, subst it uio)
Retorna uma String onde uma determinada String (definida pelo parmetro ocorrncia) foi
substituda por outra (definida pelo parmetro substituio).
Replace(Jose da Silva,e,)
Retorna: Jos da Silva.
Replace(Jose da Silva,da Silva,da Costa)
Retorna: Jos da Costa.
Right ( st r ing, nmer o)
Retorna um nmero especificado de caracteres a partir do final da String. Espaos em branco
tambm contam como caractere.
Right(Jos da Silva,5)
Retorna: Silva.
Right(Jos da Silva,8)
Retorna: da Silva.
RTr im( st r ing)
Retorna uma cpia da String sem espaos em branco direita da String.
RTrim(Jos da Silva )
Retorna: Jos da Silva.
Space( nmer o)
Retorna uma String com o nmero de espaos em branco especificados pelo parmetro numero.
Space(10)
Retorna 10 espaos em branco.
St r Comp( St r ing1 , St r ing2 )
Retorna o resultado da comparao de duas Strings. O resultado pode ser um dos seguintes valores:
String1 menor do que String2: -1
String1 igual a String2: 0
Criando Sites Dinmicos com ASP 3.0
7 0 6
String1 maior do que String2: 1
String1 ou String2 Null: Null
StrComp(Jose,Jose)
Retorna: 0.
StrComp(Jose,Zeze)
Retorna: -1.
StrComp(Zeze,Jose)
Retorna: 1.
StrComp(Zeze,Null)
Retorna: Null.
St r ing( nmer o, car act er e)
Retorna uma String formada pelo caractere definido no parmetro caractere, tantas vezes
quantas definidas pelo parmetro numero.
String(30,*)
Retorna: ******************************
St r Rever se( st r ing)
Retorna uma String em ordem reversa da original.
StrReverse(Jos da Silva)
Retorna: avliS ad soJ.
Tr im( st r ing)
Retorna uma cpia da String sem espaos em branco, nem direita, nem esquerda da String.
Trim( Jos da Silva )
Retorna: Jos da Silva.
UCase( st r ing)
Converte uma String para maisculas.
UCase(Jos da Silva)
Retorna: JOS DA SILVA.
7 0 7
ndice Remissivo
ndi ce
Remi ssi vo
Criando Sites Dinmicos com ASP 3.0
7 0 8
#include, 673
%>, 46
@CODEPAGE, 675
@ENABLESESSIONSTATE, 675
@LANGUAGE, 675
@LCID, 675
@TRANSACTION, 675
<%, 46
A
ADO
Arquitetura, 288
Conceito, 288
Conexes, 323
Banco de dados, 324
Nome do arquivo, 323
Nome do usurio, 323
Provedor, 323
Senha, 323
Servidor, 324
Modelo de Objetos do, 290-291
OLE DB
Viso geral, 275
Aplicaes
Aplicao Web no IIS, 457
Configurar Propriedades, 458
Depurao de aplicativo, 464
Mapeamentos de aplicativo, 461
Opes de Aplicativo, 462
O que ?, 457
Duas Camadas, 29
Cliente, 29
Modelo, 29
Global.asa, 465
Novo Paradigma, 456
O que uma?, 454
Para a Web, 29
Quatro Camadas, 33
Apresentao, 33
Cliente, 33
Dados, 34
Lgica, 34
Modelo, 33
Outras questes, 34
Segurana, 550
Proteo, 551
Restries a nvel de IP, 552
Servidor, 29
Camada de apresentao, 30
Lgica do Negcio, 31
Problemas, 30-31
Trs Camadas, 31
Apresentao, 32
Dados, 32
Lgica, 32
Modelo, 32
Outras questes, 34
ASP
Entendendo, 170
IIS 5.0, 36
Modelo de Objetos, 176
Application, 177
ASPError, 177
Collections, 177
Events, 177
Mtodos, 177
Properties, 177
Request, 177
Response, 177
Server, 177
Session, 177
Viso geral do, 178
Onde processado, 171
O que ?, 36
Outros servidores, 36
7 0 9
ndice Remissivo
Personal Web Server, 37
Requisitos para criar, 175
Retorna para o navegador, 172
C
Comrcio Eletrnico, 23
B2B, 24-26-27
B2C, 24
Cdigo de retorno, 47
CRM, 25
Componente Ad Rotator, 596
Arquivo de Redirecionamento, 600
Arquivo de Rotatria, 597
Altura, 598
Borda, 599
Impresses, 599
Largura, 598
Texto, 599
URL, 598
URL_anncio, 599
URL_home_page_anncio, 599
Exemplo, 603
Mtodo GetAdvertisement, 602
Propriedades
Border, 602
Clickable, 602
TargetFrame, 602
Componente Browser Capabilities, 609
Exemplo, 611
Propriedades
ActiveXControls, 614
BackGroundsounds, 614
Beta, 614
Browser, 614
Cookies, 614
Frames, 614
JScript, 614
Plataform, 614
Tables, 614
VBScript, 614
Version, 614
Componente Content Link, 586
Mtodos
GetListCount, 588
GetListIndex, 589
GetNextDescription, 590
GetNextURL, 590
GetNthURL, 591
GetPreviousDescription, 591
GetPreviousURL, 591
Componente Page Counter, 605
Exemplo, 607
File_Location, 605
Mtodos
Hits, 606
PageHit, 606
Reset, 606
Save_Count, 606
Componentes
Ad Rotator, 564
Browser Capabilities, 564
Content Link, 564
Page Counter, 564
D
Diretivas
#include, 673
@CODEPAGE, 675
@ENABLESESSIONSTATE, 675
@LANGUAGE, 675
@LCID, 675
@TRANSACTION, 675
E
Erros
De semntica, 659
Criando Sites Dinmicos com ASP 3.0
7 1 0
De sintaxe, 658
Lgicos, 661
Minimizar, 658-662
Estrutura For Each, 184
Exemplos de aplicao
Clculo de Imposto, 239
Conectando com o Access, 296
Consultas parametrizadas com ASP, 403
Editando registros, 361
Excluindo registros, 375
Formulrio de pesquisa, 311
Formulrio genrico para pesquisas, 437
Funes de agregao, 427
Inserindo dados no Access, 348
Nome do Cliente como link, 576
O objeto Content Link, 591
Pesquisando com o operador Like, 419
Pesquisas com mltiplos critrios, 425
Utilizando a propriedade Filter, 380
Utilizando o objeto Connection, 306
Validao de dados, 227
Exemplos de conexes OLE DB
Access, 325-326
ORACLE, 331
SQL Server, 326
Exemplos prticos
Hello World, 44
Data automtica, 48
F
FAT, 526
FAT32, 526
Funes
Clculos matemticos, 149
Abs, 149
Atn, 149
Cos, 149
Exp, 149
Log, 149
Rnd, 149
Sgn, 149
Sin, 150
Sqr, 150
Tan, 150
Converso de tipos, 127
Cbool, 127
Cbyte, 128
CCur, 129
Cdate, 130
CDbl, 131
CInt, 132
CLng, 133
CSng, 134
CStr, 135
Fix, 135
Int, 135
Data e Hora, 140
Date, 140
DateAdd, 145
DateDiff, 144
Day, 141
Hour, 143
Month, 142
MonthName, 143
Now, 142
Time, 141
WeekDay, 147
WeekDayName, 148
Year, 147
Tipos de dados, 112
Is Array, 113
Is Date, 118
IsEmpty, 121
IsNull, 122
IsNumeric, 124
IsObject, 125
VarType, 115
7 1 1
ndice Remissivo
Tratamento de String, 136
Asc, 136
Chr, 136
LCase, 137
Left, 138
Len, 137
Mid, 139
Right, 138
String, 140
UCase, 138
G- H
Gerenciador de Servios de Componentes, 669
HTML
Estrutura de um documento, 56
Formulrios, 60
<FORM></FORM>, 60
Boto Reset, 75
Boto Submit, 75
Caixa de combinao, 72
Caixa de Texto, 62
Campo para senhas, 64
Campos Memo, 70
Check Box, 66
O atributo action, 61
Radio Buttons, 68
Reviso rpida, 56
Tags
<BODY></BODY>, 58
<FONT></FONT>, 58
<HEAD>, 57
<HTML>, 57
<TABLE></TABLE>, 58
<TD></TD>, 58
<TR></TR>, 58
I
IIS 4.0, 2-3
IIS 5.0, 2-3
Configurao para Aplicativos Web, 550
Configuraes gerais de Segurana, 546
Configurando autenticao, 542
Conta IUSR_NOME_DO_COMPUTADOR
Configurando, 515
Grupos a que pertence, 521
Sincronizando, 518
Verificando Propriedades, 519
Formao de endereos, 42-43
Lgica de, 44
Instalando, 4
Melhorias, 10
Novidades, 10
Administrao e Servios, 11
Desenvolvimento de aplicaes, 12
Permisses NTFS
Configurando, 525
Preparando para os exemplos, 37
Estrutura de pastas, 37
Pastas virtuais, 38
Seqncia de verificao, 549
Testando, 9
Internet
ARPANET, 16
Contedo dinmico, 19
ASP, 20
Banco de dados, 21
CGI, 20
Perl, 20
SQL Server, 20
Contedo esttico, 16
Elementos da, 17
Internet, 18
Servidor Web, 18
Usurio, 18
FTP, 16
gopher, 16
Criando Sites Dinmicos com ASP 3.0
7 1 2
Histria, 16
HTML, 17
HTTP, 17
Viso geral, 17
Internet Explorer 4.x, 4
Internet Explorer 5.0
Ajuda, 161
J- L
Java Script, 12
Laos de controle
Case, 49
Linguagem SQL
Funes de agregao, 426
AVG, 427
Count, 427
Max, 427
Min, 427
Sum, 427
Instrues
DELETE, 274
INSERT, 273
SELECT, 264
UPDATE, 272
Introduo, 263
Pesquisas
Caracteres coringa, 421
Faixa de valores, 422
Mltiplos critrios, 423
Operador And, 423
Operador Like, 418
Operador Or, 424
M
Modelo Relacional
Chave Primria, 252
Entidades e Atributos, 251
Integridade Referencial, 256
Normalizao de tabelas, 257
Primeira Forma Normal, 258
Segunda Forma Normal, 259
Terceira Forma Normal, 260
Projeto do banco de dados, 261
Relacionamentos, 253
Um para Um, 254
Um para Vrios, 255
Vrios para Vrios, 255
N
Netscape Navigator 4.x, 4
NTFS, 5, 526
Auditoria, 527
Compresso, 527
Cotas de usurios, 527
Desempenho, 527
Gerenciamento, 527
Parties maiores, 527
Permisses, 527
Sistema de arquivos, 526
O
Objeto Application
Colees
Contents, 479
StaticObjects, 479
Definio, 468
Definindo objetos a nvel de aplicao, 474
Eventos
Definindo variveis, 471
OnEnd, 469
OnStart, 469
Mtodos
Lock, 484
Remove, 483
7 1 3
ndice Remissivo
RemoveAll, 483
Unlock, 484
Usando variveis, 472
Objeto ASPError, 657
Propriedades
ASPCode, 657
ASPDescription, 657
Category, 657
Column, 657
Description, 658
File, 658
Line, 658
Number, 658
Source, 658
Objeto Command
Introduo, 389
Mtodos
Cancel, 393
CreateParameter, 393
Execute, 393
Objeto Parameter, 402
Propriedades, 393
ActiveConnection, 394
CommandText, 394
CommandTimeout, 394
CommandType, 394
CommandType Valores de, 395
Consultas Parametrizadas, 397
Name, 394
Parameters, 394
Prepared, 394
Properties, 394
State, 394
Objeto Connection, 292
Eventos
BeginTransComplete, 295
CommitTransComplete, 295
ConnectComplete, 295
Disconnect, 295
ExecuteComplete, 295
InfoMessage, 295
RollBackTransComplete, 295
WillConnect, 295
WillExecute, 295
Exemplo, 295
Mtodos
BeginTrans, 293
Cancel, 293
Close, 293-333
CommitTrans, 293
Execute, 293
Open, 293
OpenSchema, 293
RoolbackTrans, 293
Pool de conexes, 334
Propriedades
Attributes, 293
CommandTimeout, 293
ConnectionString, 294-324
ConnectionTimeout, 294
CursorLocation, 294
DefaultDatabase, 294
Errors, 294
IsolationLevel, 294
Mode, 294
Properties, 294
Provider, 294
State, 294
Version, 294
Objeto Drive, 634
Propriedades
AvailableSpace, 634
DriveLetter, 635
DriveType, 635
FileSystem, 635
FreeSpace, 635
Criando Sites Dinmicos com ASP 3.0
7 1 4
IsReady, 635
Path, 635
RootFolder, 635
SerialNumber, 635
ShareName, 635
TotalSize, 635
VolumeName, 635
Objeto File, 644
Exemplo, 649
Mtodos
Copy, 647
Delete, 648
Move, 648
OpenAsTextStream, 648
Propriedades
Attributes, 644
DateCreated, 644
DateLastAcessed, 644
DateLastModified, 644
Drive, 645
Name, 645
ParentFolder, 645
Path, 645
ShortName, 645
ShortPath, 645
Size, 645
Type, 645
Objeto FileSystemObject, 618
Mtodos
BuildPath, 621
CopyFile, 628
CopyFolder, 622
CreateFolder, 623
CreateTextFile, 629
DeleteFile, 630
DeleteFolder, 623
DriveExist, 620
FileExists, 630
FolderExists, 624
GetAbsolutePathName, 625
GetBaseName, 631
GetDrive, 620
GetExtensionName, 631
GetFile, 631
GetFileName, 632
GetParentFolderName, 627
GetTempName, 632
MoveFile, 633
MoveFolder, 628
OpenTextFile, 633
Propriedade drives, 619
Objeto Folder, 637
Mtodos
Copy, 642
CreateTextFile, 642
Delete, 643
Move, 643
Propriedades
Attributes, 638
DateCreated, 638
DateLastAcessed, 638
DateLastModified, 638
Drive, 638
Files, 638
IsRootFolder, 638
Name, 638
ParentFolder, 638
Path, 638
ShortName, 638
ShortPath, 639
Size, 639
SubFolders, 639
Type, 639
Objeto Parameter, 402
Exemplo de aplicao, 403
Propriedades
7 1 5
ndice Remissivo
Attributes, 402
Direction, 402
Name, 402
NumericScale, 402
Precision, 403
Size, 403
Type, 403
Valores da propriedade Direction, 412
Value, 403
Objeto RecordSet
Cursores, 336
Localizao, 339
Tipos de, 337
Definio, 335
Lock de Registros, 341
Tipos de, 341-342
Mtodos
AddNew, 346
Cancel, 346
CancelBatch, 346
CancelUpdate, 346
Clone, 346
Close, 346
Delete, 346
Find, 346
GetRows, 346
GetString, 346
Move, 346
MoveFirst, 346
MoveLast, 346
MoveNext, 346
MovePrevious, 346
Open, 346
Requery, 346
Resynk, 347
Save, 347
Update, 347
Propriedades
AbsolutePage, 343
AbsolutePosition, 343
ActiveCommand, 344
BOF, 344
BookMark, 344
CacheSize, 344
CursorType, 344
CursorLocation, 344
EditMode, 344
EOF, 344
Filter, 345
LockType, 345
MaxRecords, 345
PageCount, 345
PageSize, 345
RecordCount, 345
Sort, 345
Source, 345
State, 345
Objeto Request
Coleo Cookies, 199
Exemplo, 200
Coleo Form, 179
Exemplo, 182
Mtodo post, 182
Coleo Query String, 186
Exemplo, 189
Mtodo get, 186
Coleo Server Variables, 193
Exemplo, 194-196
Variveis de ambiente, 193
Mtodos
BinaryRead, 204
Propriedades
TotalBytes, 203
Objeto Response
Coleo Cookies, 206
Exemplo, 207
Criando Sites Dinmicos com ASP 3.0
7 1 6
Mtodos
AddHeader, 220
AppendToLog, 220
BinaryWrite, 221
Clear, 222
End, 223
Flush, 224
Redirect, 225
Write, 226
Propriedades
Buffer, 211
CacheControl, 212
CharSet, 213
ContentType, 214
Expires, 215
Expires Absolute, 216
IsClientConnected, 217
PICS, 218
Objeto Server, 564
Mtodos
CreateObject, 566
Execute, 568
GetLastError, 570
HTMLEncode, 575
MapPath, 573
Transfer, 574
URLEncode, 571
Propriedade ScriptTimeOut, 565
Objeto Session
Colees
Contents, 496
StaticObjects, 497
Definio, 486
Definindo objetos a nvel de Sesso, 492
Eventos
Definindo Variveis, 489
OnEnd, 488
OnStart, 487
Mtodos
Abandon, 501
Remove, 502
RemoveAll, 502
Propriedades
CodePage, 503
LCID, 504
SessionID, 504
TimeOut, 504
Usando variveis, 490
ODBC
Criando uma fonte
Microsoft Access, 276
SQL Server, 282
File DSN, 277
System DSN, 277
User DSN, 277
P
Permisses NTFS
Arquivos
Controle total, 529
Gravar, 528
Leitura, 528
Ler e executar, 529
Modificar, 529
Avanadas, 531-532
Definindo, 529
Pastas
Controle total, 528
Gravar, 528
Leitura, 528
Ler e executar, 528
Listar contedo de pastas, 528
Modificar, 528
Plug-in, 55
7 1 7
ndice Remissivo
R- S
Registrando componentes, 669
Segurana
Autenticao de usurios, 512
Acesso annimo, 512
Autenticao bsica, 539
Integrada do Windows, 540
Utilizando Certificados, 541
Banco de dados, 557
Introduo, 510
T
Transaes
Abortando Script, 667
Conceito, 28-663
Eventos de, 667
Fila de, 672
Microsoft Transaction Services MTS, 28
Pginas como Transaes, 665
V
VBA, 54
VBScript, 12
Criando Funes, 154
Criando Sub-rotinas, 151
Declarando Variveis, 78
Declarao obrigatria, 81
Escopo de, 91
Subtipos, 82
Tipo de uma varivel, 79
Estruturas de Controle, 95
Do Loop Until, 107
Do Loop While, 103
Do Until Loop, 106
Do While Loop, 102
For Next, 100
If Then, 96
If Then Else, 96
If Then ElseIf Else, 97
Select Case, 99
Eventos no, 157
Do objeto Documento, 162
Do objeto Element, 164
Do objeto Form, 163
Do objeto Windows, 159
Principais eventos,
Funes de converso de tipos, 127
Funes de Data e Hora,140
Funes de Tipo de dados, 112
Funes de Tratamento de String, 136
Funes para clculos matemticos, 149
Inserindo Cdigo, 78
Operadores de comparao, 87
Resultados de, 91
Operadores matemticos, 83
O que ?, 54
Procedimentos e Funes, 151
Referncia, 681
Visual Basic, 54
VPN, 3
W- X
Windows 2000 Server, 2-3-4
XML, 12

Você também pode gostar