Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

prisrs

Problemas lendo campo CPF

Recommended Posts

Olá pessoal, bom dia. Tenho problemas. Em cima do lnaçamento de uma intranet, o cliente decide que o CPF deve ser o campo primario do sistema, ao inves do login como antes. Tudo estava funcionando direitinho mas... nma tentativa de aplicar esta mudança, não funciona mais, não localizo porque. Resumidamente:

 

variavel no formulario --> <input name="CPF" type="text" id="CPF" onKeyPress="mascara(this,CPF)" onBlur="validarCPF(this.CPF);" size="16" maxlength="14">

 

na proxima pagina, onde devo receber o CPF:

 

cpf = Request.Form("CPF")

...

sqlVe = "Select * From logassoc Where CPF = '" & cpf & "'"

...

 

Dessa forma ele simplesmente nao enxerga o CPf, nao executa nada do codigo...

 

Tentei modificar para:

cpf = Request.Form("CPF")

...

sqlVe = "Select * From logassoc Where CPF = " & cpf & ""

...

 

Mas.. da o erro

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

 

[MySQL][ODBC 5.1 Driver][mysqld-5.1.54-rel12.5-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.936-65' at line 1

 

/associei.asp, line 53

 

alguém pode me dar uma luz... estou iniciando e... preciso lançar essa intranet conforme tudo funcionando como antes mas... com o raio do CPF como chave primaria/indice no BD.

 

Agradeço muuuuito a quem dispor a ajudar-me!

[]s

 

Esqueci de mencionar... campo CPF no bd é varchar(15)!

Compartilhar este post


Link para o post
Compartilhar em outros sites

primeira coisa você tem que da um response.write no seu camp cpf

response.write(cpf)

e veja qual é o valor que ele esta trazendo.

 

mas a principail você esta usando assim

sqlVe = "Select * From logassoc Where CPF = " & cpf & ""

esse campo deve estar vindo como string, entao você tem que usar assim

 

sqlVe = "Select * From logassoc Where CPF = '" & cpf & "'"

 

Pra você usar da forma que postou no select você teria que fazer um replace nos [ . ] e [ - ] depois converter para numero inteiro

 

Cint(cpf)

 

cpf = Request.Form("CPF")

replace(replace(cpf,".",""),"-","")

Cint(cpf)

...

sqlVe = "Select * From logassoc Where CPF = '" & cpf & "'"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigada Gilberto pela sua disposição!!!

 

Nesse caso... o CPf vai ser armazenado apenas como INT? tenho que mudar o formato dele? Eu gostaria que ele fosse armazenado completo para quando for consultado, eu nao me preocupar com ter que formatar o campo...

 

Eu apliquei o que sugeriu e... deu o erro abaixo... :(

 

 

Microsoft VBScript compilation error '800a0414'

 

Cannot use parentheses when calling a Sub

 

/associei.asp, line 17

 

replace(replace(cpf,".",""),"-","")

-----------------------------------^

 

Se puder ajudar.. agradeço pela sua disposição e atenção! :)

 

Obrigada Gilberto pela sua disposição!!!

 

Nesse caso... o CPf vai ser armazenado apenas como INT? tenho que mudar o formato dele? Eu gostaria que ele fosse armazenado completo para quando for consultado, eu nao me preocupar com ter que formatar o campo...

 

Eu apliquei o que sugeriu e... deu o erro abaixo... :(

 

 

Microsoft VBScript compilation error '800a0414'

 

Cannot use parentheses when calling a Sub

 

/associei.asp, line 17

 

replace(replace(cpf,".",""),"-","")

-----------------------------------^

 

Se puder ajudar.. agradeço pela sua disposição e atenção! :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiramente veja se o cpf esta vindo preenchido

cpf = Request.Form("CPF")

response.write(cpf)

response.End()

 

Me passe aqui o que chega de valor.

 

Depois vamos ao passo do select.

 

O que pode estar havendo primeiramente é que o cpf esteja como vazio e o campo nao permite nulo.

Essa é uma hipotese.

Outra é alguma coisa com o mysql.

 

O select correto por ser um campo varchar (15)

é

sqlVe = "Select * From logassoc Where CPF = '" & cpf & "'"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perfeito

agora de um response.write no select

 

sqlVe = "Select * From logassoc Where CPF = '" & cpf & "'"

response.Write(sqlVe)

response.End()

Lembrando que o response.end() deve estar antes da execucao, o conection.

Veja o que retorna e aponte aqui.

 

 

ok, obrigada!

 

o response.write devolve: 026.826.926-25 ... corretamente como coletado no form antes..

Compartilhar este post


Link para o post
Compartilhar em outros sites

(1º response.write): 026.826.926-25

(2º response.write): Select * From logassoc Where CPF = '026.826.926-25'

 

Ressalto que esses selescts são apenas pra consultar se esse usuario nao existe... se nao existir dai que ele vai cadastrar...

 

Também lembro que o sistema estava tudo funcionando corretamente, toda a estrutura ok. O que tá pegando é a alterarção de campo login para campo CPf como sendo indice no BD... :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perfeito tente rodar ele direto no mysql exemplo abra a interface do mysql e coloque esse select Select * From logassoc Where CPF = '026.826.926-25'

ve se traz registro

 

(1º response.write): 026.826.926-25

(2º response.write): Select * From logassoc Where CPF = '026.826.926-25'

 

Ressalto que esses selescts são apenas pra consultar se esse usuario nao existe... se nao existir dai que ele vai cadastrar...

 

Também lembro que o sistema estava tudo funcionando corretamente, toda a estrutura ok. O que tá pegando é a alterarção de campo login para campo CPf como sendo indice no BD... :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade esse usuario ainda nao existe... 1º ele vai consultar pra depois cadastrar. entao a consulta será em vão pois o usuario ainda nao foi cadastrado mas... ele nao chega a executar o cadastro por causa do CPF, entende?! A sintaxe aparentemente ok mas... ele nao executa, nao dá erro mas mostra a pagina incompleta (praticamente em branco) ao inves de cadastrar e dar a msg que deveria. Vou colar o codigo compelto...

 

cpf = Request.Form("CPF")
....

sqlVe = "Select * From logassoc Where CPF = '" & cpf & "'"
Set rsVe = conn.Execute(sqlVe)

If not rsVe.EOF Then
    varLinha = 2
End If

sql = "Select * From logassoc Where CPF = '" & cpf & "'"
Set rsSe = conn.Execute(sql)
If login <> "" Then
  If rsSe.EOF then
     sqlTesta = "Select * From associados Where CPF = '" & cpf & "'"
     Set rsTesta = conn.Execute(sqlTesta)
     If rsTesta.EOF Then
            strSQL = "Insert Into logassoc (Nome,CPF,Email,Senha,Status) values ('" & Nome & "','" & cpf & "','" & Email & "','" & Senha & "','Analise')"
 	       Set rs = conn.Execute(strSQL)
          Set rsMax = Server.CreateObject("ADODB.Recordset")
       rsMax.Open "Select max(Codigo) As max_cod From associados", conn
       If IsNull(rsMax("max_cod")) Then
	    novo_cod = 1
       Else
	    novo_cod = rsMax("max_cod") + 1
       End If
       rsMax.Close
       Set rsMax = Nothing
       sqlAssoc = "Insert Into associados (Codigo, Data, Tipo, Filiado, Nabp, Nabvl, Carteirinha, CPF, RG, Nome, Apelido, DiaN, MesN, AnoN, Ecivil, Sexo, Nacional, Natur, Prof, Tel, Cel, Email, Endereco, Bairro, Cid, UF, CEP, Sangue, Contato, TelCont, Declarou, OBS) Values (" & novo_cod & ",'" & data2 & "','" & Tipo & "','" & Filiado & "','" & Nabp & "','" & Nabvl & "','Aguardando','" & cpf & "','" & RG & "','" & Nome & "','" & Apelido & "','" & DiaN & "','" & MesN & "','" & AnoN & "','" & Ecivil & "','" & Sexo & "','" & Nacional & "','" & Natur & "','" & Prof & "','" & Tel & "','" & Cel & "','" & Email & "','" & Endereco & "','" & Bairro & "','" & Cid & "','" & UF & "','" & CEP & "','" & Sangue & "','" & Contato & "','" & TelCont & "','" & Declarou & "','')"
          Set rsAssoc = conn.Execute(sqlAssoc)		     		 

          Set rsMax2 = Server.CreateObject("ADODB.Recordset")
       rsMax2.Open "Select max(nosso_num) As max_cod From boleto", conn
       If IsNull(rsMax2("max_cod")) Then
	    novo_cod2 = 1
       Else
	    novo_cod2 = rsMax2("max_cod") + 1
       End If
       rsMax2.Close
       Set rsMax2 = Nothing

		sqlboleto = "Insert Into boleto (cpf, dt_doc, dt_venc, num_doc, nosso_num, valor, ref, pago) Values ('" & cpf & "','" & data & "','" & vencimento & "','" & novo_cod2 & "','" & novo_cod2 & "','" & valor & "','Anuidade','nao')"
		Set rsboleto = conn.Execute(sqlboleto)		     		 

  strAce = "Insert Into acesso (CPF, cont, data) values ('" & cpf & "','0','" & data2 & "')"
  Set rsAce = conn.Execute(strAce)

  strTemp = "Insert Into temp_table (CPF,Acesso) values ('" & cpf & "','0')"
  Set rsTemp = conn.Execute(strTemp)

.....
 	       varLinha = 1
       Else
          varLinha = 3
       End If  


[
varLinha = 1 (diz que o cadastro foi feito corretamtente)
varLinha = 2 (ANTES era login já está cadastrado)
varLinha = 3 (CPF já está cadastrado)
pelo ejito posso eliminar varlinha 2 ou 3
]

 

RELEMBRANDO.. TUDO FUNCIONAVA CORRETAMENTE ATÉ A TROCA PELO CPF!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao eu compreendi mas voce chegou a rodar direto na interface do mysql?

Ele deu algum erro na interface?

 

O que eu quero descobrir é se o problema esta no codigo ou se esta na sintaxe do select, se a gente roda ele direto no mysql ele nao vai trazer nada mas nao dara erro. Isso quer dizer que a sintaxe está ok.

 

 

Na verdade esse usuario ainda nao existe... 1º ele vai consultar pra depois cadastrar. entao a consulta será em vão pois o usuario ainda nao foi cadastrado mas... ele nao chega a executar o cadastro por causa do CPF, entende?! A sintaxe aparentemente ok mas... ele nao executa, nao dá erro mas mostra a pagina incompleta (praticamente em branco) ao inves de cadastrar e dar a msg que deveria. Vou colar o codigo compelto...

 

cpf = Request.Form("CPF")

....

 

sqlVe = "Select * From logassoc Where CPF = '" & cpf & "'"

Set rsVe = conn.Execute(sqlVe)

 

If not rsVe.EOF Then

varLinha = 2

End If

 

sql = "Select * From logassoc Where CPF = '" & cpf & "'"

Set rsSe = conn.Execute(sql)

If login <> "" Then

If rsSe.EOF then

sqlTesta = "Select * From associados Where CPF = '" & cpf & "'"

Set rsTesta = conn.Execute(sqlTesta)

If rsTesta.EOF Then

strSQL = "Insert Into logassoc (Nome,CPF,Email,Senha,Status) values ('" & Nome & "','" & cpf & "','" & Email & "','" & Senha & "','Analise')"

Set rs = conn.Execute(strSQL)

Set rsMax = Server.CreateObject("ADODB.Recordset")

rsMax.Open "Select max(Codigo) As max_cod From associados", conn

If IsNull(rsMax("max_cod")) Then

novo_cod = 1

Else

novo_cod = rsMax("max_cod") + 1

End If

rsMax.Close

Set rsMax = Nothing

sqlAssoc = "Insert Into associados (Codigo, Data, Tipo, Filiado, Nabp, Nabvl, Carteirinha, CPF, RG, Nome, Apelido, DiaN, MesN, AnoN, Ecivil, Sexo, Nacional, Natur, Prof, Tel, Cel, Email, Endereco, Bairro, Cid, UF, CEP, Sangue, Contato, TelCont, Declarou, OBS) Values (" & novo_cod & ",'" & data2 & "','" & Tipo & "','" & Filiado & "','" & Nabp & "','" & Nabvl & "','Aguardando','" & cpf & "','" & RG & "','" & Nome & "','" & Apelido & "','" & DiaN & "','" & MesN & "','" & AnoN & "','" & Ecivil & "','" & Sexo & "','" & Nacional & "','" & Natur & "','" & Prof & "','" & Tel & "','" & Cel & "','" & Email & "','" & Endereco & "','" & Bairro & "','" & Cid & "','" & UF & "','" & CEP & "','" & Sangue & "','" & Contato & "','" & TelCont & "','" & Declarou & "','')"

Set rsAssoc = conn.Execute(sqlAssoc)

 

Set rsMax2 = Server.CreateObject("ADODB.Recordset")

rsMax2.Open "Select max(nosso_num) As max_cod From boleto", conn

If IsNull(rsMax2("max_cod")) Then

novo_cod2 = 1

Else

novo_cod2 = rsMax2("max_cod") + 1

End If

rsMax2.Close

Set rsMax2 = Nothing

 

sqlboleto = "Insert Into boleto (cpf, dt_doc, dt_venc, num_doc, nosso_num, valor, ref, pago) Values ('" & cpf & "','" & data & "','" & vencimento & "','" & novo_cod2 & "','" & novo_cod2 & "','" & valor & "','Anuidade','nao')"

Set rsboleto = conn.Execute(sqlboleto)

 

strAce = "Insert Into acesso (CPF, cont, data) values ('" & cpf & "','0','" & data2 & "')"

Set rsAce = conn.Execute(strAce)

 

strTemp = "Insert Into temp_table (CPF,Acesso) values ('" & cpf & "','0')"

Set rsTemp = conn.Execute(strTemp)

 

Me poe aqui o que diz na linha 53 do associei.asp

 

Entao eu compreendi mas voce chegou a rodar direto na interface do mysql?

Ele deu algum erro na interface?

 

O que eu quero descobrir é se o problema esta no codigo ou se esta na sintaxe do select, se a gente roda ele direto no mysql ele nao vai trazer nada mas nao dara erro. Isso quer dizer que a sintaxe está ok.

Compartilhar este post


Link para o post
Compartilhar em outros sites

MySQL retornou um conjunto vazio (ex. zero registros). ( Consulta levou 0.0009 segundos )

 

Entao eu compreendi mas voce chegou a rodar direto na interface do mysql?

Ele deu algum erro na interface?

 

O que eu quero descobrir é se o problema esta no codigo ou se esta na sintaxe do select, se a gente roda ele direto no mysql ele nao vai trazer nada mas nao dara erro. Isso quer dizer que a sintaxe está ok.

 

 

 

 

Me poe aqui o que diz na linha 53 do associei.asp

 

51 data2 = year(date) &_

52 left("00",2-len(month(date))) & month(date) &_

53 left("00",2-len(day(date))) & day(date)

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade ele nao da erro só nao faz nada... Voce viu se ele inseriu no banco os registros?

 

Pelo que eu vi o problema está no retorno da resposta. Mas se ele nao inseriu nada tenho uma alternativa para testarmos.

 

Entao eu compreendi mas voce chegou a rodar direto na interface do mysql?

Ele deu algum erro na interface?

 

O que eu quero descobrir é se o problema esta no codigo ou se esta na sintaxe do select, se a gente roda ele direto no mysql ele nao vai trazer nada mas nao dara erro. Isso quer dizer que a sintaxe está ok.

 

 

 

 

Me poe aqui o que diz na linha 53 do associei.asp

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uai a linha 53 nao tem muito a ver nao

 

51 data2 = year(date) &_

52 left("00",2-len(month(date))) & month(date) &_

53 left("00",2-len(day(date))) & day(date)

 

O resultado do código que voce ve ai encima é que nao cadastrada nada em nenhum lugar e.. nao retorna nenhuma varlinha (com a mensagem se cadastrou ou se cpf ja existe) e.. também nao dá nada de erro! :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade ele nao da erro só nao faz nada... Voce viu se ele inseriu no banco os registros?

 

Pelo que eu vi o problema está no retorno da resposta. Mas se ele nao inseriu nada tenho uma alternativa para testarmos.

 

 

Uai a linha 53 nao tem muito a ver nao

 

51 data2 = year(date) &_

52 left("00",2-len(month(date))) & month(date) &_

53 left("00",2-len(day(date))) & day(date)

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta issso faz essa alteracao

 

sqlVe = "Select * From logassoc Where CPF = '" & cpf & "'"
Set rsVe = conn.Execute(sqlVe)

If not rsVe.EOF Then
varLinha = 2

else

sql = "Select * From logassoc Where CPF = '" & cpf & "'"
Set rsSe = conn.Execute(sql)
If login <> "" Then
If rsSe.EOF then
sqlTesta = "Select * From associados Where CPF = '" & cpf & "'"
Set rsTesta = conn.Execute(sqlTesta)
If rsTesta.EOF Then
strSQL = "Insert Into logassoc (Nome,CPF,Email,Senha,Status) values ('" & Nome & "','" & cpf & "','" & Email & "','" & Senha & "','Analise')"
Set rs = conn.Execute(strSQL)
Set rsMax = Server.CreateObject("ADODB.Recordset")
rsMax.Open "Select max(Codigo) As max_cod From associados", conn
If IsNull(rsMax("max_cod")) Then
novo_cod = 1
Else
novo_cod = rsMax("max_cod") + 1
End If
rsMax.Close
Set rsMax = Nothing
sqlAssoc = "Insert Into associados (Codigo, Data, Tipo, Filiado, Nabp, Nabvl, Carteirinha, CPF, RG, Nome, Apelido, DiaN, MesN, AnoN, Ecivil, Sexo, Nacional, Natur, Prof, Tel, Cel, Email, Endereco, Bairro, Cid, UF, CEP, Sangue, Contato, TelCont, Declarou, OBS) Values (" & novo_cod & ",'" & data2 & "','" & Tipo & "','" & Filiado & "','" & Nabp & "','" & Nabvl & "','Aguardando','" & cpf & "','" & RG & "','" & Nome & "','" & Apelido & "','" & DiaN & "','" & MesN & "','" & AnoN & "','" & Ecivil & "','" & Sexo & "','" & Nacional & "','" & Natur & "','" & Prof & "','" & Tel & "','" & Cel & "','" & Email & "','" & Endereco & "','" & Bairro & "','" & Cid & "','" & UF & "','" & CEP & "','" & Sangue & "','" & Contato & "','" & TelCont & "','" & Declarou & "','')"
Set rsAssoc = conn.Execute(sqlAssoc)	

Set rsMax2 = Server.CreateObject("ADODB.Recordset")
rsMax2.Open "Select max(nosso_num) As max_cod From boleto", conn
If IsNull(rsMax2("max_cod")) Then
novo_cod2 = 1
Else
novo_cod2 = rsMax2("max_cod") + 1
End If
rsMax2.Close
Set rsMax2 = Nothing

sqlboleto = "Insert Into boleto (cpf, dt_doc, dt_venc, num_doc, nosso_num, valor, ref, pago) Values ('" & cpf & "','" & data & "','" & vencimento & "','" & novo_cod2 & "','" & novo_cod2 & "','" & valor & "','Anuidade','nao')"
Set rsboleto = conn.Execute(sqlboleto)	

strAce = "Insert Into acesso (CPF, cont, data) values ('" & cpf & "','0','" & data2 & "')"
Set rsAce = conn.Execute(strAce)

strTemp = "Insert Into temp_table (CPF,Acesso) values ('" & cpf & "','0')"
Set rsTemp = conn.Execute(strTemp)

.....
varLinha = 1
Else
varLinha = 3
End If 


[
varLinha = 1 (diz que o cadastro foi feito corretamtente)
varLinha = 2 (ANTES era login já está cadastrado)
varLinha = 3 (CPF já está cadastrado)
pelo ejito posso eliminar varlinha 2 ou 3
]

End If

Compartilhar este post


Link para o post
Compartilhar em outros sites

para esse erro verifique a ortografia. pode ser um nome de coluna Invalido 'sua_coluna'. A coluna a qual você se refere na Base de Dados não foi encontrada. e também veja se os tipos de dados estão corretos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tathy.. obrigada de novo pela sua grande disposição. eu fiz a alteração que sugeriu e... nada de mudanças, continua do mesmo jeito. sem erro, sem inserção dos dados... e serm mensagem! :(

 

Xanvurzum.. nao ha nada de errado com as colunas.. antes funcionava corretamente e... eu só substitui o campo login pelo CPF (varcrar(15).... em todo o codigo e no BD mas... nao funciona! :(

 

O que esta me intrigando é que TUDO funcionava corretamente quando o campo era login tipo Char... :(

 

Quando eu recebia a variavel login, eu aplicava na variavel

login = Request.Form("login")

login = Server.HtmlEncode(request.form("login"))

 

tentei fazer isso com a varivavel CPF e tbm nada...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verificou se está realmente recebendo o campo do formulário ou como ele está vindo ?

Dá um response.write no request do login:

 

login = Request.Form("login")
response.write login

 

E veja se está vindo o valor como se espera

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.