<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>iranrodrigues.com - desenvolvimento web &#187; ASP + VBScript</title>
	<atom:link href="http://iranrodrigues.wordpress.com/category/modulos/asp-vbscript/feed/" rel="self" type="application/rss+xml" />
	<link>http://iranrodrigues.wordpress.com</link>
	<description>Desenvolvimento web e dicas, tutoriais, notas de aula e anexos em geral para aulas de web design, programação web e web development</description>
	<lastBuildDate>Sat, 14 Jun 2008 15:09:40 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='iranrodrigues.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/28a0fcd94101b8447e4481c7f0aa29e3?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>iranrodrigues.com - desenvolvimento web &#187; ASP + VBScript</title>
		<link>http://iranrodrigues.wordpress.com</link>
	</image>
			<item>
		<title>Conectando-se a um banco de dados Access através do ASP &#8211; Parte 2</title>
		<link>http://iranrodrigues.wordpress.com/2008/02/20/conectando-se-a-um-banco-de-dados-access-atraves-do-asp-parte-2/</link>
		<comments>http://iranrodrigues.wordpress.com/2008/02/20/conectando-se-a-um-banco-de-dados-access-atraves-do-asp-parte-2/#comments</comments>
		<pubDate>Wed, 20 Feb 2008 22:28:35 +0000</pubDate>
		<dc:creator>Iran Rodrigues</dc:creator>
				<category><![CDATA[ASP + VBScript]]></category>
		<category><![CDATA[SA110-06001]]></category>
		<category><![CDATA[TQ200-05003]]></category>
		<category><![CDATA[Access]]></category>
		<category><![CDATA[ADODB]]></category>
		<category><![CDATA[ASP]]></category>
		<category><![CDATA[Banco de dados]]></category>
		<category><![CDATA[Connection]]></category>
		<category><![CDATA[EOF]]></category>
		<category><![CDATA[MoveNext]]></category>
		<category><![CDATA[Recordset]]></category>
		<category><![CDATA[vbscript]]></category>

		<guid isPermaLink="false">http://iranrodrigues.wordpress.com/?p=88</guid>
		<description><![CDATA[Aprenda a realizar operações básicas envolvendo bancos de dados com o ASP.
Continuando o post anterior, veremos como listar os registros existentes em uma tabela no banco. Antes de qualquer coisa, verifique se você baixou o banco de dados de exemplo citado no post anterior, pois ele será necessário agora.
A última coisa que fizemos foi a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=iranrodrigues.wordpress.com&blog=2015522&post=88&subd=iranrodrigues&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><h3>Aprenda a realizar operações básicas envolvendo bancos de dados com o ASP.</h3>
<p>Continuando o <a href="http://iranrodrigues.wordpress.com/2008/02/18/conectando-se-a-um-banco-de-dados-access-atraves-do-asp-parte-1/" title="Parte 1" target="_blank">post anterior</a>, veremos como listar os registros existentes em uma tabela no banco. Antes de qualquer coisa, verifique se você baixou o <a href="http://arquivos.iranrodrigues.com/arquivos/SA110-06001/banco.mdb" title="Banco de dados de exemplo" target="_blank">banco de dados de exemplo</a> citado no post anterior, pois ele será necessário agora.</p>
<p>A última coisa que fizemos foi a criação de um novo arquivo &#8220;ASP VBScript&#8221; no Dreamweaver, o qual acrescentamos as seguintes linhas no topo (a primeira já existe):</p>
<pre class="brush: vb;">
&lt;%@LANGUAGE=&quot;VBSCRIPT&quot; CODEPAGE=&quot;1252&quot;%&gt;
&lt;%
set conexao = Server.CreateObject(&quot;ADODB.Connection&quot;)
conexao.Open &quot;Provider=Microsoft.Jet.OLEDB.4.0;DataSource=&quot;&amp;Server.MapPath(&quot;banco.mdb&quot;)&amp;&quot;;&quot;
Set registros = Server.CreateObject (&quot;ADODB.Recordset&quot;)
registros.Open &quot;usuarios&quot;,conexao,3,3
%&gt;
</pre>
<p>Com a utilização do método &#8220;Open&#8221; do objeto &#8220;registros&#8221;, este passa a se comportar como um <i>array</i>, ou seja, pode ter seus valores acessados através de índices. Mas que índices são esses? E quais seriam os valores? Resposta: os índices correspondem aos nomes dos campos existentes na tabela de nome &#8220;usuarios&#8221;. E os valores armazenados no <i>array</i> são os valores do registro para cada campo. Veja na prática, acrescentando as seguintes linhas ao <i>body</i> do documento:</p>
<p><span id="more-88"></span>
<pre class="brush: vb;">
&lt;body&gt;
&lt;%=registros(&quot;codigo&quot;) &amp; &quot; &quot;%&gt;
&lt;%=registros(&quot;nome&quot;) &amp; &quot; &quot;%&gt;
&lt;%=registros(&quot;email&quot;) &amp; &quot; &quot;%&gt;
&lt;%=registros(&quot;datanasc&quot;)%&gt;
&lt;/body&gt;
</pre>
<p>O que fizemos foi escrever o conteúdo de cada um dos campos especificados. Perceba que os valores exibidos correspondem a apenas um registro. Na verdade, o primeiro registro da tabela. Podemos exibir os demais utilizando um método existente para o objeto &#8220;registros&#8221;: o <i>MoveNext</i>. Vejamos seu funcionamento:</p>
<pre class="brush: vb;">
&lt;body&gt;
&lt;%=registros(&quot;codigo&quot;) &amp; &quot; &quot;%&gt;
&lt;%=registros(&quot;nome&quot;) &amp; &quot; &quot;%&gt;
&lt;%=registros(&quot;email&quot;) &amp; &quot; &quot;%&gt;
&lt;%=registros(&quot;datanasc&quot;)%&gt;
&lt;% registros.MoveNext %&gt;
&lt;%=&quot;&lt;br /&gt;&quot;%&gt;
&lt;%=registros(&quot;codigo&quot;) &amp; &quot; &quot;%&gt;
&lt;%=registros(&quot;nome&quot;) &amp; &quot; &quot;%&gt;
&lt;%=registros(&quot;email&quot;) &amp; &quot; &quot;%&gt;
&lt;%=registros(&quot;datanasc&quot;)%&gt;
&lt;% registros.MoveNext %&gt;
&lt;%=&quot;&lt;br /&gt;&quot;%&gt;
&lt;%=registros(&quot;codigo&quot;) &amp; &quot; &quot;%&gt;
&lt;%=registros(&quot;nome&quot;) &amp; &quot; &quot;%&gt;
&lt;%=registros(&quot;email&quot;) &amp; &quot; &quot;%&gt;
&lt;%=registros(&quot;datanasc&quot;)%&gt;
&lt;/body&gt;
</pre>
<p>Perceba que a cada uso do MoveNext, passamos a trabalhar com o próximo registro. Logo, apesar de estarmos apenas repetindo os mesmos comandos, a cada repetição exibimos os valores de um registro diferente.</p>
<p>É claro que nem de longe este código está prático. Da forma como foi criado, seria necessário copiar e colar os blocos de código repetidos tantas vezes quantos fossem os registros &#8211; portanto o código poderia crescer indefinidamente. Bom, é para isso que servem as estruturas de repetição. Podemos repetir os blocos de código até que atinjamos o fim dos registros. Como isso é possível? Através da propriedade EOF, também presente no objeto &#8220;registros&#8221;. Esta é um propriedade booleana: é verdadeira quando se chega ao fim da tabela e falsa em caso contrário. Logo, o código final poderia ficar assim:</p>
<pre class="brush: vb;">
&lt;body&gt;
&lt;%
' Até chegarmos ao fim da tabela...
Do Until registros.EOF
' ...escreveremos os dados do registro atual
%&gt;
&lt;%=registros(&quot;codigo&quot;) &amp; &quot; &quot;%&gt;
&lt;%=registros(&quot;nome&quot;) &amp; &quot; &quot;%&gt;
&lt;%=registros(&quot;email&quot;) &amp; &quot; &quot;%&gt;
&lt;%=registros(&quot;datanasc&quot;)%&gt;
&lt;%=&quot;&lt;br /&gt;&quot;%&gt;
&lt;% registros.MoveNext %&gt;
&lt;% Loop %&gt;
&lt;/body&gt;
</pre>
<p>Exercício: organize os dados dos registros exibindo-os dentro de uma tabela (&lt;table&gt;). Dica: substitua os espaços em branco e a quebra de linha pelas tags <i>&lt;td&gt;</i> e <i>&lt;tr&gt;</i> (abra-as e feche-as corretamente).</p>
<p>Por hoje é só, pessoal. Em breve continuarei este artigo demonstrando como inserir novos registros em uma tabela.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/iranrodrigues.wordpress.com/88/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/iranrodrigues.wordpress.com/88/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/iranrodrigues.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/iranrodrigues.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/iranrodrigues.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/iranrodrigues.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/iranrodrigues.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/iranrodrigues.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/iranrodrigues.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/iranrodrigues.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/iranrodrigues.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/iranrodrigues.wordpress.com/88/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=iranrodrigues.wordpress.com&blog=2015522&post=88&subd=iranrodrigues&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://iranrodrigues.wordpress.com/2008/02/20/conectando-se-a-um-banco-de-dados-access-atraves-do-asp-parte-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a1e43a284b4183793002151688f479f1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">iranrg</media:title>
		</media:content>
	</item>
		<item>
		<title>Conectando-se a um banco de dados Access através do ASP &#8211; Parte 1</title>
		<link>http://iranrodrigues.wordpress.com/2008/02/18/conectando-se-a-um-banco-de-dados-access-atraves-do-asp-parte-1/</link>
		<comments>http://iranrodrigues.wordpress.com/2008/02/18/conectando-se-a-um-banco-de-dados-access-atraves-do-asp-parte-1/#comments</comments>
		<pubDate>Mon, 18 Feb 2008 22:48:16 +0000</pubDate>
		<dc:creator>Iran Rodrigues</dc:creator>
				<category><![CDATA[ASP + VBScript]]></category>
		<category><![CDATA[SA110-06001]]></category>
		<category><![CDATA[TQ200-05003]]></category>
		<category><![CDATA[Access]]></category>
		<category><![CDATA[ADODB]]></category>
		<category><![CDATA[ASP]]></category>
		<category><![CDATA[Banco de dados]]></category>
		<category><![CDATA[Connection]]></category>
		<category><![CDATA[Recordset]]></category>
		<category><![CDATA[vbscript]]></category>

		<guid isPermaLink="false">http://iranrodrigues.wordpress.com/?p=86</guid>
		<description><![CDATA[Aprenda a realizar as operações básicas envolvendo bancos de dados com o ASP.
Ao pensarmos em sites que acessam bancos de dados, a primeira coisa que vem à cabeça são grandes sites, como um site de comércio eletrônico, com cadastros de produtos, clientes, fornecedores e etc. Apesar destes grandes sites utilizarem (grandes) bancos de dados, existem [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=iranrodrigues.wordpress.com&blog=2015522&post=86&subd=iranrodrigues&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><h3>Aprenda a realizar as operações básicas envolvendo bancos de dados com o ASP.</h3>
<p>Ao pensarmos em sites que acessam bancos de dados, a primeira coisa que vem à cabeça são grandes sites, como um site de comércio eletrônico, com cadastros de produtos, clientes, fornecedores e etc. Apesar destes grandes sites utilizarem (grandes) bancos de dados, existem muitos outros pequenos sites que também os utilizam (ou poderiam utilizá-los).</p>
<p>Hoje em dia, sites que acessam bancos de dados são cada vez mais comuns. Um exemplo: suponha um simples site institucional. Este site possui uma página descrevendo a empresa, seus serviços, um formulário de contato, etc. Para tanto, digamos que ao total existam cinco diferentes páginas. Até aí, tudo bem. Mas vamos além: imagine ainda que o responsável pelo conteúdo do site na empresa não entenda de HTML (que dirá de ASP). Como ele fará para atualizar informações em seu site sem precisar contatar um profissional? A resposta: atráves de um sistema de administração de conteúdo. O site poderia conter uma área, protegida por senha, onde a pessoa responsável possa alterar o conteúdo de cada uma das páginas, como por exemplo, atualizar um telefone, ou acrescentar uma informação, sem ver nenhuma tag HTML ou comando de ASP. Para que isso seja possível, tais informações (o conteúdo de cada página) devem estar em um banco de dados.</p>
<p><span id="more-86"></span>O ASP permite trabalhar com qualquer banco de dados popular, como o SQL Server, Oracle, MySQL, PostgreSQL, Access, MSQL&#8230; peraí? Access? Isso mesmo!</p>
<p>O Access é conhecido por ser um banco de dados limitado, voltado ao uso doméstico ou em pequenas empresas; mas isso não impede de ser utilizado em um site. De fato, se o site não fizer operações complexas envolvendo o banco de dados e nem tiver muitos acessos simultâneos, é possível usar o Access normalmente. Se for necessário um banco robusto, é melhor esquecê-lo. <a href="http://databases.aspfaq.com/database/what-are-the-limitations-of-ms-access.html" title="Limitações do Access" target="_blank">Nesta página</a> (em inglês) vocês podem encontrar uma relação das limitações do Access como banco de dados para a web.</p>
<p>De qualquer forma, veremos o uso do Access apenas para fins didáticos, pois uma de suas vantagens é a simplicidade na criação de um banco de dados e a facilidade para carregá-lo para qualquer lugar, pois ocupa um único arquivo (de extensão .mdb).</p>
<p><b>Antes de qualquer coisa</b>, baixem o banco de dados usado como exemplo: <a href="http://arquivos.iranrodrigues.com/arquivos/SA110-06001/banco.mdb" title="Banco de dados de exemplo">aqui</a>.</p>
<p><b>Começando&#8230;</b></p>
<p>Assim como fizemos no módulo de PHP, qualquer tarefa envolvendo o uso de um banco de dados requer alguns comandos essenciais: a conexão com o banco e a definição da tabela a ser usada.</p>
<p>Para tanto, criem um novo arquivo ASP VBScript  no Dreamweaver e acrescentem as linhas a seguir (percebam que a primeira linha já existe no código da nova página):</p>
<pre class="brush: vb;">
&lt;%@LANGUAGE=&quot;VBSCRIPT&quot; CODEPAGE=&quot;1252&quot;%&gt;
&lt;%
set conexao = Server.CreateObject(&quot;ADODB.Connection&quot;)
conexao.Open &quot;Provider=Microsoft.Jet.OLEDB.4.0;DataSource=&quot;&amp;Server.MapPath(&quot;banco.mdb&quot;)&amp;&quot;;&quot;
Set registros = Server.CreateObject (&quot;ADODB.Recordset&quot;)
registros.Open &quot;usuarios&quot;,conexao,3,3
%&gt;
</pre>
<p>Complicado? Nem tanto. À primeira vista assusta, mas com o uso você decora&#8230;</p>
<p>Veja que uma palavra se repete: ADODB. &#8220;DB&#8221; sabemos que vem de &#8220;database&#8221; (banco de dados), já o ADO é uma tecnologia proprietária da Microsoft que provê uma interface para o acesso aos dados armazenados em um banco de dados. Ele é instalado junto com o IIS.</p>
<p>Voltando a analisar o código: a linha que inicia com &#8220;set conexao&#8221; cria uma instância chamada de &#8220;conexao&#8221; a partir do objeto &#8220;ADODB.Connection&#8221;. Lembram-se de que vimos por alto o uso do método CreateObject do objeto Server? Olha ele aí instanciando um objeto&#8230;</p>
<p>O objeto ADODB.Connection estabelece uma conexão a um banco de dados. Seu uso é fundamental para que realizemos qualquer operação com o banco.</p>
<p>Após a criação do objeto &#8220;conexao&#8221;, utilizamos o seu método &#8220;Open&#8221; para inicializar a conexão com o banco. Nesta etapa, qual é o banco de dados que iremos utilizar e onde ele se localiza. O parâmetro passado à função é chamado de string de conexão. No exemplo acima, a string de conexão contém o &#8220;provider&#8221; e o &#8220;data source&#8221; a serem usados. O primeiro é o provedor, que indica o mecanismo que lidará com o banco (este em questão é o provedor que lida com o Access e o Excel). O data source (fonte de dados) especifica o local do arquivo do banco de dados. O método &#8220;Server.MapPath&#8221; foi usado para obter o caminho completo do arquivo (que poderia ser, por exemplo, &#8220;C:\Inetpub\wwwroot\site\banco.mdb&#8221;).</p>
<p>Após o uso do método &#8220;Open&#8221; do objeto &#8220;conexao&#8221;, instanciamos um objeto a que chamamos &#8220;registros&#8221; (do tipo ADODB.Recordset). Este objeto armazenará os dados do banco, normalmente de uma tabela por vez.</p>
<p>O método &#8220;Open&#8221; para o objeto &#8220;registros&#8221; tem a função de associar o objeto a um conjunto de registros (ex.: uma tabela). No exemplo acima, &#8220;abrimos&#8221; a tabela chamada &#8220;usuarios&#8221; através da conexão definida no objeto &#8220;conexao&#8221;. O &#8220;3,3&#8243; no final indica o tipo de cursor e o modo de travamento. O primeiro, com valor &#8220;3&#8243;, indica que a movimentação por entre os registros será feita apenas para a frente, o que aumenta a performance. O segundo &#8220;3&#8243; indica que o registro ficará travado para não permitir alterações por outros usuários enquanto estiver sendo usado. Estes parâmetros são opcionais, podendo ser omitidos. Mais detalhes sobre o <a href="http://www.w3schools.com/ado/met_rs_open.asp#CursorTypeEnum" title="Tipos de cursor" target="_blank">tipo de cursor</a> e o <a href="http://www.w3schools.com/ado/met_rs_open.asp#LockTypeEnum" title="Modo de travamento">modo de travamento</a> no site da W3 Schools (em inglês).</p>
<p>Até aqui o que fizemos foi apenas nos conectar a um banco e selecionar uma tabela. Portanto, nenhuma informação do banco estará ainda visível. Em breve continuarei este artigo, colocando um exemplo prático, onde poderemos listar os registros já armazenados no banco. Até.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/iranrodrigues.wordpress.com/86/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/iranrodrigues.wordpress.com/86/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/iranrodrigues.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/iranrodrigues.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/iranrodrigues.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/iranrodrigues.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/iranrodrigues.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/iranrodrigues.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/iranrodrigues.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/iranrodrigues.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/iranrodrigues.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/iranrodrigues.wordpress.com/86/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=iranrodrigues.wordpress.com&blog=2015522&post=86&subd=iranrodrigues&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://iranrodrigues.wordpress.com/2008/02/18/conectando-se-a-um-banco-de-dados-access-atraves-do-asp-parte-1/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a1e43a284b4183793002151688f479f1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">iranrg</media:title>
		</media:content>
	</item>
		<item>
		<title>O objeto Server</title>
		<link>http://iranrodrigues.wordpress.com/2008/02/09/o-objeto-server/</link>
		<comments>http://iranrodrigues.wordpress.com/2008/02/09/o-objeto-server/#comments</comments>
		<pubDate>Sat, 09 Feb 2008 13:24:13 +0000</pubDate>
		<dc:creator>Iran Rodrigues</dc:creator>
				<category><![CDATA[ASP + VBScript]]></category>
		<category><![CDATA[SA110-06001]]></category>
		<category><![CDATA[TQ200-05003]]></category>
		<category><![CDATA[ASP]]></category>
		<category><![CDATA[métodos]]></category>
		<category><![CDATA[Propriedades]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[vbscript]]></category>

		<guid isPermaLink="false">http://iranrodrigues.wordpress.com/?p=69</guid>
		<description><![CDATA[Continuando a sequência de artigos sobre os objetos do ASP, veremos aqui como utilizar o objeto Server.
Olá. Agora que o ano começou o carnaval acabou, vou correr para atualizar o conteúdo das aulas &#8211; que estão quase todas atrasadas. Devido a este atraso, o conteúdo deste e dos próximos posts serão levemente resumidos (volto a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=iranrodrigues.wordpress.com&blog=2015522&post=69&subd=iranrodrigues&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><h3>Continuando a sequência de artigos sobre os objetos do ASP, veremos aqui como utilizar o objeto Server.</h3>
<p>Olá. Agora que <strike>o ano começou</strike> o carnaval acabou, vou correr para atualizar o conteúdo das aulas &#8211; que estão quase todas atrasadas. Devido a este atraso, o conteúdo deste e dos próximos posts serão levemente resumidos (volto a lembrar que o objetivo é reforçar/relembrar o que foi visto em aula).</p>
<p>Continuando a falar dos objetos do ASP, chega a vez do Server. Este objeto serve basicamente para acessar funções gerais no servidor web. O Server possui uma propriedade e sete métodos, a saber:</p>
<ul>
<li>ScriptTimeout (propriedade)</li>
<li>CreateObject* (método)</li>
<li>Execute (método)</li>
<li>GetLastError** (método)</li>
<li>MapPath* (método)</li>
<li>HTMLEncode (método)</li>
<li>Transfer (método)</li>
<li>URLEncode (método)</li>
</ul>
<p><span id="more-69"></span>* Seu uso será exemplificado em aulas posteriores;<br />
** Não será visto em aula.</p>
<p><b>ScriptTimeout</b></p>
<p>Propriedade que define o tempo máximo de espera para o processamento de um script no servidor. O valor padrão é 90 (segundos), o que quer dizer que uma página que contenha um código que leve a um looping infinito, por exemplo, será executada por no máximo 90 segundos, para então resultar em erro.</p>
<p>Setando um novo valor para ScriptTimeout:</p>
<pre class="brush: vb;">
Server.ScriptTimeout = 45
' Exibição do valor
Response.Write(Server.ScriptTimeout)
</pre>
<p><b>CreateObject</b></p>
<p>Instancia um objeto. Em outras palavras, cria um objeto do tipo especificado. Veremos mais detalhes ao trabalharmos com bancos de dados.</p>
<p><b>Execute</b></p>
<p>Executa um script contido em um arquivo ASP externo. Equivale ao <i>include</i> do PHP.</p>
<p>Exemplo:</p>
<p>arquivo1.asp</p>
<pre class="brush: vb;">
Response.Write(&quot;Comando 1 do arquivo1.asp&lt;br&gt;&quot;)
Server.Execute(&quot;arquivo2.asp&quot;)
Response.Write(&quot;Comando 2 do arquivo1.asp&lt;br&gt;&quot;)
</pre>
<p>arquivo2.asp</p>
<pre class="brush: vb;">
Response.Write(&quot;Comando 1 do arquivo2.asp&lt;br&gt;&quot;)
Response.Write(&quot;Comando 2 do arquivo2.asp&lt;br&gt;&quot;)
Response.Write(&quot;Comando 3 do arquivo2.asp&lt;br&gt;&quot;)
</pre>
<p>Resultado da execução do arquivo1.asp:</p>
<p>Comando 1 do arquivo1.asp<br />
Comando 1 do arquivo2.asp<br />
Comando 2 do arquivo2.asp<br />
Comando 3 do arquivo2.asp<br />
Comando 2 do arquivo1.asp</p>
<p>Percebam que após a execução dos comandos no arquivo2.asp, os comandos restantes do arquivo1.asp são executados.</p>
<p><b>GetLastError</b></p>
<p>Este método é usado na personalização de páginas que exibem mensagens de erro no servidor. Um exemplo no uso deste método pode ser encontrado <a href="http://www.bufaloinfo.com.br/Artigos/Artigo2712.asp" title="Controlando a ocorrência de erros em ASP - Dennes Torres" target="_blank">aqui</a> (em português).</p>
<p><b>MapPath</b></p>
<p>Obtém o caminho absoluto para um arquivo ou pasta no servidor a partir de seu caminho relativo. Utilizaremos este método quando trabalharmos com bancos de dados.</p>
<p><b>HTMLEncode</b></p>
<p>Este é um método bem util. Sua função é converter caracteres especiais contidos em uma string em seus respectivos &#8220;códigos&#8221; oriundos do HTML (HTMLEncode significa codificar em HTML).</p>
<p>Experimentem exibir o texto &#8220;&lt;br&gt;&#8221; numa página web. Se vocês digitarem no body, por exemplo, ao invés do texto &#8220;&lt;br&gt;&#8221; o que aparece é uma quebra de linha. Isso acontece porque o browser processa o texto &#8220;&lt;br&gt;&#8221; como um comando da linguagem HTML. Para simplesmente exibirmos como texto, precisamos substituir os &#8220;&lt;&#8221; e &#8220;&gt;&#8221; pelos seus respectivos códigos em HTML: &#8220;&lt;&#8221; e  &#8220;&gt;&#8221;, respectivamente. Então teríamos que escrever: &lt;br&gt;</p>
<p>Como ninguém costuma decorar esses códigos, e mesmo que decore, não quer perder tempo digitando-os, vamos utilizar o método HTMLEncode. Analisem o código fonte gerado pela execução do código abaixo e tirem suas conclusões:</p>
<pre class="brush: vb;">
'Sem HTMLEncode
Response.Write(&quot;O elemento do HTML que quebra linhas é o &lt;br&gt;&quot;)
'Com HTMLEncode
Response.Write(Server.HTMLEncode(&quot;O elemento do HTML que quebra linhas é o &lt;br&gt;&quot;))
</pre>
<p><b>Transfer</b></p>
<p>Faz quase o mesmo que o método Execute. A diferença é que o Transfer não inclui a página externa, mas sim redireciona a execução para ela. Ou seja, ao transferir a execução de uma página chamada arquivo1.asp para uma outra chamada arquivo2.asp, ao fim da execução desta última, o servidor não retorna para a primeira.</p>
<p>Observação: o objetivo deste método não é simplesmente redirecionar (como o Response.Redirect). O redirecionamento ocorre de forma transparente para o usuário &#8211; ele não sabe que está sendo redirecionado,  pois o browser não irá recarregar &#8211; e, principalmente, este redirecionamento conserva o estado atual do servidor. Assim, as variáveis definidas continuam existindo ao chegar na página de destino.</p>
<p>Exemplo (baseado no exemplo do Execute &#8211; vejam as diferenças no resultado):</p>
<p>arquivo1.asp</p>
<pre class="brush: vb;">
Response.Write(&quot;Comando 1 do arquivo1.asp&lt;br&gt;&quot;)
Server.Transfer(&quot;arquivo2.asp&quot;)
Response.Write(&quot;Comando 2 do arquivo1.asp&lt;br&gt;&quot;)
</pre>
<p>arquivo2.asp</p>
<pre class="brush: vb;">
Response.Write(&quot;Comando 1 do arquivo2.asp&lt;br&gt;&quot;)
Response.Write(&quot;Comando 2 do arquivo2.asp&lt;br&gt;&quot;)
Response.Write(&quot;Comando 3 do arquivo2.asp&lt;br&gt;&quot;)
</pre>
<p>Resultado da execução do arquivo1.asp:</p>
<p>Comando 1 do arquivo1.asp<br />
Comando 1 do arquivo2.asp<br />
Comando 2 do arquivo2.asp<br />
Comando 3 do arquivo2.asp</p>
<p>Qual a diferença? Ao terminar de executar os comandos do arquivo2.asp, ele não volta para o arquivo1.asp. A execução termina.</p>
<p><b>URLEncode</b></p>
<p>Mais uma função de codificação, como a HTMLEncode. A diferença é que o URLEncode codifica um texto para que ele possa ser inserido numa URL. Para ver um exemplo, acesse o <a href="http://www.google.com.br" title="Google (conhece?)" target="_blank">Google</a>, digite uma frase como: receita de suflê de abóbora (eu chutei essa receita, mas pelo jeito, ela existe de verdade). Ao pesquisar, não cliquem em nenhum resultado. Ao invés disso, observem a URL. Como o formulário de busca do Google é enviado via GET, as informações ficam expostas na URL. Fiz a pesquisa e a URL atual é: http://www.google.com.br/search?q=receita+de+sufl%C3%AA+de+ab%C3%B3bora&amp;ie=utf-8&amp;oe=utf-8&amp;rls=org.mozilla:pt-BR:official&amp;client=firefox-a</p>
<p>O texto que digitei fica depois do &#8220;?q=&#8221; e vai até antes do &#8220;&amp;ie=&#8221;, ou seja:</p>
<p>receita+de+sufl%C3%AA+de+ab%C3%B3bora</p>
<p>Portanto, a frase &#8220;receita de suflê de abóbora&#8221;, codificada na URL vira &#8220;receita+de+sufl%C3%AA+de+ab%C3%B3bora&#8221;. É fácil perceber que o que muda são os espaços (trocados por &#8220;+&#8221;) e as letras acentuadas (na verdade, os caracteres especiais em geral), que são trocadas por dois caracteres entre porcentagens (exemplo: %C3%).</p>
<p>Qual a utilidade? Inserir informações diretamente na URL. Por exemplo, acessando este endereço&#8230;</p>
<p>http://www.google.com.br/search?q=dicion%C3%A1rio+bil%C3%ADng%C3%BCe+portugu%C3%AAs+ingl%C3%AAs</p>
<p>&#8230;vocês já caem automaticamente na página de resultados do Google para &#8220;dicionário bilíngüe português inglês&#8221;. Para gerar um link destes automaticamente é preciso usar este método.</p>
<p>Exemplo:</p>
<pre class="brush: vb;">
Response.Write(&quot;Pesquise por 'pôneis siamêses' clicando &lt;a href='&quot;)
Response.Write(&quot;http://www.google.com.br/search?q=&quot; &amp; URLEncode(&quot;pôneis siamêses&quot;))
Response.Write(&quot;'&gt;aqui&lt;/a&gt;&quot;)
</pre>
<p>Um outro exemplo de utilização é criar um formulário de busca que encaminhe para a página de resultados do Google para o termo pesquisado.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/iranrodrigues.wordpress.com/69/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/iranrodrigues.wordpress.com/69/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/iranrodrigues.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/iranrodrigues.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/iranrodrigues.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/iranrodrigues.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/iranrodrigues.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/iranrodrigues.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/iranrodrigues.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/iranrodrigues.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/iranrodrigues.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/iranrodrigues.wordpress.com/69/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=iranrodrigues.wordpress.com&blog=2015522&post=69&subd=iranrodrigues&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://iranrodrigues.wordpress.com/2008/02/09/o-objeto-server/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a1e43a284b4183793002151688f479f1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">iranrg</media:title>
		</media:content>
	</item>
		<item>
		<title>Obtendo dados submetidos por formulários (POST) em ASP</title>
		<link>http://iranrodrigues.wordpress.com/2008/01/15/obtendo-dados-submetidos-por-formularios-post-em-asp/</link>
		<comments>http://iranrodrigues.wordpress.com/2008/01/15/obtendo-dados-submetidos-por-formularios-post-em-asp/#comments</comments>
		<pubDate>Tue, 15 Jan 2008 22:26:31 +0000</pubDate>
		<dc:creator>Iran Rodrigues</dc:creator>
				<category><![CDATA[ASP + VBScript]]></category>
		<category><![CDATA[TQ200-05003]]></category>
		<category><![CDATA[ASP]]></category>
		<category><![CDATA[Form]]></category>
		<category><![CDATA[formulários]]></category>
		<category><![CDATA[Request]]></category>
		<category><![CDATA[vbscript]]></category>

		<guid isPermaLink="false">http://iranrodrigues.wordpress.com/2008/01/15/obtendo-dados-submetidos-por-formularios-post-em-asp/</guid>
		<description><![CDATA[Este post contém um exercício resolvido em sala, cujo objetivo é calcular o fatorial de um número fornecido por um usuário mediante um formulário.
O código abaixo ilustra a utilização de funções definidas pelo programador (&#8220;fatorial2&#8243;, neste caso) e da coleção Form do objeto Request.
Copiem este código e executem-no, analisando seu funcionamento: 

&#60;%@LANGUAGE=&#34;VBSCRIPT&#34; CODEPAGE=&#34;1252&#34;%&#62;
&#60;%
Function fatorial2(valor)
Dim i, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=iranrodrigues.wordpress.com&blog=2015522&post=63&subd=iranrodrigues&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><h3>Este post contém um exercício resolvido em sala, cujo objetivo é calcular o fatorial de um número fornecido por um usuário mediante um formulário.</h3>
<p>O código abaixo ilustra a utilização de funções definidas pelo programador (&#8220;fatorial2&#8243;, neste caso) e da coleção Form do objeto Request.</p>
<p>Copiem este código e executem-no, analisando seu funcionamento: <span id="more-63"></span></p>
<pre class="brush: vb;">
&lt;%@LANGUAGE=&quot;VBSCRIPT&quot; CODEPAGE=&quot;1252&quot;%&gt;
&lt;%
Function fatorial2(valor)
Dim i, mult
mult = valor
For i = valor-1 To 1 Step -1
mult = mult * i
Next
fatorial2 = mult
End Function

Dim valor, fatorial
valor = Request.Form(&quot;valor&quot;)
If (valor &lt;&gt; &quot;&quot;) Then
fatorial = fatorial2(valor)
End If
%&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=iso-8859-1&quot; /&gt;
&lt;title&gt;Untitled Document&lt;/title&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;%
If (valor &lt;&gt; &quot;&quot;) Then
Response.Write(&quot;Resultado: &quot; &amp; fatorial)
End If
%&gt;
&lt;form id=&quot;form1&quot; name=&quot;form1&quot; method=&quot;post&quot; action=&quot;&quot;&gt;
&lt;label for=&quot;textfield&quot;&gt;Fatorial de:&lt;/label&gt;
&lt;input name=&quot;valor&quot; type=&quot;text&quot; id=&quot;valor&quot; size=&quot;4&quot; maxlength=&quot;4&quot; /&gt;
&lt;label for=&quot;Submit&quot;&gt;&lt;/label&gt;
&lt;input type=&quot;submit&quot; name=&quot;Submit&quot; value=&quot;Calcular&quot; id=&quot;Submit&quot; /&gt;
&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<pre class="brush: vb;">
&lt;%@LANGUAGE=&quot;VBSCRIPT&quot; CODEPAGE=&quot;1252&quot;%&gt;
&lt;%
Dim endereco
' Obtendo o endereço especificado no formulário
endereco = Request.Form(&quot;endereco&quot;)
' Se o endereço não estiver em branco, redirecionar o usuário
If (endereco &lt;&gt; &quot;&quot;) Then
Response.Redirect(endereco)
End If
%&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=iso-8859-1&quot; /&gt;
&lt;title&gt;Untitled Document&lt;/title&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;form id=&quot;form1&quot; name=&quot;form1&quot; method=&quot;post&quot; action=&quot;&quot;&gt;
&lt;label for=&quot;textfield&quot;&gt;URL:&lt;/label&gt;
&lt;input name=&quot;endereco&quot; type=&quot;text&quot; id=&quot;endereco&quot; size=&quot;60&quot; /&gt;
&lt;label for=&quot;Submit&quot;&gt;&lt;/label&gt;
&lt;input type=&quot;submit&quot; name=&quot;Submit&quot; value=&quot;Ir&quot; id=&quot;Submit&quot; /&gt;
&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/iranrodrigues.wordpress.com/63/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/iranrodrigues.wordpress.com/63/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/iranrodrigues.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/iranrodrigues.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/iranrodrigues.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/iranrodrigues.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/iranrodrigues.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/iranrodrigues.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/iranrodrigues.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/iranrodrigues.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/iranrodrigues.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/iranrodrigues.wordpress.com/63/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=iranrodrigues.wordpress.com&blog=2015522&post=63&subd=iranrodrigues&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://iranrodrigues.wordpress.com/2008/01/15/obtendo-dados-submetidos-por-formularios-post-em-asp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a1e43a284b4183793002151688f479f1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">iranrg</media:title>
		</media:content>
	</item>
		<item>
		<title>O Objeto Request</title>
		<link>http://iranrodrigues.wordpress.com/2008/01/14/o-objeto-request/</link>
		<comments>http://iranrodrigues.wordpress.com/2008/01/14/o-objeto-request/#comments</comments>
		<pubDate>Mon, 14 Jan 2008 22:45:54 +0000</pubDate>
		<dc:creator>Iran Rodrigues</dc:creator>
				<category><![CDATA[ASP + VBScript]]></category>
		<category><![CDATA[SA110-06001]]></category>
		<category><![CDATA[TQ200-05003]]></category>
		<category><![CDATA[ASP]]></category>
		<category><![CDATA[Request]]></category>
		<category><![CDATA[vbscript]]></category>

		<guid isPermaLink="false">http://iranrodrigues.wordpress.com/2008/01/14/o-objeto-request/</guid>
		<description><![CDATA[Continuando a série de posts sobre os objetos do ASP, veremos a estrutura do objeto Request.
O objeto Request tem por função acessar as requisições enviadas pelo cliente para o servidor.
Embora este objeto também possua propriedades e métodos, que podem ser vistos aqui (em inglês), o foco deste artigo será o que foi visto em aula, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=iranrodrigues.wordpress.com&blog=2015522&post=65&subd=iranrodrigues&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><h3>Continuando a série de posts sobre os objetos do ASP, veremos a estrutura do objeto <i>Request</i>.</h3>
<p>O objeto <i>Request </i>tem por função acessar as requisições enviadas pelo cliente para o servidor.</p>
<p>Embora este objeto também possua propriedades e métodos, que podem ser vistos <a href="http://www.w3schools.com/asp/asp_ref_request.asp" target="_blank">aqui</a> (em inglês), o foco deste artigo será o que foi visto em aula, que compreende apenas as coleções do objeto <i>Request</i>.</p>
<p>As coleções são:</p>
<p><span id="more-65"></span></p>
<ul>
<li>ClientCertificate</li>
<li>Cookies</li>
<li>Form</li>
<li>QueryString</li>
<li>ServerVariables</li>
</ul>
<p><b>ClientCertificate</b></p>
<p>Esta coleção contém chaves e valores correspondentes a um certificado de segurança que o browser do cliente envia para o servidor. Somente é utilizado em sites que utilizam o protocolo HTTPS (HTTP Seguro), como sites de comércio eletrônico e bancos.</p>
<p>Em razão de sua utilização específica para HTTPS não executaremos o exemplo abaixo, envolvendo esta coleção, que permanecerá apenas na teoria.</p>
<pre class="brush: vb;">
&lt;%
' Retorna a data inicial da validade do certificado:
Response.Write Request.ClientCertificate(&quot;validfrom&quot;)
%&gt;
</pre>
<p><b>Cookies</b></p>
<p>O Request.Cookies é uma coleção que permite recuperar informações sobre o usuário e sua navegação que já tenham sido armazenadas através do Response.Cookie (reveja <a href="http://iranrodrigues.wordpress.com/2007/12/13/o-objeto-response/">aqui</a>).</p>
<p>Por exemplo, para recuperar o login de um usuário que tenha sido gravado em um cookie de nome &#8220;login&#8221;:</p>
<pre class="brush: vb;">
Response.Write(&quot;Usuário: &quot; &amp; Request.Cookies(&quot;login&quot;))
</pre>
<p><b>Form</b></p>
<p>Esta é uma das coleções do Request mais úteis. Permite obter os dados que tenham sido enviados por um formulário utilizando o método <i>post</i>.</p>
<p>Por exemplo, para obter o nome de um usuário que o preencheu em um campo chamado &#8220;nome&#8221; de um formulário:</p>
<pre class="brush: vb;">
Response.Write(&quot;O nome informado foi: &quot; &amp; Request.Form(&quot;nome&quot;))
</pre>
<p><b>QueryString</b></p>
<p>A coleção QueryString tem a mesma aplicação da Form. A diferença é que a QueryString aplica-se a dados submetidos via <i>get</i> ou variáveis inseridas diretamente na URL.</p>
<p>Exemplo:</p>
<p>Imagine um link que aponte para &#8220;excluir.asp?codigo=20&#8243;. O link indica que a página é &#8220;excluir.asp&#8221; e inclui ainda uma variável chamada &#8220;codigo&#8221; com valor 20. Para recuperarmos este valor no ASP, utilizamos:</p>
<pre class="brush: vb;">
Response.Write(&quot;Excluindo registro de código &quot; &amp; Request.QueryString(&quot;codigo&quot;) &amp; &quot;...&quot;)
</pre>
<p><b>ServerVariables</b></p>
<p>Esta coleção guarda diversas informações sobre o cliente e o servidor. Para acessarmos tais informações, utilizamos:</p>
<pre class="brush: vb;">
Request.ServerVariables(&quot;variavel&quot;)
</pre>
<p>Onde em &#8220;variavel&#8221; colocamos uma das variáveis predefinidas para esta coleção. Uma lista das variáveis pode ser encontrada no livro ou <a href="http://www.w3schools.com/asp/coll_servervariables.asp" target="_blank">aqui</a> (em inglês).</p>
<p>Alguns exemplos:</p>
<pre class="brush: vb;">
' Exibindo o IP do cliente:
Response.Write(Request.ServerVariables(&quot;REMOTE_ADDR&quot;))
' Exibindo o IP do servidor:
Response.Write(Request.ServerVariables(&quot;LOCAL_ADDR&quot;))
' Exibindo a página de onde o usuário veio:
Response.Write(Request.ServerVariables(&quot;HTTP_REFERER&quot;))
' Exibindo informações sobre o browser do usuário:
Response.Write(Request.ServerVariables(&quot;HTTP_USER_AGENT&quot;))
</pre>
<p>No próximo post, veremos o objeto <i>Server</i>.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/iranrodrigues.wordpress.com/65/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/iranrodrigues.wordpress.com/65/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/iranrodrigues.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/iranrodrigues.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/iranrodrigues.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/iranrodrigues.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/iranrodrigues.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/iranrodrigues.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/iranrodrigues.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/iranrodrigues.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/iranrodrigues.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/iranrodrigues.wordpress.com/65/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=iranrodrigues.wordpress.com&blog=2015522&post=65&subd=iranrodrigues&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://iranrodrigues.wordpress.com/2008/01/14/o-objeto-request/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a1e43a284b4183793002151688f479f1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">iranrg</media:title>
		</media:content>
	</item>
		<item>
		<title>O objeto Response</title>
		<link>http://iranrodrigues.wordpress.com/2007/12/13/o-objeto-response/</link>
		<comments>http://iranrodrigues.wordpress.com/2007/12/13/o-objeto-response/#comments</comments>
		<pubDate>Thu, 13 Dec 2007 23:07:03 +0000</pubDate>
		<dc:creator>Iran Rodrigues</dc:creator>
				<category><![CDATA[ASP + VBScript]]></category>
		<category><![CDATA[SA110-06001]]></category>
		<category><![CDATA[TQ200-05003]]></category>
		<category><![CDATA[ASP]]></category>
		<category><![CDATA[cookies]]></category>
		<category><![CDATA[Objetos]]></category>
		<category><![CDATA[Response]]></category>
		<category><![CDATA[vbscript]]></category>

		<guid isPermaLink="false">http://iranrodrigues.wordpress.com/2007/12/13/o-objeto-response/</guid>
		<description><![CDATA[A partir deste post explicarei resumidamente como utilizar os principais objetos do ASP. Iniciaremos com o objeto Response.
O Response é o primeiro objeto do ASP que utilizamos ao começar a programar. Ao utilizarmos o comando Response.Write para escrever algo, estamos na verdade fazendo uso do método Write do objeto Response.
O objeto Response, no entanto, tem [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=iranrodrigues.wordpress.com&blog=2015522&post=64&subd=iranrodrigues&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><h3>A partir deste post explicarei resumidamente como utilizar os principais objetos do ASP. Iniciaremos com o objeto Response.</h3>
<p>O <i>Response </i>é o primeiro objeto do ASP que utilizamos ao começar a programar. Ao utilizarmos o comando <i>Response.Write</i> para escrever algo, estamos na verdade fazendo uso do método <i>Write </i>do objeto <i>Response</i>.</p>
<p>O objeto Response, no entanto, tem outros usos. Em outras palavras, este objeto possui outros métodos, além de algumas propriedades e uma coleção. Para quem não lembra, um método é como uma função, enquanto que uma propriedade assemelha-se a uma variável. A coleção é uma espécie de array.</p>
<p>Não vamos estudar todos os métodos e propriedades, apenas os principais. Quem desejar conhecer o objeto mais a fundo, comece <a href="http://www.w3schools.com/asp/asp_ref_response.asp" target="_blank">clicando aqui</a> (em inglês).</p>
<p>A função geral do objeto <i>Response </i>é acessar informações que são enviadas do servidor para o browser do cliente.</p>
<p><b>Response.Write</b></p>
<p>O Write é o já famoso método que escreve texto (podendo incluir código HTML e/ou Javascript) na página gerada. Equivale ao <i>echo </i>do PHP ou ao <i>document.write</i> do Javascript.</p>
<p>Ex.:</p>
<p><span id="more-64"></span></p>
<pre class="brush: vb;">
Response.Write(&quot;Linha de cima...&lt;br&gt;&quot;)
Response.Write(&quot;Linha de baixo!&quot;)
Dim numero
numero = 15
Response.Write(numero)
</pre>
<p><b>Response.Redirect</b></p>
<p>O Redirect é um método que permite encaminhar o usuário para uma URL. Equivale ao <i>header(&#8220;Location: &#8220;)</i> do PHP e ao<i> location.href </i>do Javascript (embora esta última seja uma propriedade, não um método).</p>
<p>Ex.:</p>
<pre class="brush: vb;">
Dim opcao
opcao =3
' A depender do valor da variável &quot;opcao&quot; o usuário vai para uma página diferente
Select Case opcao
Case 1
Response.Redirect(&quot;http://www.google.com.br&quot;)
Case 2
Response.Redirect(&quot;http://www.microcamp.com.br&quot;)
Case 3
Response.Redirect(&quot;http://www.iranrodrigues.com&quot;)
End Select
</pre>
<p><b>Response.Buffer</b></p>
<p>O <i>Buffer </i>é uma propriedade lógica &#8211; seu valor pode ser <i>True </i>ou <i>False</i>. Sua função é determinar se a saída produzida pelo processamento do script no servidor será enviada aos poucos (quando o valor é <i>False</i>) ou será enviada somente ao término de todo o processamento (quando o valor é <i>True</i>).</p>
<p>O valor padrão desta propriedade é <i>False</i>. Ou seja, se não a alterarmos, o comportamento padrão do servidor será enviar o fluxo HTML à medida em que o código é processado.</p>
<p><b>Response.Cookies</b></p>
<p>O &#8220;Cookies&#8221; é uma coleção que permite a criação (e alteração) de cookies na máquina do cliente. Os cookies servem para armazenar informações sobre a visita do usuário a uma página, como por exemplo o nome de usuário utilizado para efetuar login no site.</p>
<p>Para criarmos um cookie chamado &#8220;usuario&#8221; com o valor &#8220;maria&#8221;, utilizamos:</p>
<pre class="brush: vb;">
Response.Cookies(&quot;usuario&quot;)  = &quot;maria&quot;
</pre>
<p>Além de simplesmente definir um valor para o cookie, podemos alterar algumas propriedades extras:</p>
<pre class="brush: vb;">
Response.Cookies(&quot;usuario&quot;)  = &quot;maria&quot;
' Definindo uma data de expiração (daqui a 30 dias). Após essa data, o cookie não é mais utilizado.
Response.Cookies(&quot;usuario&quot;).Expires = Now + 30
' Definindo o domínio que pode acessar o cookie:
Response.Cookies(&quot;usuario&quot;).Domain = &quot;microcamp.com.br&quot;
' Definindo o caminho das páginas que podem acessar o cookie:
Response.Cookies(&quot;usuario&quot;).Path = &quot;/www/home/pagina&quot;
' Definindo se o cookie é seguro:
Response.Cookies(&quot;usuario&quot;).Secure = True
</pre>
<p>Para acessar as informações gravadas em um cookie, teremos de utilizar um outro objeto &#8211; o <i>Request</i>. Falarei sobre ele no próximo post.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/iranrodrigues.wordpress.com/64/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/iranrodrigues.wordpress.com/64/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/iranrodrigues.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/iranrodrigues.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/iranrodrigues.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/iranrodrigues.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/iranrodrigues.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/iranrodrigues.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/iranrodrigues.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/iranrodrigues.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/iranrodrigues.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/iranrodrigues.wordpress.com/64/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=iranrodrigues.wordpress.com&blog=2015522&post=64&subd=iranrodrigues&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://iranrodrigues.wordpress.com/2007/12/13/o-objeto-response/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a1e43a284b4183793002151688f479f1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">iranrg</media:title>
		</media:content>
	</item>
		<item>
		<title>Subrotinas e funções em VBScript</title>
		<link>http://iranrodrigues.wordpress.com/2007/12/04/subrotinas-e-funcoes-em-vbscript/</link>
		<comments>http://iranrodrigues.wordpress.com/2007/12/04/subrotinas-e-funcoes-em-vbscript/#comments</comments>
		<pubDate>Tue, 04 Dec 2007 21:40:07 +0000</pubDate>
		<dc:creator>Iran Rodrigues</dc:creator>
				<category><![CDATA[ASP + VBScript]]></category>
		<category><![CDATA[SA110-06001]]></category>
		<category><![CDATA[TQ200-05003]]></category>
		<category><![CDATA[ASP]]></category>
		<category><![CDATA[funções]]></category>
		<category><![CDATA[subrotinas]]></category>
		<category><![CDATA[vbscript]]></category>

		<guid isPermaLink="false">http://iranrodrigues.wordpress.com/2007/12/04/subrotinas-e-funcoes-em-vbscript/</guid>
		<description><![CDATA[O VBScript possibilita a segmentação do código &#8211; tornando-o mais objetivo e reutilizável &#8211; com a criação de subrotinas e funções. Veja como utilizá-las e quais suas diferenças.
Nesta aula trabalhamos com subrotinas e funções no VBScript. O conceito de função na programação já foi visto em aulas anteriores. Uma explicação breve pode ser vista nesta [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=iranrodrigues.wordpress.com&blog=2015522&post=62&subd=iranrodrigues&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><h3>O VBScript possibilita a segmentação do código &#8211; tornando-o mais objetivo e reutilizável &#8211; com a criação de subrotinas e funções. Veja como utilizá-las e quais suas diferenças.</h3>
<p>Nesta aula trabalhamos com subrotinas e funções no VBScript. O conceito de função na programação já foi visto em aulas anteriores. Uma explicação breve pode ser vista <a href="http://iranrodrigues.wordpress.com/2007/11/06/criando-funcoes-em-javascript/">nesta aula</a>, sobre funções no Javascript.</p>
<p>A grande diferença entre utilizar funções no Javascript, no PHP ou no VBScript é que, neste último, existe dois tipos de &#8220;função&#8221;: a função propriamente dita e a subrotina. Na verdade, ambas só diferem em uma questão: a função retorna um valor, enquanto que a subrotina não retorna nada.</p>
<p>Para ficar mais claro, vamos a um exemplo:</p>
<p><span id="more-62"></span></p>
<pre class="brush: vb;">
&lt;%
' declaração de uma subrotina chamada mostraData
Sub mostraData ()
Dim hoje, dia, mes, ano
' array meses
Dim meses(11)
meses(0) = &quot;janeiro&quot;
meses(1) = &quot;fevereiro&quot;
meses(2) = &quot;março&quot;
meses(3) = &quot;abril&quot;
meses(4) = &quot;maio&quot;
meses(5) = &quot;junho&quot;
meses(6) = &quot;julho&quot;
meses(7) = &quot;agosto&quot;
meses(8) = &quot;setembro&quot;
meses(9) = &quot;outubro&quot;
meses(10) = &quot;novembro&quot;
meses(11) = &quot;dezembro&quot;
' obtém data atual
hoje = Date
' extrai o dia da data
dia = Day(hoje)
' extrai o mês da data
mes = Month(hoje)
' extrai o ano da data
ano = Year(hoje)
' exibe a data completa
Response.Write(dia &amp; &quot; de &quot; &amp; meses(mes-1) &amp; &quot; de &quot; &amp; ano)
' fim da subrotina
End Sub
</pre>
<p>Ao executar o código acima, vocês perceberão que nada acontece. Não há nada de errado. Apenas declaramos uma subrotina, mas não a utilizamos. Para utilizá-la, basta o seguinte:</p>
<pre class="brush: vb;">
' chamada à função
mostraData
' ou
Call mostraData
' com ou sem parênteses
mostraData()
Call mostraData()
</pre>
<p>Utilizamos quatro chamadas à função só para que ficasse claro que poderíamos fazê-lo de várias formas diferentes. Com ou sem a palavra &#8220;Call&#8221; e com ou sem parênteses.</p>
<p>Após a execução é possível compreender melhor o código da subrotina. O que ela faz é obter a data atual, extrair algumas informações desta data e exibí-la de uma forma específica. Após seu processamento, nenhuma informação produzida na subrotina é utilizada posteriormente no script, já que subrotinas não retornam valores.</p>
<p>Vamos conferir outro exemplo, desta vez utilizando parâmetros:</p>
<pre class="brush: vb;">
&lt;%
Sub fatorial(numero)
Dim i, mult
mult = numero
For i = numero-1 To 1 Step -1
mult = mult * i
Next
Response.Write(mult)
End Sub
</pre>
<p>O parâmetro em questão é o que está entre os parênteses: o &#8220;numero&#8221;. Com a utilização de parâmetros (ou argumentos) é possível introduzir valores na subrotina ou função. No exemplo acima, a subrotina exibe o fatorial de um valor especificado. Como especificar esse valor? Vejamos:</p>
<pre class="brush: vb;">
' chamada à subrotina fatorial
Call fatorial(5)
</pre>
<p>O valor fornecido (5) entra na subrotina como sendo o valor para a variável de nome &#8220;numero&#8221;. Ou seja, os cálculos envolvendo a variável &#8220;numero&#8221; tomam por seu valor o parâmetro passado na chamada da subrotina. Desta forma podemos exibir o valor do fatorial de qualquer número, basta especificá-lo como parâmetro.  Exemplos:</p>
<pre class="brush: vb;">
Call fatorial(9)
Call fatorial(8)
Call fatorial(7)
Call fatorial(6)
</pre>
<p>E se desejarmos fazer algo com o valor do fatorial, como armazená-lo em uma variável ou inserí-lo em um cálculo matemático? Isso só é possível se utilizarmos funções ao invés de subrotinas. Vejamos:</p>
<pre class="brush: vb;">
Function fatorial2(numero)
Dim i, mult
mult = numero
For i = valor-1 To 1 Step -1
mult = mult * i
Next
fatorial2 = mult
End Function
</pre>
<p>A declaração de uma função é bem similar à declaração de uma subrotina. A diferença é que em algum ponto da função é necessário atribuir um valor à função. Neste exemplo, isto acontece ao colocarmos &#8220;fatorial2 = mult&#8221;. Quando atribuímos um valor à função, estamos na verdade retornando um valor. Ou seja, é como se a função possuísse um valor, semelhante a uma variável.</p>
<p>Vejam também que não mostramos qual o resultado do fatorial. Não há nenhum <i>Response.Write </i>dentro da função. Na verdade, as funções tendem a ser tão genéricas quanto possível. Não exibindo o valor durante o processamento, a função permite que o façamos apenas quando for necessário (e se realmente for). Em uma determinada situação, poderemos exibir o resultado imediatamente, em outra, talvez não seja interessante exibí-lo. No exemplo acima, para mostrarmos esse valor ou armazenarmos em uma variável faríamos o seguinte:</p>
<pre class="brush: vb;">
' Chamando função
Dim valorFat
' Armazenando seu valor de retorno em uma variável
valorFat = fatorial2(4)
' Exibindo seu valor de retorno
Response.Write(valorFat)
' Inserindo a função dentro de uma expressão matemática e exibindo o resultado
Response.Write(fatorial2(5) + fatorial2(6))
%&gt;
</pre>
<p>Dúvidas? Comentem&#8230;</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/iranrodrigues.wordpress.com/62/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/iranrodrigues.wordpress.com/62/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/iranrodrigues.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/iranrodrigues.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/iranrodrigues.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/iranrodrigues.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/iranrodrigues.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/iranrodrigues.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/iranrodrigues.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/iranrodrigues.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/iranrodrigues.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/iranrodrigues.wordpress.com/62/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=iranrodrigues.wordpress.com&blog=2015522&post=62&subd=iranrodrigues&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://iranrodrigues.wordpress.com/2007/12/04/subrotinas-e-funcoes-em-vbscript/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a1e43a284b4183793002151688f479f1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">iranrg</media:title>
		</media:content>
	</item>
		<item>
		<title>Estruturas condicionais em VBScript</title>
		<link>http://iranrodrigues.wordpress.com/2007/11/27/estruturas-condicionais-em-vbscript/</link>
		<comments>http://iranrodrigues.wordpress.com/2007/11/27/estruturas-condicionais-em-vbscript/#comments</comments>
		<pubDate>Tue, 27 Nov 2007 23:24:05 +0000</pubDate>
		<dc:creator>Iran Rodrigues</dc:creator>
				<category><![CDATA[ASP + VBScript]]></category>
		<category><![CDATA[SA110-06001]]></category>
		<category><![CDATA[TQ200-05003]]></category>
		<category><![CDATA[ASP]]></category>
		<category><![CDATA[estruturas condicionais]]></category>
		<category><![CDATA[if]]></category>
		<category><![CDATA[select]]></category>
		<category><![CDATA[vbscript]]></category>

		<guid isPermaLink="false">http://iranrodrigues.wordpress.com/2007/11/27/estruturas-condicionais-em-vbscript/</guid>
		<description><![CDATA[Veja como utilizar no VBScript as estruturas fundamentais de qualquer linguagem de programação: as estruturas condicionais.
As estruturas condicionais são conhecidas também como estruturas de decisão ou de seleção e, de forma geral, são uma das estruturas mais básicas de uma linguagem de programação. Caracterizam-se por permitir a execução de determinados códigos de programação dependendo da [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=iranrodrigues.wordpress.com&blog=2015522&post=44&subd=iranrodrigues&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><h3>Veja como utilizar no VBScript as estruturas fundamentais de qualquer linguagem de programação: as estruturas condicionais.</h3>
<p>As estruturas condicionais são conhecidas também como estruturas de decisão ou de seleção e, de forma geral, são uma das estruturas mais básicas de uma linguagem de programação. Caracterizam-se por permitir a execução de determinados códigos de programação dependendo da veracidade de uma condição.</p>
<p>O VBScript, assim como o PHP e o Javascript, possui estruturas do tipo &#8220;Se&#8221; e do tipo &#8220;Faça caso&#8221;, sendo o primeiro tipo recomendado para comparações únicas e o segundo para comparações seqüenciais envolvendo uma mesma variável ou valor.</p>
<p>Vamos a um exemplo simples: queremos exibir uma mensagem informando se um número armazenado em uma variável é par ou ímpar. Para tal, basta uma única comparação: é só compararmos o resto da divisão do número dado por 2. Se esse resto for zero, o número é par. Senão, é ímpar.</p>
<p><span id="more-44"></span></p>
<pre class="brush: vb;">
Dim a
a = 13
' Se o resto da divisão de &quot;a&quot; por 2 for zero, então...
If (a mod 2 = 0) Then
Response.Write(a &amp; &quot; é par!&quot;)
End If
</pre>
<p>Simples, não é mesmo? Tem duas coisas que diferem este &#8220;if&#8221; do &#8220;if&#8221; do PHP ou Javascript. A primeira é a palavra <i>Then</i>, que significa &#8220;então&#8221;. Não usamos nada parecido no PHP ou Javascript, mas quem programa em Pascal ou Delphi, vai achar o comando familiar. A segunda é a expressão <i>End If</i>, que finaliza o <i>If</i>. Em outras palavras, serve para delimitar o término das instruções que serão executadas a depender da condição. Lembrem-se de que no PHP e no Javascript utilizávamos as chaves com o mesmo objetivo.</p>
<p>Analisando o exemplo anterior, podemos perceber que não acontecerá nada ao ser executado. Isto é porque determinamos um comando a ser executado apenas para quando a condição seja verdadeira. Como o valor da variável é ímpar, nada acontece. Para tanto, utilizaremos o bom e velho <i>Else</i> (senão).</p>
<pre class="brush: vb;">
Dim a
a = 13
' Se o resto da divisão de &quot;a&quot; por 2 for zero, então...
If (a mod 2 = 0) Then
Response.Write(a &amp; &quot; é par!&quot;)
' Senão...
Else
Response.Write(a &amp; &quot; é ímpar!&quot;)
End If
</pre>
<p>Pronto. Problema resolvido. O código abaixo mostra, para todos os números de 1 a 100, quais são pares e quais são ímpares:</p>
<pre class="brush: vb;">
&lt;%
Dim valor
For valor = 1 to 100
' Se o resto da divisão de &quot;valor&quot; por 2 for 0, então...
If (valor mod 2 = 0) Then
Response.Write(valor &amp; &quot; é par!&lt;br&gt;&quot;)
' Senão...
Else
Response.Write(valor &amp; &quot; é impar!&lt;br&gt;&quot;)
' Fim do &lt;em&gt;If&lt;/em&gt;
End If
' Fim do &lt;em&gt;For&lt;/em&gt;
Next
%&gt;
</pre>
<p>Para um If mais complexo, utilizando mais de uma condição, é só utilizar os operadores relacionais, vistos <a href="http://iranrodrigues.wordpress.com/2007/11/06/operadores-do-vbscript-logicos-e-de-comparacao/">nesta aula</a>, além de utilizar adequadamente os parênteses. Exemplo:</p>
<pre class="brush: vb;">
Dim dia
' A função Date retorna a data atual
dia = Date
' A função WeekDay informa o dia da semana de uma data
' Se hoje for terça ou quinta...
If ((WeekDay(dia)=3) Or (WeekDay(dia)=5)) Then
Response.Write(&quot;Hoje teremos aula!&quot;)
End If
</pre>
<p>Para múltiplas comparações envolvendo uma mesma variável, torna-se mais interessante utilizar o comando <i>Select</i>. Confiram o exemplo abaixo:</p>
<pre class="brush: vb;">
Dim hoje, diaSemana
hoje = Date
diaSemana = WeekDay(hoje)
' A variável a ser comparada é a &quot;diaSemana&quot;
Select Case diaSemana
' Caso o valor dela seja 1...
Case 1
Response.Write(&quot;Hoje é domingo&quot;)
' Caso o valor dela seja 2...
Case 2
Response.Write(&quot;Hoje é segunda&quot;)
Case 3
Response.Write(&quot;Hoje é terça&quot;)
Case 4
Response.Write(&quot;Hoje é quarta&quot;)
Case 5
Response.Write(&quot;Hoje é quinta&quot;)
Case 6
Response.Write(&quot;Hoje é sexta&quot;)
' Para outro caso não listado acima...
Case Else
Response.Write(&quot;Hoje é sábado&quot;)
End Select
</pre>
<p>Esta é a estrutura padrão do Select. Ele realiza várias comparações a partir de uma mesma variável (ou valor), executando as instruções correspondentes assim que uma comparação é bem-sucedida. Percebam ainda a existencia de um &#8220;Case Else&#8221;. Seu uso é opcional, servindo para definir instruções que serão executadas apenas quando nenhuma condição anterior tiver sido verdadeira.</p>
<p>Bom, é isso. Quem quiser ler mais, pode ir <a href="http://www.w3schools.com/vbscript/vbscript_conditionals.asp" target="_blank">neste link</a> (em inglês).</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/iranrodrigues.wordpress.com/44/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/iranrodrigues.wordpress.com/44/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/iranrodrigues.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/iranrodrigues.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/iranrodrigues.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/iranrodrigues.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/iranrodrigues.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/iranrodrigues.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/iranrodrigues.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/iranrodrigues.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/iranrodrigues.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/iranrodrigues.wordpress.com/44/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=iranrodrigues.wordpress.com&blog=2015522&post=44&subd=iranrodrigues&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://iranrodrigues.wordpress.com/2007/11/27/estruturas-condicionais-em-vbscript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a1e43a284b4183793002151688f479f1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">iranrg</media:title>
		</media:content>
	</item>
		<item>
		<title>Estrutura de repetição &#8220;Do&#8230; Loop&#8221;</title>
		<link>http://iranrodrigues.wordpress.com/2007/11/21/estrutura-de-repeticao-do-loop/</link>
		<comments>http://iranrodrigues.wordpress.com/2007/11/21/estrutura-de-repeticao-do-loop/#comments</comments>
		<pubDate>Wed, 21 Nov 2007 23:00:08 +0000</pubDate>
		<dc:creator>Iran Rodrigues</dc:creator>
				<category><![CDATA[ASP + VBScript]]></category>
		<category><![CDATA[SA110-06001]]></category>
		<category><![CDATA[TQ200-05003]]></category>
		<category><![CDATA[ASP]]></category>
		<category><![CDATA[do]]></category>
		<category><![CDATA[estruturas de repetição]]></category>
		<category><![CDATA[loop]]></category>
		<category><![CDATA[until]]></category>
		<category><![CDATA[vbscript]]></category>
		<category><![CDATA[while]]></category>

		<guid isPermaLink="false">http://iranrodrigues.wordpress.com/2007/11/21/estrutura-de-repeticao-do-loop/</guid>
		<description><![CDATA[O &#8220;Do&#8230; Loop&#8221; é a estrutura de repetição mais versátil do VBScript, podendo ser utilizada em diversas situações.
Além do for e do for each, ambos vistos na aula passada, o VBScript dispõe de mais algumas estruturas de repetição, das quais destaco o &#8220;Do&#8230; Loop&#8221;.
Utilizamos o &#8220;Do&#8230; Loop&#8221; quando pretendemos repetir uma ou mais instruções por [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=iranrodrigues.wordpress.com&blog=2015522&post=43&subd=iranrodrigues&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><h3>O &#8220;Do&#8230; Loop&#8221; é a estrutura de repetição mais versátil do VBScript, podendo ser utilizada em diversas situações.</h3>
<p>Além do <i>for</i> e do <i>for each</i>, ambos vistos na <a href="http://iranrodrigues.wordpress.com/2007/11/10/utilizando-arrays-no-vbscript/">aula passada</a>, o VBScript dispõe de mais algumas estruturas de repetição, das quais destaco o &#8220;Do&#8230; Loop&#8221;.</p>
<p>Utilizamos o &#8220;Do&#8230; Loop&#8221; quando pretendemos repetir uma ou mais instruções por um número indeterminado de vezes, ou seja, enquanto no <i>for</i> é necessário especificar quantas repetições queremos, no &#8220;Do&#8230; Loop&#8221; o que fazemos é estabelecer uma condição que determina quando a repetição irá parar, não importando o número de repetições.</p>
<p><span id="more-43"></span></p>
<p>O &#8220;Do&#8230; Loop&#8221;, na verdade, pode ser considerado não apenas uma, mas quatro estruturas diferentes. Ele pode ser utilizado para repetir algo enquanto uma condição for verdadeira (<i>While</i>) ou repetir algo até que uma condição seja verdadeira (<i>Until</i>). Para qualquer uma destas duas possibilidades, é possível comparar primeiro e então executar ou não as instruções (dependendo da condição) ou executar primeiro para depois comparar (e aí, repetir ou não, a depender da condição).</p>
<p>Vamos a exemplos práticos. O primeiro é um script que mostra o valor da variável &#8220;a&#8221; (inicialmente zero) e incrementa seu valor. Mostra o novo valor e incrementa novamente e assim por diante, enquanto o valor de &#8220;a&#8221; permanecer menor que 10.</p>
<pre class="brush: vb;">
Dim a
a = 0
' Faça enquanto &quot;a&quot; for menor que 10
Do While (a&lt;10)
Response.Write(a &amp; &quot;&lt;br&gt;&quot;)
a = a + 1
' Volta ao &quot;Do&quot;
Loop
Response.Write(&quot;Fim 'Do While... Loop'&lt;br&gt;&quot;)
</pre>
<p>O &#8220;Do While&#8221; indica que a condição é testada primeiro, para que as instruções sejam ou não executadas. Se inicializássemos &#8220;a&#8221; com o valor 10, a condição &#8220;a&lt;10&#8243; seria falsa. Portanto, as instruções subseqüentes não seriam executadas, e o programa continuaria a partir da instrução <i>Loop</i>, que determina o fim do &#8220;Do While&#8221;.</p>
<p>O exemplo a seguir é similar, mas ilustra o uso do <i>Until</i>, fazendo com que as instruções sejam executadas até que a condição seja verdadeira. Logo, inicialmente esta deve ser falsa, senão nenhuma execução ocorreria. Inicialize &#8220;a&#8221; com o valor 10 e comprove.</p>
<pre class="brush: vb;">
a = 0
' Faça até que &quot;a&quot; seja igual a 10
Do Until (a=10)
Response.Write(a &amp; &quot;&lt;br&gt;&quot;)
a = a + 1
' Volta ao &quot;Do&quot;
Loop
Response.Write(&quot;Fim 'Do Until... Loop'&lt;br&gt;&quot;)
</pre>
<p>O próximo exemplo ilustra o uso do <i>While</i> após o <i>Loop</i>. Na prática, isso faz com que as instruções sejam executadas para, em seguida, a condição ser testada. Veja que a condição de repetição é &#8220;a&gt;10&#8243;. &#8220;a&#8221; inicialmente vale 0, mas como a condição é testada só no final, o valor de &#8220;a&#8221; é mostrado, a variável é incrementada e, finalmente, a condição resulta em falso, de forma que nenhuma repetição acontece. Tente consertar o script para que ele exiba os números de 0 a 9.</p>
<pre class="brush: vb;">
a = 0
' Faça...
Do
Response.Write(a &amp; &quot;&lt;br&gt;&quot;)
a = a + 1
' Enquanto &quot;a&quot; for maior que 10, volte ao &quot;Do&quot;
Loop While (a&gt;10)
Response.Write(&quot;Fim 'Do... Loop While'&lt;br&gt;&quot;)
</pre>
<p>Finalmente, o próximo exemplo mostra o uso do <i>Until</i> após o <i>Loop</i>. Da mesma forma que no exemplo anterior, a condição é testada após a execução do código dentro do &#8220;Do&#8221;.</p>
<pre class="brush: vb;">
a = 0
' Faça...
Do
Response.Write(a &amp; &quot;&lt;br&gt;&quot;)
a = a + 1
' Até que &quot;a&quot; seja maior que 10, volte ao &quot;Do&quot;
Loop Until (a&gt;10)
Response.Write(&quot;Fim 'Do... Loop Until'&lt;br&gt;&quot;)
</pre>
<p>O exemplo a seguir, o último de hoje, ilustra o uso do &#8220;Do&#8230; Loop Until&#8221; para percorrer o array chamado &#8220;modulos&#8221; em busca do valor &#8220;ASP&#8221;. Ele compara o valor de cada um dos elementos do array, parando apenas quando encontra o elemento de valor &#8220;ASP&#8221;. Perceba que, da forma que foi construído, não importa a localização do valor &#8220;ASP&#8221; no array, ele sempre será encontrado.</p>
<pre class="brush: vb;">
' Declaração do array
Dim modulos(5)
' Inicialização
modulos(0) = &quot;Javascript&quot;
modulos(1) = &quot;PHP/MySQL&quot;
modulos(2) = &quot;ASP&quot;
modulos(3) = &quot;Flash&quot;
modulos(4) = &quot;Projeto&quot;
' Declaração da variável do índice
Dim i
i = 0
' Faça...
Do
' Mostra o elemento de índice &quot;i&quot;
Response.Write(modulos(i) &amp; &quot;&lt;br&gt;&quot;)
' Incremento do índice
i = i + 1
Loop Until (modulos(i-1) = &quot;ASP&quot;)
</pre>
<p>Como exercício, modifique o código acima, trocando o &#8220;Do&#8230; Loop Until&#8221; por &#8220;Do While&#8230; Loop&#8221;.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/iranrodrigues.wordpress.com/43/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/iranrodrigues.wordpress.com/43/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/iranrodrigues.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/iranrodrigues.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/iranrodrigues.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/iranrodrigues.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/iranrodrigues.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/iranrodrigues.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/iranrodrigues.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/iranrodrigues.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/iranrodrigues.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/iranrodrigues.wordpress.com/43/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=iranrodrigues.wordpress.com&blog=2015522&post=43&subd=iranrodrigues&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://iranrodrigues.wordpress.com/2007/11/21/estrutura-de-repeticao-do-loop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a1e43a284b4183793002151688f479f1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">iranrg</media:title>
		</media:content>
	</item>
		<item>
		<title>Exercício &#8211; Arrays (valendo ponto)</title>
		<link>http://iranrodrigues.wordpress.com/2007/11/15/exercicio-arrays-valendo-ponto/</link>
		<comments>http://iranrodrigues.wordpress.com/2007/11/15/exercicio-arrays-valendo-ponto/#comments</comments>
		<pubDate>Fri, 16 Nov 2007 01:54:27 +0000</pubDate>
		<dc:creator>Iran Rodrigues</dc:creator>
				<category><![CDATA[ASP + VBScript]]></category>
		<category><![CDATA[SA110-06001]]></category>
		<category><![CDATA[TQ200-05003]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[ASP]]></category>
		<category><![CDATA[exercício]]></category>
		<category><![CDATA[vbscript]]></category>

		<guid isPermaLink="false">http://iranrodrigues.wordpress.com/2007/11/15/exercicio-arrays-valendo-ponto/</guid>
		<description><![CDATA[Conforme prometido, aqui vai um exercício valendo um ponto para a nota de ASP. Enviem todo o codigo produzido para meu e-mail.

Crie um array unidimensional com 50 elementos;
Insira valores numéricos em cada uma de suas posições;
Exiba todos os valores armazenados no array;
Informe a soma de todos os elementos;
Informe a média dos mesmos;
Informe a mesma média, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=iranrodrigues.wordpress.com&blog=2015522&post=37&subd=iranrodrigues&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Conforme prometido, aqui vai um exercício valendo um ponto para a nota de ASP. Enviem todo o codigo produzido para meu e-mail.</p>
<ol>
<li>Crie um array unidimensional com 50 elementos;</li>
<li>Insira valores numéricos em cada uma de suas posições;</li>
<li>Exiba todos os valores armazenados no array;</li>
<li>Informe a soma de todos os elementos;</li>
<li>Informe a média dos mesmos;</li>
<li>Informe a mesma média, mas arrendondando-a para um inteiro;</li>
<li>Transfira todos os elementos do array para um outro array, invertendo as posições (ex.: o último elemento do array original vai para a primeira posição do novo array, o penúltimo para a segunda, etc.).</li>
</ol>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/iranrodrigues.wordpress.com/37/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/iranrodrigues.wordpress.com/37/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/iranrodrigues.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/iranrodrigues.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/iranrodrigues.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/iranrodrigues.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/iranrodrigues.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/iranrodrigues.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/iranrodrigues.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/iranrodrigues.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/iranrodrigues.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/iranrodrigues.wordpress.com/37/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=iranrodrigues.wordpress.com&blog=2015522&post=37&subd=iranrodrigues&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://iranrodrigues.wordpress.com/2007/11/15/exercicio-arrays-valendo-ponto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a1e43a284b4183793002151688f479f1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">iranrg</media:title>
		</media:content>
	</item>
	</channel>
</rss>