Jump to content


Photo

Problemas Com Insert


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

#1 Lengrat

Lengrat

    Mestre

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

Posted 01/09/2004, 23:42

Gente...estou com um problema que estou achando muito estranho.

Tenho uma tabela composta pelos seguintes campo e tipos de dados

cod_usu [numerico]
nome [texto]
usuario [texto]
email [texto]
senha [texto]
tp_deposito [texto]
bloqueado [texto]


Tenho um formulario que recupera os seguintes valores para os campos:

cod_usu: 11
nome: claudio santos
usuario: claus
email: claudiocss@yahoo.com.br
senha: teste123
tp_deposito: egold
bloqueado: nao

Tenho o seguinte SQL

sql_InsereMembro="INSERT INTO membros (cod_usu, nome, usuario, email, senha, tp_deposito, bloqueado) VALUES ('"& cod_usu &"','"& nome &"','"& usuario &"','"& email &"','"& senha &"','"& tp_deposito &"','"& bloqueado &"' )"


E está me dando a porcaria do erro

[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

Impressionante é que tudo é texto, exceto o Cod_usu
e o SQL creio que não esteja falho. :blink:

Edição feita por: Lengrat, 01/09/2004, 23:44.


#2 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 02/09/2004, 13:14

Se o cod_usu é número, ele não pode estar entre aspas simples no SQL:

VALUES ('"& cod_usu &"','"& nome &"','

O certo seria:

VALUES ("& cod_usu &",'"& nome &"','


#3 Lengrat

Lengrat

    Mestre

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

Posted 02/09/2004, 14:08

Pois é... já tentei isso também,. mas ele dá erro de sintaxe:


Alterei como já tinha feito antes e como vc sugeriu...

sql_InsereMembro="INSERT INTO membros (cod_usu, nome, usuario, email, senha, tp_deposito, bloqueado) VALUES ("& cod_usu &",'"& nome &"','"& usuario &"','"& email &"','"& senha &"','"& tp_deposito &"','"& bloqueado &"' )"

Mas acusa

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement.


:blink:

#4 Dinho Z.

Dinho Z.

    Rock'n'Roll !!! Yeah !!!

  • Usuários
  • 755 posts
  • Sexo:Não informado
  • Localidade:Santo André - SP

Posted 02/09/2004, 15:41

Tenta colocar um CInt(cod_usu) dentro do código do Insert...
Dinho

Ajude a proibir os "jabás" nas rádios brasileiras.
Mas, afinal, o que é o "jabá"?!? acesse Rock Brasil
Acesse Fórum SOS Designers
Coluna de JavaScript/CSS do Upmasters

#5 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 02/09/2004, 18:27

Não acho que o CInt seja o problema, pois o erro é de sintaxe. Experimente o seguinte:

sql_InsereMembro="INSERT INTO membros (cod_usu, nome, usuario, email, senha, tp_deposito, bloqueado) VALUES (" & cod_usu & ",'" & nome & "','" & usuario & "','" & email & "','" & senha & "','" & tp_deposito & "','" & bloqueado & "')"
Response.Write sql_InsereMembro

Usando o Response.Write depois do SQL, você pode ver como ele está ficando. Aí fica mais fácil de achar erro.

#6 Lengrat

Lengrat

    Mestre

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

Posted 02/09/2004, 19:38

Fazer o que vc disse não dá certo. uma vez que o ASP acha erro de sintaxe, ele não conclui o processamento, não chegando na instrução response.write.

Eu já comentei tudo e fiz um teste dando um response.write em todas as variáeis de sessão, responsáveis por captar os valores dos formularios, visto que é um processo de cadastramento por etapas, E os valores são passados direitinho.

Já experimentei ir no Acess direto
peguei os valores que eu queria passar pelo formulario e testei direto em uma consulta de inclusão. E foi.. E diga-se de passagem, com Aspas e sem aspas no campo numerico.

INSERT INTO membros ( cod_usu, nome, usuario, email, senha, tp_deposito, bloqueado ) values ("13","teste","teste","claudiocss@bol.com.br","123ewr","egold","sim")

E com Aspas ou sem aspas no número, ele inclui o registro.
Com o ASP é que fica de palhaçada.

:blink:

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

Segue o código da minha página:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
Dim conexao, nome, usuario, senha, email, banco, agencia, conta
Dim indicacao,aleatorio1, aleatorio2, egold, dt_registro, ult_login, tp_deposito
DIM dsn, sql_InsereMembro, sql_InsereDeposito, Sql_MembroXDeposito, Sql_Renda
Dim Rs_InsereMembro, Rs_InsereDeposito, Rs_MembroXDeposito, Rs_Renda

nome=session("nome")
usuario=session("usuario")
senha=session("senha")
email=session("email")

banco=session("numerobanco")
agencia=session("agencia")
conta=session("conta")
indicacao=session("indicacao")
aleatorio1=session("aleatorio1")
aleatorio2=session("aleatorio2")
egold=session("egold")
dt_registro=Date()
ult_login=Date()
tp_deposito=session("opcao")
bloqueado="sim"


Set conexao= server.CreateObject("ADODB.Connection")
dsn = "\\iis638\domains\p\poprandomizer.com\user\private\banco.mdb"
conexao.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & dsn& ";"

MaxUsu="SELECT max(cod_usu) as mid FROM membros"
set rs = conexao.execute(MaxUsu)
ultimoid = rs("mid")
cod_usu = cint(ultimoid + 1)
set rs= Nothing

'MaxDep="SELECT max(id_deposito) as mid FROM deposito"
'set rs = conexao.execute(MaxDep)
'ultimoid = rs("mid")
'id_dep = cint(ultimoid + 1)
'set rs= Nothing

sql_InsereMembro="INSERT INTO membros (cod_usu, nome, usuario, email, senha, tp_deposito, bloqueado) VALUES ('"&cod_usu&"','"&nome&"','"&usuario&"','"&email&"','"&senha&"','"&tp_deposito&"','"&bloqueado&"' )"

'sql_InsereDeposito="INSERT INTO deposito (id_deposito, aleatorio1, aleatorio2, indicacao) VALUES ('"& id_deposito &"','"& aleatorio1 &"','"& aleatorio2 &"','"& indicacao &"' )"

'Sql_MembroXDeposito="INSERT INTO MembroXDeposito (id_deposito, cod_usu, tp_deposito, confirmado) VALUES ('"& id_deposito &"','"& cod_usu &"','"& tp_deposito &"','não' )"

'Sql_Renda="INSERT INTO Renda (cod_usu, usuario, tp_deposito, valor_depositos, valor_indicacao) VALUES ('"& cod_usu &"','"& tp_deposito &"','0','0' )"

Set rsVerifica = conexao.Execute("SELECT usuario FROM membros Where usuario= '"& usuario &"'")

If rsVerifica.EOF <> True Then
Response.write "<p>&nbsp;</p>"
Response.Write "<center><strong><font size=2 color=#990000 face=Verdana, Arial, Helvetica, sans-serif>Ooooops... um erro aconteceu</font></strong></center><br>"
Response.write "<center><font size=2 face=Verdana, Arial, Helvetica, sans-serif>Usuário já existente</font></center><p><center><p>"
Response.End

Else
set Rs_InsereMembro=conexao.execute(sql_InsereMembro)
'set Rs_InsereMembro=Nothing
'Set Rs_InsereDeposito= conexao.execute(sql_InsereDeposito)
'Set Rs_InsereDeposito=Nothing
'Set Rs_MembroXDeposito= conexao.execute(sql_MembroXDeposito)
'Set Rs_MembroXDeposito=Nothing
'Set Rs_Renda= conexao.execute(sql_Renda)
'Set Rs_Renda=Nothing
End If

set RsVerifica=Nothing
conexao.close
%>

Edição feita por: LeoB, 02/09/2004, 20:19.


#7 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 02/09/2004, 20:22

O erro acontece quando chega no .Execute. Então, use o Response.End logo depois do Response.Write. Talvez assim dê pra ver o SQL.

sql_InsereMembro="INSERT INTO membros (cod_usu, nome, usuario, email, senha, tp_deposito, bloqueado) VALUES (" & cod_usu & ",'" & nome & "','" & usuario & "','" & email & "','" & senha & "','" & tp_deposito & "','" & bloqueado & "')"
Response.Write sql_InsereMembro
Response.End


#8 Lengrat

Lengrat

    Mestre

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

Posted 02/09/2004, 20:47

hahahahahahaha...achei o erro.

Dicazinha salvadora a sua hein Leo.

Por mais que as variáveis de ssessão estivessem sido passadas e preenchidas de forma correta, o cod_usu não estava sendo passado para o SQL, pq a variável estava sendo criada depois da formação do SQL. Esse erro eu já tinha observado e então eu fiz essa alteração, que formou o código postado acima. Só que eu havia esquecido de enviar ao servidor.

Achei estranho.. e fiz o que vc me pediu. Percebi que o Cod_usu não estava sendo repassado. Estava sendo enviado como Null.

Daí eu cocei a cabeça e baixei a página que tava no servidor, comparando as duas páginas.

Então estava certo o tempo todo aqui local. huehuehue eu é que naum
havia sobrescrevido a página no servidor XDDDD

já tava ficando puto, pq na mão passava, mas com as variaveis nao.. que diacho. :blink:

Se não fosse essa sua dica... :P

Valeu aí Leo

Edição feita por: Lengrat, 02/09/2004, 20:58.





1 user(s) are reading this topic

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

IPB Skin By Virteq