FórumGdH

Página Inicial do Guia do Hardware

Registrar FAQ Calendário Pesquisar Mensagens de Hoje Marcar Fóruns Como Lidos

Voltar   FórumGdH > Profissional > Programação, scripts, web e banco de dados
Bem-vindo ao FórumGdH
Não se esqueça de se registrar, é grátis . Nós temos 754.089 usuários, convidamos você fazer parte de nossa comunidade também! Se ainda não encontrou o que procura use nossa pesquisa. Esperamos que aprecie nosso trabalho.

Resposta
 
Opções do Tópico
Antigo 13-06-2004, 13:42   #1 (permalink)
Naruto
Veterano
 
Registrado em: Dec 2002
Mensagens: 1.015
Reputação: 20 Naruto está indo no caminho certo
Enviar mensagem via MSN para Naruto
Padrão Asp - Pegando dados de uma session pra usar no Select

É o seguinte galerinha hahah. Voltei de vez meus estudos com ASP e achei algo útil pra desenvolver. A pedido do papai vou fazer uma agenda de endereços.

Fiz um sistema de login pra qdo o cara logar só carregar os dados q ele cadastrou na agenda, porém estou com alguns problemas.

Estou criando uam session pra validar o cara logado e tb uma session q leva o id do cara pra outra página, daí to usando essa id no select pra carregar os dados da agenda dele...mas dá um erro:

Tipo de erro:
Microsoft JET Database Engine (0x80040E07)
Tipo de dados imcompatível na expressão de critério.
/Agenda/dados.asp, line 23

O erro provavelemnte está no select, mas nau msei exatamente o q é...
se eu jogar um valor válido de id no select, ou seja "1", ele funciona. Mas se eu jogar o valor da session nbuma variável e jogar ela no select dá o erro aí.

Vou postar o código pra vcs terem uam idéia:

Código:
<?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <body> <% 'verificar se usuário é o correto. If Not Session("status") = "ok" Then Response.Redirect("agenda.asp?erro=negado") Else i = Session("id") Set conexao = Server.CreateObject("ADODB.Connection") conexao.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("agenda.mdb") conexao.Open Set rs = Server.CreateObject ("ADODB.RecordSet") sql = "select * from dados where codigo = '"&i&"'" rs.Open sql,conexao,3,1 conexao.Execute sql Response.Write rs("nome") Response.Write rs("telres") Response.Write rs("codigo") End If %> </body> </html>

Apesar de não estar completo o código, ele já empaca no select...se eu por exemplo jogar o select assim ó:

Código:
sql = "select * from dados where codigo = '1'" rs.Open sql,conexao,3,1 conexao.Execute sql Response.Write rs("nome") Response.Write rs("telres") Response.Write rs("codigo")
ele mostra certinho o nome, telefone e codigo...mas se for pegando da session não...

Alguma luz????

Desde já grato!!!

Falow!!!!
Naruto está offline   Responder com Quote
Antigo 13-06-2004, 16:07   #2 (permalink)
Kakao
Super Participante
 
Avatar de Kakao
 
Registrado em: May 2002
Localização: Brasília
Mensagens: 644
Reputação: 23 Kakao Tem uma excelente energiaKakao Tem uma excelente energiaKakao Tem uma excelente energia
Padrão

Coloca no começo do código:

Response.Write Session("id")
Response.End

Para saber o que está chegando na variável de sessão.

Posta também o código da página que está setando a variável e chamando a página com o select.

Aliás não é legal usar variável de sessão. Este sistema provavelmente não vai ser complexo o suficiente para as variáveis de sessão se tornarem um problema, mas é bom aprender a melhor técnica.
Kakao está offline   Responder com Quote
Antigo 13-06-2004, 23:47   #3 (permalink)
Naruto
Veterano
 
Registrado em: Dec 2002
Mensagens: 1.015
Reputação: 20 Naruto está indo no caminho certo
Enviar mensagem via MSN para Naruto
Padrão

Citação:
Postado Originalmente por Kakao
Coloca no começo do código:

Response.Write Session("id")
Response.End

Para saber o que está chegando na variáv...
Aew cara, ta retornando valor sim, descobri o erro e já corrigi viu, o ero está no select, é o seguinte, o tipo do campo é numérico e do jeito q eu coloquei é como se fosse caractere, dai tirei as aspas e ficou tudo blz!

Então, vlw por dar o toque, mas é q eu nau mmanjo nada de asp cara, voltei a tentar aprender faz uns 3 dia e tive essa idéia aí da agenda. Mas então, antes eu mandava os dados via querystring, mas daí naum tinha segurança nenuma, dai comecei a mandar por session, mas se por session é problema tb, qual a melhor maneira???
Naruto está offline   Responder com Quote
Antigo 14-06-2004, 8:21   #4 (permalink)
Kakao
Super Participante
 
Avatar de Kakao
 
Registrado em: May 2002
Localização: Brasília
Mensagens: 644
Reputação: 23 Kakao Tem uma excelente energiaKakao Tem uma excelente energiaKakao Tem uma excelente energia
Padrão

São duas situações distintas:
1- Quando se passa dados do cliente (navegador) para um script no servidor.
____1a - Usando o método get no formulário recupera-se os dados no script com Request.QueryString.
____1b - Usando o método post no formulário recupera-se os dados no script com Request.Form. Neste método os dados não aparecem na URL.
2 - Quando se passa dados de um script para outro no servidor como parece ser o caso que você colocou. O ideal então é usar Server.Transfer ou melhor ainda, Server.Execute.
Kakao está offline   Responder com Quote
Antigo 14-06-2004, 8:27   #5 (permalink)
Naruto
Veterano
 
Registrado em: Dec 2002
Mensagens: 1.015
Reputação: 20 Naruto está indo no caminho certo
Enviar mensagem via MSN para Naruto
Padrão

Citação:
Postado Originalmente por Kakao
São duas situações distintas:
1- Quando se passa dados do cliente (navegador) para um script no servidor.
____1a - ...
hummm. interessante, no caso os dados de login estão via post, e depois o dado relevante q é o ID é passado via session. Achei q dessa maneira era "seguro" pois não mostra nada na url. Mas achei interesasnte esta maneira q vc passou, porém nunca vi ela sendo utilizada, tem como me passar um site q tenha algo parecido ou me mandar um código??

Desde já grato!
Naruto está offline   Responder com Quote
Antigo 14-06-2004, 10:08   #6 (permalink)
MaSCaRaDe
Super Participante
 
Avatar de MaSCaRaDe
 
Registrado em: Feb 2003
Localização: Rio de Janeiro/RJ
Idade: 30
Mensagens: 917
Reputação: 84 MaSCaRaDe tem uma fabulosa reputaçãoMaSCaRaDe tem uma fabulosa reputaçãoMaSCaRaDe tem uma fabulosa reputaçãoMaSCaRaDe tem uma fabulosa reputaçãoMaSCaRaDe tem uma fabulosa reputaçãoMaSCaRaDe tem uma fabulosa reputaçãoMaSCaRaDe tem uma fabulosa reputaçãoMaSCaRaDe tem uma fabulosa reputaçãoMaSCaRaDe tem uma fabulosa reputaçãoMaSCaRaDe tem uma fabulosa reputaçãoMaSCaRaDe tem uma fabulosa reputação
Enviar mensagem via ICQ para MaSCaRaDe Enviar mensagem via MSN para MaSCaRaDe
Padrão

Cara, o seu problema nao eh a forma q eh passado o id, mas sim a forma q vc estah fazendo o select. Qdo c trata de numeros inteiros va não usa aspas simples e aspas duplas, soh aspas simples, no caso de string, aí sim vc tem q usar os 2, segue o ex.:

Código:
id = Request.QueryString("id") 'Sendo q o ID é igual a inteiro, ID = 8 SQL = "Select * FROM tabela WHERE id = '&id&' " id = Request.QueryString("id") 'Sendo q o ID é igual a string, ID = henrique SQL = "Select * FROM tabela WHERE id = '"&id&"' "
Espero ter ajudado....

[]s DB! :twisted:

[EDITADO]
Ops, nem tinha lido o seu post q vc jah tinha achado o problema, mas d qq forma, tamos aí!! ops:
__________________
"Read the directions and directly you will be directed in the right direction."

http://www.dmbtecnologia.com.br
MaSCaRaDe está offline   Responder com Quote
Resposta


Opções do Tópico

Regras de Mensagens
Você não pode criar tópicos
Você não pode postar respostas
Você não pode anexar arquivos
Você não pode editar suas mensagens

Código vB está Ligado
Smiles estão Ligado
Código [IMG] está Ligado
Código HTML está Desligado
Ir para...


Horários baseados na GMT -3. Agora são 1:00.