Jump to content


Photo

Problemas Para Inserir Dados Na Tabela De Dados


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

#1 www.XmlBR.com.br

www.XmlBR.com.br

    Normal

  • Usuários
  • 97 posts
  • Sexo:Não informado
  • Localidade:São José dos Campos - SP

Posted 29/04/2004, 20:43

Olá galera, eu sou programador PHP e estou começando a programar ASP, e estou tendo os meus problemas pelo caminho, podem me ajudar?

Eu tenho a seguinte página:

<!--#include file="inc/config.asp"-->
<%
'Recuperando os valores do formulário
data_cadastro = date
nome = Request.Form("txtNome")
email = Request.Form("txtEmail")
login = Request.Form("txtLogin")
senha = Request.Form("txtSenha")
total = 0
'Verificando se esse usuário já está cadastrado no sistema
Set rsUser1 = Server.CreateObject("ADODB.Recordset")
sqlUser1 = "SELECT * FROM usuarios WHERE login = '"&login&"'"
rsUser1.Open sqlUser1,Conn
while not rsUser1.Eof
total = total+1
rsUser1.Movenext
wend

if total > 0 then
msg = "Este login "&login&" já está cadastrado no banco de dados.<br>"
else
Set rsUser2 = Server.CreateObject("ADODB.Recordset")
sqlUser2 = "INSERT INTO usuarios (id,nome,email,login,senha) VALUES ('','"&nome&"','"&email&"','"&login&"','"&senha&"')"
rsUser2.Open sqlUser2,Conn

msg = "Cadastro realizado com sucesso.<br>"
end if
'Redirecionando
Response.Redirect("index.asp?msg="&msg)
%>


As linhas em negrito são as que eu tenho dúvidas.

No primeiro NEGRITO, onde conte o While, eu estou querendo saber como faezr para retornar o total de registro encontrado pelo SELECT na tabela. No php eu uso (mysql_num_rows() -> para o MySql). Como eu faço para retonar da mesma forma no asp, sem ter que usar um contador e um loop.


No segundo negrito é onde contem o erro do código, quando eu vou executar o script o browser me retorna esse erro:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][Driver ODBC para Microsoft Access] Data type mismatch in criteria expression.
/site/cad.asp, line 23


Linha 23: rsUser2.Open sqlUser2,Conn

Qual é o problema aí???

#2 Tarkan

Tarkan

    Powered by Linux - Que inglês! ;)

  • Ex-Admins
  • 651 posts
  • Sexo:Masculino
  • Localidade:Copacabana - RJ

Posted 29/04/2004, 21:06

Fala www.numseiquela, beleza? ;)

Seguinte...

O erro é aprensentado sempre na linha que faz a execução do comando, não necessariamente onde é o erro.
O seu erro na verdade está ocorrendo na linha:

sqlUser2 = "INSERT INTO usuarios (id,nome,email,login,senha) VALUES ('','"&nome&"','"&email&"','"&login&"','"&senha&"')"

Imagino que o campo ID, seja um campo de auto-numeração.
Se eu estou certo, então é não é necessário que você dê um valor de entrada, já que este campo é automático, concorda?
Vamos então tirar este campo das tabelas que vão receber os dados e vamos também tirar o seu valor a ser entrado...
Ficará da seguinte forma:

sqlUser2 = "INSERT INTO usuarios (nome,email,login,senha) VALUES ('"&nome&"','"&email&"','"&login&"','"&senha&"')"

Entendeu?
Espero ter ajudado!

Abraços e qualquer coisa, volte a postar!

:D
' nome: gustavo veiga
' profissão: ALOG Data Centers do Brasil (analista de sistemas)
' publicidade: ALOG Data Centers do Brasil

#3 www.XmlBR.com.br

www.XmlBR.com.br

    Normal

  • Usuários
  • 97 posts
  • Sexo:Não informado
  • Localidade:São José dos Campos - SP

Posted 30/04/2004, 15:21

Agora sim funcionou.

Muito obrigado pela ajuda...


Porém agora tem a outra dúvida.


Como eu faço para saber qual o total de registro encontrados na seleção:

Set rsUser1 = Server.CreateObject("ADODB.Recordset")
sqlUser1 = "SELECT * FROM usuarios WHERE login = '"&login&"'"
rsUser1.Open sqlUser1,Conn


Como eu havia dito, em PHP eu uso a função mysql_num_rows(), que me retorna um valor inteiro de quantos registros foram encontrado com a intrução SELECT. Como faço o mesmo no ASP????

#4 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 30/04/2004, 15:45

Como vc está usando ADODB.RecordSet vc pode usar a propriedade Count. Seria +/- assim
Total = rsUser1.Count

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.

#5 www.XmlBR.com.br

www.XmlBR.com.br

    Normal

  • Usuários
  • 97 posts
  • Sexo:Não informado
  • Localidade:São José dos Campos - SP

Posted 30/04/2004, 16:51

bom, eu fiz assim:

Set rsUser1 = Server.CreateObject("ADODB.Recordset")
sqlUser1 = "SELECT * FROM usuarios WHERE login = '"&login&"'"
rsUser1.Open sqlUser1,Conn
tot = rsUser1.Count

mas na hora de rodar deu o seguinte erro:

Tipo de erro:
Erro de tempo de execução do Microsoft VBScript (0x800A01B6)
O objeto não dá suporte para a propriedade ou método: 'rsUser1.Count'
/site/cad.asp, line 14



A linha 14 é essa: tot = rsUser1.Count[/CODE]


O que tem de errado? Alguma outra solução???

#6 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 30/04/2004, 17:10

Tente com esse
Set rsUser1 = Server.CreateObject("ADODB.Recordset")

sqlUser1 = "SELECT * FROM usuarios WHERE login = '"&login&"'"

rsUser1.Open sqlUser1,Conn

tot = rsUser1.Count,3, 1
Esqueci que deveria informar como os cursores do RecordSet deveriam ser ajustados.
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.




0 user(s) are reading this topic

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

IPB Skin By Virteq