Ir para conteúdo

POWERED BY:

Arquivado

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

thiagomartins

BOF ou EOF verdadeiros...

Recommended Posts

Em uma página asp tenho uma string que pega diversos valores, separados por vírgula.Quando direciona estes valores para a outra página, eu utilizo a função split para separar estes valores, e os insiro numa select, para que encontre os valores.Ocorre que aparece a mensagem "BOF ou EOF são verdadeiros, ou o registro atual foi apagado...".Quando coloco a instrução select como forma de variável para aparecer na response.write (somente para consultar se os dados estão corretos), ela aparece corretamente, com todos os valores corretos para efetuar a pesquisa.No entanto, na função select aparece a mensagem de erro acima.Obs.: O bd contém todos os dados a serem pesquisados, ou seja, o registro existe.Se for necessário eu posto o código aqui.Obrigado.Thiago

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara se você passa os bagulhos separados por virgula você não precisa separar pra consultar se tudo for comparado a um unico campo tipovocê pega uma lista de codigos numericosid ="1,4,6,67,123,12,9"ai você seleciona com o INSQL = "SELECT CAMPO FROM TABELA WHERE CAMPO IN (" & id & ")"ve se serve

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, obrigado pelo apoio. Não sabia que seria tão ajudado assim. Obrigado mesmo.Segue o código abaixo.A variável ID vem de outra página, é recebe o valor a seguir: 11/11/2001,11:11:11,Jcmartins,testeEu utilizo a função split para separar os dados, e os uso como array na função select.Ocorre que na função select aparece a mensagem indesejada "BOF ou EOF..."Quando dou uma response.write na variável 'pega' (logo abaixo), ela mostra os valores corretamente na função select.Se eu coloco os dados manualmente na função select a leitura do registro é feita, ou seja, dá tudo certo.O problema somente ocorre quando eu tento utilizar a array ID na função select. O engraçado é que na variável 'pega' os valores na função select são mostrados corretamente.Agradeço a ajuda.Thiago Martins<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%><% if session("logado")= false then response.redirect "login.htm"end if %><%'Pegar as variáreisvcodigo=session("codigo")'Façoa conexão com o banco de dadosdb=Server.MapPath("gmc.mdb")Set con = Server.CreateObject( "adodb.Connection" )con.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & db & ";"ID=Request.QueryString("ID")ID=split(ID,",")'set rs=con.execute("select * from mensagens where codigo='"&vcodigo&"'")'Variável pega para conferencia dos dados'pega=("select * from mensagens where codigo='"&vcodigo&"' and data='"&ID(0)&"' and hora='"&ID(1)&"' and de='"&ID(2)&"' and assunto='"&ID(3)&"'")set rs=con.execute("select * from mensagens where codigo='"&vcodigo&"' and data='"&ID(0)&"' and hora='"&ID(1)&"' and de='"&ID(2)&"' and assunto='"&ID(3)&"'")%><html><head><title>Caixa de Mensagens</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head><body bgcolor="#000000"><p> <%if rs.eof then%></p><p><font color="#FFFF00">Fim de arquivo</font> </p><p> <%else%></p><p><font color="#FFFF00">Não é fim de arquivo</font> </p><%end if%><table width="100%"> <tr> <td width="9%"><font color="#FFFF00" size="2" face="Courier New, Courier, mono">Data:</font></td> <td width="91%"><font color="#FFFF00" size="2" face="Courier New, Courier, mono"><%=rs("data")%></font></td> </tr> <tr> <td><font color="#FFFF00" size="2" face="Courier New, Courier, mono">Hora:</font></td> <td><font color="#FFFF00" size="2" face="Courier New, Courier, mono"><%=rs("hora")%></font></td> </tr> <tr> <td><font color="#FFFF00" size="2" face="Courier New, Courier, mono">De:</font></td> <td><font color="#FFFF00" size="2" face="Courier New, Courier, mono"><%=rs("de")%></font></td> </tr> <tr> <td><font color="#FFFF00" size="2" face="Courier New, Courier, mono">Assunto:</font></td> <td><font color="#FFFF00" size="2" face="Courier New, Courier, mono"><%=rs("assunto")%></font></td> </tr> <tr> <td colspan="2"><p align="justify"><font color="#FFFF00" size="2" face="Courier New, Courier, mono">Mensagem:</font></p> <p align="justify"><font size="2" face="Courier New, Courier, mono"><%=rs("mensagem")%> </font></p></td> </tr></table></body></html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Complementando a minha última resposta, comecei a fazer alguns testes, ou seja, na função select descobri queset rs=con.execute("select * from mensagens where codigo='"&vcodigo&"' and data='"&ID(0)&"'")funciona. Contudo, da array (1) em diante nao funciona nada, mesmo no response.write aparecerem os valores da array ID.Testei com o campo código e hora e apareceu a bendita mensagem.Testei com o campo código e de e apareceu a bendita mensagem.Testei com o campo código e assunto e apareceu a bendita mensagem.Pelo que parece o problema na função select se refere a array (1) em diante.Qual o problema? Pois no response.write, quando solicito para mostrar os valores da ID(de 0 a 3) aparecem todos corretamente. Só na função select ocorre a mensagem.Obrigado pelo apoio.Thiago Martins

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui

 

ASP

[*]pega=("select * from mensagens where codigo='"&vcodigo&"' and data='"&ID(0)&"' and hora='"&ID(1)&"' and de='"&ID(2)&"' and assunto='"&ID(3)&"'")

 

set rs=con.execute("select * from mensagens where codigo='"&vcodigo&"' and data='"&ID(0)&"' and hora='"&ID(1)&"' and de='"&ID(2)&"' and assunto='"&ID(3)&"'")

Tenta

 

set rs=con.execute(pega)

Fica mais facil pra entender

 

E

 

if rs.eof then

response.write("Não há registros")

else

SITE

response.end

end if

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bicho!

 

O que você me pediu para fazer não funcionou. Aliás, esteticamente fica melhor, mas o funcionamento da função que preciso não funcionou.

 

Valeu

 

Aqui

 

ASP

[*]pega=("select * from mensagens where codigo='"&vcodigo&"' and data='"&ID(0)&"' and hora='"&ID(1)&"' and de='"&ID(2)&"' and assunto='"&ID(3)&"'")

 

set rs=con.execute("select * from mensagens where codigo='"&vcodigo&"' and data='"&ID(0)&"' and hora='"&ID(1)&"' and de='"&ID(2)&"' and assunto='"&ID(3)&"'")

Tenta

 

set rs=con.execute(pega)

Fica mais facil pra entender

 

E

 

if rs.eof then

response.write("Não há registros")

else

SITE

response.end

end if

<{POST_SNAPBACK}>

Compartilhar este post


Link para o post
Compartilhar em outros sites

pergunta um: os campos são todos texto???pergunta dois: porque faz o tratamento de EOF pra não dar este erro e mesmo assim poe a chamada dos valores fora do if then else end if???<%if rs.eof then%>Fim de arquivo<%else%>Não é fim de arquivo<%end if%><%=rs("data")%>isso é batata pra dar erro...e por ultimopergunta tres: você tem certeza que é pra pesquisar por todos este criterios isso facilita muito no fato de não encontrar nada, pois a pesquisa esta muito especifica...bem mas quanto ao erro acima basta ver o ponto dois e talvez o um que dá pra ajeitar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resposta 1: sim, são todos texto.

Resposta 2: esse if coloquei apenas para me mostrar se encontrava ou não registros. Apenas para me responder se true ou false. Não faz parte do código, era apenas teste.

Resposta 3: tenho certeza. O negócio é o seguinte: estes dados vem do próprio banco de dados, os quais são mostrados em uma outra página. Quando o usuário clica em cima de algum dos dados ele redireciona para outra página, para que mostre todos os campos do bd.

 

O q estou fazendo é um serviço interno de mensagens baseado em bd access. Algo não muito complicado.

 

Se quiser posso postar a outra página, assim você poderia fazer alguns testes!

 

Obrigado pela ajuda, vou tentar mais alguma coisa aqui.

 

Thiago Martins

 

pergunta um: os campos são todos texto???

pergunta dois: porque faz o tratamento de EOF pra não dar este erro e mesmo assim poe a chamada dos valores fora do if then else end if???

 

<%if rs.eof then%>

Fim de arquivo

<%else%>

Não é fim de arquivo

<%end if%>

<%=rs("data")%>

 

isso é batata pra dar erro...

 

e por ultimo

 

pergunta tres: você tem certeza que é pra pesquisar por todos este criterios isso facilita muito no fato de não encontrar nada, pois a pesquisa esta muito especifica...

 

bem mas quanto ao erro acima basta ver o ponto dois e talvez o um que dá pra ajeitar...

<{POST_SNAPBACK}>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, muito obrigado pela ajuda. Já consegui resolver!

O problema estava na variável ID, que após cada ', ' da string tinha um espaço.

Na função split, para separar a string, o espaço permanecia, e, como consequencia, na hora de filtrar no select os espaços permaneciam, nao encontrando os registros.

 

Valeu pela força, de coração.

 

Qq dúvida posto novamente, pois percebi que vcs são muito atenciosos.

 

Obrigado

 

 

Thiago Martins

http://forum.imasters.com.br/public/style_emoticons/default/bye1.gif http://forum.imasters.com.br/public/style_emoticons/default/clap.gif http://forum.imasters.com.br/public/style_emoticons/default/grin.gif :lol:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, muito obrigado pela ajuda. Já consegui resolver!

O problema estava na variável ID, que após cada ', ' da string tinha um espaço.

Na função split, para separar a string, o espaço permanecia, e, como consequencia, na hora de filtrar no select os espaços permaneciam, nao encontrando os registros.

 

Valeu pela força, de coração.

 

Qq dúvida posto novamente, pois percebi que vcs são muito atenciosos.

 

Obrigado

 

 

Thiago Martins

http://forum.imasters.com.br/public/style_emoticons/default/bye1.gif   http://forum.imasters.com.br/public/style_emoticons/default/clap.gif   http://forum.imasters.com.br/public/style_emoticons/default/grin.gif   :lol:

ok ferinha pode postar mesmo, pois a gente so pode tentar ajudar a aprtir das informações que você passa...

 

http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

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.