Jump to content


Photo

Erro Na Request.querystring


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

#1 NewbieASP

NewbieASP

    Novato no fórum

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

Posted 27/07/2009, 13:13

Boa Tarde a todos.

Estou com um pequeno problema... tenho uma página que busca os dados cadastrados de determinado indivíduo através de uma request.querystring!
Até aí tudo bem, ele mostra tudo na boa, isso, SE existir tal registro no banco de dados access. Quando o valor da querystring passado no navegador não existe no banco de dados, ele mostra o seguinte erro:

ADODB.Field (0x800A0BCD)
BOF ou EOF são verdadeiros, ou o registro atual foi excluído. A operação solicitada pelo aplicativo requer um registro atual.
/sites/site.asp, line 18


segue o código referente ao erro:


a linha marcada em negrito corresponde à linha 18, e o valor resgatado pela querystring é o campo ID (chave primária).

Desde já fico grato à todos que puderem contribuir com algum suporte.

#2 abc2

abc2

    Cuidado com o Narcisismo

  • Usuários
  • 546 posts
  • Sexo:Não informado
  • Localidade:Blumenau/SC

Posted 27/07/2009, 13:33

Vc pode fazer uma verificação:

if rs.eof then
response.write "Registro inexistente"
else
response.write rs("id")
end if


ou então, só faça o select caso o request esteja com algum valor:
if request("id")<>"" then
faz o select e o resto
end if

#3 Ted k'

Ted k'

    Normal

  • Usuários
  • 64 posts
  • Sexo:Masculino
  • Localidade:Salvador - {BA}

Posted 28/07/2009, 13:07

Melhor fazer a verificação do EOF como o amigo acima citou, agora vc precisa mesmo fazer o "like" no select para o ID?
+++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ ++
: Ted k' não responde por MP e nem por MSN ou Skype, use o Fórum WMOnline :
::::::::::::::::::::::::::::::::::: ASP + XML + DOM :::::::::::::::::::::::::::::::::::
::: Acesse meu BLOG e confira dicas de ASP :::::::: http://tedk.com.br/blog ::::::
+++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ ++

#4 NewbieASP

NewbieASP

    Novato no fórum

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

Posted 29/07/2009, 17:14

Ted k', não era necessário o LIKE, estava ali de intrometido mesmo rsrs...

Mas então, eu já havia tentado fazer o EOF e BOF como o colega abc2 havia dito, mas mesmo assim, quando digito uma ID que ainda não existe no banco, retorna o erro.

olhem o código todo, é simplíssimo demais, chega a dar raiva por não conseguir arrumar isso em um código tão pequeno hahaha:

<!--#include file="data.asp"--><%if request.querystring("id") = "" thenResponse.redirect "default.asp"response.endend ifquery = "select * from sites"set rs=conn.execute(query)%>...HTML...<%if rs.EOF or rs.BOF then%>registro inexistente.<% else %>ID do cara cadastrado: <%=rs("id")%><BR />Nome do cara cadastrado: <%=rs("nome")%><BR /><% end if %>

só tenho 1 registro no banco, justamente para testar esse erro.
estou chamando o ID através de um simples link: http://localhost/sites/site.asp?id=1
agora se eu digitar no fim id=2.... já dá o erro o_o

obrigado pelo suporte pessoal.

#5 Ted k'

Ted k'

    Normal

  • Usuários
  • 64 posts
  • Sexo:Masculino
  • Localidade:Salvador - {BA}

Posted 29/07/2009, 17:48

estranho....

veja assim:

<%
if request.querystring("id") = "" then
Response.redirect "default.asp"
response.end
end if

query = "select * from sites where id = "&request.querystring("id")
set rs=conn.execute(query)
%>
...HTML...
<% if rs.eof then %>
registro inexistente.
<% else %>
ID do cara cadastrado: <%=rs("id")%><BR />
Nome do cara cadastrado: <%=rs("nome")%><BR />
<%
end if
set rs = nothing
%>

+++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ ++
: Ted k' não responde por MP e nem por MSN ou Skype, use o Fórum WMOnline :
::::::::::::::::::::::::::::::::::: ASP + XML + DOM :::::::::::::::::::::::::::::::::::
::: Acesse meu BLOG e confira dicas de ASP :::::::: http://tedk.com.br/blog ::::::
+++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ ++

#6 NewbieASP

NewbieASP

    Novato no fórum

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

Posted 29/07/2009, 18:21

Então Ted k', fiz o que você indicou colocando o set rs = nothing no final da expressão e também adicionei na instrução SQL a parte where id = "&request.querystring("id"), só que não deu certo, diz que os tipos de dados são incompatíveis na expressão do critério.

Mas eu re-adicionei a expressão where id like '"&(request.querystring("id"))&"'" e agora sim funciona. Vou deixar assim por enquanto, pois em time que está ganhando não se mexe rsrs...

Obrigado pela ajuda Ted k' e abc2, fiquem com Deus.

OBS: como fazer para, só ir para a página de dados, se a a request.querystring ID for número? porque se digitar id=1' (com aspas simples no final), retorna erro.

#7 Ted k'

Ted k'

    Normal

  • Usuários
  • 64 posts
  • Sexo:Masculino
  • Localidade:Salvador - {BA}

Posted 29/07/2009, 19:05

se for access, a consulta deve ser do jeito que coloquei..

pergunta: sua coluna ID é uma coluna de auto numeração, chave primaria?
+++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ ++
: Ted k' não responde por MP e nem por MSN ou Skype, use o Fórum WMOnline :
::::::::::::::::::::::::::::::::::: ASP + XML + DOM :::::::::::::::::::::::::::::::::::
::: Acesse meu BLOG e confira dicas de ASP :::::::: http://tedk.com.br/blog ::::::
+++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ ++

#8 NewbieASP

NewbieASP

    Novato no fórum

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

Posted 29/07/2009, 20:02

Sim, a ID é a chave primária do banco access. Mas sempre que troco o critério da consulta de 'like' para '=' da aquele erro de tipos de dados incompatíveis o_o

#9 DeeK

DeeK

    Normal

  • Usuários
  • 63 posts
  • Sexo:Masculino

Posted 30/07/2009, 09:45

Manda imprimir na tela o Select e veja se está pegando a QueryString

#10 NewbieASP

NewbieASP

    Novato no fórum

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

Posted 31/07/2009, 01:34

Manda imprimir na tela o Select e veja se está pegando a QueryString


mesmo assim ainda dá erro. Se eu digitar um valor numerico que não existe já tá ok. agora se eu informo um número qualquer junto de uma letra ou outro caractere, ocorre o erro.

mesmo eu mudando o select de (where id 'like') para (where id=''") o erro persiste.

será que não existe uma forma de verificar se o valor repassado pela querystring é numérico com um IF?

#11 Ted k'

Ted k'

    Normal

  • Usuários
  • 64 posts
  • Sexo:Masculino
  • Localidade:Salvador - {BA}

Posted 31/07/2009, 11:30

poxa amigo claro que vai dar erro, se o ID é um campo numerico, o que vc pode fazer é o seguinte:

numero = request.querystring("id")

If (Int(numero) = numero) Then
   Response.Write "é numero"
Else
   Response.Write "nao é numero inteiro"
End If

+++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ ++
: Ted k' não responde por MP e nem por MSN ou Skype, use o Fórum WMOnline :
::::::::::::::::::::::::::::::::::: ASP + XML + DOM :::::::::::::::::::::::::::::::::::
::: Acesse meu BLOG e confira dicas de ASP :::::::: http://tedk.com.br/blog ::::::
+++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ ++

#12 NewbieASP

NewbieASP

    Novato no fórum

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

Posted 01/08/2009, 15:53

é, não deu muito certo... adicionei este IF repassado pelo Ted k', mas, quando informo um número + uma letra (por exemplo 1a) o erro retornado é:

Erro de tempo de execução do Microsoft VBScript (0x800A000D)
Tipos incompatíveis: '[string: "8a"]'

só me aparece coisa estranha nesse código lol :mellow:


Tipo, eu andei testando em um servidor qualquer, e o erro agora só ocorre quando tento inserir aspas simples o.o

#13 abc2

abc2

    Cuidado com o Narcisismo

  • Usuários
  • 546 posts
  • Sexo:Não informado
  • Localidade:Blumenau/SC

Posted 02/08/2009, 12:50

Não tem como somar número com letra. O mais certo é transforme o seu campo no Access como Autonumeração + Chave Primária e faça o select normalmente:

query = "select * from sites where id = "&request.querystring("id")
set rs=conn.execute(query)
if rs.eof then
response.write "nao existe"
else
response.write rs("id")
end if

Fazendo esta mudança no banco, com ctz funcionará.

#14 Ted k'

Ted k'

    Normal

  • Usuários
  • 64 posts
  • Sexo:Masculino
  • Localidade:Salvador - {BA}

Posted 03/08/2009, 14:14

amigo, o melhor é vc sempre tratar os erros, agora se preferir, usa logo um que não aprovo muito, erros amiáveis com on error resume next

exemplo:
http://www.powerasp....resume-next.asp
+++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ ++
: Ted k' não responde por MP e nem por MSN ou Skype, use o Fórum WMOnline :
::::::::::::::::::::::::::::::::::: ASP + XML + DOM :::::::::::::::::::::::::::::::::::
::: Acesse meu BLOG e confira dicas de ASP :::::::: http://tedk.com.br/blog ::::::
+++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ ++




1 user(s) are reading this topic

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

IPB Skin By Virteq