sexta-feira, 27 de dezembro de 2002

0

Função de Checagem de CNPJ


A função checkCNPJ() faz a checagem do CNPJ. Retorna true se estiver ok, ou false, caso contrário.

 

   function getNumber( number , len )
   {
      var result = '';
      var num, i;

 

      for ( i = 0 ; i < number.length ; i++ )
      {
         try
         {
            num = parseInt( number.substring( i, i + 1 ) );
            result += num;
         }
         catch (exception)
         { }
      }
      if ( result.length != len )
      {
         // Complet with zeros
         result = '000000000000000' + result;
         var newLen = result.length;
         result = result.substring ( newLen - len , newLen );
      }
      return result;
   }
  
   function check1( value )
   {
      var count = 1;
      var len = value.length;
      var first;
      if ( len > 1 )
      {
         first = value.charAt( 0 );
      }
      else
      {
         return false;
      }
      for ( var i = 1; i < value.length ; i++ )
      {
         if ( value.charAt( i ) == first )
         {
            count++;
         }
      }

 

      if ( count == len )
      {
         return false;
      }
     
      return true;
   }
  
 
   function checkCNPJ( cnpj )
   {
      var cnpjCalc;
      var cnpjAdd;
      var i;
      var cnpjDigit;
  
      cnpj = getNumber( cnpj , 14 );
     
      check1( cnpj );

 

      // Get only numeric digits
      cnpjCalc = cnpj.substring( 0 , 12 );
     
      // First part of digit verification
      cnpjAdd = 0;
      for( i = 0 ; i < 4 ; i++ )
      {
         cnpjAdd += parseInt( cnpjCalc.substring( i , i + 1 ) ) * (5 - i);
      }

 

      for( i = 0 ; i < 8 ; i++ )
      {
         cnpjAdd += parseInt( cnpjCalc.substring( i + 4 , i + 4 + 1 ) ) * (9 - i);
      }
     
      // Fisrt digit
      cnpjDigit = 11 - (cnpjAdd % 11);
      
      if ( cnpjDigit == 10 || cnpjDigit == 11 )
      {
         cnpjCalc += '0';
      }
      else
      {
         cnpjCalc += cnpjDigit;
      }
     
      // Second part of digit verification
      cnpjAdd = 0;
      for ( i = 0 ; i < 5 ; i++ )
      {
         cnpjAdd += parseInt( cnpjCalc.substring( i , i + 1 ) ) * (6 - i);
      }
      for ( i = 0 ; i < 8 ; i++ )
      {
         cnpjAdd += parseInt( cnpjCalc.substring( i + 5, i + 5 + 1 ) ) * (9 - i);
      }
     
      // Second digit
      cnpjDigit = 11 - (cnpjAdd % 11);
      if ( cnpjDigit == 10 || cnpjDigit == 11 )
      {
         cnpjCalc += '0';
      }
      else
      {
         cnpjCalc += cnpjDigit;
      }
     
      return ( cnpj == cnpjCalc );
   }

 

--
Francisco Pinto Araújo Júnior
Diretor de Tecnologia - Softexport Informática
Msc. Ciência da Computação
SCPJ2
Fone/Fax: +55 85 458 1947
pinto@softexport.com.br
www.softexport.com.br


Esta matéria foi postada originalmente no ASP4Developers por Francisco Pinto Araujo Junior (site), que na época era "Analista de Sistemas". Hoje, vai saber...

0

Checagem de CPF

A função checkCPF() faz a checagem do CPF. Retorna true se estiver ok, ou false, caso contrário.

 


 


function checkCPF(strNumber)
{
   var result = true;
   var digit;
   var calc;

 

   strNumber = getNumber(strNumber);
   if (strNumber.length < 4) {
      result = false;
   }

 

   digit = parseInt(strNumber.substring(strNumber.length-2, strNumber.length));
   number = strNumber.substring(0 , strNumber.length - 2);

 

   calc = parseInt(getCPFDigit(number));

 

   if ( digit != calc )
   {
      result = false;
   }
   return result;
}

function getNumber(strNumber)
{
   var number;
   var strRetNumber="";

 

   for (var i=0 ; i < strNumber.length ; i++)
   {
      number = parseInt(strNumber.charAt(i));
      if ( number )
      {
         strRetNumber += strNumber.charAt(i)
      }
      else
      {
         if ( number == 0 )
         {
            strRetNumber += strNumber.charAt(i)
         }
      }
   }
   return strRetNumber;
}

 

function getCPFDigit(strNumber)
{
   var i;
   var digit1;
   var digit2;
   var total;
   var result;
  
   strNumber = '000000000' + getNumber(strNumber)
   strNumber = strNumber.substring(strNumber.length - 9, strNumber.length)

 

   total=0
   for (i = 1 ; i < 10; i++)
      total = total + strNumber.substring(i - 1 , i) * (11 - i);

 

   digit1 = total * 10 % 11;
   if (digit1 == 10)
   {
      digit1 = 0;
   }

 

   aux = digit1.toString(10);
   strNumber = strNumber + aux.substring(aux.length - 1 , aux.length);

 

   total=0;

 

   for (i = 1 ; i < 11 ; i++)
      total = total + strNumber.substring(i - 1 , i) * (12 - i);

 

   digit2 = total * 10 % 11;
   if (digit2 == 10)
   {
      digit2 = 0;
   }

 

   aux = digit1 * 10 + digit2;
   caux = aux.toString(10);
   result = caux.substring(caux.length - 2 , caux.length);

 

   return result;
}

 


--
Francisco Pinto Araújo Júnior
Diretor de Tecnologia - Softexport Informática
Msc. Ciência da Computação
SCPJ2
Fone/Fax: +55 85 458 1947
pinto@softexport.com.br
www.softexport.com.br


Esta matéria foi postada originalmente no ASP4Developers por Francisco Pinto Araujo Junior (site), que na época era "Analista de Sistemas". Hoje, vai saber...

quinta-feira, 26 de dezembro de 2002

0

Zero a Esquerda (vários modelos e situções)

Abaixo segue algumas situações e modelos onde se aplicar o zero a esquerda, outras podem ser consultadas neste endereço abaixo:
http://www.freecode.com.br/forum/viewtopic.php?t=21

<%
Function ZerosEsquerda(pModo, pFinal)
Dim intCont, intResultado
 If (pFinal - Len(pModo)) < 0 Then
  intResultado = ""
 Else
  intResultado = ""
  For intCont = 1 To (pFinal - Len(pModo))
   intResultado = intResultado + "0"
  Next
  intResultado = intResultado + pModo
 End If
ZerosEsquerda = intResultado
End Function


Response.Write ZerosEsquerda("16", 2)
' por Rafael Trindade
'
rafael@freecode.com.br
%>


'----------------------------------
<%
Function FormatoZeros(num,zeros)
dim aux,i
  aux = 1
 for i = 1 to zeros
  aux = aux * 10
 next
 FormatoZeros = Mid(aux+num,2,zeros+1)
End Function
' por KDU
%>


'----------------------------------
<%
num = 12345


Function Completa(str,n)
 if Len(str) < n then
  For i = 1 to n - Len(str)
   gera = gera & 0
  next
   gera = gera & str
 else
  gera = str
 end if
Completa = gera
End Function
response.write Completa(num,10)
' por RockLoko
'
rock.loco@bol.com.br
%>


'----------------------------------
<%
Dim Num1, Num2
Randomize()
Num1 = Int((999999 * Rnd) + 1)


If Len(Num1) < 6 Then
 Num2 = 6 - Len(Num1)
    For I = 1 to Num2
  Num1 = 0 & Num1
 Next
End If
' por Jonh Petrucci - Clessio
%>


'----------------------------------
<%
Dim myArray, valores
valores = "1,15,216,1548,54872,8787974"
MyArray = Split(valores,",")


Function Zeros(str)
   Dim x, acrZeros
   if isNull(str) Then Exit Function
   For x = 0 To Ubound(str)
      IF Len(str(x)) > Len(maior) Then
         maior = str(x)
      End IF
   Next
   For x = 0 To Ubound(str)
      acrZeros = string(Len(maior) - Len(str(x)), "0") & str(x)
      response.write acrZeros &"<br>"
   Next
End Function


response.write Zeros(MyArray)
' por Márcio Lima (Guardião)
'
guardiao@freecode.com.br
%>


'----------------------------------
<%
Function adZero(sText, sQuant)
 if isNull(sText) Then Exit Function
    adZero = string(sQuant - len(sText), "0") & sText
End Function


'Usando:
Response.Write adZero("5789", 9)
'Resultado:
' 000005789
' por Marcelo Santos (MPSDesign)
'
marcelo@mpsdesign.com.br
%>



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, 19 de dezembro de 2002

0

Alternando a cor das linhas de uma tabela

Existem muitas formas de alternar a cor das linhas de uma tabela que recebe o resultado de uma consulta. Essa é uma forma que ocupa pouco código.


<%  i = 0 
  do while not rs.eof
     if i mod 2<>0 then
          cor = "#FFFFFF"
     else
          cor = "#e1e1e1"
     end if %>


<tr bgcolor="<%=cor%>">


<%
i = i+1
rs.movenext : loop
%>



Esta matéria foi postada originalmente no ASP4Developers por Mateus Castriani (site), que na época era "Programador ASP, PHP, C#, C++ e webdesigner. Guitarrista nas horas vagas, segue o lema: Mulher, Futebol e Rock 'n Roll .". Hoje, vai saber...

quarta-feira, 18 de dezembro de 2002

0

Menu Java Script

Essa é uma solução simples para fazer um menu em java script através de vetores. O exemplo é bem simples e estático, mas pode ser útil para construir menus dinâmicos.


<table>
<script language="JavaScript" type="text/javascript">
 var opcao=new Array();
 var url=new Array();
  
  opcao[0]="Opção 1";
  opcao[1]="Opção 2";
      
  url[0]="url1.asp";
  url[1]="url2.asp";
  
  for(var i=0;i<opcao.length;i++){
     document.write ("<tr>");
              document.write ("<td bgcolor='#bbbbbb'><a href="+url[i]+">"+opcao[i]+"</a></td>");
              document.write ("</tr>");
  }
</script> 
</table>



Esta matéria foi postada originalmente no ASP4Developers por Mateus Castriani (site), que na época era "Programador ASP, PHP, C#, C++ e webdesigner. Guitarrista nas horas vagas, segue o lema: Mulher, Futebol e Rock 'n Roll .". Hoje, vai saber...

terça-feira, 17 de dezembro de 2002

0

Trabalhando com conexões a bancos de dados


INTRODUÇÃO
Ai vão algumas dicas de como se trabalhar com conexões com o banco de dados, sem causar problemas ao usuário ou derrubar a performance da aplicação/banco de dados.

CONTEÚDO
Já ouvi várias discussões sobre qual a melhor maneira de se trabalhar com conexões. É claro que existem alguns meios que farão com que você perca um pouco da performance, outras criarão risco em relação a disponibilidade da aplicação.

Gostaria de colocar neste artigo, minhas experiências e os prós e contras de algumas formas de se trabalhar com a conexão com o banco de dados.

UMA CONEXÃO PARA TODAS AS PÁGINAS

O que seria uma conexão para todos usuários?
Creio que muita gente trabalha desta maneira, onde você cria apenas um objeto de conexão dentro do objeto Application e o utiliza em todas páginas. Normalmente o objeto de conexão é instanciado é criado no código do arquivo Global.asa.

Prós
Facilita a manutenção do código, por exemplo, quando mudamos um banco de dados Access de diretório ou trocamos a senha do banco de dados, ao invés de mudarmos esta senha em vários locais.

Contras
Em alguns casos (Access especificamente) o banco de dados limita a quantidade de acessos a determinada conexão com o banco de dados, caso no seu site exista uma grande quantidade de visitas simultâneas, existirá uma grande possibilidade dele ficar indisponível para alguns usuários devido a um erro de conexão com o banco de dados.
Certamente será necessário um tratamento em todas as páginas que verifique a conexão com o banco de dados, caso ela tenha caído (o que pode ocorrer com mais facilidade com alguns tipos de banco) a conexão deverá ser aberta novamente.


UMA CONEXÃO PARA CADA ACESSO

Algo muito normal entre os programadores ASP é criar uma conexão dentro do objeto Session, do mesmo modo que uma conexão para todas as páginas que é criada dentro da rotina Application_OnStart dentro do Global.asa, esse modo de trabalhar é colocado dentro da rotina Session_OnStart.

Prós
Facilita a manutenção do código, por exemplo, quando mudamos um banco de dados Access de diretório ou trocamos a senha do banco de dados. Ao invés de mudarmos esta senha em vários locais.
Evitamos problemas com quantidade de acesso simultâneos na mesma conexão.
Caso a conexão caia, perderemos apenas a conexão daquela sessão (perdendo apenas um usuário) e não vários quando como criamos apenas uma conexão.

Contras
Utilização excessiva da memória do servidor WEB, pois diferente da conexão instanciada dentro da coleção contents do objeto application, para cada sessão no seu website será criada uma conexão, e depois que o usuário sai do website ou fecha seu browser, por padrão, a sessão irá expirar depois de 20 minutos de inatividae, causando um excesso de conexões abertas e objetos instanciados na memória do servidor.


UMA CONEXÃO PARA CADA PÁGINA/ACESSO
Todas as páginas abrirão a conexão com o banco de dados. Ou é colocado no início do código de todas as páginas a conexão com o banco de dados, o que dificulta a manutenção do código, o mais normal nessa forma de desenvolver, é criar um arquivo onde a conexão é aberta e outro arquivo que irá fechar a conexão com o banco de dados e depois colocamos um server include ( <!-- #include file="openconn.asp" -->).
Eu normalmente trabalho desta forma sempre, pois considero a melhor, mas essa é só a minha opinião e creio que existam formas melhores para se trabalhar e várias situações que possam alterar a forma com que trabalhamos.

Prós
Evitamos todos os contras dos outros métodos acima, inclusive o consumo da memória do servidor WEB pois o objeto é criado somente por alguns momentos e depois você fecha a conexão e destrói o objeto (set conn = Nothing).

Contras
A quantidade de conexões com o banco de dados aumenta e pode haver uma perda de performance, pois toda vez que o usuário solicita uma página a conexão será aberta antes.
Caso a conexão com o banco de dados não seja fechada no final das páginas, várias conexões ficarão abertas por um certo tempo.

Este é apenas o meu ponto de vista sobre algumas formas de se trabalhar com as conexões utilizadas nas suas páginas ASP.



Esta matéria foi postada originalmente no ASP4Developers por André Guergolet (site), que na época era "Desenvolvedor de aplicativos voltados a WEB à 3 anos. Atualmente trabalha com aplicativos de monitoração de redes utilizando .NET e outros recursos.". Hoje, vai saber...