Você está na página 1de 131

Projeto 4 Overview

Neste projeto final, você vai aprender a desenvolver um site de relatórios ordem / inventário para
Ferramentas Intuit mecânicos. Este projeto envolverá movendo relatórios resumidos consolidados
para o servidor Web corporativo. Um arquivo de três meses dos relatórios HTML será mantida no
servidor Web corporativo. Além disso, cópias das versões do Microsoft Word destes relatórios
estará disponível para download.

Este projecto irá abranger o desenvolvimento de todo o Web site. páginas HTML do site irá
incluir VBScripts embutidos que controlam a exibição e apresentação de dados, bem como o
armazenamento e recuperação de configurações personalizadas. Para completar este projeto,
você também vai precisar para criar uma série de VBScripts executada-WSH. Estes scripts:

◆ Criar páginas HTML que exibem o conteúdo de relatórios individuais

◆ Criar uma página HTML composta de links para cada HTML disponível

página de relatório

◆ Copie as novas páginas HTML para o servidor Web corporativo

◆ gerenciar remotamente um arquivo de relatório de três meses no servidor Web Os VBScripts que

você vai incorporar dentro de páginas HTML do site da Web vai precisar para realizar uma série de tarefas,

incluindo:

◆ Armazenar as configurações de usuário individuais em biscoitos

◆ Recuperando cookies de computadores clientes

◆ Gerando efeitos gráficos em páginas HTML

◆ Implementar o redirecionamento do navegador para os visitantes que ainda não têm

especificado suas configurações personalizadas

◆ Realizando a validação de formulário para garantir que as definições de configuração

especificado pelos visitantes são válidos

◆ Usando a detecção de navegador para validar que os visitantes estão usando um SUP-

versão portado do Internet Explorer


Capítulo 26
Relatórios de
aplicação Dados de
Resumo via Web
T emcapítulo
seu torno dos esforços
define contínuos
um novo estudo depara
casomelhorar o processo
do projeto. Mais uma de
vez,encomenda / inventário
centros de este projecto em Ferramentas

Intuit mecânicos. Tem sido um número de meses desde Molly completou seu trabalho no desenvolvimento do
projeto de consolidação relatório de síntese. As coisas têm corrido muito bem, e Molly passou a trabalhar no
desenvolvimento de outros projetos. Enquanto isso, vários membros da equipe de gestão de operações ter sido
perguntando equipe de TI da empresa para melhorar mais uma vez o processo de relatórios ordem / inventário,
fornecendo relatórios baseados em browser. Desta forma, qualquer pessoa dentro da empresa quem tem
acesso à Intranet corporativa será capaz de acessar os relatórios de síntese consolidadas diretamente de um
desktop.

Dois novos programadores foram recentemente contratados a Intuit. Eles são Alexander Banks e
William Carter. Ambos têm um fundo de programação Visual Basic e alguma experiência com HTML.
gerenciamento de TI pensa que atribuí-las a trabalhar neste projeto vai ajudar os dois para entender
melhor o sistema de pedidos / inventário e ao mesmo tempo fazê-los alguma exposição e interação
com a equipe de operações.

Como você trabalha o seu caminho através deste projeto, você vai aprender a criar páginas HTML interativas,
incorporando VBScripts que aproveitam o poder de modelos de objeto do Internet Explorer. Você também vai
aprender como usar VBScript eo WSH para criar arquivos HTML e fornecer conteúdo dinâmico. Além disso,
você vai aprender como automatizar uma série de outras tarefas, incluindo:

◆ Como usar o Pasta opor-se a administrar o conteúdo de diretórios


◆ Como usar o VBScript para criar cookies que armazenam definições de configuração

em computadores cliente

◆ Como melhorar páginas da Web usando VBScript para criar efeitos gráficos

Visão Geral do Projeto


gestão de operações gostaria de aumentar o processo de comunicação, fazendo relatórios resumidos
consolidados disponíveis na intranet da empresa para que eles sejam facilmente acessíveis a todos. Isto
não só irá tornar as coisas conveniente para
Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB Capítulo 26 619

muitas pessoas dentro da empresa, mas também irá descarregar a responsabilidade agora atribuído a
equipe de operações de coleta e distribuição de ordem / inventário relatórios resumidos consolidada.

Coleta de Requisitos de Projeto


Alexander e William começar o seu trabalho neste projeto pela primeira reunião com Molly para aprender sobre o trabalho

que ela fez em seus dois projetos de reportagem ordem / inventário anteriores. Uma vez que eles se sentiram como se

tivessem um bom entendimento de como as coisas funcionavam, eles foram para falar com o mestre Web da empresa,

Michael Barns, para discutir a melhor forma de ir sobre o desenvolvimento do Web site do projeto. Depois de descrever

sua missão e falar sobre isso com Michael, foi acordado que um novo diretório será criada no servidor 2000 Web empresa

do Windows chamado d: \ Intuit \ OrderInventory \ Reporting e que Alexander e William seria concedido controle total sobre a

pasta e seu conteúdo. Além disso, Michael instruiu-os para nomear sua página HTML principal default.html para que ele

pudesse configurá-los com seu próprio URL, que ele disse a eles seria http://Intuit.com/OrdInv/ Default.html. Usando esse

modelo, Alexander e William pode então criar qualquer arquivo ea estrutura da pasta que desejar dentro do d: \ Intuit \

OrderInventory \ Reporting diretório a fim de apoiar o armazenamento do HTML e arquivos de relatórios que irão compor o

Relatório site ordem / inventário. Uma vez que eles entenderam a infra-estrutura de comunicação existente, bem como a

forma como eles iriam organizar os arquivos HTML e arquivos de relatório no servidor Web da empresa, de Alexander e

William próximo passo é sentar-se com a gestão de operações para recolher requisitos detalhados do projeto. Durante

esta reunião, eles aprendem que o departamento de operações está satisfeito com o atual formato do relatório de síntese

consolidada e nenhum conteúdo adicional é necessária. Além disso, as operações quer continuar a receber notificações

de rede quando os relatórios de síntese consolidadas são criados na estação de trabalho do Windows 2000 Professional.

Portanto, nenhuma alteração é necessária para os scripts que foram escritos por Molly. O que a equipe de operações quer

é ser capaz de acessar o relatório de síntese consolidada diariamente via Internet Explorer. Depois de falar por um tempo,

a gestão de operações acrescentou outra exigência. Eles querem ser capazes de acessar uma história de valor de até 90

dias de arquivos de relatório resumo consolidadas. Operações também quer saber se os dados do relatório poderia ser

apresentado em um formato de planilha de tabela em vez de como um arquivo de texto. Eles pensaram que tal formato

faria o relatório mais fácil de rever e analisar. Operações também quer saber se os dados do relatório poderia ser

apresentado em um formato de planilha de tabela em vez de como um arquivo de texto. Eles pensaram que tal formato

faria o relatório mais fácil de rever e analisar. Operações também quer saber se os dados do relatório poderia ser

apresentado em um formato de planilha de tabela em vez de como um arquivo de texto. Eles pensaram que tal formato

faria o relatório mais fácil de rever e analisar.


620 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

Finalmente, Alexander e William perguntado se seria possível para armazenar as versões do Microsoft Word
dos relatórios de arquivamento consolidadas e torná-los disponíveis para download. Desta forma, as pessoas
que ainda precisam de uma cópia impressa do relatório original poderia baixá-lo em vez de ter que solicitar um
de operações.

Documentar requisitos de projeto


Após o encontro com o pessoal de gestão de operações, Alexander e William se reuniram no dia
seguinte para passar por cima da informação que recolheu. Eles também pediram Molly para assistir a
esta reunião a fim de solicitar sua entrada. Juntos, eles reuniram a seguinte lista de requisitos de sua
reunião com o pessoal de gestão de operações.

◆ Automatizar a distribuição dos relatórios de síntese consolidadas ao cor-


servidor Web porados

◆ Ler e processar relatório de síntese consolidada de cada dia e criar um


versão HTML do relatório em um formato baseado em tabela

◆ Manter um arquivo de três meses de relatórios de síntese consolidadas HTML


no servidor Web corporativo e tornar esses relatórios acessíveis on-line

◆ Faça as versões do Word dos relatórios resumidos consolidados disponíveis


para download

◆ Completar o desenvolvimento e teste do projeto dentro de 30 dias Alexander, William, e


Molly então discutidos cada uma dessas solicitações para determinar se eles eram algo que
poderia ser feito. Eles chegaram à conclusão de que eles poderiam fornecer soluções com script
que atendam aos requisitos de cada uma dessas solicitações. Em seguida, por sugestão de Molly,
Alexander e William digitei esta lista de requisitos e distribuiu-os a ambos seu gerente e os
funcionários de gestão de operações para aprovação.

Executando uma alta nível de design


Com uma compreensão global do ambiente de script atual e um documento de requisitos aprovado,
Alexander e William sentar e começar a trabalhar em um projeto preliminar de alto nível. Eles decidir
sobre uma solução que envolvem o uso de VBScript de duas maneiras diferentes. Primeiro, usando o
WSH, eles irão desenvolver uma coleção de VBScripts que executar na estação de trabalho do
Windows 2000 Professional, conforme descrito na Figura 26.1.
Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB Capítulo 26 621

FIGURA 26.1 VBScript eo WSH será usado nos bastidores para criar páginas HTML que mostram os relatórios de
síntese consolidadas

A seguir coleção de scripts será criado e executado na estação de trabalho do Windows 2000
Professional:

◆ Agendador. Este é um script de agendamento que gerencia a exe- seqüencial


cution dos outros três scripts que são executados na estação de trabalho do Windows 2000

Professional.

◆ Implantação relatório. Este script irá criar uma conexão de rede para o
d: \ Intuit \ OrderInventory \ Reporting pasta no servidor Web da empresa e copiar o
código HTML e arquivos de relatório do Word.

◆ Conversão HTML. Este script irá criar uma página HTML que dis-
desempenha relatório de síntese consolidada do dia atual em formato de tabela.

◆ Arquivo Manutenção Fazer a ligação. Este script irá criar uma página HTML que
lista links para cada relatório de síntese consolidada armazenados no arquivo relatório de síntese

sobre o servidor Web.

◆ Gestão de Arquivo remoto. Este script irá administrar remotamente o


gestão de uma página HTML de três meses e Word arquivo de relatório no servidor Web da
empresa.

Além da lista anterior de roteiros, VBScripts será incorporado dentro das páginas HTML que
compõem o Relatório site ordem / inventário. Estes
622 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

VBScripts embutidos vai controlar a navegação de quadros e validação de formulário e irá fornecer efeitos visuais
aprimorados, como sobreposições de ligação e a exibição de mensagens na barra de status do Internet Explorer.
VBScript também será usado para criar e gerenciar os cookies que serão usados ​para armazenar as
configurações personalizadas para usuários que visitam o site.

Alexander e William plano sobre o uso de frames de HTML para apresentar arquivos relatório de síntese
consolidadas e usar VBScript para controlar o carregamento dos relatórios de síntese consolidadas HTML ea
página de gestão de arquivo. Eles planejam a criação de uma página a partir do qual os visitantes podem
navegar até três páginas de nível inferior, como mostrado na Figura 26.2. A primeira página irá exibir relatório do
dia atual, a segunda página irá exibir uma coleção de links para relatórios arquivados, ea terceira página irá
permitir que os visitantes para especificar as configurações personalizadas.

FIGURA 26.2 VBScripts incorporados nas páginas HTML será utilizado para controlar a navegação e apresentação de
informações
Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB Capítulo 26 623

NOTA

A análise detalhada das páginas HTML que serão criadas em apoio a este projeto ea localização e
papéis dos VBScripts incorporados precisa é fornecida no Capítulo 27, “Projetando o Web Site.”

Alexander e William decidir que a melhor maneira de concluir este projeto é dividir o trabalho para cima,
de modo que cada pessoa será responsável por completar tarefas específicas. Tabela 26.1 descreve as
atribuições de tarefas que eles divididos entre si.

Tabela 26.1 HTML tarefas de relatório Tipo de

Tarefa atribuído a Descrição

tarefas de pré-requisitos Alexander Modificar o script planejador executando na estação de trabalho

do Windows 2000 Professional para executar a implantação do

Relatório e os scripts de gestão de arquivo remoto. Criar entradas

de registro na estação de trabalho do Windows 2000 Professional

que será utilizado para controlar a execução do script.

Web site design William Determine o design geral do site, incluindo as ligações
entre as páginas HTML, o conteúdo de cada página
HTML, e os elementos de design a serem utilizados em
cada página HTML.

Desenvolver uma home page William Criar uma home page usando quadros HTML. VBScripts

incorporar que adicionar efeitos gráficos, recuperar as

configurações armazenadas em cookies clientside, fornecer

controle de quadro, e fornecer links HTML para páginas HTML

subordinados.

Criar um Registro William Criar uma página HTML que recolhe


e Configuração sobre as informações que os usuários e sua

página de configurações definições de configuração de sites preferidos e armazenar essas

informações no computador de cada visitante usando um cookie.

( continuou)
624 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

Tarefas Tabela de Relatório 26,1 HTML ( contínuo)

Tipo de Tarefa atribuído a Descrição

converter consolidada Alexander Criar um script que converte o dia atual


relatórios resumidos a relatório de síntese consolidada em um HTML
páginas HTML página incorporando tags HTML dentro do novo relatório e
salvá-lo como uma página HTML.

Construir Relatório de Arquivo Alexander Criar um script que percorre a lista de


página HTML relatórios de síntese consolidadas e cria uma página

de links para todos os relatórios estão armazenados na

pasta de arquivo.

Distribuir HTML e Alexander Criar um script que estabelece uma rede


arquivos do Word e executar conexão com o servidor Web, cópias mais
gestão de arquivos HTML e arquivos do Word, e administra um HTML de
três meses e Word arquivo de relatório.

Realização das tarefas de pré-requisito


Alexander é responsável por executar tarefas preliminares do projeto, que incluem a automatização da
execução programada dos VBScripts WSH que fazem parte deste projeto e a criação de novas entradas
de registro. Para facilitar a execução de VBScripts gerência WSH do projeto, Alexander decidiu modificar
o script programador desenvolvido por Molly para execução na estação de trabalho Windows 2000
Professional (no Capítulo 19, “Programação de Script Execution”) como mostrado abaixo.

NOTA

Ao modificar o script programador existente, Alexander irá remover um número de obstáculos de segurança.
Molly já criou a execução deste script para ser executado usando o
ScriptSchlr conta, que fornece-lo com privilégios de nível administrativo. Alexander já solicitou que Michael
Barns, mestre Web da empresa, fornecer esta conta com acesso total ao d: \ Intuit \ OrderInventory \
Reporting pasta no servidor Web da empresa.

'************************************************* ************************ 'Nome do script: 26.1.vbs script' Autor: Jerry

Ford
Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB Capítulo 26 625

'Criado: 04/25/03

'Descrição: Este script é executado scripts associados com o fim / inventário' sistema de comunicação

'************************************************* ************************

'Seção de inicialização

Option Explicit

On Error Resume Next

Dim WshShl, intRcChk

Definir WshShl = WScript.CreateObject ( “WScript.Shell”)

intRcChk = 0

'Secção de Processamento Principal

RunScript ( “ErrorAnalyzer.vbs”) RunScript (

“SalesAnalyzer.vbs”) RUNSCRIPT (

“ReturnsAnalyzer.vbs”) RUNSCRIPT (

“ProductionAnalyzer.vbs”)

'Três novos conjuntos de declarações adicionado para suportar web baseada relatando intRcChk =

RunScript ( ‘HTMLConvert.vbs’) Se intRcChk> 0 Then

NotifyOperationsStaff ( “HTMLConvert.vbs”) Else

intRcChk = RunScript ( “ArchiveLinkMgr.vbs”) Se intRcChk> 0

Então

NotifyOperationsStaff ( “ArchiveLinkMgr.vbs”) Else

intRcChk = RunScript ( “WebArchiveMgr.vbs”) Se intRcChk>

0 Então

NotifyOperationsStaff ( “WebArchiveMgr.vbs”) End If


626 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

End If End

If

Se Day (Date ()) = 1 Then

RunScript ( “ArchiveManager.vbs”) End If

'Terminar roteiro TerminateScript

execução ()

'Secção Procedimento

Função RunScript (strScriptName)

RunScript = WshShl.Run (ScriptName, 1, Verdadeiro)

End Function

Sub WriteToEventLog ()

WshShl.LogEvent 4, “executar Relatório e Log Analyzer Scheduler Script.”

End Sub

Sub NotifyOperationsStaff (strFailedScript)

Dim strUserName, strNtkNotifiyList

astrNotifyArray Dim

strNtkNotifiyList = _

WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ NtkNotifiyList”)

astrNotifyArray = split (strNtkNotifiyList)

Para Cada strUserName Em astrNotifyArray

WshShl.Run “Net Send“& strUserName & ““& “Script“& _


Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB Capítulo 26 627

strFailedScript & “falhou. “& _‘Por favor, informe

The IT Dept.’Next

End Sub

Sub TerminateScript ()

WScript.Quit ()

End Sub

Alexander planeja adicionar lógica para cada uma das VBScripts executada-WSH que ele é responsável pelo
desenvolvimento, a fim de retornar um código de erro indicando se ou não executado com êxito. Ao fazer
isso, ele fornece o script de agendamento com a capacidade de determinar se ocorreu um problema.

NOTA

VBScript pode retornar um código de retorno para uma instrução de chamada usando o WScript objeto de

Sair() método, conforme explicado no Capítulo 30, “Conversão de relatórios para HMTL documentos.”

Alexander escolhe o momento não modificar a maneira pela qual as chamadas de execução existentes do
script programador são feitas. Em vez disso, ele vai explicar a Molly que ele tem feito e sugerir que ela
equipar seus VBScripts para apoiar a mesma funcionalidade. No entanto, ele coloca o código de script
retorno verificação no local para os scripts que ele está em desenvolvimento. Ele faz isso através da definição
de uma variável chamada intRcChk e usá-lo para armazenar o valor retornado pelo RunScript função. Se um
valor maior que zero é retornado, em seguida, ocorreu um erro no script chamado, eo NotifyOperationsStaff () sub-rotina
é chamada e passou o nome do script que falhou. Para acomodar esta nova funcionalidade, Alexander tem
para modificar o RunScript () procedimento mudando-à partir de uma sub-rotina para uma função. Ele também
modifica o procedimento para retornar o código de retorno fornecida por cada script que ele execute.

Alexander também modifica o script de agendamento movendo o WScript.Quit ()


declaração em seu próprio sub-rotina, a fim de melhorar a organização geral do
628 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

o script de agendamento. Finalmente, acrescenta o NotifyOperationsStaff () sub-rotina para o script, que ele copia

e cola para fora do VBScript que cria o relatório de síntese consolidada (do Capítulo 24, “Processamento e

Consolidando dados Report”). Usando este sub-rotina, o script de agendamento pode notificar a equipe de

operações de todos os erros que ocorrem durante o processamento de seus scripts. Isso dará a equipe de

programação de TI uma chance de consertar as coisas antes de todo mundo vem para trabalhar procurando a

cópia online dos relatórios resumidos consolidadas. Em vez de desenvolver um script para criar uma chave do

Registro e valores para este novo roteiro, Alexander decide que desde que ele só precisa criar sete novos

valores de registo, que seria mais rápido para criá-las manualmente usando o regedt32 utilidade. Alexander cria

uma nova subchave de registo sob HKLM \ Intuit \ VBScript chamado WebRpting para armazenar cada valor para

seus novos scripts, que são brevemente explicadas abaixo.

◆ HKLM \ Intuit \ VBScript \ WebRpting \ Debug. Especifica se o


script deve exibir resultados intermediários em caixas de diálogo pop-up durante a execução (por

exemplo, quando executado manualmente para fins de resolução de problemas)

◆ HKLM \ Intuit \ VBScript \ WebRpting \ EventLogging. Especifica


se o script deve escrever mensagens informativas no log de eventos do aplicativo
Windows

◆ HKLM \ Intuit \ VBScript \ WebRpting \ ConSolRptLoc. especifica o


localização da pasta na estação de trabalho do Windows 2000 Professional, onde cópias dos
relatórios resumidos consolidadas estão a ser armazenado

◆ HKLM \ Intuit \ VBScript \ WebRpting \ HTMLFolder. especifica o


pasta na estação de trabalho do Windows 2000 Professional, onde as versões em HTML dos
relatórios resumidos consolidados devem ser armazenados

◆ HKLM \ Intuit \ VBScript \ WebRpting \ WebServer. Especifica o NET-


Nome do trabalho atribuído ao servidor Web da empresa

◆ HKLM \ Intuit \ VBScript \ WebRpting \ Share_Rpts. especifica o


nome da pasta compartilhada no servidor Web da empresa onde as cópias das versões do Word nos
relatórios de síntese consolidadas estão a ser armazenado

◆ HKLM \ Intuit \ VBScript \ WebRpting \ Share_HTML. especifica o


nome da pasta compartilhada no servidor Web da empresa onde as cópias das versões HTML
dos relatórios resumidos consolidadas estão a ser armazenado
Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB Capítulo 26 629

NOTA

Para mais informações sobre o registro do Windows e como ele funciona, consulte o Capítulo
22, “Desenvolvimento de uma configuração Script.”

Projetando o Web Site


William é responsável por desenvolver a parte HTML deste projeto e por suas VBScripts embutidos.
Como mostrado anteriormente na Figura 26.2, William planeja criar uma página principal e usar quadros
HTML para controlar a apresentação dos dados. Desenvolver esse site vai exigir uma compreensão
básica de sintaxe HTML, bem como um conhecimento de trabalho de design do quadro e
implementação. Também é necessária uma compreensão de como criar e usar links HTML para unir
páginas HTML.

Desenvolver uma Home Page


A página principal ou home page é a página padrão que todos os visitantes vão ver quando eles
abrem o navegador Internet Explorer e digite http://Intuit.com/ OrdInv / Default.html. A fim de
desenvolver esta página HTML, William vai precisar usar uma série de técnicas de desenvolvimento
diferentes, incluindo:

◆ Incorporação VBScripts. Para proporcionar efeitos gráficos e configu- processo


configurações de racionamento armazenados nos cookies do lado do cliente

◆ Criando uma página de Links (painel esquerdo). Para criar uma página Web que define

links para outras páginas HTML que compõem o site


◆ Criando uma página de boas-vindas (painel da direita). Para fornecer os visitantes com um cus-

mizadas mensagem de boas-vindas, bem como instruções para a utilização do site

◆ Usando o redirecionamento. Para redirecionar novos visitantes ao registro e Con-

página figuração antes de permitir que eles acessem o resto do site

◆ Implementando a detecção do navegador. Para garantir que os visitantes estão usando um

versão suportada do Internet Explorer

◆ Leitura cookies. Para recuperar as preferências do usuário e configurações


estabelecido na página de Registro e configuração do site da Web
630 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

Criando o Registro e Configuração Page


A página de Registro e configuração será usado para coletar o nome de cada visitante a Reporting
site ordem / inventário. Além disso, permitirá que os visitantes para especificar preferências
pessoais para coisas como a cor de fundo da página de links e sua página padrão preferido. A fim
de completar o desenvolvimento desta página, William terá que fazer uso de:

◆ formulários HTML

◆ capacidades de validação de formulário VBScript

◆ a capacidade do VBScript para criar e armazenar os cookies

◆ a capacidade do VBScript para assumir o controle da barra de status do navegador

◆ a capacidade do VBScript para interagir com os visitantes usando caixas de diálogo pop-up

Convertendo consolidadas Relatórios Resumidos a páginas HTML

Alexander quer desenvolver o VBScript que cria uma versão HTML do relatório de síntese
consolidada com base no conteúdo da versão texto do relatório. Para isso, ele terá de usar
um número de FileSystemObject métodos objecto, incluindo:

◆ O arquivo existe(). Usado para evitar erros por primeira validação de que um arquivo existe

antes de tentar abri-lo


◆ OpenTextFile (). Abre o arquivo especificado, permitindo que ele seja ainda mais

manipulada por outros métodos

◆ Leia a linha(). Oferece a capacidade de ler uma linha de texto em um arquivo

◆ Fechar(). Fecha um arquivo aberto anteriormente

◆ WriteLine (). Oferece a capacidade de escrever uma linha de texto para o especificado

Arquivo

◆ WriteBlankLines (). Oferece a capacidade de escrever uma linha em branco na


arquivo especificado

Além desses métodos, Alexander terá uma sólida compreensão da sintaxe HTML e terá de usar
esse conhecimento para inserir tags de formatação HTML dentro do arquivo HTML gerado por este
script. Alexander também precisará usar o WshShell objeto de RegRead () método para recuperar as
definições de configuração do script do registro do Windows.
Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB Capítulo 26 631

Construir a página de relatório Arquivo


Além de configurar o script Arquivo Ligação de gerenciamento para recuperar suas
configurações de registro do Windows, Alexander terá de familiarizar-se com os seguintes
objetos, propriedades e métodos:

◆ GetFolder (). UMA FileSystemObject método que fornece a capacidade


para recuperar uma referência a uma pasta especificada

◆ Objeto pasta. Fornece acesso a todas as propriedades associadas a um


pasta

◆ Objeto arquivo. Fornece acesso a todas as propriedades associadas a um arquivo

◆ Coleção arquivos. Fornece acesso a todos os arquivos que residem em um


pasta especificada

◆ Propriedade arquivos. A propriedade pertencente à Arquivo objeto que


recupera uma referência a um Coleção arquivos

Além desses novos objetos, propriedades e métodos, Alexander terá que usar o seguinte FileSystemObject
métodos, a fim de gerar a página Archive link Gerenciamento de HTML:

◆ OpenTextFile ()
◆ Fechar()
◆ WriteLine ()
◆ WriteBlankLines ()

Distribuir Executando o gerenciamento de arquivo HTML e arquivos


de Word e
No script final do projeto, Alexander terá de aprender a trabalhar com o Arquivo objeto de Cópia de() método,
a fim de copiar o código HTML e arquivos do Word a partir da estação de trabalho do Windows 2000
Professional para o servidor Web da empresa. Além disso, ele vai precisar usar o seguinte WshNetwork métodos
para estabelecer uma conexão de rede para o servidor Web e para quebrar essa conexão quando o
script é feito usando-o.

◆ MapNetworkDrive ()
◆ RemoveNetworkDrive ()
632 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

Especificamente, Alexander precisará copiar as páginas HTML e arquivos do Word criados na estação de
trabalho do Windows 2000 Professional para as pastas listados abaixo no servidor Web.

◆ D: \ Order_Inventory \ HTML. Armazena um mínimo de pena de 90 dias de


relatórios HTML que contêm versões baseadas na Web nos relatórios de síntese consolidadas

◆ D: \ Order_Inventory \ Rpts. Armazena um mínimo de pena de 90 dias de


relatórios do Word contendo os relatórios resumidos consolidados Finalmente, para automatizar

a execução do processo de gestão de arquivos, Alexander terá que usar o seguinte FileSystemObject métodos

de objeto:

◆ O arquivo existe()

◆ DeleteFile ()

resumo
Este capítulo apresentou o estudo de caso final neste livro. Uma visão geral do projeto atribuído a
Alexander e William foi fornecido. Isto incluiu o desenvolvimento de uma lista de requisitos do projeto. Além
disso, um projeto de alto nível foi apresentado que delineou o plano global para fornecer uma solução de
relatórios baseada na Web. Isto incluiu a identificação de cada script que está a ser desenvolvido, bem
como as principais construções de linguagem VBScript que serão utilizados para criar cada um desses
scripts. Nos seis capítulos que se seguem, você terá a oportunidade de ver como Alexander e William
enfrentar cada uma das tarefas envolvidas na realização deste projeto.
Capítulo 27
Projetando o Web
Site
Eu n Neste capítulo, William irá fornecer um design de baixo nível para Reporting site Order /
inventário com base no design de alto nível descrito no capítulo anterior. Isto irá incluir a
identificação e colocação de todos os elementos da interface e conteúdo de dados. Ele também irá
incluir a identificação e colocação de links que irão apoiar a navegação entre as páginas que
compõem o site. Além disso, William vai determinar qual funcionalidade ele quer adicionar a cada
página no site usando VBScript e descrever o que cada VBScript irá proporcionar.

Uma visão geral do


Encomenda / Web site de relatório de estoques
Conforme explicado no Capítulo 26, “Estudo de Caso: Relatórios de aplicação Dados de Resumo via
intranet corporativa,” Alexander e William plano para organizar o site do Reporting Order / Inventory em uma
coleção de páginas HTML. O site terá uma página principal, que servirá como a página padrão para todos
os visitantes. A partir desta página, os visitantes serão capazes de acessar diretamente os três seguintes
páginas HTML:

◆ A página Relatório Resumo Diário consolidado. Mostra o HTML


versão do relatório de síntese consolidada do dia atual

◆ A página Relatórios Arquivo. Exibe uma lista de links para páginas HTML tantes
ressentindo relatórios resumidos consolidadas anteriores e fornece acesso a download
cópias de versões do Microsoft Word destes relatórios

◆ A página de Registro e configurações. oferece aos visitantes


com a capacidade de identificar-se para o site e para especificar as configurações de
personalização como cores de fundo e uma página padrão O conteúdo fornecido por página principal
do site da Web e que do Registro e página Definições de Configuração será estático, o que significa
que ele será desenvolvido e atualizado por William conforme exigido manualmente. O conteúdo
fornecido na página Relatório Resumo Diário Consolidadas e a página Relatórios Arquivo será
dinâmico, o que significa que o conteúdo fornecido nestas páginas será criado por
ELABORAÇÃO DO SITE WEB Capítulo 27 635

VBScripts WSH todas as manhãs com base nas informações encontradas nos relatórios resumidos
consolidadas.

NOTA

Este capítulo e aquele que segue assume um conhecimento básico de HTML por parte do leitor. Portanto,
somente uma breve explicação do HTML envolvido na criação de páginas HTML é apresentado neste livro. Se
você sentir que você precisar de informações adicionais sobre HTML e como trabalhar com ele, ler Saiba HTML
em um fim de semana, 3rd Edition por Steve Callihan (Premier Press, 2000).

Página Principal O Web Site


William decidiu usar frames de HTML como o elemento chave do Reporting site Order /
Inventário. Ele pretende organizar a exibição de todo o conteúdo para este site, dividindo a tela
em dois quadros separados, como demonstrado na Figura 27.1.

FIGURA 27.1 Os dados apresentados no Relatório site Order / Inventory vai usar quadros
636 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

O quadro esquerdo será chamado left_frame e será usado para exibir links HTML para cada uma das
três páginas HTML que podem ser acessados ​diretamente a partir da página principal. O quadro direito
será chamado right_frame e será usado para exibir o conteúdo fornecido pelo Web site, incluindo links
para o relatórios, arquivos, eo Registro e página definições de configuração.

Definindo a página de links


Para exibir a lista de links que está a ser fornecido no lado esquerdo da tela, William planeja criar
uma página HTML chamada links.html e para carregar esta página no left_frame quadro do default.html
page (página principal do site da Web). Um exemplo do conteúdo a ser apresentado na página de
ligações é mostrado na Figura 27.2.

FIGURA 27.2 A página de Links fornece links de navegação para as outras páginas HTML

Os links a seguir será exibida:

◆ Relatório Resumido consolidado para hoje

◆ Resumo Relatório Consolidado de Arquivo

◆ Configurações pessoais e de Registro


ELABORAÇÃO DO SITE WEB Capítulo 27 637

Cada uma dessas ligações será justificado à esquerda. A fim de melhorar a aparência desses links,
William planeja incorporar um número de VBScripts na página de links, que vai fornecer a funcionalidade
descrito abaixo.

◆ Fazer a ligação capotamentos. Muda a cor de um destino como o rato se move sobre e

off da ligação

◆ mensagens de barra de status. Exibe mensagens de texto suplementares no estado

Barra

William irá adicionar efeitos de sobreposição que irá transformar a cor de cada link para vermelho quando o
mouse é movido sobre ele e azul quando o mouse é movido para fora do link. Ao implementar efeitos de
sobreposição dessa maneira, William vai tornar mais fácil para os visitantes a identificar quais ligação
atualmente tem o foco (que link será aberta se o botão esquerdo do mouse é clicado). Além disso, William irá
exibir uma mensagem na barra de status do navegador descrever a página HTML para que cada link aponta
sempre que o visitante move o ponteiro sobre ele, proporcionando assim o visitante com informações
adicionais sem encher a área de exibição principal.

Definindo a página de boas vindas


Por padrão, todos os visitantes poderão ver a página de boas-vindas exibida no quadro à direita quando
eles visitam Reporting site Order / Inventário. O conteúdo a ser fornecido na página é mostrada na Figura
27.3 e incluirá informações básicas sobre o Web site, bem como informações de contato para vários
departamentos, devem os visitantes têm dúvidas ou preocupações.

Além do texto mostrado nesta página HTML aparentemente simples, William planeja adicionar uma grande
quantidade de behind-the-scenes funcionalidade na forma de VBScripts embutidos, conforme descrito na lista
a seguir.

◆ recuperação do biscoito. Recupera informações sobre os visitantes e sua preferível

ências do cache do lado do cliente

◆ a detecção do navegador. Determina o tipo de navegador de um visitante está usando como

bem como seu número de versão

◆ Redirecionamento. carrega automaticamente diferentes páginas HTML com base em

tipo de navegador ou preferências do usuário


638 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

FIGURA 27,3 A página Bem-vindo servirá como a página padrão e irá receber os visitantes pelo nome e fornecer
informações gerais sobre o site

NOTA

UMA biscoito representa uma pequena quantidade de dados que podem ser armazenados nos computadores dos visitantes quando

eles visitam seu Web site. O uso de cookies, você pode armazenar a informação recolhida a partir do usuário e reutilizar essas

informações na próxima vez que o visitante retorna ao seu Web site, a fim de proporcionar uma experiência personalizada.

Cada vez que uma pessoa visita o site Relatório de Encomenda / Inventory, a página Bem-vindo irá verificar
se o seu computador tem um cookie do Web site. Se um cookie for encontrado, ele é recuperado e os dados
que ele contém serão utilizados para:

◆ Cumprimente o visitante pelo nome

◆ Definir esquema de cores do site da Web

◆ Redirecionar o visitante para a página padrão preferido

As informações armazenadas em cookies são coletados e salvos no Registro e página de definições de


configuração. Os usuários primeira vez visitar o Web site, eles não terão uma cookie.Therefore, seus
navegadores será automaticamente redirecionado para o Registro
ELABORAÇÃO DO SITE WEB Capítulo 27 639

e página de definições de configuração. Uma vez que o visitante tenha fornecido as informações necessárias
nessa página, um cookie é criado e gravado no computador do visitante. Cada visitante terá a opção de
voltar para o Registro e página de definições de configuração, a fim de fazer modificações a qualquer
momento que desejar. Os visitantes serão obrigados a utilizar o Internet Explorer 5 ou superior para usar o
Relatório de site Order / Inventário. A página Bem-vindo irá verificar automaticamente o navegador que está
sendo utilizado por cada visitante para garantir que ele atenda a esse requisito. Se o navegador não cumprir
este requisito, o navegador do visitante será redirecionado para uma página HTML que lhe aconselha a
exigência de usar o navegador apropriado.

Montando a página principal


A Figura 27.4 mostra como a página principal da Ordem / do Inventory vai olhar quando carregado no
navegador do visitante. Como você pode ver, por quadros execução William fornece uma estrutura para
exibir consistentemente conteúdo. Ele também fará uso considerável do tamanho da fonte e destaque, a
fim de melhorar a aparência geral do site.

FIGURA 27.4 A home page para o sistema Order Relatórios / Inventário servirá como página padrão do site da Web
640 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

O Resumo Diário Relatório Consolidado


Página
A página Relatório Resumo Diário Consolidado, mostrado no painel do lado direito na Figura 27.5, é
criado todas as manhãs por um prazo VBScript na estação de trabalho do Windows 2000 Professional
pela WSH. Esta página HTML utiliza tabelas HTML para exibir o conteúdo do relatório de síntese
consolidada do dia atual em um formato de planilha. Alexander é responsável pelo desenvolvimento da
criação automatizada desta página HTML todas as manhãs e para copiá-lo para o D: \ Order_Inventory \
HTML pasta no servidor Web da empresa. Alexander vai salvar esta página HTML como CurrentRpt.HTML,
substituindo relatório de síntese consolidada do dia anterior a cada manhã com o relatório do dia atual.

Tudo o que William precisa fazer para integrar esta página HTML no site da Ordem / Inventory é
certificar-se de que ele fornece um link estático para ele na página de links.

FIGURA 27,5 A versão HTML do relatório de síntese consolidada irá fornecer uma Spreadsheet- como vista

O Arquivo de Relatórios
Como a página do Relatório Resumo Diário Consolidado, a página Relatórios Arquivo (mostrado na Figura
27.6) é criado por um VBScript gerido pela WSH na estação de trabalho do Windows 2000 Professional. Ele
fornece acesso a um arquivo de três meses
ELABORAÇÃO DO SITE WEB Capítulo 27 641

de versões em HTML dos relatórios resumidos consolidadas. Estes relatórios serão organizados
por mês e será acessível clicando em seus links.

FIGURA 27.6 A página Relatórios Arquivo fornece links para a pena de relatórios resumidos solidated con- três meses
anteriores

Além da versão HTML nos relatórios de síntese consolidadas, a página Relatórios Arquivo fornece um
link para versões do Word dos relatórios. Tudo o que um visitante terá que fazer o download de uma das
versões do Word do relatório é clicar no seu link e, em seguida, clique em Sim quando solicitado para
confirmar o download.

O Registro e configurações Página

O Registro ea página de definições de configuração, esboçado na Figura 27.7, será criado como um
formulário HTML e irá incluir uma série de elementos de formulário, incluindo:

◆ Os campos de texto. Para coletar a entrada seqüência de texto


642 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

◆ Botões do rádio. Para fornecer uma lista de escolhas mutuamente exclusivas de

qual os visitantes podem selecionar uma única opção

◆ Listas drop-down. Para fornecer um conjunto predefinido de opções para selecionar

de
◆ Botões. Para iniciar ações sobre a forma como a validação de formulário ou o
execução de VBScripts

FIGURA 27.7 A página de registo e definições de configuração coleta de nomes pessoais e preferências de cada visitante

campo de texto do formulário será usado para coletar o nome do visitante. A coleção de botões de rádio irá
fornecer cada visitante com a capacidade de especificar uma página padrão para o Web site. A lista drop-down
irá fornecer o visitante com a possibilidade de escolher entre um de uma série de esquemas de cores
predefinidos que controlam a cor da página de Links fundo. Finalmente, os botões serão usados ​para iniciar
uma série de tarefas de script, como descrito abaixo.

◆ criação Cookie. Recupera informações sobre os visitantes e sua preferível


ências do cache do lado do cliente

◆ validação de formulário. Determina o tipo de navegador de um visitante está usando como

bem como seu número de versão


ELABORAÇÃO DO SITE WEB Capítulo 27 643

◆ caixa de diálogo pop-up de confirmação base. Carrega automaticamente diferente

páginas HTML com base no tipo de navegador ou preferências do usuário

◆ caixa de diálogo pop-up de ajuda baseado. Fornece ajuda baseado em texto que explica

a informação exigida por cada elemento de formulário na página

resumo
Neste capítulo, você observado como William descreveu o conteúdo e formato de cada uma das
páginas HTML que compõem o Relatório site Order / Inventário. Isto incluiu a definição das
relações e ligações entre as páginas HTML, bem como a identificação e colocação de VBScripts
dentro de cada uma dessas páginas HTML. O capítulo também explica como essas VBScripts irá
melhorar a apresentação geral do Web site.
Esta página foi intencionalmente esquerda em branco
Capítulo 28
Edifício Principal da Web
do site Página
Eu n Neste capítulo, William começa a trabalhar na criação de Reporting site Order / Inventário
criando página principal ou padrão do site. A página irá utilizar um conjunto de quadros HTML composto
por dois quadros, a fim de exibir um menu de links no lado esquerdo da janela do navegador eo conteúdo
do link selecionado na frame.William do lado direito também irá incorporar um VBScript em a página
HTML para adicionar uma série de efeitos gráficos para o site. Este script irá executar tarefas como
transformar links do menu links capotamento, recuperando definições de configuração do cache do lado
do cliente, e gerenciar o conteúdo que é carregado no quadro à direita.

Trabalhando com Frames


página principal do site Relatório de Encomenda / Inventory é chamado Default.html.
As demonstrações HTML que compõem esta página são mostrados abaixo. A página é dividida em dois
quadros. O primeiro quadro é chamado left_frame. Ele irá carregar automaticamente uma página HTML
chamada Links.html. A segunda armação é chamada
right_frame e será carregado automaticamente uma página HTML chamada
Welcome.html.

<HTML>

<HEAD>

<TITLE> Script 28.1 - Definir um conjunto de quadros para a página de web site principal </ TITLE> </ HEAD>

<Frameset cols =”175, *”>

<QUADRO SRC =”links.html” NAME =”left_frame” scrolling =”no” FRAMEBORDER =”1”

noresize>

<QUADRO SRC =”Welcome.html” NAME =”right_frame” scrolling =”auto”

FRAMEBORDER =”1” noresize> </

FRAMESET>

</ HTML>
CONSTRUÇÃO DO WEB SITE DA PÁGINA PRINCIPAL Capítulo 28 647

Os quadros são criados usando o HTML < FRAMESET> e < QUADRO> Tag. o
<FRAMESET> etiquetas de substituir o < BODY> tags que são normalmente utilizados para definir uma página HTML. O

primeiro quadro é configurado para ser 175 pixels de largura, eo resto do espaço disponível é deixado para o quadro à

direita.

Construindo a página links.html


o links.html página, que é automaticamente carregada no left_frame
quadro do default.html página, fornece uma lista de links para outras páginas no Relatório site Order /
Inventário. Ele é composto de declarações HTML e um número de sub-rotinas de VBScript. As
subrotinas proporcionar o links.html página com as seguintes características:

◆ A definição da cor de fundo da página


◆ A criação de efeitos de sobreposição de link

◆ A postagem de mensagens na barra de status do Internet Explorer

◆ O carregamento de páginas HTML vinculadas para o right_frame quadro, Armação

HTML para a página links.html


O HTML necessário para criar a links.html página é mostrado abaixo. Como você pode ver, ela consiste
de uma pequena coleção de tags HTML. As marcas-chave para focar são os três tags de link definidos na
parte inferior da página HTML. Eles definem três links, nomeados DailyRpt, Arquivo, e config, e exibir
mensagens de texto representando cada link. Observe também que a abertura < FONT> tag define a cor
do texto que irá representar cada link para azul.

<HTML>

<HEAD>

<TITLE> Script 28.2 - Esta página fornece links para páginas HTML subordinados </ TITLE> </ HEAD>

<BODY>

<BR>

<H3> Ligações de recursos: </ H3> <P> <BR>

<div style =”color: blue;”>

Relatório Resumido <A NAME="DailyRpt"> consolidado Hoje </A> <P> <BR>


648 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

Resumo <A NAME="Archive"> Relatório Consolidado de Arquivo </A> <P> <A NAME="Config"> definições de

configuração <BR> Pessoais e Registro </A> <P> </ DIV> </ BODY> </ HTML>

Adicionando VBScript para a página HTML


Assim que a página HTML é definido, você pode melhorá-lo, incorporando sua VBScript. Para incorporar
uma VBScript, você precisará adicionar as seguintes declarações dentro quer a seção de cabeçalho ou
corpo da página HTML. As demonstrações identificar o início eo fim de um VBScript.

<SCRIPT LANGUAGE =”VBScript”>

<! - Comece escondendo declarações do VBScript

'Terminar escondendo declarações VBScript -> </ SCRIPT>

Como você vai ver, o VBScript que é adicionado a esta página HTML será composto de uma coleção de
sub-rotinas. Cada uma destas sub-rotinas fornece uma característica distinta para a página HTML.

Definir a cor de fundo padrão


A primeira sub-rotina incorporado no links.html page é chamado SetBackgroundColor (). Ele é executado
quando o links.html página é carregada. Isto é conseguido através da modificação da abertura < BODY> tag,
como mostrado abaixo.

<Body onload = setBackgroundColor ()>

Esta declaração usa o navegador do carregando evento para disparar a execução do sub-rotina, o qual é
mostrado abaixo.

Sub setBackgroundColor ()

Se document.cookie <> “” Então

astrCookieArray = Split (document.cookie”,”) strColorScheme =

astrCookieArray (2)
CONSTRUÇÃO DO WEB SITE DA PÁGINA PRINCIPAL Capítulo 28 649

document.bgColor = strColorScheme Else

document.bgcolor = “amarelo” End If

End Sub

A sub-rotina começa verificando o documento objeto de biscoito propriedade para ver se o


computador do visitante tem um cookie pertencente ao site Order / Inventário. Se o valor atribuído
à document.cookie não é em branco, o VBScript
Dividido() função é utilizado para analisar o conteúdo do biscoito numa matriz denominada astrCookieArray.

NOTA

o documento objeto é exposto pelos modelos de objeto do navegador Internet Explorer. Para saber mais sobre o documento
objeto e seus métodos e propriedades, ou qualquer um dos outros objetos baseados em navegador, métodos e
propriedades abordados neste capítulo, leia o Capítulo 8, “VBScript e Internet Explorer.”

O cookie criado pelo site do Reporting Order / Inventário consiste em três partes: armazenar o
nome do visitante, página padrão preferido, e esquema de cores preferido. Cada uma destas
peças é carregado para o astrCookieArray matriz. O valor armazenado na astrCookieArray (2) representa
um valor regime.A cor preferida do visitante armazenados em astrCookieArray (2) é então atribuído
ao documento objeto de bgcolor propriedade, alterando assim a cor do fundo

links.html página. No entanto, se um cookie do Relatório site Order / Inventory não for encontrado
no computador do visitante, cor de fundo padrão da página de amarelo é usado.

NOTA

No capítulo 29, “Construir o registro e definições de configuração Page,” você vai ver que o config.html página
recolhe as definições de configuração visitante e as armazena em cache do lado do cliente usando um cookie.
650 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

Criando link efeitos de sobreposição


Próxima William modifica a página HTML, adicionando seis novos sub-rotinas para o VBScript página. Estas
subrotinas são mostrados abaixo. Como você pode ver, eles são agrupados em pares. O primeiro par de
sub-rotinas cria o efeito de sobreposição para a
DailyRpt ligação. Os pares restantes de sub-rotinas gerir o efeito de rolagem para a links.html outros
dois links da página.

sub DailyRpt_onMouseOver

DailyRpt.style.color =”red” End Sub

sub DailyRpt_onMouseOut

DailyRpt.style.color =”blue” End Sub

sub Archive_onMouseOver

Archive.style.color =”red” End Sub

sub Archive_onMouseOut

Archive.style.color =”blue” End Sub

sub Config_onMouseOver

Config.style.color =”red” End Sub

sub Config_onMouseOut

Config.style.color =”blue” End Sub

O primeiro sub-rotina em cada par é chamado, anexando o nome do link com o qual a sub-rotina
está associada ao evento navegador que irá acionar a sub-rotina executada. Neste caso, a
primeira sub-rotina em cada par é a onMouseOver
event.Whenever o visitante move o cursor sobre o link associado com o sub-rotina, a rotina muda a
cor do texto que representa o link para vermelho. A segunda sub-rotina em cada par altera a cor da
ligação de volta para a sua cor azul inicial quando o visitante move o ponteiro para fora da sua
ligação associado. O resultado da animação adicionado por esses seis sub-rotinas é que os links
na
links.html página alterar dinamicamente cores para ajudar o visitante a identificar o link atualmente selecionado.
CONSTRUÇÃO DO WEB SITE DA PÁGINA PRINCIPAL Capítulo 28 651

Postar mensagens na barra de status do Internet Explorer


Uma vez que William tem os efeitos de sobreposição para as ligações que trabalham corretamente, ele modifica as

sub-rotinas que os controlam, adicionando lógica que mensagens e limpa mensagens na barra de status do Internet

Explorer sempre que os visitantes mover o ponteiro sobre um dos links.html ligações página. Este truque é realizado

através da modificação do

janela objeto de estado propriedade. Por exemplo, o seguinte par de sub-rotinas mostra como
William modificou as sub-rotinas que respondem à onMouseOver
e onMouseOut eventos para o DailyRpt ligação.

sub DailyRpt_onMouseOver

DailyRpt.style.color =”red”

window.status = “Ver relatório de síntese consolidada de hoje” End Sub

sub DailyRpt_onMouseOut

DailyRpt.style.color =”blue” window.status

= ‘’ End Sub

Como você pode ver, o texto descritivo é exibido quando o onMouseOver evento é acionado para o DailyRpt
ligação. De forma similar, o valor de window.status é definido igual a branco quando o link de onMouseOut
evento é acionado.

Usando VBScript para controlar o conteúdo do quadro


tarefa final de William na criação do links.html página é criar uma coleção de três sub-rotinas
que controlam o carregamento de outras páginas HTML no
right_frame quadro do default.html página quando os visitantes clicam em um dos links.html ligações
página. A primeira dessas sub-rotinas é chamado DailyRpt_onClick (). Ele executa quando o visitante
move o ponteiro sobre o DailyRpt link e cliques sobre ele. Esta sub-rotina usa uma variável
chamada strFileNameString para armazenar o nome da versão do dia atual do relatório de síntese
consolidada. Antes de escrever a sub-rotina, William adiciona a seguinte declaração para definir
esta variável no início do VBScript:

strFileNameString Dim

Em seguida, ele cria a DailyRpt_onClick () sub-rotina, como mostrado abaixo. A lógica para essa
sub-rotina foi emprestado de VBScripts executada-WSH anteriores
652 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

e deve parecer familiar até agora. Primeiro William usa o Encontro() funcionar para recolher a data
atual do sistema, e em seguida, ele usa o Substituir() função para substituir todas as ocorrências do
caractere de barra invertida (/) com o traço (-) personagem. A corda ConsolRpt.html é então anexado
ao fim de strFileNameString.
Finalmente, a sub-rotina carrega versão HTML do relatório de síntese do dia atual para o right_frame
Frame, atribuindo o valor do strFileNameString variável para top.right_frame.location. No
contexto desta página HTML, topo é usado para fazer referência a quadros pai definido em

Default.HTML, e right_frame identifica o quadro onde a versão HTML do relatório de síntese consolidada é

para ser carregado, conforme especificado pelo quadro de objeto de localização propriedade.

sub DailyRpt_onClick

strFileNameString = Replace (Date (), “/”, “-”) strFileNameString = strFileNameString

& “_ConsolRpt.html” top.right_frame.location = “.. \ Rpts \” & strFileNameString End

Sub

NOTA

Observe o uso de .. \ RPTs para especificar a localização do RPTs pasta. Quando traduzida,
. . \ diz o script que a localização do RPTs pasta pode ser encontrado por meio de backup para a pasta principal
da pasta de corrente (a partir de D: \ Intuit \ OrderInventory \ Reporting \ HTML para D: \ Intuit \ OrderInventory \
Reporting) e em seguida, olhando para o

RPTs pasta ( D: \ Intuit \ OrderInventory \ Reporting \ Rpts).

As próximas duas sub-rotinas são muito mais simples do que a sub-rotina anterior. o Archive_onClick
() sub-rotina, ilustrada a seguir, utiliza o localização propriedade para carregar o archive.html página,
que contém uma lista de links para o arquivo de relatório HTML no servidor Web corporativo.

sub Archive_onClick

top.right_frame.location =”.. \ Rpts \ Archive.html” End Sub

Da mesma forma, o Config_onClick () sub-rotina, ilustrada a seguir, carrega o config.html página, permitindo que os
visitantes para especificar as suas preferências de configuração pessoais.
CONSTRUÇÃO DO WEB SITE DA PÁGINA PRINCIPAL Capítulo 28 653

sub Config_onClick

top.right_frame.location =”config.html” End Sub

Figura 28.1 mostra como o links.html página parece se carregado diretamente no navegador (quando não estiver
carregado pelo Default.html).

FIGURA 28.1 o links.html página fornece acesso às outras páginas no site do Reporting Order / Inventário

O links.html página totalmente montado


O totalmente montado links.html página é mostrado abaixo. Quando carregados no
left_frame quadro do default.html página, ele fornece um menu de links que permitem ao
visitante navegar Reporting site Order / Inventário.

<HTML>

<HEAD>

<TITLE> Script 28.2 - Esta página fornece links para páginas HTML subordinados </ TITLE>

<SCRIPT LANGUAGE =”VBScript”> <! - Comece escondendo

declarações do VBScript
654 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

strFileNameString Dim

Sub setBackgroundColor ()

Se document.cookie <> “” Então astrCookieArray = Split

(document.cookie”,”) strColorScheme = astrCookieArray (2)

document.bgColor = strColorScheme Else

document.bgcolor = “amarelo” End If

End Sub

sub DailyRpt_onMouseOver

DailyRpt.style.color =”red”

window.status = “Ver relatório de síntese consolidada de hoje” End Sub

sub DailyRpt_onMouseOut

DailyRpt.style.color =”blue” window.status

= ‘’ End Sub

sub DailyRpt_onClick

strFileNameString = Replace (Date (), “/”, “-”) strFileNameString = strFileNameString

& “_ConsolRpt.html” top.right_frame.location = “.. \ Rpts \” & strFileNameString End

Sub

sub Archive_onMouseOver

Archive.style.color =”red”

window.status = “Ver um arquivo de relatórios resumidos consolidados” End Sub

sub Archive_onMouseOut

Archive.style.color =”blue” window.status

= ‘’ End Sub

sub Archive_onClick

top.right_frame.location =”Archive.html” End Sub


CONSTRUÇÃO DO WEB SITE DA PÁGINA PRINCIPAL Capítulo 28 655

sub Config_onMouseOver

Config.style.color =”red”

window.status = “Configurar definições de configuração pessoais” End Sub

sub Config_onMouseOut

Config.style.color =”blue”

window.status = ‘’ End Sub

sub Config_onClick

top.right_frame.location =”config.html” End Sub

'End escondendo declarações VBScript -> </ SCRIPT> </

HEAD>

<Body onload = setBackgroundColor ()>

<BR>

<H3> Ligações de recursos: </ H3> <P> <BR>

<div style =”color: blue;”>

Relatório Resumido <A NAME="DailyRpt"> consolidado Hoje </A> <P> Resumo <BR> <A NAME="Archive">

Relatório Consolidado de Arquivo </A> <P> <BR> <A NAME =” config”> Configurações pessoais e Registro </A>

<P> </ DIV> </ BODY> </ HTML>

Construindo a página Welcome.html


o welcome.html página é exibida por padrão no right_frame no quadro default.html página. No entanto,
cada visitante tem a opção de configurar uma página padrão diferente se o desejarem. Esta página
fornece informações básicas sobre o Relatório de site Order / Inventário. Além disso, ele contém um
VBScript incorporado que fornece uma grande quantidade de behind-the-scenes funcionalidade,
incluindo:

◆ Detecção do tipo e versão do navegador que está sendo usado para visitar o Web
local
656 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

◆ Redirecionamento para os visitantes com navegadores que não sejam o Internet Explorer 5.0

ou acima

◆ Recuperação de definições de configuração do cache do lado do cliente (a partir de cookies)

◆ Redirecionamento para os visitantes de primeira viagem para o Registro e Configuração

página de configurações

HTML para a página Welcome.html


O HTML para o welcome.html página é mostrado abaixo. Ele usa tags HTML padrão para
organizar e exibir conteúdo informativo sobre o Web site.

<HTML>

<HEAD>

<TITLE> Script 28.1 - Encomenda / inventário principal Bem-vindo Page </ TITLE> </ HEAD>

<BODY>

<HR>

<UL>

<LI> O relatório de síntese consolidada está disponível para on-line

vendo todos os dias às 6:00. </ li> <P> <LI> Você também pode rever uma

coleção de 3 meses de arquivados

relatórios resumidos consolidadas. </ li> <P>

<li> Microsoft Word cópias dos relatórios resumidos consolidadas

também estão disponíveis para download. </ li> <P>

<Li> Se você precisa rever um relatório de síntese consolidada que é

não está disponível neste site, por favor entre em contato Operações do computador e pedir

que eles lhe fornecer uma cópia impressa. </ li> <P>

</ UL>

<HR>

<B> <pre>

Command Center Helpdesk: Ext. 3737

Hotline ordem / Inventory: Ext: 4000

Outras perguntas ou preocupações: Ext: 3230

</ Pre> </ B> </

BODY>
CONSTRUÇÃO DO WEB SITE DA PÁGINA PRINCIPAL Capítulo 28 657

</ HTML>

Figura 28.2 mostra como o welcome.html página olha quando carregado diretamente no Internet Explorer.

FIGURA 28.2 o welcome.html página recebe os visitantes pelo nome e fornece informações sobre o conteúdo disponível
no site do Reporting Order / Inventário

Redirecionamento para não suportados Navegadores


Anos atrás, Intuit feita Internet Explorer o navegador padrão da empresa. A equipe de TI da Intuit tem feito o
seu melhor para garantir que todos os usuários na empresa ter atualizado seus navegadores para Internet
Explorer 6.0. No entanto, de vez em quando alguém parece surgir usando uma versão mais antiga do
Explorer.

William está desenvolvendo Reporting site Order / Inventário com base no pressuposto de que todos os
usuários estarão usando o Internet Explorer versão 5.0 ou superior. No entanto, para se proteger contra a
possibilidade de que um ou mais funcionários da Intuit ainda pode estar usando uma versão antiga do Internet
Explorer, William adicionou uma sub-rotina chamada BrowserCheck () ao welcome.html página. Esta sub-rotina
automaticamente redireciona os navegadores mais antigos para uma página HTML chamada Browser.html,
658 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

onde é exibida uma mensagem que informa visitantes para atualizar para o Internet Explorer

6.0 antes de acessar o Relatório de site Order / Inventário. O primeiro passo na criação da BrowserCheck
() sub-rotina é definir o seguinte VBScript na seção do corpo da página HTML. Este script irá

então executar automaticamente o BrowserCheck () sub-rotina quando o welcome.html

página é carregada.

<SCRIPT LANGUAGE =”VBScript”> <! - Comece escondendo

declarações do VBScript

BrowserCheck ()

'Terminar escondendo declarações VBScript -> </ SCRIPT>

O próximo passo é definir um segundo VBScript carregado na seção de cabeçalho da página HTML e
adicionar o seguinte sub-rotina para o script:

NOTA

O VBScript incorporado no welcome.html página também poderia ter sido incorporado na secção do corpo da página.
No entanto, definindo-a na seção de cabeçalho, você é capaz de garantir que todos os procedimentos são carregados
e disponíveis antes de serem referenciadas por declarações ou eventos localizados na seção do corpo.

Sub BrowserCheck ()

browserName = navigator.appName

Se browserName = “Microsoft Internet Explorer” Então

'Use a propriedade navegador appVersion para coletar informações sobre' navegador de Internet do

visitante

browserVersion = navigator.appVersion

'A função Instr () procura uma string para um determinado conjunto de caracteres findString = Instr (1,

browserVersion, ‘MSIE’)
CONSTRUÇÃO DO WEB SITE DA PÁGINA PRINCIPAL Capítulo 28 659

findString = + 5 findString

versionNumber = idade (browserVersion, findString, 1)

Se versionNumber <5 Então

window.location = “Browser.html” End If Else

window.location = “Browser.html” End If

End Sub

o BrowserCheck () sub-rotina começa com a coleta o nome do navegador que está sendo usado para
acessar a página, atribuindo o valor de navigator.appName para uma variável chamada browserName. Em
seguida uma E se declaração é usado para determinar se o browserName é igual a Microsoft Internet
Explorer. Se não for, então o right_frame quadro do default.html página é redirecionada para o Browser.html
página usando o janelas objeto de localização propriedade. Se o visitante está usando um navegador
de Internet Explorer a sub-rotina próximos verifica para ver qual versão está sendo usado, atribuindo
o valor de navigator.appVersion para uma variável chamada browserVersion. Por exemplo, a seqüência
atribuída a

browserVersion pareceria 4.0 (compatível; MSIE 6.0; Windows NT 5.1; Q312461) se o visitante
estava usando uma versão do navegador Internet Explorer 6.0.

Em seguida, o VBScript Instr () função é usada para determinar a localização da string MSIE dentro browserVersion.
Uma vez que a posição de caractere começando desta cadeia é determinado, um valor de 5 é adicionado
a ele, a fim de calcular a posição do número de versão do navegador dentro do string. Em seguida, o MID
() função é usada para analisar o número de versão principal estiver em uso. Em seguida, um E se declaração

é usado para determinar se o número de versão principal é inferior a 5 (isto é, Internet Explorer versão
5.x). Se for inferior a 5, o right_frame quadro do

default.html página é redirecionada para adicionar o Browser.html. Caso contrário, nenhuma ação de redirecionamento é

tomada.

A Figura 28.3 mostra como o site do Reporting Order / Inventory vai olhar quando acessado por um visitante
com um navegador Internet Explorer 5.0 ou superior.
660 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

FIGURA 28.3 Por padrão, todos os visitantes do site do Reporting Order / Inventory vai ver o
links.html e welcome.html Páginas

Recuperando um cookie VBScript


A última tarefa a executar na criação do welcome.html página é adicionar lógica que extrai as preferências
dos visitantes de um cookie armazenado em seus computadores. Este cookie é construído e armazenados
nos computadores dos visitantes quando eles visitam página Registro configurações e do site. Se um
cookie para o site Relatório Order / Inventory for encontrado no computador do visitante, seu conteúdo é
recuperado e analisado fora. Caso contrário, o right_frame no quadro default.html página é redirecionado para
a página de Registro configurações e para que o visitante pode escolher as definições de configuração.

Este processo será implementado como uma sub-rotina chamada Cookie_Check (). O primeiro passo na criação deste

processo é o de modificar o VBScript localizado na secção do corpo da página através da inserção de uma chamada

para o Cookie_Check () sub-rotina, como mostrado abaixo.

<SCRIPT LANGUAGE =”VBScript”> <! - Comece escondendo

declarações do VBScript
CONSTRUÇÃO DO WEB SITE DA PÁGINA PRINCIPAL Capítulo 28 661

BrowserCheck ()

Cookie_Check ()

'Terminar escondendo declarações VBScript -> </ SCRIPT>

Uma vez feito isso, você pode adicionar o código para o Cookie_Check () sub-rotina para a VBScript definido
na welcome.html seção de cabeçalho da página.

Dim Função strFileNameString

Cookie_Check ()

Se document.cookie <> “” Então

astrCookieArray = split (Document “,,”) = strUserName de idade

(astrCookieArray (0), 8) strDefaultView = astrCookieArray (1)

strColorScheme = astrCookieArray (2)

Se strDefaultView = “Arquivo” Então

window.location = “Archive.html” End If

Se strDefaultView = “Welcome” Então

document.write ( “<H3> Order / Inventário Relatórios do Site </ H3> <P>”) document.write

( “<B> Welcome“e strUserName & ‘</ B> <P>’) End If

Se strDefaultView = “Daily” Então

strFileNameString = Replace (Date () “/”, “-”)

strConSolRptName = strConsolFolder & “\” & strFileNameString & _

“_ConsolSumRpt.txt”

strFileNameString = strFileNameString & “_ConsolRpt.html” window.location =

strFileNameString End If Else

window.location = “config.html” End If End

Function

Para determinar se o computador do visitante tem um cookie pertencente ao site do Reporting


Order / Inventory, a sub-rotina começa examinando o valor do documento objeto de biscoito propriedade.
Se estiver em branco, então o
662 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

right_frame quadro do default.html página é automaticamente redirecionado para a config.html página. Se


o cookie não estiver em branco, então o VBScript Dividido()
função é usada para atribuir o conteúdo de biscoito para um array chamado astrCookieArray.

Os sete primeiros caracteres do cookie de especificar o seu nome e o sinal de igual. Para extrair o nome
do visitante do cookie, o Mediana () função atribui todos os caracteres começando na posição de
caracteres de 8 do primeiro elemento da matriz a uma variável chamada strUserName. Próxima página
padrão preferido do visitante é extraído, atribuindo o valor de astrCookieArray (1) para strDefaultView. Em
seguida, esquema de cores preferido do visitante é extraído e atribuído a strColorScheme.

Uma série de três E se declarações depois executes.The primeiro E se declaração verifica se strDefaultView
é igual a Arquivo. Se for, então o right_frame
no quadro default.html página é redirecionada para .. \ Relatórios \ Archive.html. Do ponto de
vista do visitante, ele vai olhar como se o
Archive.html página foi carregada automaticamente (a welcome.html página não é exibida). O

segundo E se declaração verifica se strDefaultView é igual a

Bem vinda. Se for, em seguida, uma mensagem de cabeçalho é escrito para o topo da

welcome.html página seguido por uma mensagem que saúda o usuário pelo nome usando o valor

armazenado na strUserName variável. Uma vez feito isso, o resto do conteúdo a ser exibido na welcome.html
página será escrita como especificado dentro de suas tags HTML. Finalmente, a última E se declaração
verifica se strDefaultView é igual a Diariamente. Se for, então o config.html página é automaticamente
carregada no

right_frame quadro do default.html página.

O Welcome.html página totalmente montado


O totalmente montado welcome.html página é mostrado no seguinte página.Depois
carregado no right_frame quadro do default.html página, o welcome.html página recebe o
visitante pelo nome e exibe informações sobre o Relatório de site Order / Inventário. No
entanto, se esta é a primeira vez que o visitante chegou ao Web site, o VBScript embutido
no welcome.html
página irá redirecionar o visitante para a config.html página. Finalmente, se o visitante não está usando
a versão correta do Internet Explorer ao acessar o site, um VBScript incorporado dentro do welcome.html
página redireciona o visitante para a
CONSTRUÇÃO DO WEB SITE DA PÁGINA PRINCIPAL Capítulo 28 663

Browser.html página, onde o visitante é aconselhado a versão do Internet Explorer para usar ao
visualizar o conteúdo fornecido pelo Web site.

<HTML>

<HEAD>

<TITLE> Script 28.1 - Encomenda / inventário principal Bem-vindo Page </ TITLE>

<SCRIPT LANGUAGE =”VBScript”> <! - Comece escondendo

declarações do VBScript

strFileNameString Dim

'Definir uma função para verificar se o cookie e usá-lo no' mensagem de boas vindas, se for

encontrado Função Cookie_Check ()

Se document.cookie <> “” Então

astrCookieArray = split (Document “,,”) = strUserName de idade

(astrCookieArray (0), 8) strDefaultView = astrCookieArray (1)

strColorScheme = astrCookieArray (2)

Se strDefaultView = “Arquivo” Então

window.location = “.. \ Rpts \ Archive.html” End If

Se strDefaultView = “Welcome” Então

document.write ( “<H3> Order / Inventário Relatórios do Site </ H3> <P>”) document.write

( “<B> Welcome“e strUserName & ‘</ B> <P>’) End If

Se strDefaultView = “Daily” Então

strFileNameString = Replace (Date (), “/”, “-”) strConSolRptName = strConsolFolder & “\” &

strFileNameString & _

“_ConsolSumRpt.txt”

strFileNameString = strFileNameString & “_ConsolRpt.html” window.location =

strFileNameString End If Else

window.location = “config.html”
664 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

End If End

Function

Sub BrowserCheck ()

browserName = navigator.appName

Se browserName = “Microsoft Internet Explorer” Então

'Use a propriedade navegador appVersion para coletar informações sobre' navegador de Internet do

visitante

browserVersion = navigator.appVersion

'O Instr () função procura uma string para um determinado conjunto de ca-

ters

findString = Instr (1, browserVersion, “MSIE”)

findString = + 5 findString

versionNumber = idade (browserVersion, findString, 1)

Se versionNumber <5 Então

window.location = “Browser.html” End If Else

window.location = “Browser.html” End If

End Sub

'Terminar escondendo declarações VBScript -> </ SCRIPT> </

HEAD> <BODY>

<SCRIPT LANGUAGE =”VBScript”> <! - Comece escondendo

declarações do VBScript
CONSTRUÇÃO DO WEB SITE DA PÁGINA PRINCIPAL Capítulo 28 665

BrowserCheck ()

Cookie_Check ()

'Terminar escondendo declarações VBScript -> </ SCRIPT>

<HR>

<UL>

<LI> O relatório de síntese consolidada está disponível para on-line

vendo todos os dias às 6:00. </ li> <P> <LI> Você também pode rever uma

coleção de 3 meses de arquivados

relatórios resumidos consolidadas. </ li> <P>

<li> Microsoft Word cópias dos relatórios resumidos consolidadas

também estão disponíveis para download. </ li> <P>

<Li> Se você precisa rever um relatório de síntese consolidada que é

não está disponível neste site, por favor entre em contato Operações do computador e pedir

que eles lhe fornecer uma cópia impressa. </ LI> <P> </ UL> <HR>

<B> <pre>

Command Center Helpdesk: Ext. 3737

Hotline ordem / Inventory: Ext: 4000

Outras perguntas ou preocupações: Ext: 3230

</ Pre> </ B>

</ BODY> </

HTML>

Criando a página Browser.html


O HTML que compreende a browser.html página, mostrada na página seguinte, é simples. Ele consiste
apenas de tags HTML e não contém quaisquer VBScripts embutidos. O seu único objectivo é aconselhar os
visitantes que não estão usando o Internet Explorer versão 5 ou superior para retornar usando o navegador
adequado, de preferência Internet Explorer 6.0.
666 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

<HTML>

<HEAD>

<TITLE> Esta página é visto pelos visitantes que não estão usando o IE 5.0 ou superior </ TITLE>

</ HEAD>

<BODY>

<BR>

<Div style =”text-align: center;”>

<H3> Desculpe, mas para acessar o site do Reporting Order / Inventário

você deve usar Internet Explorer versão 5 ou superior </ H3> </ div>

<BR>

<Div style =”text-align: center;”>

Por favor, atualize para o Internet Explorer 6.0 ou acessar este site de um computador diferente. </

Div>

</ BODY>

</ HTML>

Figura 28.4 mostra como o browser.html página é exibida quando vistos por uma versão anterior do
Internet Explorer.
CONSTRUÇÃO DO WEB SITE DA PÁGINA PRINCIPAL Capítulo 28 667

FIGURA 28.4 o Browser.html página aconselha os visitantes a utilizar o Internet Explorer versão 5.0 ou superior

resumo
Neste capítulo, você observado como William começou a trabalhar no Relatório site Order / Inventário.
Especificamente, ele desenvolveu o site da default.html página usando um conjunto de quadros
composto de dois quadros para exibir um menu de links e o conteúdo do link selecionado. Além do
HTML necessário para criar as páginas HTML, William incorporado uma série de VBScripts para
adicionar efeitos gráficos para o site. VBScripts também foram utilizados para recuperar as
configurações visitante e para gerenciar o carregamento de páginas HTML para os quadros.
Esta página foi intencionalmente esquerda em branco
Capítulo 29
A construção do
Registro e
configurações
Página
Eu n Neste capítulo, William precisa desenvolver uma página HTML para o site relatando que recolhe
informações sobre os visitantes e as suas preferências de configuração. Para realizar essa tarefa, William vai
definir um formulário HTML e usar um VBScript incorporado para validar o seu conteúdo. Em última análise, a
página irá guardar o nome e configuração preferências de cada visitante em um cookie armazenado localmente
nos computadores dos visitantes.

Basics bolinho
Usando variáveis ​globais, você pode armazenar e referência valores durante a vida de um script. No entanto, estes

valores são perdidos quando o script termina, e eles devem ser recriados na próxima vez que ele é executado. A fim de

construir um site interativo e para fornecer um mecanismo que permite que os visitantes para especificar as configurações

personalizadas, você precisa encontrar uma maneira para armazenar dados que vai sobreviver a vida útil de seus scripts

ou sessão de um visitante em seu Web site. Uma maneira de prever armazenamento persistente ( a capacidade para

referenciar dados fornecidos pelos visitantes quando eles retornam para o seu site) é a utilização de cookies. UMA biscoito

é uma cadeia de texto que seu Web site pode armazenar nos computadores dos visitantes. Os cookies existem desde os

primórdios da Internet e foram projetados para fornecer uma maneira de armazenar pequenas quantidades de dados

sobre computers.Today dos visitantes, servidores Web poderosas com bancos de dados de back-end são capazes de

armazenar e recuperar grandes quantidades de informações sobre visitantes, suas preferências, e suas ações. Para um

Web site como o site Reporting, onde a informação está disponível para visualização, mas nenhuma coleta de dados reais

ou processamento é realizado, utilizando um banco de dados back-end para armazenar alguns pedaços de informações

sobre os visitantes e suas preferências é um exagero. Uma solução muito mais simples é usar cookies. Cookies fornecem

um meio eficiente de armazenar todos os tipos de informação. Por exemplo, o uso de cookies, você pode:

◆ Armazenar dados persistentes

◆ Fornecer um meio de diferenciação entre os visitantes

◆ Fornecer uma experiência personalizada

◆ a atividade do usuário pista


CONSTRUÇÃO DO REGISTRO E Página de configuração Capítulo 29 671

◆ preferências do usuário loja

◆ armazenar informações sobre um usuário

Um cookie é uma cadeia de texto que você pode armazenar na memória do navegador. Por padrão, cookies
expiram quando o visitante fecha o browser. No entanto, definindo uma data de expiração quando você cria um
cookie, você pode instruir o navegador para manter o seu cookie. Browsers atender o pedido salvando uma
cópia do texto do cookie no disco rígido local do seu computador.

NOTA

Navegadores modernos fornecer aos usuários a capacidade de bloquear cookies. No entanto, a maioria dos usuários acham que

é inconveniente ou impraticável fazê-lo. É importante entender que seus scripts não pode realmente armazenar um cookie nos

discos rígidos das pessoas que visitam seu Web site. Em vez disso, você armazenar o cookie na memória do navegador e o

navegador decide se deve ou não armazenar o cookie no disco rígido do seu computador, com base nas definições de

configuração do navegador especificados pelo seu proprietário.

o armazenamento de cookies
A maneira que os cookies são armazenados em computadores cliente depende do tipo e versão do navegador
usado para armazenar o cookie, assim como o sistema operacional que está sendo usado para executar o
browser. Por exemplo, Netscape Communicator armazena seus cookies como cadeias de texto em um arquivo de
texto grande localizado por padrão no C: \ Arquivos de Programas \ Netscape \ Users \ Nome de usuário \ cookies.txt. Internet
Explorer, por outro lado, armazena cookies como arquivos de texto individuais. Em computadores com o Windows
95, 98 ou Me, Internet Explorer armazena arquivos de cookies por padrão no

C: \ Windows \ Cookies. Em computadores com o Windows 2000 ou XP, Internet Explorer armazena
arquivos de texto do bolinho por padrão no C: \ Documents and Settings \ Nome de usuário \ Biscoitos.

NOTA

Uma discussão verdadeiramente detalhado de cookies está além do escopo deste livro. Se você estiver interessado em
aprender mais do que o básico apresentado neste capítulo, visita
http://www.cookiecentral.com.
672 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

Internet Explorer é o navegador utilizado por funcionários da Intuit. Este navegador armazena todos os seus cookies como

arquivos de texto individuais, como demonstrado na Figura 29.1.

FIGURA 29.1 Internet Explorer armazena cookies como arquivos de texto individuais e associa-los com indivíduos cas espe-

Como você pode ver na Figura 29.1, Internet Explorer associa nome de usuário do visitante com cada cookie ao
guardá-la. Ele faz isso para acomodar a possibilidade de que vários usuários podem compartilhar o mesmo
computador. No entanto, os nomes de usuário nunca são devolvidos ao site que criou o cookie; somente os
dados reais armazenados no cookie é devolvido (menos a data de validade).

Os cookies podem ser de até 4 KB de tamanho. Todos os principais navegadores suportam cookies, incluindo o

Netscape Communicator e Internet Explorer. Ambos os navegadores limitar o número de cookies que podem ser

armazenados em um computador para 300. O número máximo de cookies que um site da Web pode armazenar no

computador de um visitante é 20. No caso em que qualquer um destes dois limites for excedido, o browser para apagar

os cookies existentes para fazer o quarto como novos chegar. Como resultado dessas limitações, os cookies são

limitados a um tamanho máximo coletivo de 1.2MB (por usuário) em qualquer computador.


CONSTRUÇÃO DO REGISTRO E Página de configuração Capítulo 29 673

Cookies e Segurança
Por padrão, os cookies só pode ser acessado a partir do site que os criou. Isto significa que outros sites
não será capaz de ler os cookies fora de um computador que tenha sido utilizado para visitar o seu Web
site. Da mesma forma, você só vai ser capaz de recuperar cookies que seu site foi responsável pela
criação. Portanto, os cookies pode ser visto como sendo um pouco seguro. No entanto, porque os cookies
são armazenados como arquivos de texto simples em computadores clientes, eles são livremente visíveis
para qualquer pessoa com acesso local para eles. Isso faz com que os cookies inadequados para o
armazenamento de peças e informações sensíveis, tais como cartão de crédito e números de segurança
social. Outra limitação de cookies é que eles são armazenados localmente no computador. Se o visitante
retorna mais tarde para o site usando outro computador, não há nenhuma maneira de associar novamente
os dados previamente fornecidos pelo visitante.

cookie de Sintaxe
Seus VBScripts pode criar e recuperar cookies usando o documento objeto de
biscoito propriedade. Bolinhos consistem de um ou mais parâmetros, cada um dos quais é separada por um ponto

e vírgula (;). A sintaxe usada para criar cookies é mostrado abaixo.

name = valor [; expira = Data de validade] [; domain = Domname] [; path = Nome_de_caminho] [; seguro]

Nome especifica o nome do cookie. Valor identifica a série de dados a serem armazenados pelo cookie. Data de

validade especifica uma data que determina quanto tempo o cookie permanece válido. domname especifica um

nome de host alternativa a partir da qual o biscoito pode ser acedido. Caminho especifica a pasta de nível
superior no servidor Web a partir do qual os cookies criados pelo servidor Web pode ser recuperada. Seguro é
um valor booleano que, quando definido como igual a Verdade requer uma HTTPS conexão, a fim de criar o
cookie. De todos estes parâmetros, única nome e valor são necessárias ao criar um cookie.

Criando e Recuperando um cookie Simples


O exemplo a seguir demonstra como criar um cookie chamado VisitorName e atribuir-lhe um
valor de Jerry.

document.cookie = “VisitorName = Jerry”

Uma vez criado, o cookie pode ser recuperada, como mostrado abaixo.

strVisitorName = Document
674 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

Se o computador do visitante não tem o cookie, uma seqüência vazia é retornada. No exemplo anterior, a
cadeia que compõe o cookie é atribuído a uma variável chamada strVisitorName. Uma vez que o cookie é
recuperado, você pode usar qualquer uma das funções de manipulação de seqüência de VBScript para
analisar os dados armazenados no cookie.

Criando cookies persistentes


A menos que você especifique explicitamente uma data de expiração, os cookies também serão apagadas logo que os

visitantes fechar seus navegadores. Para fazer um cookie persistente, defina sua data de expiração para um valor que

irá durar mais tempo do que a sessão atual do navegador. O exemplo a seguir demonstra como criar um cookie que

armazena o nome de um visitante em um cookie que irá persistir por um ano.

dtmExpDate = WeekdayName (PartData ( “w”, Date ())) & “,“

dtmDayValue = PartData ( “d”, Date ())

Se Len (dtmDayValue) = 1, então

dtmDayValue = “0” e dtmDayValue End If

dtmExpDate = dtmExpDate & dtmDayValue & “-” _

& MonthName (PartData ( “m”, Date (), 1)) & “-” _ & PartData ( “aaaa”,

Date ()) + 1 & “00:00:00 GMT”

strCookie = “VisitorName = Jerry” & “; expira =”& dtmExpDate

A primeira declaração cria uma variável chamada dtmExpDate recuperando a data atual usando o Encontro()
função. Em seguida, ele usa o PartData () função para extrair um valor numérico que representa o dia
da semana. Este valor é então alimentada para o WeekdayName () função, a fim de determinar o nome
do dia da semana corrente (neste exemplo, o dia atual da semana é sexta-feira). UMA “,“ string é
então acrescentado ao nome do dia da semana.

A próxima instrução recupera um valor numérico que representa o mês atual usando o Encontro() e PartData
() funções. o Len () função é então usado para determinar se este valor é um ou dois dígitos. Se é
apenas um dígito de comprimento (o mês é entre janeiro e setembro), um zero é anexado para a
frente do que para criar um valor de dois dígitos.
CONSTRUÇÃO DO REGISTRO E Página de configuração Capítulo 29 675

Em seguida, o valor do dtmExpDate é modificada anexando o valor do mês de dois dígitos a ele
seguido pelo “-” corda e, em seguida, o nome do mês atual ( Monthname (PartData ( “m”, Data (),
1))). Então outro “-” corda e um valor numérico que representa o próximo ano (adicionando 1
para o ano em curso) é anexado, seguido pelo “00:00:00 GMT” string.

O resultado final é uma string cookie que expira um ano a partir do dia em que ele é criado. Por exemplo, se
hoje é 02 de maio de 2003, a seqüência de cookie iria resolver a:

VisitorName = Jerry; expira = sexta-feira, 02-May-2004 00:00:00 GMT

NOTA

A data de expiração não é devolvido quando você mais tarde recuperar o conteúdo do cookie.

Especificando nomes de host válidos

O parâmetro de domínio fornece a capacidade de especificar o anfitrião nomes em seu site ter acesso ao
seu cookie. Por padrão, o nome do host do servidor Web que cria os cookies são atribuídos
automaticamente. usando o domínio parâmetro, você pode permitir que outros domínios que pertencem a
você acessar seu cookie. Por exemplo, se você criou um cookie em um servidor em http://www.intuitmechanical.com,
seria, por padrão, só podem ser acessíveis a partir desse site. No entanto, se a empresa teve um segundo
local, como http://sales.intuitmechanical.com, o cookie não seria acessível a partir deste site. usando o domínio
parâmetro, você pode fazer o cookie disponível em ambos os sites, como demonstrado abaixo. Note-se
que o ponto inicial (em

. intuitmechanical.com) É necessário.

document.cookie = “string =” & strCookieString & “; domain = .intuitmechanical.com”

NOTA

Porque Intuit tem apenas um servidor Web, William não precisa incluir esse parâmetro ao criar cookies
do site da Ordem Relatórios / Inventário.
676 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

Determinando o Acesso Quais pastas têm de Cookies


o comportamento padrão do navegador permite cookies para ser acessado por páginas localizadas dentro da

mesma pasta como a página que criou o navegador cookie.The também permite que o cookie para ser

acessado por qualquer página que reside em subpastas da pasta. No entanto, o acesso de outras pastas no

servidor Web é automaticamente bloqueado. Por exemplo, suponha a seguinte estrutura pasta estava no local

no servidor Web Intuit:

◆ \ Intuit \ OrderInventory \ Reporting \ HTML


◆ \ Intuit \ OrderInventory \ Reporting \ Rpts
◆ \ Intuit \ OrderInventory \ Reporting \ Rpts \ Maio
◆ \ Intuit \ OrderInventory \ Reporting \ HTML \ junho

Se você tivesse uma página HTML localizado no \ Intuit \ OrderInventory \ Reporting \ Rpts pasta que
criou um cookie, esse cookie seria acessível por outras páginas HTML localizadas nessa pasta,
bem como por páginas HTML localizadas em suas duas subpastas. No entanto, o cookie não
seria acessível a partir da
\ Intuit \ OrderInventory \ Reporting \ HTML pasta. usando o caminho parâmetro, você pode especificar uma

pasta de nível superior a partir do qual o cookie deve ser acessível. Por exemplo, a seguinte instrução cria

um cookie que pode ser acessado a partir de qualquer página HTML localizado em qualquer pasta no site

da Intuit (ou servidor Web).

document.cookie = “string =” & strCookieString & “; expira =” & dtmExpDate & “; path = /”

Exigir Secure Access Cookies


O parâmetro final cookie é o seguro parâmetro. o seguro parâmetro é um valor booleano que determina se
ou não um cookie pode ser criado quando um protocolo seguro (tais como HTTPS) não está a ser utilizado.
Quando definido igual a Verdade, o cookie é salvo somente se HTTPS está em uso. Quando ajustado para Falso,
o cookie é salvo independentemente de HTTP ou HTTPS está sendo usado para se conectar à Web site.
Por exemplo, a seguinte instrução cria um cookie somente se o visitante estabeleceu um HTTPS sessão
para o Web site.

document.cookie = “string =” & strCookieString & “; expira =” & dtmExpDate & “; Verdade"
CONSTRUÇÃO DO REGISTRO E Página de configuração Capítulo 29 677

Apagar cookies
A exclusão de um cookie é um processo de duas etapas. Primeiro, você deve criar uma nova seqüência de cookie e

defina seu valor como nulo. Em seguida, antes de salvar o cookie, você deve atribuir uma data de expiração que

está no passado. Se você pular a primeira etapa e simplesmente salvar novamente um cookie existente usando uma

data de validade expirado, o cookie acabará por ser eliminado (quando o visitante fecha o navegador). No entanto,

se o visitante deixa seu site e retorna mais tarde sem ter fechado seu navegador, entretanto, o cookie será ainda

existem. Definindo-o igual a nulo e, em seguida, salvá-lo, você garante que se o visitante retorna sem antes ter

fechado seu navegador, quando você recupera o cookie novamente, ele aparecerá como se ele foi excluído (que

será devolvida uma cadeia em branco).

Verificando a Criação de Cookies


Há um sem número de razões pelas quais o seu cookie não pode ter criado no computador de um visitante. Por
exemplo, o visitante pode ter configurado seu navegador para rejeitar cookies ou para buscar a aprovação
antes de armazenar um. O visitante pode executar o software como um firewall pessoal em seu computador,
que proíbe a coleção de cookies. Independentemente das razões, você não pode sempre contar com o seu
cookie está sendo criado como esperado, especialmente quando o seu site está conectado à Internet. Uma
maneira de verificar se o cookie foi criado é tentar recuperá-la imediatamente após criá-la. Se você puder fazer
isso, então você vai saber que você foi bem sucedido na criação do cookie. Se, no entanto, você achar que o
cookie não foi aceito, você precisa tomar algum tipo de ação. Por exemplo, você pode se recusar a exibir
qualquer conteúdo, exceto uma mensagem insistindo que o visitante permitir a aceitação de cookies no seu
browser. Alternativamente, você pode usar as configurações padrão no lugar das configurações especificadas
pelo usuário, a fim de permitir que os visitantes para acessar seu site sem a necessidade de lhe fornecer
qualquer informação. Felizmente para William, navegadores de todos os funcionários da Intuit deve ter
aceitação de cookies habilitado, eliminando a necessidade de testar ou não seus biscoitos são criados.

Coleta de informações usando formulários HTML

O primeiro passo na criação de um cookie para este projeto é determinar quais informações você deseja
armazenar nele. No caso da Intuit, William decidiu criar um formulário HTML para coletar informações de
visitantes do Web site. Uma vez que os visitantes
678 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

forneceram definições de configuração necessárias do site, um VBScript incorporado dentro da página


HTML irá validar que o formulário foi corretamente preenchido e, em seguida, salvar as configurações
pessoais do visitante em um cookie. Figura 29.2 mostra o formulário HTML que William estará criando.

FIGURA 29.2 Usando um formulário para coletar nome e pessoais preferências de cada visitante

HTML para a página config.html


O HTML necessário para construir este formulário é mostrado abaixo. Note que cada elemento do formulário é

atribuído um explícita Nome valor, a fim de tornar mais fácil para o VBScript para acessar e validar o conteúdo dos

elementos de formulário individuais.

<HTML>

<HEAD>

<TITLE> Script 27.1 - A página de pedido / Configurações Configuração do Inventário </ TITLE> </ HEAD>

<BODY>
CONSTRUÇÃO DO REGISTRO E Página de configuração Capítulo 29 679

<H3> Definições de configuração Order / Inventário </ H3>

<BR>

<FORM NAME =”siteForm”>

<B> Por favor, diga-nos o seu nome: </ B> <INPUT NAME =”username” TYPE =”text” size =”25” MAXLENGTH =” 40” > <P>

<BR>

<B> Padrão Ver: </ B> <P>

<INPUT NAME =”siteRadio” TYPE =”radio” VALUE =”Welcome”> Bem-vindo Page <P> <INPUT NAME =”siteRadio”

TYPE =”radio” VALUE =”Arquivo”> Relatório Arquivo de <P> <INPUT NAME =”siteRadio” TYPE =”radio” VALUE

=”Daily”> Daily Consolidado Relatório Resumido <P> <BR>

<P> <B> Escolha um esquema de cores: </ B>

<SELECT NOME =”SiteList”>

<OPÇÃO valor selecionado =”Yellow”> amarelo e branco <OPÇÃO

VALUE =”LightBlue”> azul e branco <OPÇÃO VALUE =”Lightgreen”>

verde e branco <OPÇÃO VALUE =”lightgrey”> cinza e branco <OPÇÃO

VALUE =” rosa”> Pink and White </ SELECT> </ P> <BR>

<INPUT NAME =”SaveButton” TYPE =”button” VALUE =”Salvar‘> <INPUT NAME

=’CancelButton” TYPE =”reset” VALUE =”Cancelar‘> <INPUT NAME =’HelpButton” TYPE

=”button” VALUE = ”Ajuda“> </ FORM> </ BODY> </ HTML>

O último elemento formulário na página HTML define uma lista drop-down. A Figura 29.3 mostra como os
conteúdos fornecidos por esta lista irá aparecer quando os visitantes acessá-los.
680 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

FIGURA 29.3 Usando uma lista drop-down para fornecer uma lista de opções sem congestionar a área de exibição

Usando VBScript para processar conteúdo do formulário


Uma vez que o formulário é criado, você pode começar a trabalhar no VBScript que será incorporado dentro dele.

Este script irá executar duas tarefas principais. A primeira tarefa é para validar que o formulário foi corretamente

preenchido. A segunda tarefa é a de armazenar o conteúdo do formulário em um cookie.

O formulário contém um botão na parte inferior da página HTML chamado SaveButton. Quando clicado,
o botão deve iniciar uma sub-rotina chamada ProcessSettings (), como mostrado abaixo.

<INPUT name =”SaveButton” TYPE = Valor”botão” =”Save‘onclick =’ProcessSettings ()”>

o ProcessSettings () sub-rotina vai examinar cada elemento de formulário para garantir que o visitante tenha
fornecido as informações necessárias.
CONSTRUÇÃO DO REGISTRO E Página de configuração Capítulo 29 681

validação de formulário

Para preparar a página HTML para o seu VBScript, William primeiro incorpora a abertura e fechamento < SCRIPT>
e </ SCRIPT> Tag na seção de cabeçalho da página. Em seguida, ele define as seguintes variáveis ​e
constantes:

Option Explicit

Dim strRadioSelected, intCounter, strConfigSettings, strRadioSelection Const cTitleBarMsg = “Order /

Inventário definições de configuração de ajuda principal”

Uma vez que os passos acima foram concluídos, William cria a ProcessSettings () função, como
mostrado abaixo.

ProcessSettings () função

Se Len (document.siteForm.userName.value) <1 Então

MsgBox “Você deve fornecer seu nome para continuar.”, CTitleBarMsg Exit Function End If

strRadioSelected = “false”

Para intCounter = 0 Para siteForm.siteRadio.length - 1

Se siteForm.siteRadio (intCounter) .checked = “True” Então

strRadioSelection = siteForm.siteRadio (intCounter) .Value strRadioSelected = “True”

End If Next

Se strRadioSelected = “false” Então

MsgBox “Você deve especificar a sua página padrão preferido.”, CTitleBarMsg Exit Function End If

strConfigSettings = document.siteForm.userName.value & “” & _

strRadioSelection & “” & siteForm.siteList.value

BakeTheCookie (strConfigSettings)

top.left_frame.document.bgcolor = siteForm.siteList.value
682 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

MsgBox “As seguintes definições de configuração foram salvos:” & _

vbCrLf & vbCrLf & _

“Name =“& document.siteForm.userName.value & vbCrLf & _ “Default View =“&

strRadioSelection & vbCrLf & _ “Esquema de cores =“& siteForm.siteList.value,

cTitleBarMsg

End Function

A função começa por determinar se ou não o visitante entrou em seu nome no campo de texto do
formulário ( document.siteForm.userName.value). Se o nome não foi fornecido, a mensagem pop-up
mostrado na Figura 29.4 é exibida e o
Função Exit declaração é usada para terminar a execução da função.

FIGURA 29.4 Usando caixas de diálogo pop-up para interagir com os visitantes para garantir que eles tenham informações provid- ed necessário

Se o visitante tenha fornecido o seu nome, a função próximos verifica para ver se uma das três opções
de visualização foi selecionada examinando o valor de siteForm.siteRadio (intCounter) .value. Se um dos
botões de rádio foi selecionado, o seu valor é então atribuído a uma variável chamada strRadioSelection. Caso
contrário, a caixa de diálogo pop-up mostrado na Figura 29.5 é exibida e a função pára a execução.

FIGURA 29.5 Se um botão de opção não for selecionada, uma caixa de diálogo

Finalmente, uma string é criado que contém os valores especificados por cada um dos elementos do formulário. Essa

seqüência é então atribuído a uma variável chamada strConfigSettings.

Em seguida, o BakeTheCookie () função é chamada e passou a corda que era apenas


CONSTRUÇÃO DO REGISTRO E Página de configuração Capítulo 29 683

criado pelo ProcessSettings () função. Quando o controle é retornado do BakeTheCookie () função,


o valor atribuído a top.left_frame.document.bgcolor é
igualados à cor especificada para local-
Form.siteList.value. O resultado final é que a cor de fundo exibido no default.html Páginas left_frame quadro
é imediatamente alterado para refletir a preferência do visitante. Por último, uma caixa de diálogo
pop-up é exibida, informando o visitante que suas configurações foram salvas. Figura 29.6 mostra a
caixa de diálogo pop-up que é exibido quando as configurações do visitante são coletados com
sucesso.

FIGURA 29.6 Exibindo as configurações especificadas pelo visitante

Assar um biscoito
o BakeTheCookie () função formata a string de teste que faz com que o cookie e, em seguida, utiliza o documento
objeto de biscoito propriedade para salvar o cookie.

Função BakeTheCookie (strCookieString)

Dim dtmExpDate, strCookie

dtmExpDate = WeekdayName (PartData ( “w”, Date ())) & “,“_

& FormatDate (PartData ( “d”, Data ())) & “-” _ & MonthName (PartData

( “m”, Data (), 1) + 1) & “-” _ & PartData ( “aaaa”, Data ()) _ & “00:00:00

GMT”

strCookie = “string =” & strCookieString & “; expira =” & dtmExpDate document.cookie = strCookie

End Function
684 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

A formatação de um cookie Data de Validade


Uma função adicional é necessário para concluir incorporado VBScript da página HTML. É
nomeado FormatDate (). Seu trabalho é para preencher o início da
dtmInputDate com um zero se ele é apenas um caractere.

Função FormatDate (dtmInputDate)

Se Len (dtmInputDate) = 1, então

dtmInputDate = “0” e dtmInputDate End If

FormatDate = dtmInputDate End

Function

Cancelar uma alteração nas configurações de Configuração


William antecipa que de tempos em tempos, os visitantes vão começar a fazer uma mudança no registo e na
página de definições de configuração, e depois de pensar sobre isso, eles vão decidir não salvar suas
alterações. Para ajudar a tornar as coisas mais fáceis para esses visitantes, William acrescentou a CancelButton_onClick
() sub-rotina para VBScript incorporado da página.

Sub CancelButton_onClick ()

history.back () End

Sub

O nome deste função foi criada anexando onClick ao nome atribuído ao botão Cancelar. Ao
nomear a sub-rotina desta forma, William associa automaticamente com o CancelButton botão,
facilitando assim a sua execução automática quando o botão onClick evento ocorre. Uma vez
executado, o sub-rotina usa a história objeto de de volta() Método para recarregar a URL exibida
anteriormente de volta para o right_frame no quadro default.html página.

Exibindo Ajuda
A fim de ajudar a tornar o registro ea página de definições de configuração mais fácil trabalhar com, William
tem escolhido para proporcionar aos visitantes uma opção de ajuda. A idéia é proporcionar aos visitantes com
instruções sobre como preencher corretamente o formulário quando eles clique no botão Ajuda. A fim de
fornecer esse recurso, William planeja usar o VBScript MsgBox () função. Mas, primeiro, ele deve modificar o < INPUT>
tag associado ao botão, como mostrado abaixo.
CONSTRUÇÃO DO REGISTRO E Página de configuração Capítulo 29 685

<INPUT NAME =”HelpButton” TYPE =”button” VALUE =”Ajuda‘onClick =’DisplayHelpDialog ()”>

modificação de William faz com que a tag do onClick evento para acionar a execução do DisplayHelpDialog
() sub-rotina, o qual é mostrado abaixo.

Sub DisplayHelpDialog ()

MsgBox “Todas as informações recolhidas por este formulário é necessário.” & VbCrLf & _

vbCrLf & vbCrLf & vbTab & “* Por favor, diga-nos o seu nome:“& _ ‘- Introduza o seu nome e sobrenome.’

& vbCrLf & vbCrLf & _ vbTab & “* Padrão Ver: - Selecione a página que você quer carregado“& _ “por

padrão quando você visita este site.” & vbCrLf & vbCrLf & _ vbTab & “* Escolha um esquema de cor: -

Escolha o seu fundo e“& _ & vbCrLf & vbCrLf & _ vbTab & “‘preferências de cor de primeiro plano.’ * salve

- Clique neste botão para salvar sua configuração”& _‘configurações’& vbCrLf & vbCrLf & vbTab & _.

“* Cancelar - Clique neste botão para voltar à página anterior“& _ & vbCrLf & vbCrLf & _ vbTab & ‘sem

salvar as alterações de configuração.’ ‘* Ajuda -. Exibe esta mensagem de ajuda’, cTitleBarMsg

End Sub

o DisplayHelpDialog () sub-rotina faz uso do vbCrLf e vbTab


constantes para melhorar a apresentação do seu conteúdo. Quando executado, este sub-rotina exibe a caixa
de diálogo pop-up mostrado na Figura 29.7.

FIGURA 29.7 Usando o VBScript MsgBox () função para fornecer os visitantes com instruções sobre como preencher corretamente o
formulário
686 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

O Welcome.html página totalmente montado

O totalmente montado welcome.html página é mostrado abaixo. Quando carregados no


right_frame quadro do default.html página, o welcome.html página fornece visitantes para o site Relatório de

Encomenda / Inventory com a capacidade de definir as configurações pessoais para o site. Usando um
VBScript incorporado, a página irá determinar se o formulário foi corretamente preenchido e, se for o
caso, irá armazenar as definições de configuração do visitante em um cookie.

<HTML>

<HEAD>

<TITLE> Script 27.1 - A página de pedido / Configurações Configuração do Inventário </ TITLE>

<SCRIPT LANGUAGE =”VBScript”> <! - Comece escondendo

declarações do VBScript

Option Explicit

Dim strRadioSelected, intCounter, strConfigSettings, strRadioSelection

Const cTitleBarMsg = “Configurações da página de ajuda”

ProcessSettings () função

Se Len (document.siteForm.userName.value) <1 Então

MsgBox “Você deve fornecer seu nome para continuar.”, CTitleBarMsg Exit Function End If

strRadioSelected = “false”

Para intCounter = 0 Para siteForm.siteRadio.length - 1

Se siteForm.siteRadio (intCounter) .checked = “True” Então

strRadioSelection = siteForm.siteRadio (intCounter) .Value strRadioSelected = “True”

End If Next
CONSTRUÇÃO DO REGISTRO E Página de configuração Capítulo 29 687

Se strRadioSelected = “false” Então

MsgBox “Você deve especificar a sua página padrão preferido.”, CTitleBarMsg Exit Function End If

strConfigSettings = document.siteForm.userName.value & “” & _

strRadioSelection & “” & siteForm.siteList.value

BakeTheCookie (strConfigSettings)

top.left_frame.document.bgcolor = siteForm.siteList.value

MsgBox “As seguintes definições de configuração foram salvos:” & _

vbCrLf & vbCrLf & _

“Name =“& document.siteForm.userName.value & vbCrLf & _ “Default View =“&

strRadioSelection & vbCrLf & _ “Esquema de cores =“& siteForm.siteList.value,

cTitleBarMsg

End Function

Sub DisplayHelpDialog ()

MsgBox “Todas as informações recolhidas por este formulário é necessário.” & _

vbCrLf & vbCrLf & vbCrLf & _

vbTab & “* Por favor, diga-nos o seu nome: - Introduza o seu primeiro e“& _ & vbCrLf & vbCrLf

vbTab & _ ‘sobrenome.’

“* Padrão Ver: - Selecione a página que você quer carregar por“& _ & vbCrLf & vbCrLf & _ vbTab

& “* Escolha um esquema de cores: - Selecione o plano de fundo“‘default quando você visita este

site.’ & _ “ e preferências de cor de primeiro plano “& vbCrLf & vbCrLf vbTab & _“* Save -.. Clique

neste botão para salvar sua configuração “& _‘configurações’& vbCrLf & vbCrLf & vbTab & _

“* Cancelar - Clique neste botão para voltar ao anterior“& _ & vbCrLf & _ vbCrLf & vbTab & _

‘página sem salvar as alterações de configuração.’

“* Ajuda -. Exibe esta mensagem de ajuda”, cTitleBarMsg

End Sub
688 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

Sub CancelButton_onClick ()

history.back () End

Sub

Função BakeTheCookie (strCookieString)

Dim dtmExpDate, strCookie

dtmExpDate = WeekdayName (PartData ( “w”, Date ())) & “,“_

& FormatDate (PartData ( “d”, Data ())) & “-” _ & MonthName (PartData

( “m”, Data (), 1) + 1) & “-” _ & PartData ( “aaaa”, Data ()) _ & “00:00:00

GMT”

strCookie = “string =” & strCookieString & “; expira =” & dtmExpDate document.cookie = strCookie

End Function

Função FormatDate (dtmInputDate)

Se Len (dtmInputDate) = 1, então

dtmInputDate = “0” e rawDate End If

FormatDate = dtmInputDate End

Function

'Terminar escondendo declarações VBScript -> </ SCRIPT>

</ HEAD>

<BODY>

Configurações <H3> Configuração </ H3>

<BR>

<FORM NAME =”siteForm”>

<B> Por favor, diga-nos o seu nome: </ B> <INPUT NAME = TYPE”username” =”text”
CONSTRUÇÃO DO REGISTRO E Página de configuração Capítulo 29 689

SIZE =”25” MAXLENGTH =” 40” > <P> <BR> <B>

Padrão Ver: </ B> <P>

<INPUT NAME =”siteRadio” TYPE =”radio” VALUE =”Welcome”> Bem-vindo Page <P> <INPUT NAME

=”siteRadio” TYPE =”radio” VALUE =”Arquivo”> Relatório Arquivo de <P> <INPUT NAME =”siteRadio” TYPE

=”radio” VALUE =”Daily”> Daily Consolidado

Relatório Resumido <P> <BR>

<P> <B> Escolha um esquema de cores: </ B>

<SELECT NOME =”SiteList”>

<OPÇÃO valor selecionado =”Yellow”> amarelo e branco <OPÇÃO

VALUE =”LightBlue”> azul e branco <OPÇÃO VALUE =”Lightgreen”>

verde e branco <OPÇÃO VALUE =”lightgrey”> cinza e branco <OPÇÃO

VALUE =” rosa”> Pink and White </ SELECT> </ P> <BR>

<INPUT NAME =”SaveButton” TYPE =”button” VALUE =”Save“

onclick =”ProcessSettings ()”>

<INPUT NAME =”CancelButton” TYPE =”reset” VALUE =”Cancelar‘> <INPUT NAME

=’HelpButton” TYPE =”button” VALUE =”Ajuda“

onClick =”DisplayHelpDialog ()”> </ FORM> </

BODY> </ HTML>

resumo
Neste capítulo, você aprendeu a coletar dados de visitantes ao seu site através de um formulário HTML. Você também

aprendeu a trabalhar com vários elementos de formulário, bem como utilizar VBScript para validar conteúdo do formulário

e garantir que os visitantes fornecer todos os dados necessários. Depois que os dados válidos são coletados, você pode

guardá-lo para futuras biscoitos de referência usando. Você pode fazer isso através da construção de uma cadeia de

dados que inclui uma data de expiração e, em seguida, armazenar essa seqüência no computador do visitante.
Esta página foi intencionalmente esquerda em branco
Capítulo 30
Convertendo relatórios
em páginas HTML
Eu n Neste capítulo, Alexander vai começar a desenvolver o primeiro dos VBScripts WSH para o projeto
de relatórios Web Order / Inventário. O objetivo deste VBScript é criar uma página HTML com base no
conteúdo do relatório de síntese consolidada do dia atual. Ele irá realizar esta tarefa, abrindo a versão
baseada em texto do arquivo de relatório, lê-lo, e usar o seu conteúdo para criar um arquivo de saída que
inclui tags HTML incorporadas. O arquivo de saída será então salva como um arquivo HTML.

Preparando-se para criar o script de


conversão HTML
Criando a versão HTML do relatório de síntese consolidada não usará quaisquer novas funções ou
métodos VBScript ou WSH. Ele vai usar a mesma FileSystem objeto métodos de I / O que você já viu
em outros capítulos. A principal diferença é que o arquivo de saída criado por este capítulo irá incluir
tags HTML incorporadas necessários para criar uma página Web. Portanto, você vai usar o FileSystemObject

objeto de WriteLine () método extensivamente, como demonstrado abaixo.

Dim FsoObj

Definir FsoObj = CreateObject ( “Scripting.FileSystemObject”) Set strReportFile = FsoObj.OpenTextFile (

“D: \ Temp \ Test.html”, 2, “True”) strReportFile.WriteLine ( “<HTML>”) strReportFile.WriteLine ( “

<HEAD>”) strReportFile.WriteLine (“

<TITLE> Test página HTML </ TITLE>”)

strReportFile.WriteLine ( “</ HEAD>”)

strReportFile.WriteLine ( “<BODY>”)

strReportFile.WriteLine ( “</ BODY>”)

strReportFile.WriteLine ( “</ HTML>”)

strReportFile.Close ()

Quando executado, este exemplo cria um arquivo HTML chamado test.html que tem o seguinte
conteúdo:

<HTML>

<HEAD>
CONVERSÃO relatórios a HTML PÁGINAS Capítulo 30 693

<TITLE> Test página HTML </ TITLE> </ HEAD>

<BODY> </ BODY> </ HTML>

A fim de criar a versão HTML do relatório de síntese consolidada, o VBScript terá que fazer uso
substancial de funções de análise, a fim de identificar e extrair elementos de relatório individuais.
Nos capítulos anteriores, esta foi realizada utilizando funções VBScript. No entanto, como você vai
ver, os requisitos de análise mais complexas exigidas por este script também exigem o uso do RegExp
objecto e as suas propriedades.

NOTA

o RegExp objeto e as suas propriedades foram introduzidos e demonstrado no Capítulo


7, “VBScript Objects.”

O último elemento de script para ser usado em script deste capítulo é o VBScript
Ubound () objeto. Esta função recupera o elemento limite superior para a matriz especificada e será
utilizado em conjunto com o RegExp objeto para processar uma parte do relatório de síntese
consolidada do dia atual.

NOTA

o VBScript Ubound () função foi previamente introduzido no Capítulo 5, “matrizes”.

Criando o script de conversão HTML


Alexander planos para fornecer todas as mesmas características básicas funcionalidade que Molly fornecidas
em seus VBScripts em seu último projeto, incluindo suporte para o registro do Windows, um modo de
depuração e registo de eventos. As seções seguintes detalham os componentes do script de conversão HTML
e fornecer uma visão geral de seu projeto e propósito.
694 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

A seção de inicialização
Do script Inicialização Seção, mostrado abaixo, começa por exigindo interpretação variável rigorosa. Em
seguida, ele define todas as variáveis ​usadas globalmente pelo script. Ele também define variáveis ​que
serão usadas para representar o WshShell
e FileSystemObject objectos, bem como uma matriz chamada astrErrors que será usado para armazenar o
conteúdo de cada linha do relatório. Em seguida um conjunto de constantes é definida. Finalmente, uma
variável chamada intReturnCode é definido igual a zero. Esta variável representa o valor de código de
retorno que o script vai passar de volta para o script que executa-lo (o script de agendamento). Definir a
variável igual a zero no Seção de inicialização garante que a menos que o valor da variável é alterado
explicitamente durante a execução do script, um código de retorno zero será retornado.

Option Explicit

Dim intReturnCode, strOutputFile, strReportFile, strSourceLine Dim strSourceFile,

strConsolTxtRpt, i, strFileNameString Dim strEventLog, strDebug Dim WshShl, astrErrors

FsoObj Dim

Definir WshShl = WScript.CreateObject ( “WScript.Shell”) Set FsoObj =

CreateObject ( “Scripting.FileSystemObject”)

Const cForReading = 1 const

cForWriting = 2 const

cForAppending = 8

Const cTitleBarMsg = “Relatório de conversão Script HTML”

intReturnCode = 0

A Seção de Processamento Principal


Ao contrário dos outros scripts apresentados neste livro, o Seção de Processamento Principal deste VBScript
está muito envolvido. Ela é composta de uma combinação de chamadas de procedimento, loops e testes
condicionais que controlam o processamento da versão de texto do relatório de síntese ea criação da
nova versão HTML.
CONVERSÃO relatórios a HTML PÁGINAS Capítulo 30 695

o Seção de Processamento Principal começa chamando o GetRegistrySettings () sub-rotina, que


recupera as definições de configuração do script do registro do Windows, seguido pelo AssembleFileNames
() sub-rotina, que constrói duas cordas que representam os nomes de relatório do dia atual.

GetRegistrySettings () ()

AssembleFileNames

Em seguida, o arquivo de relatório de síntese consolidada atual está aberto para leitura e um arquivo HTML é criado,

como mostrado abaixo.

Definir strSourceFile = FsoObj.OpenTextFile (strConsolTxtRpt, cForReading) Set strReportFile =

FsoObj.OpenTextFile (strOutputFile, cForWriting, “True”)

O próximo conjunto de declarações escreve uma mensagem no log de eventos do aplicativo do Windows se o registo de

eventos foi ativado para o script.

Se strEventLog = “Habilitado” Então

WriteToEventLog ( “Script Relatório de conversão HTML agora em execução.”) End If

Da mesma forma, as próximas várias declarações executar apenas se o script está sendo executado manualmente no

modo de depuração.

Se strDebug = “Habilitado” Então

MsgBox “A partir de desenvolvimento de relatórios.”, CTitleBarMsg End If

As próximas três instruções configurar um A seguir loop que salta através das diferentes posições do
relatório sumário consolidada diária, tal como representado pela strSourceFile.

Para i = 0 a 8

strSourceFile.SkipLine Seguinte

As próximas várias declarações chamar sub-rotinas que escrever coleções de tags HTML para o arquivo.

WriteHeader ()

BeginTableDefinition ()

WriteTableHeader ( “Erros:”)

WriteErrorsColHeadings ()
696 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

Em seguida, uma Fazer ... Até laço é utilizado, como mostrado abaixo, a iteração através da versão de
texto do relatório até que a primeira linha em branco é encontrado (a fim da erros: seção do relatório é
atingido). Após a cada iteração do loop, uma linha do relatório é lido e atribuído a uma variável chamada strSourceLine.
O comprimento da corda atribuído a strSourceLine é então verificado para ver se é zero (em branco). Se
for, o ciclo termina; caso contrário, os conteúdos da cadeia são carregados em uma matriz usando o Dividido()
e a função WriteErrorsData () sub-rotina é chamada. Esta sub-rotina usa o conteúdo da matriz para
escrever uma linha de dados para a página de HTML.

Do Until strSourceFile.AtEndOfStream

strSourceLine = strSourceFile.ReadLine () Se Len

(strSourceLine) = 0 Then

Sair fazer

qualquer outra

astrErrors = Split (strSourceLine, ““, 5) WriteErrorsData () End

If loop

NOTA

Observe o uso do Dividido() função no conjunto anterior de declarações. Ele especifica um terceiro parâmetro
com um valor de 5. Este parâmetro limita o tamanho da matriz criada pelo Dividido() função de cinco elementos.
Se você comparar esta declaração para a saída exibida na página HTML criado por este script, você vai achar
que isso corresponda contra as cinco colunas de dados exibidos no relatório, com a quinta coluna que exibe
uma string representando todos os dados restantes de um linha do relatório após a quinta palavra (ou seja, a
descrição).

Em seguida, o EndTableDefinition () sub-rotina é chamada. Esta sub-rotina escreve uma tag


HTML que marca o fim do erros: mesa (</ Table>).

EndTableDefinition ()

O restante das declarações no Seção de Processamento Principal escrever as seções restantes do arquivo
HTML, repetindo a mesma série básica de passos que você viu até agora, fazendo os ajustes
necessários para especificar marcadores apropriados de fim de seção e para imprimir os títulos de
relatório adequados.
CONVERSÃO relatórios a HTML PÁGINAS Capítulo 30 697

BeginTableDefinition ()

WriteTableHeader ( “Resumo de vendas:”)

WriteTableSubHeader ( “Governo”)

WriteSalesAndReturnsColHeadings ()

Para i = 0 a 7

strSourceFile.SkipLine Seguinte

Do Until strSourceFile.AtEndOfStream

strSourceLine = strSourceFile.ReadLine () Se Len

(strSourceLine) <> 0 Then

If InStr (1, strSourceLine, “Outros clientes:”) Then

Saia Do

End If

astrErrors = Split (strSourceLine, ““, 3)

WriteSalesAndReturnsData () End If loop

WriteTableSubHeader ( “Outros clientes:”)

WriteSalesAndReturnsColHeadings ()

Para i = 0 a 2

strSourceFile.SkipLine Seguinte

Do Until strSourceFile.AtEndOfStream

strSourceLine = strSourceFile.ReadLine () Se Len

(strSourceLine) <> 0 Then

Se Instr (1, strSourceLine, “----------”) Then

Saia Do

End If

astrErrors = Split (strSourceLine, ““, 3)

WriteSalesAndReturnsData () End If loop


698 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

EndTableDefinition ()

BeginTableDefinition ()

WriteTableHeader ( “Retorna Resumo:”)

WriteTableSubHeader ( “Governo”)

WriteSalesAndReturnsColHeadings ()

Para i = 0 a 6

strSourceFile.SkipLine Seguinte

Do Until strSourceFile.AtEndOfStream

strSourceLine = strSourceFile.ReadLine () Se Len

(strSourceLine) <> 0 Then

If InStr (1, strSourceLine, “Outros clientes:”) Then

Saia Do

End If

astrErrors = Split (strSourceLine, ““, 3)

WriteSalesAndReturnsData () End If loop

WriteTableSubHeader ( “Outros clientes:”)

WriteSalesAndReturnsColHeadings ()

Para i = 0 a 2

strSourceFile.SkipLine Seguinte

Do Until strSourceFile.AtEndOfStream

strSourceLine = strSourceFile.ReadLine () Se Len

(strSourceLine) <> 0 Then

Se Instr (1, strSourceLine, “----------”) Then

Saia Do

End If

astrErrors = Split (strSourceLine, ““, 3)


CONVERSÃO relatórios a HTML PÁGINAS Capítulo 30 699

WriteSalesAndReturnsData () End If

loop

EndTableDefinition ()

BeginTableDefinition ()

WriteTableHeader ( “Resumo produção diária:”)

WriteProductionColHeadings ()

Para i = 0 a 4

strSourceFile.SkipLine Seguinte

A última seção do relatório diário resumo consolidado a ser processada pelo script é o Resumo
produção diária seção. Como antes, uma linha de dados de cada linha dentro desta seção é lido
em strSourceLine. No entanto, ao invés de usar o Dividido() função para analisar o conteúdo da
linha de relatório, o
ParseProductionData () sub-rotina é executada. A razão para esta mudança é que a informação
descritiva dentro desta última seção do relatório está localizado no meio de cada linha e não tem um
comprimento previsível. Portanto, ele não pode simplesmente ser dividida em uma matriz e ser
escrita para a página HTML de lá. lógica de análise mais complicada é necessária. Alexander
desenvolveu o
ParseProductionData () sub-rotina para analisar os dados localizados em cada linha desta seção do
relatório usando o RegExp objecto e as suas propriedades e métodos.

Do Until strSourceFile.AtEndOfStream

strSourceLine = strSourceFile.ReadLine ()

ParseProductionData (strSourceLine) WriteProductionData ()

loop

strSourceFile.Close ()

WriteFooter ()

Se strDebug = “Habilitado” Então


700 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

MsgBox “desenvolvimento Relatório concluído.”, CTitleBarMsg End If

Se strEventLog = “Habilitado” Então

WriteToEventLog ( “Script de conversão Relatório HTML terminou a execução.”) End If

A última declaração no Seção de Processamento Principal chama a TerminateScript () sub-rotina


e passa-se o valor armazenado em intReturnCode. Esta função utiliza o WScript objeto de Sair() método
para terminar a execução do script e passar o script chamado um código de retorno que
indica se este roteiro a um erro.

TerminateScript (intReturnCode)

Os GetRegistrySettings () subrotina
Como você viu em scripts anteriores, o GetRegistrySettings () sub-rotina, mostrado abaixo, é responsável por
recuperar as definições de configuração do script de valores armazenados no registro do Windows. No caso em
que ocorre um erro na recuperação de qualquer uma das definições de configuração do script, uma mensagem é
enviada para o log de eventos do aplicativo Windows e um valor de 4 ( representando um código de retorno) é
passado para o
TerminateScript () sub-rotina.

GetRegistrySettings sub ()

On Error Resume Next

strEventLog = _

WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ WebRpting \ EventLogging”) Se Err <> 0 Then

Se strEventLog = “Habilitado” Então

WriteToEventLog ( “Relatório Script de conversão HTML - Usando default“& _

“Para strEventLog. RC = 4” )

TerminateScript (4) End If End If

strDebug = WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ WebRpting \ Debug”)


CONVERSÃO relatórios a HTML PÁGINAS Capítulo 30 701

Se Err <> 0 Then

Se strEventLog = “Habilitado” Então

WriteToEventLog ( “Relatório Script de conversão HTML - Usando default“& _

“Para strDebug. RC = 4” )

TerminateScript (4) End If End If

strOutputFile = _

WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ WebRpting \ HTMLFolder”) Se Err <> 0 Then

Se strEventLog = “Habilitado” Então

WriteToEventLog ( “Relatório Script de conversão HTML - Usando default“& _

“Para strOutputFile. RC = 4” )

TerminateScript (4) End If End If

strConsolTxtRpt = _

WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ WebRpting \ ConSolRptLoc”) Se Err <> 0 Then

Se strEventLog = “Habilitado” Então

WriteToEventLog ( “Relatório Script de conversão HTML - Usando default“& _

“Para strConsolTxtRpt. RC = 4” )

TerminateScript (4) End If End If

Se strDebug = “Habilitado” Então

MsgBox “Configurações do Registro inicializado:“& vbCrLf & vbCrLf & _

“StrEventLog” & vbTab & “=” & vbTab & strEventLog & vbCrLf & _ “strDebug” & vbTab & vbTab & “=”

& vbTab & strDebug & vbCrLf & _ “strOutputFile” & vbTab & “=” & vbTab & strOutputFile & vbCrLf & _

“strConsolTxtRpt” & vbTab & “=” & vbTab & strConsolTxtRpt & _ vbCrLf, cTitleBarMsg End If

End Sub
702 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

Os AssembleFileNames () subrotina
o AssembleFileNames () sub-rotina, mostrado abaixo, é responsável por determinar o nome do
relatório de síntese consolidada do dia atual, bem como para nomear a nova versão HTML do
relatório.

AssembleFileNames sub ()

strFileNameString = Replace (Date () “/”, “-”)

strConsolTxtRpt = strConsolTxtRpt & “\” & strFileNameString & _

“_ConsolSumRpt.txt”

Se strDebug = “Habilitado” Então

MsgBox “strConsolTxtRpt =“& strConsolTxtRpt, cTitleBarMsg End If

strOutputFile = strOutputFile & “\” & strFileNameString & _

“_ConsolSumRpt.html”

Se strDebug = “Habilitado” Então

MsgBox “strOutputFile =“& strOutputFile, cTitleBarMsg End If

End Sub

O WriteHeader () subrotina
o WriteHeader () sub-rotina, mostrado abaixo, é responsável por escrever um conjunto de tags HTML
no início da página HTML. Estas tags HTML definir elementos básicos da página e especificar o tipo
de fonte e tamanho, bem como a maneira pela qual a fronteira de cada tabela no script deve ser
formatado.

Sub WriteHeader ()

strReportFile.WriteLine ( “<html>”)

strReportFile.WriteLine ( “<head>”)

strReportFile.WriteLine ( “ <Title> Script de conversão HTML </ title>”)

strReportFile.WriteLine ( “ <Style>”)

strReportFile.WriteLine ( “ TD {font-family: arial;”)


CONVERSÃO relatórios a HTML PÁGINAS Capítulo 30 703

strReportFile.WriteLine ( “ font-size: 11pt;”)

strReportFile.WriteLine ( “ border-top: Black Ridge fina;”)

strReportFile.WriteLine ( “ border-bottom: black cume fina;”)

strReportFile.WriteLine ( “ border-right: black cume fina;”)

strReportFile.WriteLine ( “ border-left: Cume fina preta; }”)

strReportFile.WriteLine ( “ </ Style”)

strReportFile.WriteLine ( “</ head>”)

strReportFile.WriteLine ( “<body>”) End Sub

O BeginTableDefinition () subrotina
o BeginTableDefinition () sub-rotina, mostrada abaixo, é composto de uma única instrução. Quando chamado,
ele escreve uma abertura < TABELA> tag para a página HTML.

Sub BeginTableDefinition ()

strReportFile.WriteLine ( “ <Table width = '100%' border = '0' “& _

“Cellspacing = '0' cellpadding = '5'>”) End Sub

O WriteTableHeader () subrotina
o WriteTableHeader () sub-rotina, mostrado abaixo, é responsável por tags HTML escrita que
especificam o formato de uma tabela na página HTML.

Sub WriteTableHeader (strTableHeader)

strReportFile.WriteLine ( “ <Tr>”)

strReportFile.WriteLine ( “ <Td colspan = '5' style = "background: roxo; “& _

“Color: amarelo;">”)

strReportFile.WriteLine (" <Center> <b>”& strTableHeader & _

“</ B> </ center> </ td>”)

strReportFile.WriteLine ( “ </ Tr>”)

End Sub

O WriteTableSubHeader () subrotina
o WriteTableSubHeader () sub-rotina, mostrado na página seguinte, escreve uma seqüência de texto que
representa um cabeçalho seção no relatório. O texto que está escrito é passado para a sub-rotina como um
argumento.
704 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

Sub WriteTableSubHeader (strTableHeader)

strReportFile.WriteLine ( “ <Tr>”)

strReportFile.WriteLine ( “ <Td colspan = '3'>”)

strReportFile.WriteLine ( “ <B>”& strTableHeader &‘</ b> </ td>’)

strReportFile.WriteLine ( “ </ Tr>”)

End Sub

Os WriteErrorsColHeadings () subrotina
o WriteErrorsColHeadings () sub-rotina, mostrado abaixo, escreve os cabeçalhos das colunas
para a erros: seção do relatório.

WriteErrorsColHeadings sub ()

strReportFile.WriteLine ( “ <Tr>”)

strReportFile.WriteLine ( “ <Td> <b> Data <b> </ td>”)

strReportFile.WriteLine ( “ <Td> <b> Tempo <b> </ td>”)

strReportFile.WriteLine ( “ <Td> <b> Svr <b> </ td>”)

strReportFile.WriteLine ( “ <Td> <b> Código <b> </ td>”)

strReportFile.WriteLine ( “ <Td> <b> Descrição <b> </ td>”)

strReportFile.WriteLine ( “ </ Tr>”)

End Sub

O WriteErrorsData () subrotina
o WriteErrorsData () sub-rotina, mostrado abaixo, é responsável por escrever uma linha de dados
para o erros: seção da página HTML. Ele realiza esta tarefa referenciando os elementos
armazenados no astrErrors arrays e gravá-los no arquivo HTML.

Sub WriteErrorsData ()

strReportFile.WriteLine ( “ <Tr>”)

strReportFile.WriteLine ( “ <Td>”& astrErrors (0) &‘</ td>’)

strReportFile.WriteLine ( “ <Td>”& astrErrors (1) &‘</ td>’)

strReportFile.WriteLine ( “ <Td>”& astrErrors (2) &‘</ td>’)

strReportFile.WriteLine ( “ <Td>”& astrErrors (3) &‘</ td>’)

strReportFile.WriteLine ( “ <Td>”& astrErrors (4) e‘</ td>’)

strReportFile.WriteLine ( “ </ Tr>”)

End Sub
CONVERSÃO relatórios a HTML PÁGINAS Capítulo 30 705

Os WriteSalesAndReturnsColHeadings () subrotina
o WriteSalesAndReturnsColHeadings () sub-rotina, mostrado abaixo, é chamado para escrever os títulos
das colunas, tanto para o resumo de vendas e devoluções seções do relatório.

WriteSalesAndReturnsColHeadings sub ()

strReportFile.WriteLine ( “ <Tr>”)

strReportFile.WriteLine ( “ <Td> <b> Part # </ b> </ td>”)

strReportFile.WriteLine ( “ <Td> <b> Qtde </ b> </ td>”)

strReportFile.WriteLine ( “ <Td> <b> Descrição </ b> </ td>”)

strReportFile.WriteLine ( “ </ Tr>”)

End Sub

Os WriteProductionColHeadings () subrotina
o WriteProductionColHeadings () sub-rotina, mostrado abaixo, é chamado para escrever os cabeçalhos
das colunas para a seção Produção do relatório.

WriteProductionColHeadings sub ()

strReportFile.WriteLine ( “ <Tr>”)

strReportFile.WriteLine ( “ <Td> <b> Part # </ b> </ td>”)

strReportFile.WriteLine ( “ <Td> <b> Qtde </ b> </ td>”)

strReportFile.WriteLine ( “ <Td> <b> Descrição </ b> </ td>”)

strReportFile.WriteLine ( “ <Td> <b> Em armazém </ b> </ td>”)

strReportFile.WriteLine ( “ </ Tr>”)

End Sub

O WriteSalesAndReturnsData () subrotina
o WriteSalesAndReturnsData () sub-rotina, mostrado abaixo, escreve uma linha de dados para ambas as
vendas e devoluções seções do relatório.

Sub WriteSalesAndReturnsData ()

strReportFile.WriteLine ( “ <Tr>”)

strReportFile.WriteLine ( “ <Td>”& astrErrors (0) &‘</ td>’)

strReportFile.WriteLine ( “ <Td>”& astrErrors (1) &‘</ td>’)

strReportFile.WriteLine ( “ <Td>”& astrErrors (2) &‘</ td>’)

strReportFile.WriteLine ( “ </ Tr>”)

End Sub
706 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

O WriteProductionData () subrotina
o WriteProductionData () sub-rotina, mostrado abaixo, escreve uma linha de dados na seção de
Produção do relatório.

Sub WriteProductionData ()

strReportFile.WriteLine ( “ <Tr>”)

strReportFile.WriteLine ( “ <Td>”& astrErrors (0) &‘</ td>’)

strReportFile.WriteLine ( “ <Td>”& astrErrors (1) &‘</ td>’)

strReportFile.WriteLine ( “ <Td>”& astrErrors (2) &‘</ td>’)

strReportFile.WriteLine ( “ <Td>”& astrErrors (3) &‘</ td>’)

strReportFile.WriteLine ( “ </ Tr>”)

End Sub

O EndTableDefinition () subrotina
o EndTableDefinition () sub-rotina, mostrada abaixo, é composto de uma única statement.When chamada, ele
grava o fechamento </ TABELA> etiquetas para a página HTML.

Sub EndTableDefinition ()

strReportFile.WriteLine ( “ </ Table> <p>”)

End Sub

O WriteFooter () subrotina
o WriteFooter () sub-rotina, mostrado abaixo, escreve o fechamento </ BODY> e
</ HTML> etiquetas para o final da página HTML.

Sub WriteFooter ()

strReportFile.WriteLine ( “</ body>”)

strReportFile.WriteLine ( “</ html>”) End Sub

O ParseProductionData () subrotina
o ParseProductionData () sub-rotina, mostrado na página seguinte, substitui o Dividido() função usada para
analisar o resto dos dados do relatório. Esta sub-rotina foi desenvolvido porque os dados armazenados
na seção de Produção do relatório não prestar-se bem às funções de análise embutidos VBScript. Em
vez disso, Alexander criou esta sub-rotina como um wrapper para um procedimento que utiliza as
propriedades associadas com o RegExp objeto.
CONVERSÃO relatórios a HTML PÁGINAS Capítulo 30 707

A sub-rotina começa definindo as variáveis ​locais para seu próprio uso. Em seguida ele instancia uma instância da RegExp
objeto. Em seguida, ele define o RegExp objeto de padronizar
propriedade, atribuindo-lhe um valor de “+”, que, traduzido aproximadamente, diz para olhar para todas as

instâncias de um ou mais espaços consecutivos. Em seguida, o valor do RexExp objeto de Global propriedade é

definida igual a Verdade, que faz com que a busca padrão para aplicar a todas as ocorrências correspondentes na

cadeia de procura. o Substituir() método é então usado para substituir quaisquer casos de um ou mais espaços no

interior da cadeia transmitida à sub-rotina com um único espaço. Uma vez que todos os espaços em excesso

foram removidos, o Dividido() função é usada para carregar o conteúdo da cadeia numa matriz denominada astrErrors.

UMA Para cada laço é então usado para fazer uma iteração embora a matriz. Em sua primeira iteração, ele
ignora todo o processamento porque o valor de astrErrors não é maior do que um (isto é igual a 0) e astrErrors
(0) representa a primeira coluna de dados na seção de Produção. Da mesma forma, a segunda iteração do

laço não resulta em qualquer processamento. A partir do terceiro para o segundo-a-última iteração, o loop
cria uma única seqüência e atribui-lo a uma variável chamada string2. Essa seqüência representa a
informação descritiva para cada linha nesta seção do relatório. O valor de

string2 é então atribuído a astrErrors (2), e o valor do último elemento do array ( astrErrors
(UBound (astrErrors))) é atribuído a astrErrors (3).

Quando esta sub-rotina termina, o astrErrors matriz é completamente carregado e pronto para ser escrito para a página

HTML como uma entrada de tabela.

Sub ParseProductionData (strQuote)

Dim regExpObj, strStrippedString, intCounter, strString2, intArrayCounter Set regExpObj = New RegExp

regExpObj.Pattern = “+” regExpObj.Global = True

strStrippedString = RegExpObj.Replace (strQuote, ““)

astrErrors = Split (strStrippedString, ““)

intCounter = 0

Para Cada intArrayCounter Em astrErrors


708 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

Se intCounter> 1 Em seguida,

Se intCounter <> UBound (astrErrors) Em seguida,

strString2 = strString2 & ““& intArrayCounter End If End If

intCounter = intCounter + 1 Próximo

astrErrors (2) = strString2

astrErrors (3) = (astrErrors UBound (astrErrors))

End Sub

O WriteToEventLog () subrotina
o WriteToEventLog () sub-rotina, mostrado abaixo, escreve uma mensagem informativa passado para ele como um
argumento para o log de eventos do aplicativo do Windows usando o WshShell objeto de RegistrarEvento () método.

Sub WriteToEventLog (strMessage)

WshShl.LogEvent 4, strMessage

End Sub

O TerminateScript () subrotina
o TerminateScript () sub-rotina, mostrado abaixo, é uma versão modificada do sub-rotina que
você já viu em scripts recentes. Esta sub-rotina usa a WScript
objeto de Sair() método para terminar a execução do script e para passar um valor numérico de volta para
o script que o chamou, indicando se ou não o script de conversão HTML executado com êxito.

Sub TerminateScript (intRC)

Se strDebug = “Habilitado” Então

MsgBox “A execução do script encerrado.”, CTitleBarMsg End If


CONVERSÃO relatórios a HTML PÁGINAS Capítulo 30 709

WScript.Quit (intRC)

End Sub

The Script totalmente montado


O script de conversão HTML totalmente montado é mostrado abaixo. Quando é executado, ele determina
automaticamente o nome do relatório de síntese consolidada do dia atual e, em seguida, usa esse arquivo como
entrada para a criação de uma versão baseada na Web do relatório.

'************************************************* ************************ 'Script Nome: 30.1.vbs script' Autor: Jerry

Ford 'Criado: 05/03/03

'Descrição: Este script converte a versão texto do diário' relatório de síntese consolidada para um

arquivo HTML

'************************************************* ************************

'Seção de inicialização

Option Explicit

Dim intReturnCode, strOutputFile, strReportFile, strSourceLine Dim strSourceFile,

strConsolTxtRpt, i, strFileNameString Dim strEventLog, strDebug Dim WshShl, astrErrors

FsoObj Dim

Definir WshShl = WScript.CreateObject ( “WScript.Shell”) Set FsoObj =

CreateObject ( “Scripting.FileSystemObject”)

Const cForReading = 1 const

cForWriting = 2 const

cForAppending = 8
710 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

Const cTitleBarMsg = “Relatório de conversão Script HTML”

intReturnCode = 0

'Secção de Processamento Principal

GetRegistrySettings ()

AssembleFileNames ()

Definir strSourceFile = FsoObj.OpenTextFile (strConsolTxtRpt, cForReading) Set strReportFile =

FsoObj.OpenTextFile (strOutputFile, cForWriting, “True”)

Se strEventLog = “Habilitado” Então

WriteToEventLog ( “Script Relatório de conversão HTML agora em execução.”) End If

Se strDebug = “Habilitado” Então

MsgBox “A partir de desenvolvimento de relatórios.”, CTitleBarMsg End If

Para i = 0 a 8

strSourceFile.SkipLine Seguinte

WriteHeader ()

BeginTableDefinition ()

WriteTableHeader ( “Erros:”)

WriteErrorsColHeadings ()

Do Until strSourceFile.AtEndOfStream

strSourceLine = strSourceFile.ReadLine () Se Len

(strSourceLine) = 0 Then

Sair Do
CONVERSÃO relatórios a HTML PÁGINAS Capítulo 30 711

Outro

astrErrors = Split (strSourceLine, ““, 5) WriteErrorsData () End

If loop

EndTableDefinition ()

BeginTableDefinition ()

WriteTableHeader ( “Resumo de vendas:”)

WriteTableSubHeader ( “Governo”)

WriteSalesAndReturnsColHeadings ()

Para i = 0 a 7

strSourceFile.SkipLine Seguinte

Do Until strSourceFile.AtEndOfStream

strSourceLine = strSourceFile.ReadLine () Se Len

(strSourceLine) <> 0 Then

If InStr (1, strSourceLine, “Outros clientes:”) Then

Saia Do

End If

astrErrors = Split (strSourceLine, ““, 3)

WriteSalesAndReturnsData () End If loop

WriteTableSubHeader ( “Outros clientes:”)

WriteSalesAndReturnsColHeadings ()

Para i = 0 a 2

strSourceFile.SkipLine Seguinte

Do Until strSourceFile.AtEndOfStream

strSourceLine = strSourceFile.ReadLine ()
712 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

Se Len (strSourceLine) <> 0 Then

Se Instr (1, strSourceLine, “----------”) Then

Saia Do

End If

astrErrors = Split (strSourceLine, ““, 3)

WriteSalesAndReturnsData () End If loop

EndTableDefinition ()

BeginTableDefinition ()

WriteTableHeader ( “Retorna Resumo:”)

WriteTableSubHeader ( “Governo”)

WriteSalesAndReturnsColHeadings ()

Para i = 0 a 6

strSourceFile.SkipLine Seguinte

Do Until strSourceFile.AtEndOfStream

strSourceLine = strSourceFile.ReadLine () Se Len

(strSourceLine) <> 0 Then

If InStr (1, strSourceLine, “Outros clientes:”) Then

Saia Do

End If

astrErrors = Split (strSourceLine, ““, 3)

WriteSalesAndReturnsData () End If loop

WriteTableSubHeader ( “Outros clientes:”)

WriteSalesAndReturnsColHeadings ()

Para i = 0 a 2

strSourceFile.SkipLine Seguinte
CONVERSÃO relatórios a HTML PÁGINAS Capítulo 30 713

Do Until strSourceFile.AtEndOfStream

strSourceLine = strSourceFile.ReadLine () Se Len

(strSourceLine) <> 0 Then

Se Instr (1, strSourceLine, “----------”) Then

Saia Do

End If

astrErrors = Split (strSourceLine, ““, 3)

WriteSalesAndReturnsData () End If loop

EndTableDefinition ()

BeginTableDefinition ()

WriteTableHeader ( “Resumo produção diária:”)

WriteProductionColHeadings ()

Para i = 0 a 4

strSourceFile.SkipLine Seguinte

Do Until strSourceFile.AtEndOfStream

strSourceLine = strSourceFile.ReadLine ()

ParseProductionData (strSourceLine) WriteProductionData ()

loop

strSourceFile.Close ()

WriteFooter ()

Se strDebug = “Habilitado” Então

MsgBox “desenvolvimento Relatório concluído.”, CTitleBarMsg End If

Se strEventLog = “Habilitado” Então


714 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

WriteToEventLog ( “Script de conversão Relatório HTML terminou a execução.”) End If

TerminateScript (intReturnCode)

'Secção Procedimento

GetRegistrySettings sub ()

On Error Resume Next

strEventLog = _

WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ WebRpting \ EventLogging”) Se Err <> 0 Then

Se strEventLog = “Habilitado” Então

WriteToEventLog ( “Relatório Script de conversão HTML - Usando default“& _

“Para strEventLog. RC = 4” )

TerminateScript (12) End If End If

strDebug = WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ WebRpting \ Debug”) Se Err <> 0 Then

Se strEventLog = “Habilitado” Então

WriteToEventLog ( “Relatório Script de conversão HTML - Usando default“& _

“Para strDebug. RC = 4” )

TerminateScript (4) End If End If

strOutputFile = _

WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ WebRpting \ HTMLFolder”) Se Err <> 0 Then

Se strEventLog = “Habilitado” Então

WriteToEventLog ( “Relatório Script de conversão HTML - Usando default“& _

“Para strOutputFile. RC = 4” )

TerminateScript (4)
CONVERSÃO relatórios a HTML PÁGINAS Capítulo 30 715

End If

End If

strConsolTxtRpt = _

WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ WebRpting \ ConSolRptLoc”) Se Err <> 0 Then

Se strEventLog = “Habilitado” Então

WriteToEventLog ( “Relatório Script de conversão HTML - Usando default“& _

“Para strConsolTxtRpt. RC = 4” )

TerminateScript (4) End If End If

Se strDebug = “Habilitado” Então

MsgBox “Configurações do Registro inicializado:“& vbCrLf & vbCrLf & _

“StrEventLog” & vbTab & “=” & vbTab & strEventLog & vbCrLf & _ “strDebug” & vbTab & vbTab & “=”

& vbTab & strDebug & vbCrLf & _ “strOutputFile” & vbTab & “=” & vbTab & strOutputFile & vbCrLf & _

“strConsolTxtRpt” & vbTab & “=” & vbTab & strConsolTxtRpt & _ vbCrLf, cTitleBarMsg End If

End Sub

AssembleFileNames sub ()

strFileNameString = Replace (Date () “/”, “-”)

strConsolTxtRpt = strConsolTxtRpt & “\” & strFileNameString & _

“_ConsolSumRpt.txt”

Se strDebug = “Habilitado” Então

MsgBox “strConsolTxtRpt =“& strConsolTxtRpt, cTitleBarMsg End If

strOutputFile = strOutputFile & “\” & strFileNameString & _

“_ConsolSumRpt.html”
716 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

Se strDebug = “Habilitado” Então

MsgBox “strOutputFile =“& strOutputFile, cTitleBarMsg End If

End Sub

Sub WriteHeader ()

strReportFile.WriteLine ( “<html>”)

strReportFile.WriteLine ( “<head>”)

strReportFile.WriteLine ( “ <Title> Script de conversão HTML </ title>”)

strReportFile.WriteLine ( “ <Style>”)

strReportFile.WriteLine ( “ TD {font-family: arial;”)

strReportFile.WriteLine ( “ font-size: 11pt;”)

strReportFile.WriteLine ( “ border-top: Black Ridge fina;”)

strReportFile.WriteLine ( “ border-bottom: black cume fina;”)

strReportFile.WriteLine ( “ border-right: black cume fina;”)

strReportFile.WriteLine ( “ border-left: Cume fina preta; }”)

strReportFile.WriteLine ( “ </ Style”)

strReportFile.WriteLine ( “</ head>”)

strReportFile.WriteLine ( “<body>”) End Sub

Sub BeginTableDefinition ()

strReportFile.WriteLine ( “ <Table width = '100%' border = '0' “& _

“Cellspacing = '0' cellpadding = '5'>”) End Sub

Sub WriteTableHeader (strTableHeader)

strReportFile.WriteLine ( “ <Tr>”)

strReportFile.WriteLine ( “ <Td colspan = '5' “& _

“Style =" background: roxo; Cor: Amarelo; ">”)

strReportFile.WriteLine ( “ <Center> <b>”& strTableHeader & _

“</ B> </ center> </ td>”)

strReportFile.WriteLine ( “ </ Tr>”)

End Sub

Sub WriteTableSubHeader (strTableHeader)

strReportFile.WriteLine ( “ <Tr>”)
CONVERSÃO relatórios a HTML PÁGINAS Capítulo 30 717

strReportFile.WriteLine ( “ <Td colspan = '3'>”)

strReportFile.WriteLine ( “ <B>”& strTableHeader &‘</ b> </ td>’)

strReportFile.WriteLine ( “ </ Tr>”)

End Sub

WriteErrorsColHeadings sub ()

strReportFile.WriteLine ( “ <Tr>”)

strReportFile.WriteLine ( “ <Td> <b> Data <b> </ td>”)

strReportFile.WriteLine ( “ <Td> <b> Tempo <b> </ td>”)

strReportFile.WriteLine ( “ <Td> <b> Svr <b> </ td>”)

strReportFile.WriteLine ( “ <Td> <b> Código <b> </ td>”)

strReportFile.WriteLine ( “ <Td> <b> Descrição <b> </ td>”)

strReportFile.WriteLine ( “ </ Tr>”)

End Sub

Sub WriteErrorsData ()

strReportFile.WriteLine ( “ <Tr>”)

strReportFile.WriteLine ( “ <Td>”& astrErrors (0) &‘</ td>’)

strReportFile.WriteLine ( “ <Td>”& astrErrors (1) &‘</ td>’)

strReportFile.WriteLine ( “ <Td>”& astrErrors (2) &‘</ td>’)

strReportFile.WriteLine ( “ <Td>”& astrErrors (3) &‘</ td>’)

strReportFile.WriteLine ( “ <Td>”& astrErrors (4) e‘</ td>’)

strReportFile.WriteLine ( “ </ Tr>”)

End Sub

WriteSalesAndReturnsColHeadings sub ()

strReportFile.WriteLine ( “ <Tr>”)

strReportFile.WriteLine ( “ <Td> <b> Part # </ b> </ td>”)

strReportFile.WriteLine ( “ <Td> <b> Qtde </ b> </ td>”)

strReportFile.WriteLine ( “ <Td> <b> Descrição </ b> </ td>”)

strReportFile.WriteLine ( “ </ Tr>”)

End Sub

WriteProductionColHeadings sub ()

strReportFile.WriteLine ( “ <Tr>”)

strReportFile.WriteLine ( “ <Td> <b> Part # </ b> </ td>”)

strReportFile.WriteLine ( “ <Td> <b> Qtde </ b> </ td>”)

strReportFile.WriteLine ( “ <Td> <b> Descrição </ b> </ td>”)


718 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

strReportFile.WriteLine ( “ <Td> <b> Em armazém </ b> </ td>”)

strReportFile.WriteLine ( “ </ Tr>”)

End Sub

Sub WriteSalesAndReturnsData ()

strReportFile.WriteLine ( “ <Tr>”)

strReportFile.WriteLine ( “ <Td>”& astrErrors (0) &‘</ td>’)

strReportFile.WriteLine ( “ <Td>”& astrErrors (1) &‘</ td>’)

strReportFile.WriteLine ( “ <Td>”& astrErrors (2) &‘</ td>’)

strReportFile.WriteLine ( “ </ Tr>”)

End Sub

Sub WriteProductionData ()

strReportFile.WriteLine ( “ <Tr>”)

strReportFile.WriteLine ( “ <Td>”& astrErrors (0) &‘</ td>’)

strReportFile.WriteLine ( “ <Td>”& astrErrors (1) &‘</ td>’)

strReportFile.WriteLine ( “ <Td>”& astrErrors (2) &‘</ td>’)

strReportFile.WriteLine ( “ <Td>”& astrErrors (3) &‘</ td>’)

strReportFile.WriteLine ( “ </ Tr>”)

End Sub

Sub EndTableDefinition ()

strReportFile.WriteLine ( “ </ Table> <p>”)

End Sub

Sub WriteFooter ()

strReportFile.WriteLine ( “</ body>”)

strReportFile.WriteLine ( “</ html>”) End Sub

Sub ParseProductionData (strQuote)

Dim regExpObj, strStrippedString, intCounter, strString2, intArrayCounter Set regExpObj = New RegExp

regExpObj.Pattern = “+” regExpObj.Global = True

strStrippedString = RegExpObj.Replace (strQuote, ““)


CONVERSÃO relatórios a HTML PÁGINAS Capítulo 30 719

astrErrors = Split (strStrippedString, ““)

intCounter = 0

Para Cada intArrayCounter Em astrErrors

Se intCounter> 1 Em seguida,

Se intCounter <> UBound (astrErrors) Em seguida,

strString2 = strString2 & ““& intArrayCounter End If End If

intCounter = intCounter + 1 Próximo

astrErrors (2) = strString2

astrErrors (3) = (astrErrors UBound (astrErrors))

End Sub

Sub WriteToEventLog (strMessage)

WshShl.LogEvent 4, strMessage

End Sub

Sub TerminateScript (intRC)

Se strDebug = “Habilitado” Então

MsgBox “A execução do script encerrado.”, CTitleBarMsg End If

WScript.Quit (intRC)

End Sub
720 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

A página HTML gerada automaticamente

Quando executado, o script de conversão HTML lê e processa relatório de síntese consolidada do dia
atual e cria um arquivo HTML correspondente. O seguinte arquivo HTML mostra a saída de um tal
arquivo criado pela execução de um dia típico de deste script.

<Html>

<Head>

<Title> Script de conversão HTML </ title> <style>

TD {font-family: arial; font-size:

11pt;

border-top: Cume fina preta; border-bottom:

Cume fina preta; border-right: Cume fina preta;

border-left: Cume fina preta; } </ Style </ head>

<body>

<Largura tabela = '100%' border = '0' cellSpacing = '0' cellpadding = '5'>

<Tr>

<Td colspan = '5' style = "background: roxo; Cor: Amarelo; "> <center> <b> Erros: </

b> </ center> </ td> </ tr> <tr>

<Td> <b> Data <b> </ td> <td> <b> Tempo

<b> </ td> <td> <b> Svr <b> </ td> <td> <b>

Código < b> </ td> <td> <b> Descrição <b>

</ td> </ tr> <tr>

<Td> 03/15/03 </ td> <td>

00:15:44 </ td> <td> Sr1 </

td> <td> 001 </ td>


CONVERSÃO relatórios a HTML PÁGINAS Capítulo 30 721

<Td> Não é possível acessar leitor de cartão no dispositivo wkstn442 </ td> </ tr> <tr>

<Td> 03/15/03 </ td> <td>

14:00:14 </ td> <td> Sr1 </

td> <td> 001 </ td>

<Td> No inventário para parte # 58694 - incapaz de preencher ordem 39312 </ td> </ tr> <tr>

<Td> 03/15/03 </ td> <td>

16:16:46 </ td> <td> Sr1 </

td> <td> 003 </ td>

<Td> Não é possível imprimir rpt resumo sobre mestre impressor (sem papel) </ td> </ tr> <tr>

<Td> 03/15/03 </ td> <td>

00:15:44 </ td> <td> Sr2 </

td> <td> 001 </ td>

<Td> Não é possível acessar leitor de cartão no dispositivo wkstn442 </ td> </ tr> <tr>

<Td> 03/15/03 </ td> <td>

14:00:14 </ td> <td> Sr2 </

td> <td> 001 </ td>

<Td> No inventário para parte # 58694 - incapaz de preencher ordem 39312 </ td> </ tr> <tr>

<Td> 03/15/03 </ td> <td>

16:16:46 </ td> <td> Sr2 </

td> <td> 003 </ td>

<Td> Não é possível imprimir rpt resumo sobre mestre impressor (sem papel) </ td> </ tr> </ table> <p>
722 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

<Largura tabela = '100%' border = '0' cellSpacing = '0' cellpadding = '5'>

<Tr>

<Td colspan = '5' style = "background: roxo; Cor: Amarelo; "> <center> <b> Resumo

de Vendas: </ b> </ center> </ td> </ tr> <tr>

<Td colspan = '3'> <b> O governo:

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

<Td> <b> Part # </ b> </ td> <td> <b> Qtde

</ b> </ td> <td> <b> Descrição </ b> </ td>

</ tr> <tr>

<Td> 58694 </ td> <td>

19 </ td>

<Td> leitor de temperatura sem fio </ td> </ tr>

<tr>

<Td> 45643 </ td>

<td> 3 </ td>

<Td> bomba magnética 200hp </ td> </ tr>

<tr>

<Td> 17443 </ td> <td>

15 </ td>

caixa <td> 20 lb de clipes bomba </ td> </ tr> <tr>

<Td> 10344 </ td> <td>

35 </ td>

<Td> 48 onças garrafa solvente </ td> </ tr> <tr>

<Td> 19365 </ td>

<td> 2 </ td>

<Td> furadeira elétrica 3 velocidade </ td>


CONVERSÃO relatórios a HTML PÁGINAS Capítulo 30 723

</ Tr>

<tr>

<td colspan = '3'>

<B> Outros Clientes: </ b> </ td> </ tr>

<tr>

<Td> <b> Part # </ b> </ td> <td> <b> Qtde

</ b> </ td> <td> <b> Descrição </ b> </ td>

</ tr> <tr>

<Td> 58694 </ td> <td>

19 </ td>

<Td> leitor de temperatura sem fio </ td> </ tr>

<tr>

<Td> 45643 </ td>

<td> 3 </ td>

<Td> bomba magnética 200hp </ td> </ tr>

<tr>

<Td> 17443 </ td> <td>

15 </ td>

caixa <td> 20 lb de clipes bomba </ td> </ tr> <tr>

<Td> 10344 </ td> <td>

35 </ td>

<Td> 48 onças garrafa solvente </ td> </ tr> <tr>

<Td> 19365 </ td>

<td> 2 </ td>

<Td> furadeira elétrica 3 velocidade </ td> </ tr> </

table> <p>

<Largura tabela = '100%' border = '0' cellSpacing = '0' cellpadding = '5'>

<Tr>
724 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

<Td colspan = '5' style = "background: roxo; Cor: Amarelo; "> <center> <b> Retorna

Sumário: </ b> </ center> </ td> </ tr> <tr>

<Td colspan = '3'> <b> O governo:

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

<Td> <b> Part # </ b> </ td> <td> <b> Qtde

</ b> </ td> <td> <b> Descrição </ b> </ td>

</ tr> <tr>

<Td> 58694 </ td>

<td> 2 </ td>

<Td> leitor de temperatura sem fio </ td> </ tr>

<tr>

<Td> 17443 </ td>

<td> 7 </ td>

caixa <td> 20 lb de clipes bomba </ td> </ tr> <tr>

<Td> 10344 </ td>

<td> 4 </ td>

<Td> 48 onças garrafa solvente </ td> </ tr> <tr>

<Td> 45643 </ td>

<td> 1 </ td>

<Td> bomba magnética 200hp </ td> </ tr>

<tr>

<Td> 19365 </ td>

<td> 1 </ td>

<Td> furadeira elétrica 3 velocidade </ td> </ tr>

<tr>
CONVERSÃO relatórios a HTML PÁGINAS Capítulo 30 725

<td colspan = '3'>

<B> Outros Clientes: </ b> </ td> </ tr>

<tr>

<Td> <b> Part # </ b> </ td> <td> <b> Qtde

</ b> </ td> <td> <b> Descrição </ b> </ td>

</ tr> <tr>

<Td> 58694 </ td>

<td> 2 </ td>

<Td> leitor de temperatura sem fio </ td> </ tr>

<tr>

<Td> 17443 </ td>

<td> 7 </ td>

caixa <td> 20 lb de clipes bomba </ td> </ tr> <tr>

<Td> 10344 </ td>

<td> 4 </ td>

<Td> 48 onças garrafa solvente </ td> </ tr> <tr>

<Td> 45643 </ td>

<td> 1 </ td>

<Td> bomba magnética 200hp </ td> </ tr>

<tr>

<Td> 19365 </ td>

<td> 1 </ td>

<Td> furadeira elétrica 3 velocidade </ td> </ tr> </

table> <p>

<Largura tabela = '100%' border = '0' cellSpacing = '0' cellpadding = '5'>

<Tr>

<Td colspan = '5' style = "background: roxo; Cor: Amarelo; "> <center> <b> Resumo

Diário Produção: </ b> </ center> </ td>


726 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

</ Tr>

<tr>

<Td> <b> Part # </ b> </ td> <td> <b> Qtde

</ b> </ td> <td> <b> Descrição </ b> </ td>

<td> < b> Em armazém </ b> </ td> </ tr> <tr>

<Td> 58694 </ td> <td>

20 </ td>

<Td> leitor de temperatura sem fio </ td> <td> 50

</ td> </ tr> <tr>

<Td> 45643 </ td> <td>

4 </ td>

<Td> bomba magnética 200hp </ td> <td> 20

</ td> </ tr> <tr>

<Td> 19365 </ td> <td>

10 </ td>

<Td> furadeira elétrica 3 velocidade </ td> <td> 20

</ td> </ tr> <tr>

<Td> 17443 </ td> <td>

40 </ td>

caixa <td> 20 lb de clipes bomba </ td> <td> 200

</ td> </ tr> <tr>

<Td> 10344 </ td> <td>

200 </ td>

<Td> 48 onças garrafa solvente </ td> <td> 500 </

td> </ tr> <tr>


CONVERSÃO relatórios a HTML PÁGINAS Capítulo 30 727

<Td> 99887 </ td> <td>

1 </ td>

<Td> 48 onças composto comum </ td> <td> 12 </

td> </ tr> <tr>

<Td> 33443 </ td> <td>

3 </ td>

<Td> hydro broca de 5 velocidades </ td> <td> 5

</ td> </ tr> <tr>

<Td> 12211 </ td> <td>

3 </ td>

<Td> bomba de água de 3 velocidades </ td> <td>

5 </ td> </ tr> </ body> </ html>

A Figura 30.1 mostra como o relatório de síntese consolidada diária vai olhar quando visto como
uma página HTML exibida no Relatório site Order / Inventário.
728 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

FIGURA 30.1 Visualizando a versão HTML do relatório de síntese consolidada

resumo
Neste capítulo, você observado como Alexander criou um script de conversão relatório text-to-HTML.
Ao criar esse script, você aprendeu como inserir tags HTML dentro de arquivos de saída VBScript
gerados, a fim de automatizar a apresentação dos dados do pedido / inventário no site Order /
Inventário. Este capítulo também apresenta-lhe a oportunidade de trabalhar com o RegExp objecto e as
suas propriedades e métodos.
Capítulo 31
Construir a página de
relatório Arquivo
Eu n Neste capítulo, Alexander vai criar um VBScript executados-WSH que cria uma página HTML
composta de links para todos os relatórios de síntese consolidadas localizadas em uma pasta de arquivo
relatório no servidor Web Intuit. Os links de relatório serão organizados e exibidos por mês. Esta página
também exibirá um segundo conjunto de links que fornecem os visitantes com a capacidade de ver e baixar
cópias das versões do Microsoft Word nos relatórios de síntese consolidadas.

Trabalhando com o objeto de pasta e da Colecção


Arquivos
A fim de desenvolver o VBScript que irá gerar a página Relatório de Arquivo, Alexander precisa
aprender a trabalhar tanto com o Pasta e o objeto Coleção arquivos. Para começar, ele terá de
estabelecer uma conexão de rede para a pasta compartilhada no servidor Web onde as versões em
HTML dos relatórios resumidos consolidadas são armazenados. Uma vez feito isso, ele pode usar o FileSystem
objeto objeto de GetFolder () método para recuperar uma referência para a pasta compartilhada. A
sintaxe para o GetFolder () método é mostrado abaixo.

ObjectReference. GetFolder ( Nome da pasta)

ObjectReference é a variável que representa um exemplo do Objeto FileSystem. Nome da pasta especifica
o nome da pasta alvo.

NOTA

Se a pasta especificada não existe, o GetFolder () método retornará um erro. Considere o uso do FolderExists
() método para ver primeiro se existe a pasta antes de tentar usar o GetFolder () método.

A referência definido pela GetFolder () método estabelece um Pasta objeto. Uma vez estabelecido, o
script pode acessar todas as propriedades pertencentes à
Pasta objeto. Por exemplo, as seguintes declarações do VBScript demonstrar como
Construir a página RELATÓRIO DE ARQUIVO Capítulo 31 731

para usar o GetFolder () método para estabelecer uma referência para o C: \ Temp pasta no computador
local.

Definir FsoObj = CreateObject ( “Scripting.FileSystemObject”) Set strTargetFile =

FsoObj.GetFolder ( “c: \ Temp”) MsgBox “Pasta“e strTargetFile & “foi acessado pela última vez

em“& _

strTargetFile.DateLastAccessed

Uma vez que a referência é estabelecido (por strTargetFile), a Pasta objeto de


DateLastAccessed propriedade é exibida. Figura 31.1 mostra a saída que aparece com este
exemplo.

FIGURA 31.1 usando o Pasta propriedades do objeto para acessar informações sobre uma pasta

Uma vez o Pasta objeto tenha sido estabelecida, você pode usar o seu arquivos propriedade para recuperar um Coleção
arquivos. Essa coleção será composta de todos os arquivos que residem dentro da pasta especificada. Por

exemplo, as seguintes declarações do VBScript demonstrar como a lista de todos os arquivos localizados dentro
da C: \ Temp pasta encontrado no computador local.

Defina FsoObj = CreateObject ( “Scripting.FileSystemObject”) Definir

strTargetFolder = FsoObj.GetFolder ( “c: \ Temp”) Definir strFileList =

strTargetFolder.Files

Para cada x em strFileList

strDisplayList = strDisplayList & x & vbCrLf Seguinte

MsgBox strDisplayList

o Coleção arquivos ( representado por strFileList) é estabelecida, atribuindo o valor armazenado no Pasta
objeto de arquivos alojamento (representado por
strTargetFolder.Files) a uma variável. Uma vez estabelecida, a For Each ... Next loop é configurado para
percorrer a coleção de arquivos e construir uma seqüência de exibição. Figura 31.2 demonstra a
saída produzido por este exemplo.
732 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

FIGURA 31.2 Por looping através do Arquivos de Coleta, você pode programaticamente processar todos os arquivos armazenados dentro de uma

pasta especificada

Alexander planeja usar o GetFolder () método para criar uma referência para a pasta no servidor Web onde
as versões em HTML dos relatórios resumidos consolidados residem. Ele, então, usar o Pasta objeto de arquivos
propriedade para estabelecer uma Coleção arquivos para a pasta. Uma vez que a coleção é criada, ele pode
criar um loop e usá-lo para processar cada um dos arquivos na pasta (adicionando um link para a página do
Relatório de Arquivo para cada arquivo na coleção).

Montando a página de relatório Arquivo


Alexander está agora pronto para começar a trabalhar sobre os scripts que automatizam a criação da página Relatório

de Arquivo. Tal como acontece com o seu script anterior, ele pretende seguir o modelo organizativo desenvolvido por

Molly. Isso irá incluir o fornecimento de suporte para um modo de depuração e para gravar mensagens no log de

eventos do aplicativo Windows. Alexander também irá adicionar a lógica que fornece um código de script retorno.

A seção de inicialização
Do script Inicialização Seção, mostrado abaixo, através da aplicação começa a interpretação restritiva
da nomenclatura variável. Em seguida, ele define todas as variáveis ​usadas globalmente em todo o
script eo Seção de Processamento principal, incluindo variáveis ​que representam configuração
configurações-que irá ser extraída a partir do registo e a variáveis ​que representam FileSystemObject,
WshNetwork,
e WshShell objetos.

Option Explicit

Dim strSharedFolder, strSharedFiles, strWordList, strArchiveFile Dim strWordFileName,

intMonth, strMonth, intMonthStore


Construir a página RELATÓRIO DE ARQUIVO Capítulo 31 733

Dim strEventLog, strDebug, strHTMLFolder, strSharedRptFolder, strWebSvrName

Dim intReturnCode, intYearLoc, dtmYear

Const cForReading = 1 const

cForWriting = 2 const

cForAppending = 8

Const cTitleBarMsg = “Arquivo Fazer a ligação Manutenção Script”

Dim FsoObj, WshNtk, WshShl

Defina FsoObj = CreateObject ( “Scripting.FileSystemObject”) Definir WshNtk =

WScript.CreateObject ( “WScript.Network”) Definir WshShl = WScript.CreateObject

( “WScript.Shell”)

intReturnCode = 0 = 0

intMonthStore

Também é definido um conjunto de constantes que especificam arquivo de opções de I / O e a mensagem de


barra de título utilizado em todas as caixas de diálogo pop-up criados quando o script é executado no modo de
depuração. Finalmente, os valores iniciais são atribuídas a duas variáveis. Um zero é atribuído a intReturnCode, representando
código de retorno padrão do script. Um zero também é atribuído a intMonthStore. Esta variável é utilizado na Seção
de Processamento Principal para determinar quando um novo mês do ano subposição precisa ser escrito na página

HTML.

A Seção de Processamento Principal


Do script Seção de Processamento principal, mostrado na página seguinte, começa chamando o GetRegistrySettings
() sub-rotina. Esta sub-rotina recupera as definições de configuração do script e fornece-lo com
informações como onde encontrar o arquivo de relatório consolidado e onde deseja salvar o arquivo
HTML que ele cria. caixas de diálogo pop-up irá exibir resultados intermediários utilizando o MsgBox ()

funcionar e irá identificar quando as principais atividades estão ocorrendo se o script é executado no modo de

depuração. Da mesma forma, se o registro de eventos está ativada, mensagens informativas serão registradas no log

de eventos do aplicativo Windows pela WriteToEventLog sub-rotina.


734 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

GetRegistrySettings ()

Se strEventLog = “Habilitado” Então

WriteToEventLog ( “Arquivo Fazer a ligação Manutenção Script agora em execução.”) End If

Se strDebug = “Habilitado” Então

MsgBox “Começando desenvolvimento da lista de arquivo.”, CTitleBarMsg End If

Definir strArchiveFile = FsoObj.OpenTextFile (strHTMLFolder & “\ Archive.html”, _

cForWriting, “True”)

MapNetworkDrive “V”, “\\” & strWebSvrName & “\” & strSharedRptFolder

Definir strSharedFolder = FsoObj.GetFolder ( “V:”)

Definir strSharedFiles = strSharedFolder.Files

WriteHeader ()

WriteH3Heading ()

Para Cada strWordList Em strSharedFiles

Se Instr (1, strWordList.Name, “.doc”) = 0 Then

int1stDash = EmCad '(1, strWordList.Name, “-”) intLengthOfMonth

= int1stDash - 1

intMonth = Esquerdo (strWordList.Name, intLengthOfMonth)

Se intMonth <> intMonthStore Então

intYearLoc = Instr (1, strWordList.Name, “_”) dtmYear = idade

(strWordList.Name, intYearLoc - 4, 4)

intMonthStore = intMonth strMonth =

MonthName (intMonth)

strArchiveFile.WriteLine ( “<B> <P>” & strMonth & ““& dtmYear & ‘</ B> <P>’) End If
Construir a página RELATÓRIO DE ARQUIVO Capítulo 31 735

strWordFileName = Substitua (strWordList.Name “html”, “documento”)

strArchiveFile.WriteLine ( “<A HREF = .. /” & “\ Rpts \” & strWordList.Name & _

“>” & StrWordList.Name & “</A>” & “-“& “<A HREF=../" & "\Rpts\" & _ strWordFileName & "> (Baixar

Palavra Version) </A> < BR>”) End If

Próximo

DisconnectNetworkDrive ( “V:”)

WriteFooter ()

Se strDebug = “Habilitado” Então

MsgBox “lista Archive agora concluída.”, CTitleBarMsg End If

Se strEventLog = “Habilitado” Então

WriteToEventLog ( “Arquivo Fazer a ligação Manutenção roteiro pronto execução.”) End If

TerminateScript (intReturnCode)

O próximo actividade exercida no Seção de Processamento Principal é instanciação da variável que


representa o Archive.html arquivo, que o script está criando. Em seguida, o MapNetworkDrive () função é
chamada para configurar uma conexão de rede para a pasta compartilhada onde as versões HTML dos
relatórios resumidos consolidados residem (no servidor Web). Então o GetFolder () método é usado para
criar uma referência de trabalho para a pasta compartilhada. Uma vez feito isso, a Coleção arquivos está
configurado e associado com uma variável chamada strSharedFiles.

Neste ponto, escrevendo a nova página HTML pode começar. Primeiro, o WriteHeader ()
sub-rotina é chamada. Esta sub-rotina escreve set de abertura da página HTML de tags HTML. Então o WriteH3Heading
() sub-rotina é chamado para escrever cabeçalho principal da página. UMA For Each ... Next loop é então

usado para processar os arquivos que residem na criado anteriormente Coleção arquivos.

O ciclo começa, filtrando quaisquer arquivos que têm uma. doutor extensão de arquivo, deixando apenas os arquivos

HTML para processamento. As próximas três instruções descobrir a


736 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

mês com o qual o arquivo está associado. As demonstrações encontrar o local da primeira ocorrência
do caractere traço dentro do nome do arquivo, subtrair 1, e depois usar o Esquerda() função para
definir intMonth igual ao valor de um ou de dois caracteres mês. O valor desta variável é então
comparado com o valor de intMonthStore ( que é definido igual a zero quando o script inicia sua
primeira execução). Se os valores forem diferentes, o nome do mês e ano em que o mês ocorre são
escritos (em negrito) para a página de HTML como um título de seção. Além disso, o valor de intMonth é
definido igual ao valor de intMonthStore, garantindo assim que um novo cabeçalho mês-ano será
escrito se o loop depois processa um arquivo HTML que foi criado em um mês diferente. Em seguida,
o Substituir() função é usada para atribuir o nome do correspondente arquivo de relatório Palavra da
página HTML eo WriteLine () método é usado para escrever uma string. A primeira parte desta cadeia
representa um link para o arquivo HTML com o qual o link está associado. A sua localização é
especificado em relação à localização do script. A segunda parte da cadeia representa um link para a
versão do Word associado do relatório arquivado. o Seção de Processamento Principal termina-se por
chamar a DisconnectNetworkDrive () sub-rotina, que quebra a conexão de unidade mapeada que o
script criado para recuperar a Coleção arquivos. Em seguida, o WriteFooter () sub-rotina é chamada, a
fim de gravar as marcas de fechamento HTML da página HTML, e em seguida o TerminateScript () procedimento
é executado.

Os GetRegistrySettings () subrotina
Tal como acontece com script anterior de Alexandre, o GetRegistrySettings () sub-rotina, mostrado abaixo,
recupera as definições de configuração do script do registro do Windows.

GetRegistrySettings sub ()

On Error Resume Next

strEventLog = _

WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ WebRpting \ EventLogging”) Se Err <> 0 Then

Se strEventLog = “Habilitado” Então

WriteToEventLog ( “Relatório de conversão Script HTML - Usando default“& _ ‘para strEventLog RC =

4’)
Construir a página RELATÓRIO DE ARQUIVO Capítulo 31 737

TerminateScript (12) End If

End If

strDebug = WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ WebRpting \ Debug”) Se Err <> 0 Then

Se strEventLog = “Habilitado” Então

WriteToEventLog ( “Relatório Script de conversão HTML - Usando default“& _

“Para strDebug. RC = 4” )

TerminateScript (12) End If End If

strHTMLFolder = _

WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ WebRpting \ HTMLFolder”) Se Err <> 0 Then

Se strEventLog = “Habilitado” Então

WriteToEventLog ( “Relatório Script de conversão HTML - Usando default“& _

“Para strHTMLFolder. RC = 4” )

TerminateScript (12) End If End If

strSharedRptFolder = _

WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ WebRpting \ Share_Rpts”) Se Err <> 0 Then

Se strEventLog = “Habilitado” Então

WriteToEventLog ( “Relatório Script de conversão HTML - Usando default“& _

“Para strSharedRptFolder. RC = 4” )

TerminateScript (12) End If End If

strWebSvrName = _

WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ WebRpting \ WebServer”) Se Err <> 0 Then

Se strEventLog = “Habilitado” Então

WriteToEventLog ( “Relatório Script de conversão HTML - Usando default“& _


738 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

“Para strWebSvrName. RC = 4” )

TerminateScript (12) End If End If

Se strDebug = “Habilitado” Então

MsgBox “Configurações do Registro inicializado:“& vbCrLf & vbCrLf & _

“StrEventLog” & vbTab & “=” & vbTab & strEventLog & vbCrLf & _ “strDebug” & vbTab & vbTab & “=”

& vbTab & strDebug & vbCrLf & _ “strHTMLFolder” & vbTab & “=” & vbTab & strHTMLFolder & vbCrLf

& _ “strSharedRptFolder” & vbTab & “=” & vbTab & strSharedRptFolder & _ vbCrLf &

“strWebSvrName” & vbTab & “=” & vbTab & strWebSvrName & _ vbCrLf, cTitleBarMsg End If

End Sub

O WriteHeader () subrotina
o WriteHeader () sub-rotina, mostrado abaixo, é responsável por escrever tags HTML abertas da página
HTML e para especificar uma abertura < FONT> tag, que especifica o tipo de letra Correio. Esta fonte foi
escolhido porque ele imprime cada personagem usando um tamanho de caráter consistente, o que vai
ajudar a prever uma apresentação consistente de dados do relatório.

Sub WriteHeader ()

strArchiveFile.WriteLine ( “<HTML>”)

strArchiveFile.WriteLine ( “<HEAD>”)

strArchiveFile.WriteLine ( “ <Title> Variáveis ​de Ambiente </ TITLE>”)

strArchiveFile.WriteLine ( “</ HEAD>”)

strArchiveFile.WriteLine ( “<BODY>”)

strArchiveFile.WriteLine ( “ <FONT FACE = 'Courier'>”)

End Sub

O WriteH3Heading () subrotina
o WriteH3Heading () sub-rotina, mostrado na página seguinte, escreve um
<H3> nível de HTML de ir para a página HTML, o que representa o título da página.
Construir a página RELATÓRIO DE ARQUIVO Capítulo 31 739

Sub WriteH3Heading ()

strArchiveFile.WriteLine ( “<H3> Order / Inventário Relatórios Arquivo </ H3> <P>”) End Sub

O WriteFooter () subrotina
o WriteFooter () sub-rotina, mostrado abaixo, escreve tags de fechamento HTML da página HTML, incluindo
um fechamento </ FONT> tag.

Sub WriteFooter ()

strArchiveFile.WriteLine ( “ </ FONT>”)

strArchiveFile.WriteLine ( “</ BODY>”)

strArchiveFile.WriteLine ( “</ HTML>”) End Sub

O MapNetworkDrive () Função
o MapNetworkDrive () função, mostrada abaixo, é responsável por estabelecer uma conexão de rede para a
pasta compartilhada no servidor Web corporativo, onde as cópias arquivadas das versões HTML dos
relatórios resumidos consolidadas são armazenados.

Função MapNetworkDrive (strLetter, strDrive)

Se strDebug = “Habilitado” Então

MsgBox “strLetter =“& strLetter & vbCrLf & “strDrive =“& _

strDrive, cTitleBarMsg End If

Se FsoObj.DriveExists (strDrive) Em seguida

Se strDebug = “Habilitado” Então

MsgBox strDrive e “existe”, cTitleBarMsg End If

Se FsoObj.DriveExists (strLetter) Em seguida

Se strDebug = “Habilitado” Então

MsgBox “Excluindo letra de unidade“e strLetter, cTitleBarMsg


740 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

Fim se

WshNtk.RemoveNetworkDrive strLetter

Fim se

WshNtk.MapNetworkDrive strLetter, strDrive

Outro

Se strDebug = “Habilitado” Então

MsgBox strDrive & “não existe”, cTitleBarMsg End If

Se strEventLog = “Habilitado” Então

WriteToEventLog “roteiro Relatório Resumido Collection - Não é possível mapear“& _ “para a rede drive“e

strDrive End If

TerminateScript (4) End If

End Function

A letra da unidade a ser usado para configurar a conexão de rede e o caminho para a pasta remota são
passados ​para a função como argumentos. o FileSystemObject
objeto de DriveExists () método é usado para determinar se ou não a unidade remota estiver disponível. Se
não estiver disponível, o TerminateScript () sub-rotina é chamada e passou um valor de 4, o que representa
código de retorno do script. Se a unidade de rede está acessível, a função próxima verificações para
certificar-se de que a letra da unidade especificada não estiver em uso. Se for, a sua ligação é desligada
utilizando o
RemoveNetworkDrive () método e a conexão à pasta compartilhada no servidor Web é criado
usando o MapNetworkDrive () método.

O DisconnectNetworkDrive () subrotina
o DisconnectNetworkDrive () sub-rotina, mostrado na página seguinte, desconecta uma conexão
unidade de rede usando o WshNetwork objeto de RemoveNetworkDrive () método. A ligação a ser
terminada é especificada por uma variável chamada strDriveLetter, que é passado para a sub-rotina
como um argumento.
Construir a página RELATÓRIO DE ARQUIVO Capítulo 31 741

Sub DisconnectNetworkDrive (strDriveLetter)

On Error Resume Next

Se strDebug = “Habilitado” Então

MsgBox “Desligar“e strDriveLetter, cTitleBarMsg End If

WshNtk.RemoveNetworkDrive strDriveLetter Se Err <> 0

Then

Se strDebug = “Habilitado” Então

MsgBox “Ocorreu um erro ao desconectar“& strDriveLetter,, _

cTitleBarMsg End

If End If

End Sub

O WriteToEventLog () subrotina
o WriteToEventLog () sub-rotina, mostrado abaixo, escreve uma mensagem que é passada para ele como um
argumento para o log de eventos do aplicativo Windows.

Sub WriteToEventLog (strMessage)

WshShl.LogEvent 4, strMessage

End Sub

O TerminateScript () subrotina
o TerminateScript () sub-rotina, mostrado na página seguinte, utiliza o
WScript objeto de Sair() método para parar a execução do script. Além disso, ele passa um código de script de retorno

(que indica se ou não o script foi executado com êxito) de volta ao seu script de chamada. Este código de retorno é

passado para ele como um argumento chamado

intRC, que é inicialmente definida igual a zero no início da execução do script.


742 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

Sub TerminateScript (intRC)

Se strDebug = “Habilitado” Então

MsgBox “A execução do script encerrado.”, CTitleBarMsg End If

WScript.Quit (intRC)

End Sub

The Script totalmente montado


O script totalmente montado, mostrado abaixo, cria a página Relatório Arquivo conectando-se ao servidor Web

corporativo a fim de recolher uma lista dos arquivos de relatório de síntese consolidadas disponíveis atualmente HTML.

Ele então constrói uma página HTML através da criação de um link para cada arquivo que se encontra. Um segundo

conjunto de ligações é adicionado para as versões do Word dos relatórios, permitindo aos visitantes visualizar e

descarregar cópias formais dos relatórios.

'************************************************* ************************ 'Script Nome: 31.1.vbs script' Autor: Jerry

Ford 'Criado: 05/06/03

'Descrição: Este script cria uma página HTML que fornece uma lista de' links para relatórios consolidados

pedidos / stocks antigos.

'************************************************* ************************

'Seção de inicialização

Option Explicit

Dim strSharedFolder, strSharedFiles, strWordList, strArchiveFile Dim strWordFileName,

intMonth, strMonth, intMonthStore

Dim strEventLog, strDebug, strHTMLFolder, strSharedRptFolder, strWebSvrName

Dim intReturnCode, intYearLoc, dtmYear


Construir a página RELATÓRIO DE ARQUIVO Capítulo 31 743

Const cForReading = 1 const

cForWriting = 2 const

cForAppending = 8

Const cTitleBarMsg = “Arquivo Fazer a ligação Manutenção Script”

Dim FsoObj, WshNtk, WshShl

Defina FsoObj = CreateObject ( “Scripting.FileSystemObject”) Definir WshNtk =

WScript.CreateObject ( “WScript.Network”) Definir WshShl = WScript.CreateObject

( “WScript.Shell”)

intReturnCode = 0 = 0

intMonthStore

'Secção de Processamento Principal

GetRegistrySettings ()

Se strEventLog = “Habilitado” Então

WriteToEventLog ( “Arquivo Fazer a ligação Manutenção Script agora em execução.”) End If

Se strDebug = “Habilitado” Então

MsgBox “Começando desenvolvimento da lista de arquivo.”, CTitleBarMsg End If

Definir strArchiveFile = FsoObj.OpenTextFile (strHTMLFolder & “\ Archive.html”, _

cForWriting, “True”)

MapNetworkDrive “V”, “\\” & strWebSvrName & “\” & strSharedRptFolder

Definir strSharedFolder = FsoObj.GetFolder ( “V:”)

Definir strSharedFiles = strSharedFolder.Files

WriteHeader ()
744 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

WriteH3Heading ()

Para Cada strWordList Em strSharedFiles

Se Instr (1, strWordList.Name, “.doc”) = 0 Then

int1stDash = EmCad '(1, strWordList.Name, “-”) intLengthOfMonth

= int1stDash - 1

intMonth = Esquerdo (strWordList.Name, intLengthOfMonth)

Se intMonth <> intMonthStore Então

intYearLoc = Instr (1, strWordList.Name, “_”) dtmYear = idade

(strWordList.Name, intYearLoc - 4, 4)

intMonthStore = intMonth strMonth =

MonthName (intMonth)

strArchiveFile.WriteLine ( “<B> <P>” & strMonth & ““& dtmYear & ‘</ B> <P>’) End If

strWordFileName = Substitua (strWordList.Name “html”, “documento”)

strArchiveFile.WriteLine ( “<A HREF = .. /” & “\ Rpts \” & strWordList.Name & _

“>” & StrWordList.Name & “</A>” & “-“& “<A HREF=../" & "\Rpts\" & _ strWordFileName & "> (Baixar

Palavra Version) </A> < BR>”) End If

Próximo

DisconnectNetworkDrive ( “V:”)

WriteFooter ()

Se strDebug = “Habilitado” Então

MsgBox “lista Archive agora concluída.”, CTitleBarMsg End If

Se strEventLog = “Habilitado” Então

WriteToEventLog ( “Arquivo Fazer a ligação Manutenção roteiro pronto execução.”)


Construir a página RELATÓRIO DE ARQUIVO Capítulo 31 745

Fim se

TerminateScript (intReturnCode)

'Secção Procedimento

GetRegistrySettings sub ()

On Error Resume Next

strEventLog = _

WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ WebRpting \ EventLogging”) Se Err <> 0 Then

Se strEventLog = “Habilitado” Então

WriteToEventLog ( “Relatório Script de conversão HTML - Usando default“& _

“Para strEventLog. RC = 4” )

TerminateScript (12) End If End If

strDebug = WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ WebRpting \ Debug”) Se Err <> 0 Then

Se strEventLog = “Habilitado” Então

WriteToEventLog ( “Relatório Script de conversão HTML - Usando default“& _

“Para strDebug. RC = 4” )

TerminateScript (12) End If End If

strHTMLFolder = _

WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ WebRpting \ HTMLFolder”) Se Err <> 0 Then

Se strEventLog = “Habilitado” Então

WriteToEventLog ( “Relatório Script de conversão HTML - Usando default“& _

“Para strHTMLFolder. RC = 4” )

TerminateScript (12) End If


746 projeto 4 Comunicação de dados APLICAÇÃO RESUMO ATRAVÉS DA WEB

Fim se

strSharedRptFolder = _

WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ WebRpting \ Share_Rpts”) Se Err <> 0 Then

Se strEventLog = “Habilitado” Então

WriteToEventLog ( “Relatório Script de conversão HTML - Usando default“& _

“Para strSharedRptFolder. RC = 4” )

TerminateScript (12) End If End If

strWebSvrName = _

WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ WebRpting \ WebServer”) Se Err <> 0 Then

Se strEventLog = “Habilitado” Então

WriteToEventLog ( “Relatório Script de conversão HTML - Usando default“& _

“Para strWebSvrName. RC = 4” )

TerminateScript (12) End If End If

Se strDebug = “Habilitado” Então

MsgBox “Configurações do Registro inicializado:“& vbCrLf & vbCrLf & _

“StrEventLog” & vbTab & “=” & vbTab & strEventLog & vbCrLf & _ “strDebug” & vbTab & vbTab & “=”

& vbTab & strDebug & vbCrLf & _ “strHTMLFolder” & vbTab & “=” & vbTab & strHTMLFolder & vbCrLf

& _ “strSharedRptFolder” & vbTab & “=” & vbTab & strSharedRptFolder & _ vbCrLf &

“strWebSvrName” & vbTab & “=” & vbTab & strWebSvrName & _ vbCrLf, cTitleBarMsg End If

End Sub

Sub WriteHeader ()

strArchiveFile.WriteLine ( “<HTML>”)

strArchiveFile.WriteLine ( “<HEAD>”)

Você também pode gostar