Karuta’s ASP & M$ SQLserver

Dicas, códigos e outras coisinhas de meus estudos para não esquecer…

Archive for junho \17\UTC 2008

Resultado de um SELECT separado por VIRGULA

Posted by karuta em junho 17, 2008

DECLARE @resultado VARCHAR(MAX)
 SELECT @resultado = COALESCE(@resultado + ',' ,'') + [coluna da tabela]
 FROM [tabela]
 SELECT @resultado

 

Para melhorar ainda mais o código podemos tirar os espaços da busca *

DECLARE @resultado VARCHAR(MAX)
SELECT @resultado = COALESCE(@resultado + ',' ,'') + ltrim(rtrim(email))
FROM [yb_artistas]
SELECT @resultado

* Dica de Alessandro – DTI-TC

Anúncios

Posted in store procedure | Leave a Comment »

Script para dividir uma coluna em duas colunas

Posted by karuta em junho 11, 2008

Script para separa dados de 1 coluna em 2 outros colunas distintas:

CREATE TABLE EMP_Demo
   
(EMP_PAY VARCHAR(20
),
               
EMP_NAME      VARCHAR(20
),
               
PAY_SCALE     VARCHAR(20
));
INSERT INTO EMP_DEMO(EMP_PAY
)
       
VALUES    (‘ALPESH,7009′
)
INSERT INTO EMP_DEMO(EMP_PAY
)
       
VALUES    (‘KRUTI,9909′
)
INSERT INTO EMP_DEMO(EMP_PAY
)
       
VALUES    (‘TANMAY,16000.7′
)
INSERT INTO EMP_DEMO(EMP_PAY
)
       
VALUES    (‘NESHA,6060.8′
)
INSERT INTO EMP_DEMO(EMP_PAY
)
       
VALUES    (‘DEVANG,14000′
)
UPDATE
EMP_Demo
   
SET EMP_NAME = LEFT(EMP_PAY,CHARINDEX(‘,’,EMP_PAY)-1
)
UPDATE
EMP_Demo
   
SET PAY_SCALE = RIGHT(EMP_PAY,LEN(EMP_PAY)-CHARINDEX(‘,’,EMP_PAY
))
SELECT
*
   
FROM
EMP_Demo
DROP TABLE
EMP_Demo
GO

Posted in sql server | Leave a Comment »

como faço para dar nome a uma janela?

Posted by karuta em junho 11, 2008

<script language=”javascript”>
<!–
window.name=”nome_da_página“;
//–>
</script>

Posted in javascript | Leave a Comment »

Transferir resultados de uma janela secundária para a principal

Posted by karuta em junho 11, 2008

Arquivo: pagina1.asp

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”>
<html>
<head>
<title> Janela Principal </title>
</head>
<script>
function nome()
{
window.name=’pagina1′;
}

function AbrirJanela()
{
var DialogWidth  = 400;
var DialogHeight = 325;
window.showModalDialog(‘pagina2.asp’,””,”dialogHeight:” + DialogHeight + “px; dialogWidth:” + DialogWidth + “px; dialogTop: px; dialogLeft: px; edge: Raised; center: Yes; help: No; resizable: Yes; scroll: Yes; status: No; unadorned: Yes; “);
}
</script>
<body>
<%
response.write “Nome: ” & session(“nome”) & “<br>”
response.write “E-mail: ” & session(“email”) & “<br>”
response.write “Senha: ” & session(“senha”)
%>
<hr>
<a href=”javascript:nome(),AbrirJanela()”>Abrir Janela</a>

</body>
</html>

Arquivo: pagina2.asp
<%
if request(“cmd”) = “verifica” then
session(“nome”)  = request(“nome”)
session(“email”) = request(“email”)
session(“senha”) = request(“senha”)
response.redirect “pagina1.asp”
end if
%>
<html>

<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=windows-1252″>
<meta name=”GENERATOR” content=”Microsoft FrontPage 4.0″>
<meta name=”ProgId” content=”FrontPage.Editor.Document”>
<title>Página 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</title>
<script type=”text/javascript”>
function toupper(campo)
{
campo.value = campo.value.toUpperCase();
}

function Insere (digito)
{
// alert(digito.value);
document.form.senha.value=document.form.senha.value+digito.value;

}

function CheckForm ()
{
if (document.form.nome.value==””)
{
alert(“Informe o nome!”);
document.form.nome.focus();
return false;
}
else if (document.form.email.value==””)
{
alert(“Informe o email!”);
document.form.email.focus();
return false;
}

window.close();
return true
}
</script>
</head>

<body scroll=”no” bgcolor=”#C0C0C0″ topmargin=”0″ leftmargin=”0″>
<form action=”pagina2.asp?cmd=verifica” method=”post” name=”form” target=”pagina1″ OnSubmit=”return CheckForm();”>
<table border=”0″ width=”100%” height=”325″ cellspacing=”0″ cellpadding=”0″>
  <tr>
    <td width=”100%” height=”19″ bgcolor=”#808080″ valign=”top”>&nbsp;</td>
  </tr>
  <tr>
    <td width=”100%” height=”220″ valign=”top”>
      <table border=”0″ width=”100%”>
        <tr>
          <td width=”100%”><font size=”2″ face=”Verdana”>Nome:</font></td>
        </tr>
        <tr>
          <td width=”100%”><font size=”2″ face=”Verdana”><input type=”text” name=”nome” size=”44″></font></td>
        </tr>
        <tr>
          <td width=”100%”><font size=”2″ face=”Verdana”>E-mail:</font></td>
        </tr>
        <tr>
          <td width=”100%”><font size=”2″ face=”Verdana”><input type=”text” name=”email” size=”44″></font></td>
        </tr>
        <tr>
          <td width=”100%”><font size=”2″ face=”Verdana”>Senha:</font></td>
        </tr>
        <tr>
          <td width=”100%”><font size=”2″ face=”Verdana”><input type=”text” name=”senha” size=”44″></font></td>
        </tr>
        <tr>
          <td width=”100%” align=”center”>
  <%for i = 0 to 9%>
  <input type=”button” name=”caracter<%=i%>” value=”<%=i%>” onclick=”Insere(this)”>
  <%next%>
  </td>
        </tr>
        <tr>
          <td width=”100%” align=”center”>
  <%for i = 65 to 77%>
  <input type=”button” name=”caracter<%=chr(i)%>” value=”<%=chr(i)%>” onclick=”javascript:Insere(this)”>
  <%next%>
  </td>
        </tr>
        <tr>
          <td width=”100%” align=”center”>
  <%for i = 78 to 90%>
  <input type=”button” name=”caracter<%=chr(i)%>” value=”<%=chr(i)%>” onclick=”javascript:Insere(this)”>
  <%next%>
  </td>
        </tr>
        <tr>
          <td width=”100%”>
            <p align=”center”><font size=”2″ face=”Verdana”><input type=”submit” value=”Enviar”>&nbsp;
            <input type=”reset” value=”Limpar”></font></td>
        </tr>
      </table>
    </td>
  </tr>
  <tr>
    <td width=”100%” height=”1″ bgcolor=”#FFFFFF” valign=”top”></td>
  </tr>
  <tr>
    <td width=”100%” height=”68″ bgcolor=”#808080″ valign=”top”>&nbsp;</td>
  </tr>
</table>
</form>
</body>

</html>

Posted in asp | Leave a Comment »

Criando RSS Feed com banco de dados no Dreamweaver usando ASP

Posted by karuta em junho 5, 2008

 
 
 
O RSS (Really Simple Syndication) é um ótimo recurso para a divulgação imediata das últimas atualizações de um determinado site (feed) através dos chamados “leitores de RSS”. Os arquivos RSS Feed são escritos em XML em possuem um formato padrão mundial. Obtenha maiores informações sobre RSS Feeds no endereço http://www.rssficado.com.br. Para criar um RSS Feed contendo as últimas manchetes publicadas em um site com o Macromedia Dreamweaver MX 2004 (em ASP) basta seguir os passos a seguir (esse procedimento também é válido para as versões Ultradev e MX do Dreamweaver).Supondo que o site já esteja devidamente definido no Dreamweaver, o próximo passo é montar um banco de dados que armazerá as notícias. Esse exemplo utiliza o Microsoft Access 2000 para esse armazemento. A estrutura do banco de dados a ser usada como exemplo é:

Tabela ‘news’
Campo ‘new_code’ – Autonumeração
Campo ‘new_date – Data
Campo ‘new_title’ – Texto
Campo ‘new_resume’ – Texto
Campo ‘new_body’ – Texto longo

O arquivo DB será salvo no diretório ‘root/data’.
O banco deve ser alimentado com no mínimo quatro notícias para que esse exemplo torne-se funcional. É importante preencher o campo ‘new_date’ com datas alternadas para que se identifique as notícias mais recentes.

Agora cria-se o arquivo ‘generate.asp’ que deve ser salvo na pasta root do site. Feito isso, define-se agora uma conexão do site com o banco de dados usando a aba ‘Database’ do painel ‘Application’.

String para uma conexão do tipo ‘Custom Connection String’ usando OLEDB (melhor performance!):

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e:\home\site\data\data.mdb

Cria-se agora no arquivo ‘generate.asp’ um recordset que irá apontar quais notícias deverão ser mostradas no arquivo RSS (as mais recentes!). A configuração do recordset usará o campo ‘new_date’ (ordem decrescente) para fazer essa definição.

O diretório root do site deve possuir um subdiretório chamado ‘rss’ (‘root/rss’).

Alternando o modo de edição do arquivo ‘generate.asp’ (botão ‘Show Code View’) insira o código ASP a seguir logo abaixo das linhas que definem o recordset da página:

<% dim var_path, var_file, var_count var_path = server.mappath(“rss”) var_file = var_path & “\” & “news.xml” var_count = 0 set objfso = server.createobject(“scripting.filesystemobject”) set objtstream = objfso.createtextfile(var_file, true) objtstream.writeline “<?xml version=”&chr(34)&”1.0″&chr(34)&” encoding=”&chr(34)&”ISO-8859-1″&chr(34)&”?>” objtstream.writeline “<rss version=”&chr(34)&”2.0″&chr(34)&”>” objtstream.writeline “<channel>” objtstream.writeline “<title>titulo do site</title>” objtstream.writeline “<link>http://www.site.com</link>&#8221; objtstream.writeline “<description>descricao do site</description>” objtstream.writeline “<language>pt-br</language>” while (var_count < 3) and (not rs_news.eof) objtstream.writeline “<item>” objtstream.writeline “<title>”&rs_news.fields.item(“new_title”).value&”</title>” objtstream.writeline “<link>http://www.site.com/news.asp?code=”&rs_news.fields.item(“new_code&#8221;).value&”</link>” objtstream.writeline “<description>”&rs_news.fields.item(“new_resume”).value&”</description>” objtstream.writeline “</item>” var_count = var_count + 1 rs_news.movenext() wend objtstream.writeline “</channel>” objtstream.writeline “</rss>” objtstream.close Set objtstream = nothing Set objfso = nothing %>Explicação das partes do código inserido:

dim var_path, var_file, var_count var_path = server.mappath(“rss”) var_file = var_path & “\” & “news.xml” var_count = 0- Declaração das variáveis a serem usadas no processo; ‘var_path’ retorna o caminho físico do diretório ‘rss’ que armazenará o arquivo XML a ser gerado, ‘var_file’ define qual vai ser o nome desse arquivo e ‘var_count’ será usado para orientar a função while do ASP que será usada logo adiante;

set objfso = server.createobject(“scripting.filesystemobject”) set objtstream = objfso.createtextfile(var_file, true)- Inicia o objeto ASP FileSystemObject que irá criar o arquivo XML;

objtstream.writeline “<?xml version=”&chr(34)&”1.0″&chr(34)&” encoding=”&chr(34)&”ISO-8859-1″&chr(34)&”?>” objtstream.writeline “<rss version=”&chr(34)&”2.0″&chr(34)&”>” objtstream.writeline “<channel>” objtstream.writeline “<title>titulo do site</title>” objtstream.writeline “<link>http://www.site.com</link>&#8221; objtstream.writeline “<description>descricao do site</description>” objtstream.writeline “<language>pt-br</language>” while (var_count < 3) and (not rs_news.eof) objtstream.writeline “<item>” objtstream.writeline “<title>”&rs_news.fields.item(“new_title”).value&”</title>” objtstream.writeline “<link>http://www.site.com/news.asp?code=”&rs_news.fields.item(“new_code&#8221;).value&”</link>” objtstream.writeline “<description>”&rs_news.fields.item(“new_resume”).value&”</description>” objtstream.writeline “</item>” var_count = var_count + 1 rs_news.movenext() wend objtstream.writeline “</channel>” objtstream.writeline “</rss>”- Instruções para e estruturação em XML (1.0) do novo arquivo no formato usado para RSS Feeds (2.0). A função while conta somente três registros do recordset (últimas notícias…) e torna o processo de restauração (atualização) do RSS automático. As informações acima do while são referentes ao site exemplo e devem ser substituídas por informações do site que utiliza esse recurso;

objtstream.close Set objtstream = nothing Set objfso = nothing- Finaliza o objeto ASP FileSystemObject.

OBSERVAÇÃO: Nesse exemplo leva-se em consideração que o site possui um arquivo chamado ‘news.asp’ que mostra as notícias do site utilizando a variável de url ‘code’.

Sempre que o arquivo ‘generate.asp’ for executado no servidor cria-se um novo RSS Feed -XML (news.xml) automaticamente no diretório ‘rss’.

Alternando o modo de edição do arquivo ‘generate.asp’ agora para ‘Show Design View’ (botão) insere-se na página um link apontando para ‘rss/news.xml’.

O último passo é aplicar o recurso de RSS no site. Para tal, basta inserir o código a seguir dentro da tag head (<head>) do documento que irá oferecer esse recurso ao visitante:

<link rel=”service.feed” type=”application/atom+xml” title=”RSS title” href=”rss/news.xml”>* Deve-se subtituir ‘RSS title’ pelo nome do RSS do site (Ex.: Últimas notícias do site em RSS). Esse código leva em consideração que o documento que recebeu essas linhas encontra-se no root do site (Ex.: http:www.site.com/INDEX.ASP).

Veja a seguir como testar o RSS Feed usando o navegador Mozilla Firefox 1.0.4:

Ao acessar páginas com esse recurso o navegador exibe automaticamente um ícone de RSS no canto inferior direito da janela, na barra de status.

Para ver ler e acessar as notícias contidas no RSS basta adicionar o mesmo aos favoritos clicando em cima do ícone.

OBSERVAÇÃO: Clicando no link criado em ‘generate.asp’ o navegador mostra o código XML gerado para o RSS Feed. Observe que o arquivo recebeu apenas as últimas três notícias pela ordem de data.

James Clebio – http://www.linhadecodigo.com.br/Artigo.aspx?id=723

Posted in asp | Leave a Comment »

Request.ServerVariables

Posted by karuta em junho 5, 2008

Sintaxe: Request.ServerVariables(variavel)

Variavel : especifica o nome das variáveis do ambiente do servidor a retornar

  1. Path_info – Armazena a informação do caminho da URL requisitada pelo navegador.(Não armazena a raiz do diretório do endereço URL.)
  2. CONTENT_LENGHT – permite determinar a extensão do conteúdo da solicitação HTTP do cliente usando o método POST.
  3. Query_String – Contém os parâmetros passados como parte de uma requisição a uma URL . (Tudo depois de um “? ” é armazeando)
  4. SERVER_NAME – Fornece o nome do servidor contido na URL da página atual.
  5. HTTP_UA_COLOR – Indica o número de cores disponíveis na máquina do usuário.
  6. HTTP_UA_PIXELS – Contém a resolução da tela do navegador que fez a requisição.
  7. REMOTE _ADRR – O endereço IP do host remoto que esta solicitando o serviço.
  8. REMOTE _HOST – O nome do host que esta fazendo a solicitação do serviço.
  9. LOGON_USER – A conta no Windows NT no qual o usuário esta logado.
  10. HTTP_UA_OS – O nome e a versão do software servidor que está respondendo ao pedido.
  11. AUTH_TYPE – O método de autenticação que o servidor usa para validar usuários quando eles tentam acessar um script protegido.
  12. LOGON_USER – A conta no Windows NT do usuário.
  13. SERVER_PORT – O número da porta da qual a requisição foi enviada
  14. SERVER_PROTOCOL – O nome e a versão para o protocolo de informação.
  15. SERVER_SOFTWARE – O nome e a versão do software do servidor.
  16. SCRIPT_MAP – Informa a base da URL
  17. SCRIPT_NAME – Informa todo o caminho virtual para o roteiro presente.
  18. REQUEST_ADDR – Informa o endereço IP do host remoto que fez a requisição.
  19. REQUEST_METHOD – O método usado para fazer a requisição.(GET, POST, etc..)

Posted in asp | Leave a Comment »

Função Obter o Dia da Semana

Posted by karuta em junho 5, 2008

CREATE FUNCTION dbo.udf_DayOfWeek(@dtDate DATETIME)
RETURNS VARCHAR(10)
            
AS
    BEGIN
    DECLARE 
@rtDayofWeek VARCHAR(10)
    
DECLARE @weekDay INT
        
– Here I have subtracted 7 For keeping Sunday as the First day
        – like wise for Monday we need to subtract 2 and so on
        
SET @weekDay ((DATEPART(dw,GETDATE())+@@DATEFIRST-7)%7)
    
SELECT @rtDayofWeek CASE @weekDay
                    
WHEN THEN ‘Sunday’
                    
WHEN THEN ‘Monday’
                    
WHEN THEN ‘Tuesday’
                    
WHEN THEN ‘Wednesday’
                    
WHEN THEN ‘Thursday’
                    
WHEN THEN ‘Friday’
                    
WHEN THEN ‘Saturday’
        
END
    RETURN 
(@rtDayofWeek)
    
END
GO
SELECT dbo.udf_DayOfWeek(GETDATE())

(script modificado por Mihir Pop)

 

Posted in store procedure | Leave a Comment »

O objeto Response

Posted by karuta em junho 4, 2008

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 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.

Não vamos estudar todos os métodos e propriedades, apenas os principais. Quem desejar conhecer o objeto mais a fundo, comece clicando aqui (em inglês).

A função geral do objeto Response é acessar informações que são enviadas do servidor para o browser do cliente.

Response.Write

O Write é o já famoso método que escreve texto (podendo incluir código HTML e/ou Javascript) na página gerada. Equivale ao echo do PHP ou ao document.write do Javascript.

Ex.:

 

  1.   
  2. Response.Write(“Linha de cima…<br>” <IMG class=wp-smiley alt=;) src=”https://s-ssl.wordpress.com/wp-includes/images/smilies/icon_wink.gif”&gt;   
  3. Response.Write(“Linha de baixo!” <IMG class=wp-smiley alt=;) src=”https://s-ssl.wordpress.com/wp-includes/images/smilies/icon_wink.gif”&gt;   
  4. Dim numero   
  5. numero = 15   
  6. Response.Write(numero)  
Response.Write("Linha de cima...<br>" ;)
Response.Write("Linha de baixo!" ;)
Dim numero
numero = 15
Response.Write(numero)

Response.Redirect

O Redirect é um método que permite encaminhar o usuário para uma URL. Equivale ao header(”Location: “) do PHP e ao location.href do Javascript (embora esta última seja uma propriedade, não um método).

Ex.:

  1.   
  2. Dim opcao   
  3. opcao =3   
  4. ‘ A depender do valor da variável “opcao” o usuário vai para uma página diferente   
  5. Select Case opcao   
  6. Case 1   
  7. Response.Redirect(http://www.google.com.br” <IMG class=wp-smiley alt=;) src=”https://s-ssl.wordpress.com/wp-includes/images/smilies/icon_wink.gif”&gt;   
  8. Case 2   
  9. Response.Redirect(http://www.microcamp.com.br” <IMG class=wp-smiley alt=;) src=”https://s-ssl.wordpress.com/wp-includes/images/smilies/icon_wink.gif”&gt;   
  10. Case 3   
  11. Response.Redirect(http://www.iranrodrigues.com” <IMG class=wp-smiley alt=;) src=”https://s-ssl.wordpress.com/wp-includes/images/smilies/icon_wink.gif”&gt;   
  12. End Select  
Dim opcao
opcao =3
' A depender do valor da variável "opcao" o usuário vai para uma página diferente
Select Case opcao
Case 1
Response.Redirect("http://www.google.com.br" ;)
Case 2
Response.Redirect("http://www.microcamp.com.br" ;)
Case 3
Response.Redirect("http://www.iranrodrigues.com" ;)
End Select

Response.Buffer

O Buffer é uma propriedade lógica – seu valor pode ser True ou False. Sua função é determinar se a saída produzida pelo processamento do script no servidor será enviada aos poucos (quando o valor é False) ou será enviada somente ao término de todo o processamento (quando o valor é True).

O valor padrão desta propriedade é False. 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.

Response.Cookies

O “Cookies” é 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.

Para criarmos um cookie chamado “usuario” com o valor “maria”, utilizamos:

  1.   
  2. Response.Cookies(“usuario” <IMG class=wp-smiley alt=;) src=”https://s-ssl.wordpress.com/wp-includes/images/smilies/icon_wink.gif“>  = “maria”  
Response.Cookies("usuario" ;)  = "maria"

Além de simplesmente definir um valor para o cookie, podemos alterar algumas propriedades extras:

  1.   
  2. Response.Cookies(“usuario” <IMG class=wp-smiley alt=;) src=”https://s-ssl.wordpress.com/wp-includes/images/smilies/icon_wink.gif“>  = “maria”   
  3. ‘ Definindo uma data de expiração (daqui a 30 dias). Após essa data, o cookie não é mais utilizado.   
  4. Response.Cookies(“usuario”).Expires = Now + 30   
  5. ‘ Definindo o domínio que pode acessar o cookie:   
  6. Response.Cookies(“usuario”).Domain = “microcamp.com.br”  
  7. ‘ Definindo o caminho das páginas que podem acessar o cookie:   
  8. Response.Cookies(“usuario”).Path = “/www/home/pagina”  
  9. ‘ Definindo se o cookie é seguro:   
  10. Response.Cookies(“usuario”).Secure = True  
Response.Cookies("usuario" ;)  = "maria"
' Definindo uma data de expiração (daqui a 30 dias). Após essa data, o cookie não é mais utilizado.
Response.Cookies("usuario").Expires = Now + 30
' Definindo o domínio que pode acessar o cookie:
Response.Cookies("usuario").Domain = "microcamp.com.br"
' Definindo o caminho das páginas que podem acessar o cookie:
Response.Cookies("usuario").Path = "/www/home/pagina"
' Definindo se o cookie é seguro:
Response.Cookies("usuario").Secure = True

Para acessar as informações gravadas em um cookie, teremos de utilizar um outro objeto – o Request.

Posted in asp | Leave a Comment »

O objeto Server

Posted by karuta em junho 4, 2008

 Este objeto serve basicamente para acessar funções gerais no servidor web. O Server possui uma propriedade e sete métodos, a saber:

  • ScriptTimeout (propriedade)
  • CreateObject* (método)
  • Execute (método)
  • GetLastError** (método)
  • MapPath* (método)
  • HTMLEncode (método)
  • Transfer (método)
  • URLEncode (método)

* Seu uso será exemplificado em aulas posteriores;
** Não será visto em aula.

ScriptTimeout

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.

Setando um novo valor para ScriptTimeout:

  1.   
  2. Server.ScriptTimeout = 45   
  3. ‘ Exibição do valor   
  4. Response.Write(Server.ScriptTimeout)  
Server.ScriptTimeout = 45
' Exibição do valor
Response.Write(Server.ScriptTimeout)

CreateObject

Instancia um objeto. Em outras palavras, cria um objeto do tipo especificado. Veremos mais detalhes ao trabalharmos com bancos de dados.

Execute

Executa um script contido em um arquivo ASP externo. Equivale ao include do PHP.

Exemplo:

arquivo1.asp

  1.   
  2. Response.Write(“Comando 1 do arquivo1.asp<br>” <IMG class=wp-smiley alt=;) src=”https://s-ssl.wordpress.com/wp-includes/images/smilies/icon_wink.gif”&gt;   
  3. Server.Execute(“arquivo2.asp” <IMG class=wp-smiley alt=;) src=”https://s-ssl.wordpress.com/wp-includes/images/smilies/icon_wink.gif”&gt;   
  4. Response.Write(“Comando 2 do arquivo1.asp<br>” <IMG class=wp-smiley alt=;) src=”https://s-ssl.wordpress.com/wp-includes/images/smilies/icon_wink.gif”>   
Response.Write("Comando 1 do arquivo1.asp<br>" ;)
Server.Execute("arquivo2.asp" ;)
Response.Write("Comando 2 do arquivo1.asp<br>" ;)

arquivo2.asp

  1.   
  2. Response.Write(“Comando 1 do arquivo2.asp<br>” <IMG class=wp-smiley alt=;) src=”https://s-ssl.wordpress.com/wp-includes/images/smilies/icon_wink.gif”&gt;   
  3. Response.Write(“Comando 2 do arquivo2.asp<br>” <IMG class=wp-smiley alt=;) src=”https://s-ssl.wordpress.com/wp-includes/images/smilies/icon_wink.gif”&gt;   
  4. Response.Write(“Comando 3 do arquivo2.asp<br>” <IMG class=wp-smiley alt=;) src=”https://s-ssl.wordpress.com/wp-includes/images/smilies/icon_wink.gif”>   
Response.Write("Comando 1 do arquivo2.asp<br>" ;)
Response.Write("Comando 2 do arquivo2.asp<br>" ;)
Response.Write("Comando 3 do arquivo2.asp<br>" ;)

Resultado da execução do arquivo1.asp:

Comando 1 do arquivo1.asp
Comando 1 do arquivo2.asp
Comando 2 do arquivo2.asp
Comando 3 do arquivo2.asp
Comando 2 do arquivo1.asp

Percebam que após a execução dos comandos no arquivo2.asp, os comandos restantes do arquivo1.asp são executados.

GetLastError

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 aqui (em português).

MapPath

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.

HTMLEncode

Este é um método bem util. Sua função é converter caracteres especiais contidos em uma string em seus respectivos “códigos” oriundos do HTML (HTMLEncode significa codificar em HTML).

Experimentem exibir o texto “<br>” numa página web. Se vocês digitarem no body, por exemplo, ao invés do texto “<br>” o que aparece é uma quebra de linha. Isso acontece porque o browser processa o texto “<br>” como um comando da linguagem HTML. Para simplesmente exibirmos como texto, precisamos substituir os “<” e “>” pelos seus respectivos códigos em HTML: “<” e “>”, respectivamente. Então teríamos que escrever: <br>

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:

  1.   
  2. ‘Sem HTMLEncode   
  3. Response.Write(“O elemento do HTML que quebra linhas é o <br>” <IMG class=wp-smiley alt=;) src=”https://s-ssl.wordpress.com/wp-includes/images/smilies/icon_wink.gif”&gt;   
  4. ‘Com HTMLEncode   
  5. Response.Write(Server.HTMLEncode(“O elemento do HTML que quebra linhas é o <br>”))  
'Sem HTMLEncode
Response.Write("O elemento do HTML que quebra linhas é o <br>" ;)
'Com HTMLEncode
Response.Write(Server.HTMLEncode("O elemento do HTML que quebra linhas é o <br>"))

Transfer

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.

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 – ele não sabe que está sendo redirecionado, pois o browser não irá recarregar – e, principalmente, este redirecionamento conserva o estado atual do servidor. Assim, as variáveis definidas continuam existindo ao chegar na página de destino.

Exemplo (baseado no exemplo do Execute – vejam as diferenças no resultado):

arquivo1.asp

  1.   
  2. Response.Write(“Comando 1 do arquivo1.asp<br>” <IMG class=wp-smiley alt=;) src=”https://s-ssl.wordpress.com/wp-includes/images/smilies/icon_wink.gif”&gt;   
  3. Server.Transfer(“arquivo2.asp” <IMG class=wp-smiley alt=;) src=”https://s-ssl.wordpress.com/wp-includes/images/smilies/icon_wink.gif”&gt;   
  4. Response.Write(“Comando 2 do arquivo1.asp<br>” <IMG class=wp-smiley alt=;) src=”https://s-ssl.wordpress.com/wp-includes/images/smilies/icon_wink.gif”>   
Response.Write("Comando 1 do arquivo1.asp<br>" ;)
Server.Transfer("arquivo2.asp" ;)
Response.Write("Comando 2 do arquivo1.asp<br>" ;)

arquivo2.asp

  1.   
  2. Response.Write(“Comando 1 do arquivo2.asp<br>” <IMG class=wp-smiley alt=;) src=”https://s-ssl.wordpress.com/wp-includes/images/smilies/icon_wink.gif”&gt;   
  3. Response.Write(“Comando 2 do arquivo2.asp<br>” <IMG class=wp-smiley alt=;) src=”https://s-ssl.wordpress.com/wp-includes/images/smilies/icon_wink.gif”&gt;   
  4. Response.Write(“Comando 3 do arquivo2.asp<br>” <IMG class=wp-smiley alt=;) src=”https://s-ssl.wordpress.com/wp-includes/images/smilies/icon_wink.gif”>   
Response.Write("Comando 1 do arquivo2.asp<br>" ;)
Response.Write("Comando 2 do arquivo2.asp<br>" ;)
Response.Write("Comando 3 do arquivo2.asp<br>" ;)

Resultado da execução do arquivo1.asp:

Comando 1 do arquivo1.asp
Comando 1 do arquivo2.asp
Comando 2 do arquivo2.asp
Comando 3 do arquivo2.asp

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.

URLEncode

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 Google, 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&ie=utf-8&oe=utf-8&rls=org.mozilla:pt-BR:official&client=firefox-a

O texto que digitei fica depois do “?q=” e vai até antes do “&ie=”, ou seja:

receita+de+sufl%C3%AA+de+ab%C3%B3bora

Portanto, a frase “receita de suflê de abóbora”, codificada na URL vira “receita+de+sufl%C3%AA+de+ab%C3%B3bora”. É fácil perceber que o que muda são os espaços (trocados por “+”) e as letras acentuadas (na verdade, os caracteres especiais em geral), que são trocadas por dois caracteres entre porcentagens (exemplo: %C3%).

Qual a utilidade? Inserir informações diretamente na URL. Por exemplo, acessando este endereço…

http://www.google.com.br/search?q=dicion%C3%A1rio+bil%C3%ADng%C3%BCe+portugu%C3%AAs+ingl%C3%AAs

…vocês já caem automaticamente na página de resultados do Google para “dicionário bilíngüe português inglês”. Para gerar um link destes automaticamente é preciso usar este método.

Exemplo:

  1.   
  2. Response.Write(“Pesquise por ‘pôneis siamêses’ clicando <a href='” <IMG class=wp-smiley alt=;) src=”https://s-ssl.wordpress.com/wp-includes/images/smilies/icon_wink.gif”&gt;   
  3. Response.Write(http://www.google.com.br/search?q=&#8221; & URLEncode(“pôneis siamêses”))   
  4. Response.Write(“‘>aqui</a>” <IMG class=wp-smiley alt=;) src=”https://s-ssl.wordpress.com/wp-includes/images/smilies/icon_wink.gif”>   
Response.Write("Pesquise por 'pôneis siamêses' clicando <a href='" ;)
Response.Write("http://www.google.com.br/search?q=" & URLEncode("pôneis siamêses"))
Response.Write("'>aqui</a>" ;)

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.

Posted in asp | Leave a Comment »

Quais Store Procedures foram modificadas

Posted by karuta em junho 3, 2008

— 7 no final do código = 7 dias atrás
SELECT name
    FROM sys.objects
    WHERE type = ‘P’
        AND DATEDIFF(D,modify_date, GETDATE()) < 7

Em tempo – Você pode alterar o type P para qualquer um listado abaixo:
C = CHECK constraint
D = Default or DEFAULT constraint
F = FOREIGN KEY constraint
L = Log
P = Stored procedure
PK = PRIMARY KEY constraint (type is K)
RF = Replication filter stored procedure
S = System table
TR = Trigger
U = User table
UQ = UNIQUE constraint (type is K)
V = View
X = Extended stored procedure

Posted in store procedure | Leave a Comment »