quarta-feira, 30 de janeiro de 2002

0

Máscara para String

'## Esta função retorna um string formatada de acordo com uma máscara especificada
'por cerquilhas(#), junto com seus complementos. Sendo assim o caractere que for
'diferente de cerquilha será implementado na string, na ordem indicada ##
Function Mask(sfString,sfMask,bfMode)
Dim sfPart, i, ifContChar, sfFormated,sfFormatedi
   sfPart = ""
   sfFormated  = ""
   sfFormatedi = ""
   '## Caso bfMode verdadeiro, formata a String da esquerda para a direita ###
   if not bfMode then
      for i = 1 to Len(sfMask)   '## Loop de 1 ate o tamanho da string ##
         sfPart = Mid(sfMask,i,1)'## Pega caractere por caracter da mascara ##
         if sfPart = "#" then
            ifContChar = ifContChar + 1 '## Adiciona posicoes ao contador da string ##
            sfFormated = sfFormated & Mid(sfString,ifContChar,1)
         else
            '## Se for diferente de cerquilha(#) adiciona o caractere seguinte,
            'à string ##
            sfFormated = sfFormated & sfPart
         end if
      next
   else
      '## Caso bfMode falso, formata a String da direita para a esquerda ###
      i          = Len(sfMask)   '## Iguala i ao tamanho da Mascara ##
      ifContChar = Len(sfString) '## Iguala iCont Char ao tamanho da String ##
      do while ifContChar > 0 and i > 0 '## Enquanto nenhum dos contadores for igual a 0 ##
         sfPart = Mid(sfMask,i,1) '## Pega um caractere da String ##
         if sfPart = "#" then
            sfFormatedi = sfFormatedi & Mid(sfString,ifContChar,1) '## Monta a string com formatação ##
            ifContChar  = ifContChar - 1 '## Subtrai do contador da String ##
         else if sfPart <> "#" then
            sfFormatedi = sfFormatedi & sfPart '## Adiciona complemento na String ##
            end if
         end if
         i = i - 1 '## Subtrai do contador da mascara ##
      loop


      '## Inverte a string após formatada ##
      i = Len(sfFormatedi)
      do while i > 0
         sfFormated = sfFormated & Mid(sfFormatedi,i,1)
         i = i - 1 '## Subtrai 1 do contador ##
      loop
   end if


   Mask = sfFormated


End Function
response.write "<font face=""Verdana"" size=""1"">"
response.write "Normal(false): 1012345678901 + ###.##.###.##-# = "&Mask("1012345678901","###.##.###.##-#",false)&"<br>Oculta valores a direita<br>"
response.write "Inverso(true): 1012345678901 + ###.##.###.##-# = "&Mask("1012345678901","###.##.###.##-#",true)&"<br>Oculta valores a esquerda<br><br>"
response.write "Telefone: 44442222 + ####-#### = "&Mask("44442222","####-####",false)&"<br>"
response.write "CPF: 02145877896 + ###.###.###-## = "&Mask("02145877896","###.###.###-##",false)
response.write "</font>"



Esta matéria foi postada originalmente no ASP4Developers por Rafael "M4yers" Rossi (site), que na época era "...". Hoje, vai saber...

0

Extrair o nome de um arquivo a partir de uma URL dada

OLá pessoal. Tive uma vez que pegar o nome de um arquivo através de uma URL dada, e implementei a função. Caso alguém precise, a função é a seguinte: nome_arq = LEFT(RIGHT(url,INSTR(STRREVERSE(url),"/")-1),INSTR(RIGHT(url,INSTR(STRREVERSE(url),"/")-1),".")-1)


Nota: A mesma funcionalidade poderia ser alcançada com Mid( url, InStrRev( url, "/" ) + 1 ). O segredo fica por conta do InStrRev, que pesquisa uma determinada string dentro de outra, mas começando do final.



Esta matéria foi postada originalmente no ASP4Developers por João Paulo, que na época era "graduando em Sistemas de Informação pela UNESP - Bauru. Programo em ASP, JSP, JAVA, JSCRIPT, PASCAL, C, DELPHI, PROLOG e algumas outras coisas. Me interesso também por BioInformática". Hoje, vai saber...

0

Impressão sem URL

Para imprimir páginas sem que saia o número de páginas no cabeçalho e o endereço da página no rodapé basta retirar as tags HTML do documento.


Testei esse método em versões recentes do Netscape(v6.1 e v6.2) e do Internet Explorer (v5 e v6), não sei se funciona em versões mais antigas. Se alguém souber e quiser ajudar agradeço.



Esta matéria foi postada originalmente no ASP4Developers por Rafael "M4yers" Rossi (site), que na época era "...". Hoje, vai saber...

terça-feira, 22 de janeiro de 2002

0

Dificuldades em criar a string de conexão?

Um jeito fácil de contruir sua string de conexão é utilizar os arquivos .udl:


1) Crie um aruqivo .txt (botão direito, new, txt file)
2) Mude a extensão do arquivo de .txt para .udl
3) Após a confirmação de mudança de extensão, dê um duplo-clique no arquivo
3) Surgira a tela de configuração de conexão, semelhante àquela que aparece no Painel de Controle no applet ODBC
4) Configure sua conexão para o banco desejado
5) Após terminar, feche a janela de conexão.
6) Renomeio o arquivo para .txt novamente
7) Abra o arquivo .txt. Voce encontrara a string de conexão. Basta copiar para sua página ASP ou para seu programa VB.



Esta matéria foi postada originalmente no ASP4Developers por Valmir Cinquini (site), que na época era "Analista/Programador C#, VB.Net, ASP, VB, Javascript e T-SQL

www.cinquini.com.br/vcinquini>". Hoje, vai saber...

quinta-feira, 17 de janeiro de 2002

0

Proteção para aspas simples em banco de dados

Achei uma forma um pouco diferente de evitar erros de SQL com aspas simples e também diferente do que eu li neste site há um tempo (desculpem se existem ainda OUTRAS formas, eu só vi aquela de trocar ' por '') já que ele resolvia este problema mas criava um segundo pois as aspas simples eram exibidas como '' para o visitante.


Fiz uma função que troca aspas simples por um caractere especial ao inserir dados no SQL e uma segunda que transforma o caractere em aspas simples novamente. Com isso, se alguém fizer uma busca pela expressão "i'm housin" por exemplo ele realmente vai mostrar este valor e não "i''m housin" como no outro modo.


Realmente não é nada de mais mas ao menos pra mim foi bem útil.


Function Converte(Texto)
Converte = Replace(Texto,"'","¢")
End Function


Function UnConverte(Texto)
UnConverte = Replace(Texto,"¢","'")
End Function


Desta forma, quando for inserir dados no banco utilize a função Converte e quando for exibir dados do banco utilize a UnConverte.



Esta matéria foi postada originalmente no ASP4Developers por Hipper Snowball (site), que na época era "Interessado em webdev, especialmente HTML puro, ASP e CSS respeitando a w3 e procurando sempre manter o design separado do conteúdo... Além de jogador de team fortress classic ehhe". Hoje, vai saber...

1

Converter valor em Moeda com 2 casas decimais

O codigo abaixo converte um valor numerico em formato de moeda, separado por ponto
Ex.:
00,000 -> 00.00
0000 -> 0000.00
0,0 -> 0.00


<%
function convet(x)
dim pos, str, valor, decimal
pos = 0
str = ""
valor = ""
decimal = ""


 for n = 1 to len(x)
  str = mid(x, n, 1)
  if str = "," or str = "." then
   pos = n
   if n = 1 then
    valor = "0"
    decimal = mid(x, n + 1, len(x))
   else
    valor = mid(x, 1, n - 1)
    decimal = mid(x, n + 1, len(x))
   end if
  end if
 next


 if pos = 0 then
  valor = x
 end if


 valor = valor & "." & left(decimal & "00",2)
 response.write valor


end function


%>



Esta matéria foi postada originalmente no ASP4Developers por Danilo Freitas (site), que na época era "Desenvolvo páginas há dois anos, programador ASP (ha pouco tempo) e fanático em tecnologia de banco de dados". Hoje, vai saber...

quarta-feira, 16 de janeiro de 2002

0

Mudando imagens sem recarregar a página

Simples e objetivo: quer mudar uma imagem sem recarregar a página? Use a função abaixo:


function MudaImagem(novosrc){
  document.images['img1'].src = novosrc;
}



img1 é o valor do atributo name da imagem a ser mudada:



<img src="adriano.jpg" width="434" height="271" name="img1">



Você pode chamar a função através de links:



<a href="javascript: MudaImagem('site.gif')">Mudar para a imagem do site</a>
<a href="javascript: MudaImagem('adriano.jpg')">Mudar para  minha imagem</a>



Pode-se também utilizar o evento OnClick da própria imagem:



<img src="adriano.jpg" width="434" height="271" name="img1" OnClick="MudaImagem('teste.jpg')">



Outra opção interessante seria mudar o tamanho da imagem utilizando as propriedades height e width da imagem, que podem ser passadas como parâmetros de uma nova função:



function MudaImagem2(novosrc, novoheight, novowidth){
  document.images['img1'].src = novosrc;
  document.images['img1'].height = novoheight;
  document.images['img1'].width = novowidth;
}



A chamada da função teria que ser, neste caso, algo do tipo:



<a href="javascript: MudaImagem2('site.gif', 50, 150)">Mudar para a imagem do site</a>
<a href="javascript: MudaImagem2('adriano.jpg', 200, 50)">Mudar para  minha imagem</a>



Esta matéria foi postada originalmente no ASP4Developers por Adriano Nântua, que na época era "Engenheiro de software e analista de sistemas; Desenvolvedor ASP, Delphi, C/C++ e Java/JSP/Servlets; InterBase fan; Linux fan; Alvirrubro inveterado.". Hoje, vai saber...

segunda-feira, 14 de janeiro de 2002

0

Adicionando e removendo campos de um select

Esse é um exemplo de como manipular dados entre selects (listbox).


Espero que seja de grande ajuda!


<html>
<head>
<script language='javascript'><!--
function Adiciona() {
   var i=1;
   var n=0;
   do {
      var y1="document.form2.s"+i+".value";
      if (eval(y1)=='')
         n=i;
      i++;
      } while (i<=5 && n==0);
   var vs1=document.form1.campo2.selectedIndex;
   if (vs1!=-1){
   var x1="document.form2.s"+n+".value=document.form1.campo2.options[vs1].text;"
   eval(x1)
   eval("document.form2.hs"+n+".value=document.form1.campo2.options[vs1].value;");
   var x3="document.form2.b"+n+".disabled=false;"
   eval(x3)
   document.form1.campo2.options[vs1]=null;
   if (n==5)
      document.form1.botao1.disabled=true;
}
}
function Remove(n) {
   j=0;
   do {
   var y="document.form1.campo2.options["+j+"]";
      j++;
   } while (eval(y)!=null);
   j--;


   var d2text=eval("document.form2.s"+n+".value");
   var d2val=eval("document.form2.hs"+n+".value");
   dop2="var option2 = new Option('"+d2text+"', '"+d2val+"');";
   eval(dop2);
   var x2="document.form1.campo2.options["+j+"]=option2;"
   eval(x2);
   eval("document.form2.b"+n+".disabled=true;");
   eval("document.form2.s"+n+".value='';");
   document.form1.botao1.disabled=false;
}
--></script>
</head><body>


<form name='form1'>
<select name='campo2' size='11'>
   <option value='1'> Nome1
   <option value='2'> Nome2
   <option value='3'> Nome3
   <option value='4'> Nome4
   <option value='5'> Nome5
   <option value='6'> Nome6
   <option value='7'> Nome7
   <option value='8'> Nome8
   <option value='9'> Nome9
   <option value='10'> Nome10
   <option value='11'> Nome11
</select>
<input name='botao1' type='button' value='Adiciona' onclick="Adiciona();"></form>


<form name='form2' action='salvajogada.asp' method='post'>
<input type='text' name='s1' readonly size='10'>
<input type='hidden' name='hs1' value=''>
<input type='button' name='b1' disabled value='Remove' onclick='Remove(1)'><br>


<input type='text' name='s2' readonly size='10'>
<input type='hidden' name='hs2' value=''>
<input type='button' name='b2' disabled value='Remove' onclick='Remove(2)'><br>


<input type='text' name='s3' readonly size='10'>
<input type='hidden' name='hs3' value=''>
<input type='button' name='b3' disabled value='Remove' onclick='Remove(3)'><br>


<input type='text' name='s4' readonly size='10'>
<input type='hidden' name='hs4' value=''>
<input type='button' name='b4' disabled value='Remove' onclick='Remove(4)'><br>


<input type='text' name='s5' readonly size='10'>
<input type='hidden' name='hs5' value=''>
<input type='button' name='b5' disabled value='Remove' onclick='Remove(5)'><br>
</form>
</body></html>



Esta matéria foi postada originalmente no ASP4Developers por Rogério César (Craz¥ Man) (site), que na época era "Analista de Sistemas, programador, web Designer.". Hoje, vai saber...

domingo, 13 de janeiro de 2002

0

Configuração do ASP Application Settings

O IIS5 dá a você mais opções de configuração. No IIS4 voce basicamente tinha a opção de configurar sua aplicação como "in process" com o inetinfo (processo IIS) dando a voce a melhor performance, mas com o risco de uma aplicação corromper o processo IIS todo. A alternativa eraescolher "run in separate memory space", que dá mais robustes , mas ao custo de pior performance.
O IIS5 introduz o termo "isolation levels", que dá melhor controle sobre suas aplicações web:



  • "Low Isolation". Equivalente ao "in process" no IIS4. Melhor performance, mas com o risco de uma aplicação derrubar o serviço do IIS todo.

  • "Medium". é o default no IIS5, e é o novo nível no IIS5. Processos ASP dividem um único espaço de memória, mas fora do espaço do próprio IIS. Isso significa que uma aplicação ASP pode derrubar todas as outras, mas o próprio IIS continua rodando.

  • "High". Equivale ao "out of process" do IIS4. Fornece a melhor confiabilidade, ao custo de performance. Cada aplicação web tem seu próprio espaço de memória.

Para sites com taxas de hits médios, o default do IIS5 é provavelmente o melhor. Para sites com altas taxas de hits, mudar o nível de isolamento para "low" dará uma melhora na performance notável.



Esta matéria foi postada originalmente no ASP4Developers por Valmir Cinquini (site), que na época era "Analista/Programador C#, VB.Net, ASP, VB, Javascript e T-SQL

www.cinquini.com.br/vcinquini>". Hoje, vai saber...

0

Use Server.Transfer ao invés de Response.Redirect

Troque Response.Redirect por Server.Transfer

Muitas vezes, é comum redirecionarmos para uma outra página, de dentro de nosso script. No IIS4 e  ASP2 voce usaria normalmente o comando response.redirect para fazer isso. Este comando envia uma resposta para o browser para instruí-lo a requisitara nova página - portanto o browser fez essencialmente duas requisições de página ao servidor.

O IIS5/ASP3 melhorou isso, fornecendo um meio para redirecionamento server-side, chamado server.transfer, pela transferencia da execução imediata e diretamente para outra pagina, evitando o "extra round-trip" (algo como "desengate extra") do IIS4. Muito mais eficiente.



Esta matéria foi postada originalmente no ASP4Developers por Valmir Cinquini (site), que na época era "Analista/Programador C#, VB.Net, ASP, VB, Javascript e T-SQL

www.cinquini.com.br/vcinquini>". Hoje, vai saber...

quarta-feira, 9 de janeiro de 2002

3

100.000!

Chegamos a 100.000 page hits, segundo o Stats4All! Fico muito feliz com a marca (números redondos sempre são mais bonitos), mas o que me empolga é ver que tem bastante gente usando e aproveitando o que os amigos que compõem o ASP4D se esforçam em produzir e divulgar.


Fica aqui então o parabéns a todos os colaboradores e visitantes, por incentivar o ASP4D a sempre oferecer algo diferente.


[]ão!



Esta matéria foi postada originalmente no ASP4Developers por Rubens N. Farias (site), que na época era "pós-graduado em análise de sistemas orientados a objetos, MCP, MCSD, MCAD, MCSD.NET e consultor em TI, além de idealizador do projeto ASP4Developers. Desenvolve sistemas sob medida, focados na satisfação do usuário, com qualidade e custo realista.". Hoje, vai saber...

segunda-feira, 7 de janeiro de 2002

1

Problemas com Form de um só campo

Quando você tem um form com só um campo do tipo (fora o submit), sua aplicação apresentará um problema quando o usuário digitar informações e pressionar a tecla enter.


Como no exemplo.


<form action="suapagina.asp">


<input type="text" name="seu_input">


<input type="submit">
</form>



Eu encontrei uma solução, mas não sei se é das melhores.
É colocar um campo a mais. Ele não aparecerá na tela pois terá o type como "hidden" como no Exemplo:


 


<form action="suapagina.asp">


<input type="text" name="seu_input">
<input type="hidden" name="solucao">
<input type="submit">
</form>



Esta matéria foi postada originalmente no ASP4Developers por Evandro Silva de Araújo, que na época era "Desenvolvedor de Sistemas em ASP, VBScript,SQL Server 2000". Hoje, vai saber...

domingo, 6 de janeiro de 2002

0

Um pouco sobre enquetes

  Lógica de uma enquete


    A lógica de uma enquete é muito simples, mas recebi algumas solicitações por e-mail com dúvidas. Tentarei aqui, explicar como criar uma enquete.


    O minha lógica não é a melhor, mas pode ajudá-lo. Primeiramente crio três tabelas: enquetes, votos, opcoes.
    Uso das tabelas: 
      » enquetes: crio as colunas id e enquete aonde coloco as enquetes obviamente.
      » opcoes: crio as colunas id, opcoes, idenq.
      » votos: crio as colunas id, idenq, idopcao, votos.

    Agora crio o arquivo enquete.asp aonde a lógica é bastante simples. Primeiro vejo qual o id da enquete (caso existam varias). O mesmo virá em pela url (enquete.asp?id=1). Vejo o número da enquete solicitada e pego do banco de dados.
    Após isso, preciso colocar as opções de voto. As opções de voto estão em apenas uma coluna, separados por ponto e vírgula (";"), por exemplo:






TABELA "opcoes"










idopcoesidenq
1sim;não;1

    Agora preciso ler a coluna opções, separar os dados e colocar no form para enviar para a pagina de resultados.
    Para separar os dados uso a função split() a qual cria um array. Por exemplo:
    
 
   <%
      'suponhamos que a variavel Opcoes tem o valor das opcoes da tabela ("sim;não;")
      Opcoes = Split(Opcoes,";")
      
      'precisamos saber agora quantos arrays a funcao split criou, e por isso usaremos a funcao uBound()

      for i = 0 to uBound(Opcoes)
        response.write Opcoes(i) & "<br>"
      next
    %>

   
Esse código respondeu na página os dados da coluna opcoes da tabela opcoes separados. Para por no form, use sua criatividade... 
    Por exemplo, no lugar de apenas responder Opcoes(i) & "<br>", coloque o <select name="opcoes"> antes do código, e </select> depois, e aonde está o response.write Opcoes(i) .... coloque: response.write "<option value="& Opcoes(i) &">"& Opcoes(i) &"</option>".

    Agora tudo certo. Crie uma página aonde ele atualiza os dados da tabela votos e aumente um voto de acordo com a enquete e o voto selecionado. 

    Após tudo isso, apenas falta a lógica da porcentagem. A lógica de mostrar os votos é simples, apenas pegue de acordo com a enquete solicitada e responda na página. Agora, a porcentagem, muito simples também, mais vou explicar:


    <%
      'suponhamos que o total de votos (de todos) esteja armazenado na variável Total. Vou pegar apenas o valor de uma opcao. O valor da mesma está na variavel valor_opc
      porcent = valor_opc * 100 / Total
      response.write porcent & "%"
    %>

    Você entendeu? Espero que sim... pegamos o valor dos votos da opcao (suponhamos que seja 10) e do total (suponhamos que seja 100). Isso iria responder 10%. Pronto, agora você tem mais ou menos a lógica de uma enquete. Caso surja alguma dúvida, me notifique pelo e-mail: brunofuster@hotmail.com Se possível, envie com o Assunto "Enquete". Valeu! :)



Esta matéria foi postada originalmente no ASP4Developers por Bruno Fuster, que na época era " (nothing) :PP surfy (irc.brasnet.org) #webmasters, #asp, #cbjr". Hoje, vai saber...

quarta-feira, 2 de janeiro de 2002

0

Offline

Olá,


antes de mais nada gostaria de desculpar-me pelos problemas que ocorreram nos últimos dias aqui no ASP4D, que fizeram com que o site ficasse fora do ar. Uma série de eventos inesperados culminaram neste problema, mas, ao que parece, está tudo resolvido, tanto com o código quanto com o servidor.


A respeito do código, ocorreu um erro devido a um comentário feito pelo Blade (ê bleide... :). Como ele, ao que parece, estava com insônia, alterou um artigo às 02:48:24. Mas devido a um erro na minha função Today() (responsável por gerar um timestamp que é armazenado no documento XML), incorretamente gravou 2:48:24 (sem o zero).


Até ai, sem muitos problemas, se estivéssemos com o site velho. No novo site, é feita a validação do documento XML com um Schema document, quando este é carregado. Um Schema nada mais é do que a descrição das regras de estruturação dos dados e dos tipos de dados. E aqui reside o problema: um tipo dateTime espera uma data no formato aaaa-mm-ddThh:mm:ss e então já podemos imaginar os problemas. É o equivalente a um banco de dados corrompido.


Não há uma necessidade real do utilizarmos Schemas no ASP4D, uma vez que apenas o site utiliza o documento XML base. Mas, como o ASP4D é um grande laboratório do XML, criei a necessidade do Schema e implantei-o, para verificar se a minha aplicação estava fazendo as alterações corretas no banco de dados. E vejo que estava quase tudo certo...


Bom, explicado o problema, fica a recomendação: testem exaustivamente suas aplicações, lembrando o que significa testar: provar que uma determinada aplicação não funciona.



Esta matéria foi postada originalmente no ASP4Developers por Rubens N. Farias (site), que na época era "pós-graduado em análise de sistemas orientados a objetos, MCP, MCSD, MCAD, MCSD.NET e consultor em TI, além de idealizador do projeto ASP4Developers. Desenvolve sistemas sob medida, focados na satisfação do usuário, com qualidade e custo realista.". Hoje, vai saber...

domingo, 30 de dezembro de 2001

0

Ler dados com o ADO.net

Neste simples exemplo, mostrarei como fazer, para substituir o ADO tradicional, pelo ADO.net para retornar os dados de uma base de dados, usando VB.net.


obs: uso a leitura e inserção dos dados num listbox, no evento load da página


Imports System.Data
' declaração de chamada necessária, para usar ado.net


Sub Page_Load  ' evento load (carregamento) da página
Dim conn as New System.DATA.OledbConnection(SUA STRING DE CONEXÃO AQUI)
Dim SQL as string = "SELECT * FROM tabela"
Dim comando as new OleDBCommand(SQL, conn)
conn.open

Dim leitor as OLEDbDataReader
Leitor = Command.ExecuteReader
' no .net não há o Set

' Abaixo o LOOP num listbox:

While Leitor.READ
List.Items.ADD Leitor.Item("campo")
End While

End sub



Esta matéria foi postada originalmente no ASP4Developers por Oscar Pires (BLADE) (site), que na época era "Desenvolvedor ASP e Visual Basic, desenvolve sites interativos e sistemas para empresas. ". Hoje, vai saber...

segunda-feira, 24 de dezembro de 2001

0

HOHOHO!

Hohoho! Feliz Natal!


Como prometido (ok, tardo, mas ardo), eis a nova versão do ASP4Developers, estreiando em seu novo endereço: www.ASP4Developers.com.br . Registrei o domínio e agora podemos ir esquecendo o lance do CJB.NET e seus banners escondidos.


Nesta nova versão do site, tentei remodelar um pouco a parte visual, para algo mais agradável e num formato que eu sempre quis fazer. O site usa alguma coisa de DirectX, CSS2 e foi testado com o IE6. Caso tenha algum problema com a visualização do mesmo, não deixe de notificar-me, ok ?


Muitas mudanças foram efetuadas, além do layout. Algum código incorreto/desatualizado na rotina de autenticação foi consertado; rouba... errr.. digo, implementamos um intercomunicador que não tem nada a ver com o do FatorX;criamos uma forma de comentar os artigos postados e a possibilidade de postar uma foto no formato SVG/SVGZ, que irá no final dos artigos dos autores. Mais profundamente, passamos a utilizar a MSXML4 para o processamento do banco de dados XML, que agora utiliza Schemas para verificar a integridade do banco de dados. Todas estas mudanças, e todas as outras que esqueci de documentar, refletem o amadurecimento do site e dos colaboradores do mesmo.


Gostaria de agradecer, do fundo do coração, à todos aqueles que não importam-se em ceder uma pequena fração de seu tempo para ajudar os iniciantes, iniciantes esses que todos nós já fomos um dia.


Seria arriscado citar todas as pessoas que colaboraram com o lançamento desta nova versão, por corrermos o risco de esquecermos alguém. Mas, assim mesmo, obrigado, Darkness, Al Bundy, Blade, Motoman, etc, etc, etc.


Sem mais delongas, bem vindo! Aproveita a estadia e


UM FELIZ NATAL!



Esta matéria foi postada originalmente no ASP4Developers por Rubens N. Farias (site), que na época era "pós-graduado em análise de sistemas orientados a objetos, MCP, MCSD, MCAD, MCSD.NET e consultor em TI, além de idealizador do projeto ASP4Developers. Desenvolve sistemas sob medida, focados na satisfação do usuário, com qualidade e custo realista.". Hoje, vai saber...

sexta-feira, 21 de dezembro de 2001

0

Merry XMas!

Você comeu os legumes, fez sua lição de casa, arrumou seu quarto, tirou boas notas e não bateu no seu irmão mais novo. Conversei com o Papai Noel e ele promoteu algumas surpresas para a noite de Natal. Fique atento!



Esta matéria foi postada originalmente no ASP4Developers por Rubens N. Farias (site), que na época era "pós-graduado em análise de sistemas orientados a objetos, MCP, MCSD, MCAD, MCSD.NET e consultor em TI, além de idealizador do projeto ASP4Developers. Desenvolve sistemas sob medida, focados na satisfação do usuário, com qualidade e custo realista.". Hoje, vai saber...

quinta-feira, 13 de dezembro de 2001

0

Connection Pooling com ODBC

Todos sabem o peso que têm as conexões com o banco de dados no tempo de resposta da execução de páginas dinâmicas e mesmos dos softwares cliente/servidor.


Uma solução para este problema é chamado de Connection Pooling. O C.P. é uma pool, um conjunto, de conexões já abertas com o banco de dados, evitando assim que toda nova requisição de conexão com o banco precise ser novamente criada, tomando tempo e recursos da máquina.


O Pool libera uma das conexões abertas para cada requisitante de conexão com o BD, que depois é liberada, mas não fechada.


Portanto, todos os usuários do sistema compartilhariam um pool de conexões em comum, ganhando performance de acesso. O número de conexões do pool pode ser delimitado, variando de acordo com o número de usuários e requisições por tempo.


Para ter mais informações sobre usar o Pool de Conexões implementado pelo ODBC 3.0 visite o link (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnmdac/html/pooling2.asp).



Esta matéria foi postada originalmente no ASP4Developers por Daniel Destro do Carmo (site), que na época era "Analista de Sistemas, Web Developer e Programador Java certificado pela Sun.". Hoje, vai saber...

quinta-feira, 6 de dezembro de 2001

0

Mascara para CNPJ 99.999.999-99

Após muita dor de cabeça e muitas tentativas, finalmente a função que formata CGC/CNPJ, aliás, formata muito mais coisa ... hhahaahh é só dar uma olhada q vc entende como funciona.


Por favor preservar os direitos do autor.

================================


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">


<html>
<head>
 <title>Mascara CNPJ</title>
</head>


<body>
<form name=FormCpf>
<INPUT maxlength="14" size=25 name="cpf_cnpj" onkeypress="FormataCPF(document.FormCpf,'cpf_cnpj',11,8,5,2,event);">
</form>
<Script language="javascript">


//***************************
// ismael@admin.com.br
// se mudar, envia para que possamos ver.
// http://meuregistro.zardack.com.br
//***************************


function FormataCPF(pForm,pCampo,pTamMax,pPos1,pPos2,pPosTraco,pTeclaPres){
 var wTecla, wVr, wTam;
 
       // alert(pForm[pCampo].value);
  
 wTecla = pTeclaPres.keyCode;
 wVr = pForm[pCampo].value;
 wVr = wVr.toString().replace( "-", "" );
 wVr = wVr.toString().replace( ".", "" );
 wVr = wVr.toString().replace( ".", "" );
 wVr = wVr.toString().replace( "/", "" );
 wTam = wVr.length ;


 if (wTam < pTamMax && wTecla != 8) {
    wTam = wVr.length + 1 ;
 }


 if (wTecla == 8 ) {
    wTam = wTam - 1 ;
 }
   
 if ( wTecla == 8 || wTecla == 88 || wTecla >= 48 && wTecla <= 57 || wTecla >= 96 && wTecla <= 105 ){
  if ( wTam <= 2 ){
    pForm[pCampo].value = wVr ;
  }
  if (wTam > pPosTraco && wTam <= pTamMax) {
        wVr = wVr.substr(0, wTam - pPosTraco) + '-' + wVr.substr(wTam - pPosTraco, wTam);
  }
  if ( wTam == pTamMax){
        wVr = wVr.substr( 0, wTam - pPos1 ) + '.' + wVr.substr(wTam - pPos1, 3) + '.' + wVr.substr(wTam - pPos2, wTam);
  }
  pForm[pCampo].value = wVr;
 
 }


}
</script>
</body>
</html>



Esta matéria foi postada originalmente no ASP4Developers por Ismael Nobre (site), que na época era "Analista.
Quer me contratar ?
Cel. 96420687". Hoje, vai saber...

quarta-feira, 5 de dezembro de 2001

0

Evite que suas páginas fiquem no CASH da Máquina

Assim suas páginas não ficaram mas no CASH da sua máquina facilitando as suas atualizações...


<%
Response.addHeader "pragma", "no-cache"
Response.CacheControl = "Private"
Response.Expires = 0
%>



Esta matéria foi postada originalmente no ASP4Developers por Thiago Machado Souza (site), que na época era "Programador Desbravador, buscando quebrar todas as fronteiras além do horizonte da arte de programar !
www.thiagomachado.com.br". Hoje, vai saber...

sexta-feira, 30 de novembro de 2001

0

Passe as variaveis por valor sem ByVal

Se você deseja passar as variáveis por valor, para uma Sub ou Function que não teve seus argumentos declarados com ByVal, use '('e ')' em torno da variável que vc está passando como parâmetro.


Veja o código do exemplo. A variával Var2 tem seu valor alterado, porque foi passada por referência (default no VB até a versão 6), enquanto que a variável Var1 não, embora a sub MudaValor não teve seus primeiro argumento declarado como ByVal.


Sub MudaValor(Var1 As String, Var2 As String)


Var1 = "Valor alterado"
Var2 = "Valor alterado"


End Sub


'====================


Private Sub Form_Click()


Dim Var1 As String
Dim Var2 As String


Var1 = "O valor não foi alterado"
Var2 = "O valor não foi alterado"


MudaValor (Var1), Var2


Print Var1
Print Var2


Print


Var1 = "O valor não foi alterado"
Var2 = "O valor não foi alterado"


MudaValor Var1, Var2


Print Var1
Print Var2


End Sub


'===========================


Execute o programa, e no form que abrir, dê um clique no mesmo. O resultado das chamadas à Sub MudaValor aparecerão impressas no próprio form



Esta matéria foi postada originalmente no ASP4Developers por Valmir Cinquini (site), que na época era "Analista/Programador C#, VB.Net, ASP, VB, Javascript e T-SQL

www.cinquini.com.br/vcinquini>". Hoje, vai saber...

quinta-feira, 22 de novembro de 2001

0

Validar Cartao de Credito

' Valida numero de cartao de credito
' Retorna True se valido, False se invalido
'
' Exemplo:
'  If ValidaCartaoCredito(Value:="1234-123456-12345") Then


Function ValidaCartaoCredito(Value As Variant) As Boolean
    Dim strTemp As String
    Dim intCheckSum As Integer
    Dim blnDoubleFlag As Boolean
    Dim intDigit As Integer
    Dim i As Integer


    On Error GoTo ErrorHandler


    ValidaCartaoCredito = True
    Value = Trim$(Value)


    If Len(Value) = 0 Then
        ValidaCartaoCredito = False
 Exit function
    End If


    ' Se mesmo depois de retirar nao-numericos, nao sobrou nada, foi digitado lixo
    For i = 1 To Len(Value)
        If IsNumeric(Mid$(Value, i, 1)) Then strTemp = strTemp & Mid$(Value, i, _
            1)
    Next
    If Len(strTemp) = 0 Then
        ValidaCartaoCredito = False
    End If


    'Diferentes tamanhos para diferentes bandeiras de CC
    Select Case Mid$(strTemp, 1, 1)
        Case "3"    'Amex
            If Len(strTemp) <> 15 Then
                ValidaCartaoCredito = False
            Else
                Value = Mid$(strTemp, 1, 4) & "-" & Mid$(strTemp, 5, _
                    6) & "-" & Mid$(strTemp, 11, 5)
            End If
        Case "4"    'Visa
            If Len(strTemp) <> 16 Then
                ValidaCartaoCredito = False
            Else
                Value = Mid$(strTemp, 1, 4) & "-" & Mid$(strTemp, 5, _
                    4) & "-" & Mid$(strTemp, 9, 4) & "-" & Mid$(strTemp, 13, 4)
            End If
        Case "5"    'Mastercard
            If Len(strTemp) <> 16 Then
                ValidaCartaoCredito = False
            Else
                Value = Mid$(strTemp, 1, 4) & "-" & Mid$(strTemp, 5, _
                    4) & "-" & Mid$(strTemp, 9, 4) & "-" & Mid$(strTemp, 13, 4)
            End If
        Case Else      'Lixo - nao e numero de cartao de credito
            If Len(strTemp) > 20 Then
                ValidaCartaoCredito = False
            End If
    End Select


    'Check Sum (Mod 10)
    intCheckSum = 0                                    
    blnDoubleFlag = 0                                  


    For i = Len(strTemp) To 1 Step -1                  
        intDigit = Asc(Mid$(strTemp, i, 1))             ' Isola o caracter


        If intDigit > 47 Then                           ' Pula se nao e um inteiro


            If intDigit < 58 Then
                intDigit = intDigit - 48                ' Remove ASCII bias


                If blnDoubleFlag Then                  
                    intDigit = intDigit + intDigit      ' primeiro duplica-o


                    If intDigit > 9 Then
                        intDigit = intDigit - 9        
                    End If


                End If
                blnDoubleFlag = Not blnDoubleFlag      
                intCheckSum = intCheckSum + intDigit   


                If intCheckSum > 9 Then                
                    intCheckSum = intCheckSum - 10      ' (mesmo que MOD 10 mas mais rapido)
                End If
            End If
        End If
    Next


    If intCheckSum <> 0 Then                            '  Deve totalizar zero
        ValidaCartaoCredito = False
    End If


ErrorHandler:
    Err.Raise Err.Number, "ValidaCartaoCredito", Err.Description


End Function



Esta matéria foi postada originalmente no ASP4Developers por Valmir Cinquini (site), que na época era "Analista/Programador C#, VB.Net, ASP, VB, Javascript e T-SQL

www.cinquini.com.br/vcinquini>". Hoje, vai saber...

quarta-feira, 21 de novembro de 2001

0

Arquivo -> BLOB: Copie o conteudo de um arquivo para um campo BLOB

' Este codigo copia o conteudo de um arquivo para um campo BLOB.


Sub FileToBlob(fld As ADODB.Field, filename As String, _
    Optional ChunkSize As Long = 8192)
    Dim fnum As Integer, bytesLeft As Long
    Dim bytes As Long
    Dim tmp() As Byte
   
    ' Gera erro se o campo nao suporta o GetChunk.
    If (fld.Attributes And adFldLong) = 0 Then
        Err.Raise 1001, , "Field doesn't support the GetChunk method."
    End If


    ' Abre o arquivo; Gera erro se ele nao existir.
    If Dir$(filename) = "" Then Err.Raise 53, , "Ops! Arquivo nao encotrado."
   
    fnum = FreeFile
    Open filename For Binary As fnum


    ' Le o arquivo em pedacos e inclui dados ao campo BLOB.
    bytesLeft = LOF(fnum)
    Do While bytesLeft
        bytes = bytesLeft
        If bytes > ChunkSize Then bytes = ChunkSize
        ReDim tmp(1 To bytes) As Byte
        Get #1, , tmp
        fld.AppendChunk tmp
        bytesLeft = bytesLeft - bytes
    Loop
   
    Close #fnum
End Sub



Esta matéria foi postada originalmente no ASP4Developers por Valmir Cinquini (site), que na época era "Analista/Programador C#, VB.Net, ASP, VB, Javascript e T-SQL

www.cinquini.com.br/vcinquini>". Hoje, vai saber...

0

BLOB -> Arquivo: Copie o conteudo de um campo BLOB para um arquivo

' Este codigo copia o conteudo de um campo BLOB para um arquivo.

Sub BlobToFile(fld As ADODB.Field, filename As String, _
Optional ChunkSize As Long = 8192)
Dim fnum As Integer, bytesLeft As Long
Dim bytes As Long
Dim tmp() As Byte

' Gera erro se o campo nao suporta o GetChunk.
If (fld.Attributes And adFldLong) = 0 Then
Err.Raise 1001, , "Campo nao suporta o metodo GetChunk."
End If

' Apaga o arquivo se ele ja existe

' e cria um novo.

If Dir$(filename) <> "" Then Kill filename

fnum = FreeFile
Open filename For Binary As fnum
' Le o conteudo e escreve os dados no arquivo.
bytesLeft = fld.ActualSize

Do While bytesLeft
bytes = bytesLeft
If bytes > ChunkSize Then bytes = ChunkSize
tmp = fld.GetChunk(bytes)
Put #fnum, , tmp
bytesLeft = bytesLeft - bytes
Loop

Close #fnum
End Sub


Esta matéria foi postada originalmente no ASP4Developers por Valmir Cinquini (site), que na época era "Analista/Programador C#, VB.Net, ASP, VB, Javascript e T-SQL

www.cinquini.com.br/vcinquini>". Hoje, vai saber...

segunda-feira, 19 de novembro de 2001

0

Use a função Sleep da API para adicionar pausas ao seu programa


Não use um For...Next vazio para adicionar pausas
ao seus programas. Use a função Sleep da API, que
libera a CPU e deixa as outras aplicações
efetivamente trabalharem no sistema:

Declare Sub Sleep Lib "kernel32" (ByVal milliseconds As Long)

' pause for 5 seconds
Sleep 5000

Esta tecnica só funciona em edições 32 bits do Visual Basic; Não há função equivalente na API Win16 bits.




Esta matéria foi postada originalmente no ASP4Developers por Valmir Cinquini (site), que na época era "Analista/Programador C#, VB.Net, ASP, VB, Javascript e T-SQL

www.cinquini.com.br/vcinquini>". Hoje, vai saber...

0

Conte substrings com a função Replace

Voce pode usar a função Replace para simplificar (e até
otimizar) seu código. Por exemplo, a fim de contar o
número de ocorrências de uma substring dentro de uma
string, geralmente se precisa de um loop baseado na
função InStr:

Dim i As Long, count As Long
i = InStr(source, search)
Do While i
count = count + 1
i = InStr(i + 1, source, search)
Loop
Aqui vai um código em uma linha que faz
exatamente o mesmo. O truque esta em trocar
cada substring com outra string que é um
caracter maior, e então determinar a diferença
entre a string obtida e a original. Este
número é igual ao número de substituições
feitas, e portanto igual ao número de
substituições encontradas. (Note que o
código é mais conciso que o anterior, porém
um pouco mais lento que a solução anterior).
count = Len(Replace(Source, Search, Search & "*")) - Len(Source)


Esta matéria foi postada originalmente no ASP4Developers por Valmir Cinquini (site), que na época era "Analista/Programador C#, VB.Net, ASP, VB, Javascript e T-SQL

www.cinquini.com.br/vcinquini>". Hoje, vai saber...

sexta-feira, 16 de novembro de 2001

0

Global.asa, Contador de page views e de usuários on-line

Em várias listas que sou assinante, vejo colegas em busca de uma solução para conhecer o total de usuários que estão acessando o site no momento. Este tipo de solução é bastante simples de ser implementada através do arquivo globa.asa.

O arquivo global.asa deve ser salvo no diretório raiz do site. É de boa prática, ter apenas um arquivo global.asa por aplicativo.

O objetivo será de criar um simples contador de page views e também um contador para usuários on-line. Abaixo, o script de nosso global.asa.

Arquivo Global.asa
*******************************************************
<SCRIPT LANGUAGE=VBSCRIPT RUNAT=SERVER>

Sub Application_OnStart
      Application("intTotUser") = 0
      Application("datServerUp") = Now()
      Application("intTotOnLine") = 0
End Sub

Sub Application_OnEnd
End Sub

Sub Session_OnStart
      Session.TimeOut = 10
      Application.Lock
            Application("intTotUser") = Application("intTotUser") + 1
            Application("intTotOnLine") = Application("intTotOnLine") + 1
      Application.Unlock
End Sub

Sub Session_OnEnd
      Application.Lock
            Application("intTotOnLine") = Application("intTotOnLine") - 1
      Application.Unlock
End Sub

</SCRIPT>

*******************************************************

:::::::::::::EXCLARECENDO AS DÚVIDAS:::::::::::::

-------------------------------------------------------
Sub Application_OnStart
      Application("intTotUser") = 0
      Application("datServerUp") = Date()
      Application("intTotOnLine") = 0
End Sub

-------------------------------------------------------

O procedimento Sub Application_OnStart somente é executado uma única vez após a primeira requisição atendida pelo aplicativo.

O ASP executa automaticamente o procedimento Sub Application_OnStart toda a vez que o aplicativo é iniciado. Exemplo: O servidor web é reiniciado, e em seguida um navegador requisita uma página do aplicativo.

Neste caso, o procedimento Sub Application_OnStart é executado e três novas variáveis Application serão criadas:

-------------------------------------------------------
Application("intTotUser") -> Nesta variável será armazenado o total de usuário que acessaram o site desde a ultima vez que o servidor web foi reinicializado.

Application("datServerUp") -> Nesta variável será armazenada a data da primeira requisição atendida pelo aplicativo.

Application("intTotOnLine") -> Nesta variável será armazenado o total de usuários que estão acessando a aplicação no momento.

-------------------------------------------------------
Sub Session_OnStart
      Session.TimeOut = 10
      Application.Lock
            Application("intTotUser") = Application("intTotUser") + 1
            Application("intTotOnLine") = Application("intTotOnLine") + 1
      Application.Unlock
End Sub
-------------------------------------------------------

O procedimento Sub Session_OnStart será executado toda a vez que uma nova sessão é criada.

Neste caso, foi usado esse procedimento para incrementar a variável Application "intTotUser" e "intTotOnLine". Toda a vez que uma nova sessão for criada, as variáveis Application serão incrementadas de um.

Observe que foi usado o método "Lock" e "Unlock" do objeto Application. Esses métodos já foram explicados em um artigo já publicado, mas para relembrar: O método "Lock" é usado para garantir que dois usuários não atualizem a mesma variável ao mesmo tempo. E "Unlock", é usado para liberar a variável e permitir uma nova atualização.

-------------------------------------------------------
Sub Session_OnEnd
      Application.Lock
            Application("intTotOnLine") = Application("intTotOnLine") - 1
      Application.Unlock
End Sub

-------------------------------------------------------

O procedimento Sub Session_OnEnd é executado toda a vez que uma sessão é finalizada pelo servidor. Um dos eventos poderia ser: 1) Foi usado o método Abandon do objeto Session 2) Tempo de inatividade da sessão foi atingida 3) O navegador foi finalizado.

Neste caso, foi usado este procedimento para subtrair 1 (um) da variável Application "intTotOnLine". Desta forma será possível saber a quantidade exata de usuários conectados à aplicação.

O procedimento Sub Application_OnEnd é executado toda a vez que a aplicação é finalizada. Não é comum você ver procedimentos neste evento, isso porque executar um evento depois que o aplicativo e finalizado está fora do escopo de produção. Um bom uso talvez deste evento seria para registrar em log a data e hora que o aplicativo foi finalizado.

SCRIPT PARA MOSTRAR O RESULTADO
-------------------------------

script_001.asp
*******************************************************
<%Response.Buffer=True%>

<html>
<head>
<title>Acessos On-Line</title>
</head>
<body>

<%
Dim intSessionId
intSessionId = Session.SessionID

Dim intTotOnLine
intTotOnLine = Application("intTotOnLine")

Dim intTotUser
intTotUser= Application("intTotUser")
%>

<p><b>Sessão Identificada:</b> <%=intSessionId%></p>
<p><b>Informações úteis:</b></p>
<p><b>Usuários On-Line:</b> <%=intTotOnLine%></p>
<p><b>Total de acessos até o momento:</b> <%=intTotUser%></p>
<p><b>Data da última inicialização:</b> <%=datServerUp%></p>

</body>
</html>

*******************************************************


Boa Programação!


Esta matéria foi postada originalmente no ASP4Developers por Leonardo da Silva Calado (site), que na época era "Usuário avançado de Dreamweaver ultradev e programador ASP, JSP, PHP, VISUAL BASIC e Condfusion.
tenho preferência por ASP uma linguagem de facil aprendizado.". Hoje, vai saber...

0

Informações adicionais sobre Cookies

Os cookies são pequenos arquivos do tipo texto armazenados no computador do usuário. Estes pequenos arquivos armazenam informações diversas definidas pelo programador do site. O usuário poderá bloquear o aceite dos cookies através do próprio navegador ou por outros programas com o mesmo objetivo. O uso de cookies é bastante comum em sistemas para medir audiência de visitação, registrar as preferências do usuário ou até mesmo rastrear seus cliques no site.

******************************************************
Atributo Descrição

Domain: Se especificado, o cookie será enviado somente para os solicitações deste domínio.

Expires: A data em que o cookie expira. Essa data deve ser definida para que o cookie seja armazenado no computador do usuário após a conclusão da sessão. Se este atributo não for definido com uma data posterior a atual, o cookie expirará quando a sessão for finalizada.

HasKeys: Especifica se o cookie contém chave retornando True/ False.

Path: Se especificado, o cookie será enviado sempre que houver uma requisição neste caminho. Se este atributo não for definido, o caminho do script asp que o criou será utilizado.

Secure: Indica que o cookie deve ser enviado somente se o Secure Sockets Layer estiver ativo.
******************************************************

Criar um cookie
Se o cookie especificado não existir, ele será criado. Se existir, ele apanhará o novo valor e o valor antigo será descartado. O script abaixo cria um cookie chamado MyCookie:

<%
Response.Cookies("MyCookie") = "Novo Cookie"
%>


Usa-se o objeto "Request" para recuperar o valor do cookie :

<%
Dim MyVar
MyVar = Request.Cookies("MyCookie")

Response.Write "<p><b>"&MyVar&"</b></p>"
%>


Armazenar o valor de uma variável
Para gravar um cookies com o conteúdo de uma variável, é necessário que você utilize a função CStr() para converte-la no tipo string.

<%
MyVar = Request.Form("strName")
Response.Cookies("MyCookie") = CStr(MyVar)
%>

Várias informações em um único Cookie
A coleção Cookie poderá armazenar múltiplos valores em um único Cookie

<%
Response.Cookies("MyCookie")("MyCity") = "Belo Horizonte"
Response.Cookies("MyCookie")("MySite") = "Suportebrasil.NET"
%>


Para recuperar o valor de uma das chaves :

******************************************************
<%
Dim MyCity
MyCity = Request.Cookies("MyCookie")("MyCity")

Dim MySite
MySite = Request.Cookies("MyCookie")("MySite")

Response.Write "<p><b>Cidade : "&MyCity&"</b></p>"
Response.Write "<p><b>Site : "&MySite&"</b></p>"
%>
******************************************************

A regra para atribuir o valor de uma variável a uma das chaves de um cookie é a mesma empregada para criar um cookie sem chave. Usa-se a função "CStr()".

Muita atenção a essa regra:

Uma atribuição subseqüente a "MyCookie" criado no script acima, sem a especificação de uma chave, causaria a destruição das chaves "MyCity" e "MySite". Veja o script abaixo :

<%
Response.Cookies("MyCookie") = "Belo Horizonte"
%>

No script acima, as chaves "MyCity" e "MySite" são destruídas e seus valores descartados. O cookie "MyCookie", agora contém o valor "Belo Horizonte".

Como complemento, se você atribuir uma chave a um cookie que não tem chave, o valor não chave desse cookie será destruído. Por exemplo : Se depois do código anterior for feito:

<%
Response.Cookies("MyCookie")("MyJob") = "Programador"
%>

O valor "Belo Horizonte" é destruído e a sub chave MyJob estará armazenando o valor Programador.

Cookie com Chaves
Para determinar se um cookie tem chaves, utilize a seguinte sintaxe :

<%
Response.Write Request.Cookies("MyCookie").HasKeys
%>

Se "MyCookie" for um dicionário de cookie, o valor impresso será "TRUE" caso contrário "FALSE".

Interagir entre as chaves de um cookie
Podemos interagir entre as chaves de um Cookie através da instrução For Each.

******************************************************
<%
For Each Subkey in Request.Cookies("MyCookie")
        Response.Write SubKey &" - "& Request.Cookies("MyCookie")(Subkey)
Next
%>

******************************************************

Se você interagir em um cookie que não tem chave, o mesmo não será executado. É uma boa prática checar se o cookie tem chaves. O script acima ficaria mais correto se fosse escrito dessa forma :

******************************************************
<%
If Request.Cookies("MyCookie").HasKeys then
        For Each Subkey in Request.Cookies("MyCookie")
               Response.Write SubKey &" - "& Request.Cookies("MyCookie")(Subkey)
        Next
End If
%>
******************************************************

Atributos de um cookie

******************************************************
<%
Response.Cookies("UserLogin") = "joses"
Response.Cookies("UserLogin").Expires = #31/12/2000#
Response.Cookies("UserLogin").Domain = "/suportebrasil.net/"
Response.Cookies("UserLogin").Path = "/artigos"
Response.Cookies("UserLogin").Secure = FALSE
%>

******************************************************

Boa Programação!


Esta matéria foi postada originalmente no ASP4Developers por Leonardo da Silva Calado (site), que na época era "Usuário avançado de Dreamweaver ultradev e programador ASP, JSP, PHP, VISUAL BASIC e Condfusion.
tenho preferência por ASP uma linguagem de facil aprendizado.". Hoje, vai saber...

0

Armazenando Informações em Cookies

A personalização está fazendo com que todos os usuários sejam identificados, mesmo para saber de onde vieram que hora chegaram e o que fizeram. Isso é bom ou ruim para a performance do servidor e da aplicação asp?

A minha resposta é : Tudo vai depender da real necessidade de manter a informação. Você como programador deve saber que os cookies podem ser destruídos pelos usuários assim que eles quiserem, por isso se for para manter uma informação de grande importância, que essa informação seja mantida no banco de dados da aplicação e não em cookies, que são pequenos arquivos armazenados no computador do usuário.

Um bom exemplo para o uso de cookies é a identificação do acesso do usuário e de suas preferências dentro do site. Isso é apenas para os webmasters conhecerem seu público. Mas os cookies também podem ser usados para manter informações ativas durante a permanência do usuário na aplicação. Ex: Controle de Acesso.

Vou mostrar um exemplo bem completo que tem como objetivo mostrar a funcionalidade básica do cookie. Como já foi dito, cookies são informações que podemos gravar no computador do usuário.

A coleção Cookies é usada para enviar um cookie para o navegador do usuário. Permite atribuir um novo valor a um cookie (se ele já existir); caso contrário, o cookie será criado e o valor será atribuído. Por alterarem valores do cabeçalho HTTP response, os valores da coleção Cookies devem ser enviados antes que qualquer código HTML seja enviado para o navegador, exceto se Response.Buffer estiver como True.

1) A página HTML cadastro1.htm cria um formulário simples para receber dois valores do usuário, que neste caso serão o nome e e-mail. Estes valores serão submetidos para página asp cadastro2.asp.

**************************************************
<html>
<head>
<title> Trabalhando com cookies</title>
</head>
<body>
<form method="post" name="cookiesform" action="cadastro2.asp">
<input type="text" name="nome" size="50"><br>
<input type="text" name="email" size="50"><br>
<input type="submit" value="Enviar dados"><br><br>
</form>
</body>
</html>

**************************************************

2) A página asp cadastro2.asp receberá os valores enviados pelo formulário da página cadastro1.htm e criará os cookies: nome e e-mail. Nesta mesma página, criaremos um formulário para solicitar os campos Cidade e Uf.

**************************************************
<%Response.Buffer=True%>
<html>
<head>
<title> Trabalhando com cookies</title>
</head>
<body>
<%
Dim nome,email
nome = Request.Form("nome")
email = Request.Form("email")
Response.Cookies("nome") = CStr(nome)
Response.Cookies("email") = CStr(email)
%>
<form method="post" name="cookiesform" action="cadastro3.asp">
<input type="text" name="cidade" size="50"><br>
<input type="text" name="uf" size="2"><br>
<input type="submit" value="Enviar dados"><br><br>
</form>
</body>
</html>

**************************************************

Os cookies armazenam dados do tipo string. É bom usar a função Cstr() para converter a variável para esse tipo.

3) A página asp cadastro3.asp vai ler o conteúdo dos cookies nome e email que foram criados pela página cadastro2.asp e apresentá-los como conteúdo de seu campo de formulário correspondente.

**************************************************
<%Response.Buffer=True%>
<html>
<head>
<title> Trabalhando com cookies</title>
</head>
<body>
<%
Dim nome,email,cidade,uf
nome = Request.Cookies("nome")
email = Request.Cookies("email")
cidade = Request.Form("cidade")
uf = Request.Form("uf")
%>
<form method="post" name="cookiesform" action="inserirdados.asp">
<input type="text" name="nome" size="50" value="<%=nome%>"><br>
<input type="text" name="email" size="50" value="<%=email%>"><br>
<input type="text" name="cidade" size="50" value="<%=cidade%>"><br>
<input type="text" name="uf" size="2" value="<%=uf%>"><br>
<input type="submit" value="Enviar dados"><br><br>
</form>
</body>
</html>

**************************************************

Se você executar os scripts acima, vai ver que o campo "nome" e "email" foram preenchidos pelos valores recuperados de seus respectivos cookies. Na prática é deste jeito que manipulamos cookies via script asp.

Boa Programação!

Esta matéria foi postada originalmente no ASP4Developers por Leonardo da Silva Calado (site), que na época era "Usuário avançado de Dreamweaver ultradev e programador ASP, JSP, PHP, VISUAL BASIC e Condfusion.
tenho preferência por ASP uma linguagem de facil aprendizado.". Hoje, vai saber...

quinta-feira, 8 de novembro de 2001

0

Matando uma variavel do tipo Session() (ASP)

Para remover uma classe da memoria em um script, basta voce setar o objeto como nothing:


set myObjecto.myClass = nothing


Para fazer o mesmo com variaveis de sessao (session("<nome>"),  basta voce seta-la como Null:


session("blablabla") = null


e ela estara removida da memoria. Tome cuidado ao matar uma variavel. Voce pode precisar dela mais adiante!  8>)



Esta matéria foi postada originalmente no ASP4Developers por Valmir Cinquini (site), que na época era "Analista/Programador C#, VB.Net, ASP, VB, Javascript e T-SQL

www.cinquini.com.br/vcinquini>". Hoje, vai saber...

quinta-feira, 25 de outubro de 2001

0

Senhas Aleatórias com Números e Letras

<%
Function GerarChave(valores)


Dim chr_Array(35)


chr_array(0) = "0"
chr_array(1) = "1"
chr_array(2) = "2"
chr_array(3) = "3"
chr_array(4) = "4"
chr_array(5) = "5"
chr_array(6) = "6"
chr_array(7) = "7"
chr_array(8) = "8"
chr_array(9) = "9"
chr_array(10) = "a"
chr_array(11) = "b"
chr_array(12) = "c"
chr_array(13) = "d"
chr_array(14) = "e"
chr_array(15) = "f"
chr_array(16) = "g"
chr_array(17) = "h"
chr_array(18) = "i"
chr_array(19) = "j"
chr_array(20) = "k"
chr_array(21) = "l"
chr_array(22) = "m"
chr_array(23) = "n"
chr_array(24) = "o"
chr_array(25) = "p"
chr_array(26) = "q"
chr_array(27) = "r"
chr_array(28) = "s"
chr_array(29) = "t"
chr_array(30) = "u"
chr_array(31) = "v"
chr_array(32) = "w"
chr_array(33) = "x"
chr_array(34) = "y"
chr_array(35) = "z"


Randomize
do while len(chave) < 06
num = chr_array(Int(35 * Rnd ))
chave = chave + num
loop
GerarChave = chave
End Function


response.write "Senha gerada:  " & GerarChave(06) '& vbcrlf


%>



Esta matéria foi postada originalmente no ASP4Developers por Marcio Lima (Guardião) (site), que na época era "Programador ASP e VBA, apaixonado por Design, futurismo e ficção.
". Hoje, vai saber...

quinta-feira, 18 de outubro de 2001

0

MSXML4

Estou impressionado. Estava fazendo uns testes com o recém lançado MSXML4, a respeito do divulgado aumento de performance de 4 a 8 vezes. Uma página que levava ~3.5 segundos para ser processada com XSLT, passou a ser em ~0.5 segundo! O único incoveniente foi declarar o namespace do documento XSL, antes de exeutar uns XPaths (o que tem um certo sentido).


Segundo a documentação divulgada em http://msdn.microsoft.com/xml/ , o suporte ao SAX está mais rápido, adere aos padrões do W3C e possui "uma verdadeira funcionalidade side-by-side", o que significa que instalando a versão 4.0 não é perdido o suporte as versões anteriores e nem as futuras. Com a remoção do "replace mode", os recursos da versão 4.0 só serão utilizados caso utilize os Version-Dependent ProgID


Caso vc vá instalar e está confuso em qual pacote baixar, vá direto no "Installer", pois ele já possui o SDK tbém. Mas note, vc precisa desregistrar a msxml4.dll, caso tenha instalado os Tecnology Preview. Para isso faça:


regsvr32 /u msxml4.dll
regsvr32 msxml3.dll


No prompt de comando e depois comece a instalação. Um link para a documentação será colocado no seu desktop. Aí é só correr pro abraço!


Aproveitando o papel, aviso que dentro de pouco tempo o ASP4D 2.0 vai ser publicado. terminei o layout e estou trabalhando no fórum. Não vou prometer datas, mas ressalto que vai ser logo mesmo! Stay tunned!


Cya!



Esta matéria foi postada originalmente no ASP4Developers por Rubens N. Farias (site), que na época era "pós-graduado em análise de sistemas orientados a objetos, MCP, MCSD, MCAD, MCSD.NET e consultor em TI, além de idealizador do projeto ASP4Developers. Desenvolve sistemas sob medida, focados na satisfação do usuário, com qualidade e custo realista.". Hoje, vai saber...

quarta-feira, 17 de outubro de 2001

3

Fade de Texto em ASP

Hahahaha, dpois q tudo q me falam que dá pra fazer isto com CSS, bom agora q já ta feito ...
Hehehehe, espero q sirva para alguem.


Nivel  - Intermediário


<%


' Uma produção dos estudios Half Malf


' Obrigado aos amigos "Underground",
' "Voodoo", "Th3V1rus","ED+","Hand Full", "Xanddinho"
' q constantemente tiram as minhas dúvidas.


' str Variavel a ser "FADEADA"


' R1 A quantidade de vermelho inicial ( 0 - 255 )
' G1 A quantidade de verde inicial    ( 0 - 255 )
' B1 A quantidade de Azul inicial     ( 0 - 255 )


' R2 A quantidade de vermelho final ( 0 - 255 )
' G2 A quantidade de verde final    ( 0 - 255 )
' B2 A quantidade de Azul final     ( 0 - 255 )


function fadeText(str, R1, G1, B1, R2,G2, B2)
   
 Dim htmlTxtxt, X
 
    if str = "" Then Exit function
 
    R2 = ((R2 - R1) / Len(str))
    G2 = ((G2 - G1) / Len(str))
    B2 = ((B2 - B1) / Len(str))
   
 For X = 0 To Len(str) - 1
     R = Abs(Int(R1 + (R2 * X)))
     G = Abs(Int(G1 + (G2 * X)))
     B = Abs(Int(B1 + (B2 * X)))
     
  htmlTxt = htmlTxt & "<FONT color="
     htmlTxt = htmlTxt & Chr(34) & "#"
     
  if R < 17 Then htmlTxt = htmlTxt & "0"
      htmlTxt = htmlTxt & Hex(R)
     if G < 17 Then htmlTxt = htmlTxt & "0"
      htmlTxt = htmlTxt & Hex(G)
     if B < 17 Then htmlTxt = htmlTxt & "0"
      htmlTxt = htmlTxt & Hex(B)
      htmlTxt = htmlTxt & Chr(34)
      htmlTxt = htmlTxt & ">"
      htmlTxt = htmlTxt & Mid(str, X + 1, 1)
      htmlTxt = htmlTxt & "</FONT>"
    Next
 
    fadeText = htmlTxt
 
    End function
%>
 


<%= fadeText("ASP4Developers ASP4Developers ASP4Developers", 0,0,0,255,255,255) %>


 



Esta matéria foi postada originalmente no ASP4Developers por Ismael Nobre (site), que na época era "Analista.
Quer me contratar ?
Cel. 96420687". Hoje, vai saber...

quarta-feira, 10 de outubro de 2001

0

Diferença entre horas pré-definidas

Uma maneira bem simples de calcular diferenças entre horários.
Eu bati neste problema quando montava um sisteminha para controlar meus horarios ( tipo consultor ).
Assim q ele estiver pronto vou colocar para Download.
Qualquer melhoria, não esqueçam de postar.


<%


function horas(intervalo,Entrada01,Saida01,Entrada02,Saida02)


 'pega a diferença em segundos
 dia01 = DateDiff (intervalo,Entrada01,Saida01)
 dia02 = DateDiff (intervalo,Entrada02,Saida02)


 'faz a somatória dos segundos
 totalSegundos = dia01 - dia02


 'separa horas:minutos do total
 segundos = (totalSegundos) mod  60
 minutos = (( totalSegundos - segundos) / 60) mod 60
 horas = int((totalSegundos) / 3600)
 
 response.write horas &":"&minutos&":"&segundos
end function


response.write horas("s","08:59:0","18:46:00","12:00:00","13:00:00")


%>



Esta matéria foi postada originalmente no ASP4Developers por Ismael Nobre (site), que na época era "Analista.
Quer me contratar ?
Cel. 96420687". Hoje, vai saber...

quarta-feira, 3 de outubro de 2001

0

Função para ajudar a depurar ASP

Esta função é feita em ASP com javascript, basta passa a mensagem ou variável desejada como parâmetro para ser exibida.
Espero ter ajudado!!


<html>
<head>
<title>Função de Depuração - Myers :: mayersk@hotmail.com</title>
</head>


<body bgcolor="#FFFFFF">
<%
'Exibe em uma janela Pop-up a mensagem passada como parêmetro
Function MsgBox(msg)
   MsgBox = "<script>alert('"&replace(msg,"'","""")&"')</script>"
End Function


   variavel = 0
   response.write MsgBox("valor inicial:"&variavel)
   response.write "<br>Valor Inicial:"&variavel


   '-- Seção 1 --
   variavel = variavel + 1
   response.write MsgBox("Secao 1\nvalor:"&variavel)
   response.write "<br>Seção 1 >> valor:"&variavel


   '-- Seção 2 --
   variavel = variavel + 3
   response.write MsgBox("Secao 2\nvalor:"&variavel)
   response.write "<br>Seção 2 >> valor:"&variavel


   '-- Seção 3 --
   variavel = variavel + 1
   response.write MsgBox("Secao 3\nvalor:"&variavel)
   response.write "<br>Seção 3 >> valor:"&variavel


   '-- Seção 4 --
   variavel = variavel + 2
   response.write MsgBox("Secao 4\nvalor:"&variavel)
   response.write "<br>Seção 4 >> valor:"&variavel



   response.write MsgBox("valor final:"&variavel)
   response.write "<br>Valor Final:"&variavel
%>
<br>
<br>
<a href="mailto:mayersk@hotmail.com">
<font face="Arial, Helvetica, sans-serif" size="2" color="#000000" style="text-decoration:none;">Myers
:: mayersk@hotmail.com</font> </a>
</body>
</html>



Esta matéria foi postada originalmente no ASP4Developers por Rafael "M4yers" Rossi (site), que na época era "...". Hoje, vai saber...

terça-feira, 2 de outubro de 2001

0

Execute um script SQL pelo VB

O exemplo a seguir executará um script SQL em um arquivo.  Desta maneira, o arquivo pode conter multiplos comandos, mas somente um único batch (sem comandos 'GO').  Se você precisa executar um arquivo de script contendo mais de um batch, você terá que ler o arquivo linha a linha e executar os comandos contidos nas linhas lidas, quando você encontrar um comando 'GO'.  Note que 'GO' é um delimitador de batches e não um comando T-SQL, portanto, você não pode incluí-lo na string do query enviado ao servidor.

Set oCn = CreateObject("ADODB.Connection")
Set oFSO = CreateObject("Scripting.FileSystemObject")
oCn.Open "Provider=SQLOLEDB;Data Source=MyServer;Initial
Catalog=MyDatabase;Integrated Security=SSPI"
oCn.Execute oFSO.OpenTextFile("C:\SQLScripts\MySQLScript.sql").ReadAll

Esta matéria foi postada originalmente no ASP4Developers por Valmir Cinquini (site), que na época era "Analista/Programador C#, VB.Net, ASP, VB, Javascript e T-SQL

www.cinquini.com.br/vcinquini>". Hoje, vai saber...

segunda-feira, 1 de outubro de 2001

0

Limitar tamanho de palavras

Algumas vezes, é interessante quebrar o conteúdo de uma palavra gigantesca em palavras menores, mesmo que nao necessariamente corretamente separada, mas apenas para preservar o tamanho de uma tabela. Tente o código abaixo:


Function Quebra( texto, maximo )
dim i, retorno, matriz
matriz  = split( texto, " " )
retorno = ""
for i = 0 to uBound( matriz )
    do while len( matriz(i) ) > maximo
       retorno = retorno & left( matriz( i ), maximo ) & " "
       matriz( i ) = mid( matriz( i ), maximo + 1 )
    loop
    retorno = retorno & matriz( i ) & " "
next
Quebra = trim( retorno )
end function


Existem outras formas, envolvendo CSS, mas esta é a mais compatível com os diferentes browsers do mercado.



Esta matéria foi postada originalmente no ASP4Developers por Rubens N. Farias (site), que na época era "pós-graduado em análise de sistemas orientados a objetos, MCP, MCSD, MCAD, MCSD.NET e consultor em TI, além de idealizador do projeto ASP4Developers. Desenvolve sistemas sob medida, focados na satisfação do usuário, com qualidade e custo realista.". Hoje, vai saber...

terça-feira, 25 de setembro de 2001

0

.NET Beta 2

Para aqueles que, como eu, aguardavam ansiosamente pela chegada do Beta 2 da plataforma .Net, deve ter ficado decepcionado com o erro durante o processo de instalação. Segundo a Microsoft, um lote de CDs saiu com defeito, mas a instalação pode ser concluída com sucesso, caso você siga os passos indicados em http://www.microsoft.com/brasil/vstudio/beta2install.stm Vou tentar quando chegar em casa e posto as novidades.

Esta matéria foi postada originalmente no ASP4Developers por Rubens N. Farias (site), que na época era "pós-graduado em análise de sistemas orientados a objetos, MCP, MCSD, MCAD, MCSD.NET e consultor em TI, além de idealizador do projeto ASP4Developers. Desenvolve sistemas sob medida, focados na satisfação do usuário, com qualidade e custo realista.". Hoje, vai saber...