Jump to content


Photo

Validação De Cnpj


  • Faça o login para participar
9 replies to this topic

#1 pchardnet

pchardnet

    ×-× 3D ×-×

  • Usuários
  • 1068 posts
  • Sexo:Não informado
  • Localidade:Belo Horizonte-MG

Posted 26/04/2004, 17:16

Peguei uma função de validação de CNPJ aqui no fórum, porém não estou sabendo como utilizá-la dentro do script de autenticação.

Postei os dois scripts aqui para que vcs possam entender melhor e me auxiliar na execução.


- Função de Validação de CNPJ

function ValidaCNPJ(cnpj)
Dim RecebeCNPJ, Numero(14), soma, resultado1, resultado2
RecebeCNPJ = cnpj
s=""
for x=1 to len(RecebeCNPJ)
  ch=mid(RecebeCNPJ,x,1)
  if asc(ch)>=48 and asc(ch)<=57 then
  s=s & ch
  end if
next
RecebeCNPJ = s
if len(RecebeCNPJ) <> 14 then
  CnpjErro = 1
else
  if RecebeCNPJ = "00000000000000" then
  CnpjErro = 1
  else
  Numero(1) = Cint(Mid(RecebeCNPJ,1,1))
  Numero(2) = Cint(Mid(RecebeCNPJ,2,1))
  Numero(3) = Cint(Mid(RecebeCNPJ,3,1))
  Numero(4) = Cint(Mid(RecebeCNPJ,4,1))
  Numero(5) = Cint(Mid(RecebeCNPJ,5,1))
  Numero(6) = CInt(Mid(RecebeCNPJ,6,1))
  Numero(7) = Cint(Mid(RecebeCNPJ,7,1))
  Numero(8) = Cint(Mid(RecebeCNPJ,8,1))
  Numero(9) = Cint(Mid(RecebeCNPJ,9,1))
  Numero(10) = Cint(Mid(RecebeCNPJ,10,1))
  Numero(11) = Cint(Mid(RecebeCNPJ,11,1))
  Numero(12) = Cint(Mid(RecebeCNPJ,12,1))
  Numero(13) = Cint(Mid(RecebeCNPJ,13,1))
  Numero(14) = Cint(Mid(RecebeCNPJ,14,1))

  soma = Numero(1) * 5 + Numero(2) * 4 + Numero(3) * 3 + Numero(4) * 2 + Numero(5) * 9 + Numero(6) * 8 + Numero(7) * 7 + Numero(8) * 6 + Numero(9) * 5 + Numero(10) * 4 + Numero(11) * 3 + Numero(12) * 2
  soma = soma -(11 * (int(soma / 11)))

  if soma = 0 or soma = 1 then
    resultado1 = 0
  else
    resultado1 = 11 - soma
  end if

  if resultado1 = Numero(13) then
    soma = Numero(1) * 6 + Numero(2) * 5 + Numero(3) * 4 + Numero(4) * 3 + Numero(5) * 2 + Numero(6) * 9 + Numero(7) * 8 + Numero(8) * 7 + Numero(9) * 6 + Numero(10) * 5 + Numero(11) * 4 + Numero(12) * 3 + Numero(13) * 2
    soma = soma - (11 * (int(soma/11)))
    if soma = 0 or soma = 1 then
  resultado2 = 0
    else
  resultado2 = 11 - soma
    end if
    if resultado2 = Numero(14) then
    CnpjErro = 0
    else
    CnpjErro = 1
    end if
  else
  CnpjErro = 1
  end if
  end if
end if
end function



- Script de autenticação do Formulário

'Compara se as Senha são iguais
if Request.Form("senha") <> Request.Form("senha2") then
Response.Write("Senha não confirmada")
else
'Grava o q está no Formulário em uma variável
vbase=Request.Form("base")
vcnpj=Request.Form("cnpj")
vrazaosocial=Request.Form("razaosocial")
vendereco=Request.Form("endereco")
vnumero=Request.Form("numero")
vcomplemento=Request.Form("complemento")
vbairro=Request.Form("bairro")
vcidade=Request.Form("cidade")
vestado=Request.Form("estado")
vcep=Request.Form("cep")
vresponsavel=Request.Form("responsavel")
vemail=Request.Form("email")
vsenha=Request.Form("senha")

Dim conObj
Dim SQL
Set conObj = Server.CreateObject("ADODB.Connection")
conObj.Open = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("DBMAX/DBMAX.mdb") & ";"

SQL = ("INSERT INTO CADASTRO(BASE,CNPJ,RAZAOSOCIAL,ENDERECO,NUMERO,COMPLEMENTO,BAIRRO,CIDADE,ESTADO,CEP,RESPONSAVEL,EMAIL,SENHA)values('"&vbase&"','"&vcnpj&"','"&vrazaosocial&"','"&vendereco&"','"&vnumero&"','"&vcomplemento&"','"&vbairro&"','"&vcidade&"','"&vestado&"','"&vcep&"','"&vresponsavel&"','"&vemail&"','"&vsenha&"')")
conObj.execute(SQL)

Response.Redirect("../index.asp")


End If


Obrigado!
www.wvirtu.net - Hospedagem Sites - PHP + MySql + Fantástico - Joomla! pré-instalado

www.joomlaminas.org - Grupo de Usuários Joomla! de Minas Gerais

#2 maresia

maresia

    12 Horas

  • Usuários
  • 284 posts
  • Sexo:Não informado

Posted 26/04/2004, 18:06

Vc precisa primeiro fazer um formulário, e jogar o conteúdo de "cnpj" no script acima.
Noite Afora - Prá quem troca o dia pela noite
Acesse agora mesmo
www.noiteafora.com
o Melhor site de baladas do interior de São Paulo.

#3 Info_Tec

Info_Tec

    Servo do DEUS VIVO!

  • Usuários
  • 398 posts
  • Sexo:Não informado
  • Localidade:Entre a cadeira e o teclado
  • Interesses:Jesus, minha esposa e filha.<br>ASP, Lógica de programação, Projeto de Estradas, $$$ que tô precisando!

Posted 26/04/2004, 18:17

Pelo que vi a função retorna 0 ou 1, e vc deve verificar isso, ficaria +/- assim:
'Compara se as Senha são iguais

if Request.Form("senha") <> Request.Form("senha2") then

 Response.Write("Senha não confirmada")

elseIf ValidaCNPJ(Request.Form("cnpj")) <> 1 Then

 Response.Write("O CNPJ Digitado não é válido!")

Else

'Grava o q está no Formulário em uma variável

vbase=Request.Form("base")

vcnpj=Request.Form("cnpj")

vrazaosocial=Request.Form("razaosocial")

vendereco=Request.Form("endereco")

vnumero=Request.Form("numero")

vcomplemento=Request.Form("complemento")

vbairro=Request.Form("bairro")

vcidade=Request.Form("cidade")

vestado=Request.Form("estado")

vcep=Request.Form("cep")

vresponsavel=Request.Form("responsavel")

vemail=Request.Form("email")

vsenha=Request.Form("senha")



Dim conObj

Dim SQL

Set conObj = Server.CreateObject("ADODB.Connection")

conObj.Open = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("DBMAX/DBMAX.mdb") & ";"



SQL = ("INSERT INTO CADASTRO(BASE,CNPJ,RAZAOSOCIAL,ENDERECO,NUMERO,COMPLEMENTO,BAIRRO,CIDADE,ESTADO,CEP,RESPONSAVEL

,EMAIL,SENHA)values('"&vbase&"','"&vcnpj&"','"&vrazaosocial&"','"&vendereco&"','"&vnumero&"','"&vcomplemento&"','"&vbairro&"','"&vcidade&"','"&vestado&"','"&vcep&"','"&vresponsavel&"','"&vemail&"','"&vsenha&"')")

conObj.execute(SQL)



Response.Redirect("../index.asp")



End If

End If

A cada minuto está mais perto.
Aceite JESUS como seu único e suficiente salvador!
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
Fórum HOSANAS, venha conversar e se engrandecer com a palavra de DEUS.
Host: ASPECTO, Hospedagem ASP com qualidade e bom preço.

#4 pchardnet

pchardnet

    ×-× 3D ×-×

  • Usuários
  • 1068 posts
  • Sexo:Não informado
  • Localidade:Belo Horizonte-MG

Posted 27/04/2004, 08:54

Não tá funcionando. Qualquer CNPJ digitado está dando inválido.
www.wvirtu.net - Hospedagem Sites - PHP + MySql + Fantástico - Joomla! pré-instalado

www.joomlaminas.org - Grupo de Usuários Joomla! de Minas Gerais

#5 cybermix

cybermix

    andrewsmedina.com.br

  • Ex-Admins
  • 3586 posts
  • Sexo:Não informado
  • Localidade:Não sou desse planeta não!!!!
  • Interesses:python, fireworks, linux, php, flash...

Posted 27/04/2004, 09:03

é que essa funcao nao esta retornando valor nenhum adicione a seguinte linha



function ValidaCNPJ(cnpj)
Dim RecebeCNPJ, Numero(14), soma, resultado1, resultado2
RecebeCNPJ = cnpj
s=""
for x=1 to len(RecebeCNPJ)
  ch=mid(RecebeCNPJ,x,1)
  if asc(ch)>=48 and asc(ch)<=57 then
  s=s & ch
  end if
next
RecebeCNPJ = s
if len(RecebeCNPJ) <> 14 then
  CnpjErro = 1
else
  if RecebeCNPJ = "00000000000000" then
  CnpjErro = 1
  else
  Numero(1) = Cint(Mid(RecebeCNPJ,1,1))
  Numero(2) = Cint(Mid(RecebeCNPJ,2,1))
  Numero(3) = Cint(Mid(RecebeCNPJ,3,1))
  Numero(4) = Cint(Mid(RecebeCNPJ,4,1))
  Numero(5) = Cint(Mid(RecebeCNPJ,5,1))
  Numero(6) = CInt(Mid(RecebeCNPJ,6,1))
  Numero(7) = Cint(Mid(RecebeCNPJ,7,1))
  Numero(8) = Cint(Mid(RecebeCNPJ,8,1))
  Numero(9) = Cint(Mid(RecebeCNPJ,9,1))
  Numero(10) = Cint(Mid(RecebeCNPJ,10,1))
  Numero(11) = Cint(Mid(RecebeCNPJ,11,1))
  Numero(12) = Cint(Mid(RecebeCNPJ,12,1))
  Numero(13) = Cint(Mid(RecebeCNPJ,13,1))
  Numero(14) = Cint(Mid(RecebeCNPJ,14,1))

  soma = Numero(1) * 5 + Numero(2) * 4 + Numero(3) * 3 + Numero(4) * 2 + Numero(5) * 9 + Numero(6) * 8 + Numero(7) * 7 + Numero(8) * 6 + Numero(9) * 5 + Numero(10) * 4 + Numero(11) * 3 + Numero(12) * 2
  soma = soma -(11 * (int(soma / 11)))

  if soma = 0 or soma = 1 then
    resultado1 = 0
  else
    resultado1 = 11 - soma
  end if

  if resultado1 = Numero(13) then
    soma = Numero(1) * 6 + Numero(2) * 5 + Numero(3) * 4 + Numero(4) * 3 + Numero(5) * 2 + Numero(6) * 9 + Numero(7) * 8 + Numero(8) * 7 + Numero(9) * 6 + Numero(10) * 5 + Numero(11) * 4 + Numero(12) * 3 + Numero(13) * 2
    soma = soma - (11 * (int(soma/11)))
    if soma = 0 or soma = 1 then
  resultado2 = 0
    else
  resultado2 = 11 - soma
    end if
    if resultado2 = Numero(14) then
    CnpjErro = 0
    else
    CnpjErro = 1
    end if
  else
  CnpjErro = 1
  end if
  end if
end if
ValidaCNPJ = CnpjErro
end function



verfique se a funcao valida mesmo o cpf tb
www.andrewsmedina.com.br

#6 pchardnet

pchardnet

    ×-× 3D ×-×

  • Usuários
  • 1068 posts
  • Sexo:Não informado
  • Localidade:Belo Horizonte-MG

Posted 28/04/2004, 10:48

Essa função é só pra CNPJ mesmo Cyber. A parte de validação de CPF eu retirei, pois o sistema de cadastro aqui é empresarial.

Funcionou certinho. Obrigado!

------

Estou tendo um probleminha com a comparação do CNPJ. Ou seja este campo não pode haver duplicidade de valores.


Parte do script de onde é feita a comparação

Set RS = conObj.Execute("select CNPJ from cadastro")
if Request.Form("cnpj") = rs("CNPJ") then
%>
<script>
alert("CNPJ já cadastrado.");
</script>
<a href="java script:window.history.go(-1)">voltar</a>
<%
end if


Não sei o q está acontecendo, não está fazendo esta comparação e consequentemente dá este erro.

Tipo de erro:
Microsoft JET Database Engine (0x80004005)
As alterações solicitadas para a tabela não foram satisfatórias já que criariam valores duplicados no índice, chave primária ou relação. Altere os dados no campo ou campos que contêm os dados duplicados, remova o índice ou redefina o índice para possibilitar entradas duplicadas e tente novamente.
/web/dbmaxloggrcs/cadastrar.asp, line 114


www.wvirtu.net - Hospedagem Sites - PHP + MySql + Fantástico - Joomla! pré-instalado

www.joomlaminas.org - Grupo de Usuários Joomla! de Minas Gerais

#7 cybermix

cybermix

    andrewsmedina.com.br

  • Ex-Admins
  • 3586 posts
  • Sexo:Não informado
  • Localidade:Não sou desse planeta não!!!!
  • Interesses:python, fireworks, linux, php, flash...

Posted 28/04/2004, 10:56

voce poderia colocar todo o codigo dessa pagina.

acho que o erro esta acontecendo porque voce faz a comparacao mas os comandos abaixo do end if estao sendo processados e acho q o comando que esta inserindo o cnpj repetido esta abaixo, sendo executado mesmo com a verificacao sendo feita

a solucao seria mudar o end if para else e colocar o enfi if no final do codigo
www.andrewsmedina.com.br

#8 pchardnet

pchardnet

    ×-× 3D ×-×

  • Usuários
  • 1068 posts
  • Sexo:Não informado
  • Localidade:Belo Horizonte-MG

Posted 28/04/2004, 11:03

Mudei, mas não deu... A seu pedido está aí todo o código da página

<%
function ValidaCNPJ(cnpj)
Dim RecebeCNPJ, Numero(14), soma, resultado1, resultado2
RecebeCNPJ = cnpj
s=""
for x=1 to len(RecebeCNPJ)
  ch=mid(RecebeCNPJ,x,1)
  if asc(ch)>=48 and asc(ch)<=57 then
  s=s & ch
  end if
next
RecebeCNPJ = s
if len(RecebeCNPJ) <> 14 then
  CnpjErro = 1
else
  if RecebeCNPJ = "00000000000000" then
  CnpjErro = 1
  else
  Numero(1) = Cint(Mid(RecebeCNPJ,1,1))
  Numero(2) = Cint(Mid(RecebeCNPJ,2,1))
  Numero(3) = Cint(Mid(RecebeCNPJ,3,1))
  Numero(4) = Cint(Mid(RecebeCNPJ,4,1))
  Numero(5) = Cint(Mid(RecebeCNPJ,5,1))
  Numero(6) = CInt(Mid(RecebeCNPJ,6,1))
  Numero(7) = Cint(Mid(RecebeCNPJ,7,1))
  Numero(8) = Cint(Mid(RecebeCNPJ,8,1))
  Numero(9) = Cint(Mid(RecebeCNPJ,9,1))
  Numero(10) = Cint(Mid(RecebeCNPJ,10,1))
  Numero(11) = Cint(Mid(RecebeCNPJ,11,1))
  Numero(12) = Cint(Mid(RecebeCNPJ,12,1))
  Numero(13) = Cint(Mid(RecebeCNPJ,13,1))
  Numero(14) = Cint(Mid(RecebeCNPJ,14,1))

  soma = Numero(1) * 5 + Numero(2) * 4 + Numero(3) * 3 + Numero(4) * 2 + Numero(5) * 9 + Numero(6) * 8 + Numero(7) * 7 + Numero(8) * 6 + Numero(9) * 5 + Numero(10) * 4 + Numero(11) * 3 + Numero(12) * 2
  soma = soma -(11 * (int(soma / 11)))

  if soma = 0 or soma = 1 then
    resultado1 = 0
  else
    resultado1 = 11 - soma
  end if

  if resultado1 = Numero(13) then
    soma = Numero(1) * 6 + Numero(2) * 5 + Numero(3) * 4 + Numero(4) * 3 + Numero(5) * 2 + Numero(6) * 9 + Numero(7) * 8 + Numero(8) * 7 + Numero(9) * 6 + Numero(10) * 5 + Numero(11) * 4 + Numero(12) * 3 + Numero(13) * 2
    soma = soma - (11 * (int(soma/11)))
    if soma = 0 or soma = 1 then
  resultado2 = 0
    else
  resultado2 = 11 - soma
    end if
    if resultado2 = Numero(14) then
    CnpjErro = 0
    else
    CnpjErro = 1
    end if
  else
  CnpjErro = 1
  end if
  end if
end if
ValidaCNPJ = CnpjErro
end function


'Abre a conexão
Dim conObj
Set conObj = Server.CreateObject("ADODB.Connection")
conObj.Open = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("DBMAX/DBMAX.mdb") & ";"

'Compara CNPJ Digitado com o BD
Set RS = conObj.Execute("select CNPJ from cadastro")
if Request.Form("cnpj") = rs("CNPJ") then
%>
<script>
alert("CNPJ já cadastrado.");
</script>
<a href="java script:window.history.go(-1)">voltar</a>
<%


'Compara se as Senha são iguais
Elseif Request.Form("senha") <> Request.Form("senha2") then
Response.Write("Senha não confirmada")

'Verifica se o CNPJ é válido
elseIf ValidaCNPJ(Request.Form("cnpj")) = 1 Then
%>
<script>
alert("CNPJ inválido. Não use\".\" , \"/\" , \",\".");
</script>
<a href="java script:window.history.go(-1)">voltar</a>
<%

'Recuperando valores do Formulário
ElseIf
vbase=Request.Form("base")
vcnpj=Request.Form("cnpj")
vrazaosocial=Request.Form("razaosocial")
vendereco=Request.Form("endereco")
vnumero=Request.Form("numero")
vcomplemento=Request.Form("complemento")
vbairro=Request.Form("bairro")
vcidade=Request.Form("cidade")
vestado=Request.Form("estado")
vcep=Request.Form("cep")
vresponsavel=Request.Form("responsavel")
vemail=Request.Form("email")
vsenha=Request.Form("senha")

'Intrução SQL para gravar os registros na tabela
Dim SQL
SQL = ("INSERT INTO CADASTRO(BASE,CNPJ,RAZAOSOCIAL,ENDERECO,NUMERO,COMPLEMENTO,BAIRRO,CIDADE,ESTADO,CEP,RESPONSAVEL,EMAIL,SENHA)values('"&vbase&"','"&vcnpj&"','"&vrazaosocial&"','"&vendereco&"','"&vnumero&"','"&vcomplemento&"','"&vbairro&"','"&vcidade&"','"&vestado&"','"&vcep&"','"&vresponsavel&"','"&vemail&"','"&vsenha&"')")
conObj.execute(SQL)


Response.Redirect("../index.asp")



End If

%>


www.wvirtu.net - Hospedagem Sites - PHP + MySql + Fantástico - Joomla! pré-instalado

www.joomlaminas.org - Grupo de Usuários Joomla! de Minas Gerais

#9 Rodrigo

Rodrigo

    oi!

  • Usuários
  • 995 posts
  • Sexo:Não informado
  • Interesses:Diretório de sites - http://www.acheinobrasil.com.br

Posted 28/04/2004, 13:05

faça desta maneira:

Set RS = conObj.Execute("select CNPJ from cadastro where CNPJ="&request.form(cnpj))
if not rs.eof then
%>
<script>
alert("CNPJ já cadastrado.");
</script>
<a href="javascript:window.history.go(-1)">voltar</a>
<%
end if


#10 pchardnet

pchardnet

    ×-× 3D ×-×

  • Usuários
  • 1068 posts
  • Sexo:Não informado
  • Localidade:Belo Horizonte-MG

Posted 28/04/2004, 14:17

Valeu Rodrigo.

Ficou assim
--
vcnpj=Request.Form("cnpj") - - - Como eu usarei esta variável depois já fiz o request antes.

'Compara CNPJ Digitado com o BD
Set RS = conObj.Execute("select CNPJ from cadastro where CNPJ='"&vcnpj&"'")
if not rs.eof then
%>
<script>
alert("CNPJ já cadastrado.");
</script>
<a href="java script:window.history.go(-1)">voltar</a>
<%
end if
www.wvirtu.net - Hospedagem Sites - PHP + MySql + Fantástico - Joomla! pré-instalado

www.joomlaminas.org - Grupo de Usuários Joomla! de Minas Gerais




2 user(s) are reading this topic

0 membro(s), 2 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq