Ir para conteúdo

POWERED BY:

Arquivado

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

Legionario-rs

BOF EOF - Erro de Script

Recommended Posts

Bom dia galera!

 

Erro: ADODB.Recordset (0x800A0BCD)

BOF ou EOF são verdadeiros, ou o registro atual foi excluído. A operação solicitada pelo aplicativo requer um registro atual.

listaprod.inc, line 80

 

Script:

 


<%
Dim lista,cat_id,cat_nome,nome,lista_produtos,msgnada,sql_produtos,objConn_produtos,rs_produtos
lista=Request.querystring("lista")
cat_id=Request.querystring("cat_id")
cat_nome=Request.querystring("cat_nome")
nome=Request.querystring("nome")
%>
<table border=0 width=99% cellpadding=10 cellspacing=10><div class="center_title_bar"><%=cat_nome%></div>
<%

SET objConn_produtos = Server.CreateObject("AdoDB.Connection")
objConn_produtos.Open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=C:\Inetpub\wwwroot\Projetos\banco_novo\loja.mdb"
sql_produtos = "SELECT * FROM produtos WHERE cat_id = 6 ORDER BY nome"

Set rs_produtos = objConn_produtos.Execute(sql_produtos)
col=3
if not rs_produtos.eof then
colu=1
response.write "<table><tr><td>"
while not rs_produtos.eof


Select Case lista
Case "categoria"
	set lista_produtos = lojaDB.Execute("SELECT * FROM produtos WHERE cat_id="& cat_id &" AND disp='S' ORDER BY nome")
	msgnada = "No momento não dispomos de nenhum produto neste departamento."
Case "busca"
	set lista_produtos = lojaDB.Execute("SELECT * FROM produtos WHERE nome LIKE '%"& nome &"%' AND disp='S' ORDER BY nome")
	msgnada = "Infelizmente não localizamos nenhum produto com esse nome."
Case Else
	%>
	<script>window.location="./index.asp"</script>
	<%
End Select
If lista_produtos.EOF Then 
	Response.Write "<tr><td align=center><h3>" & msgnada & "</h3></td></tr>"
Else 
%>
	<%
	Dim prod_cat_id,prod_id,prod_imagem,prod_descricaop,prod_preco,malha1
	malha1 = "sim"
	while not lista_produtos.EOF
		prod_cat_id = lista_produtos("cat_id")
		prod_id = lista_produtos("id")
		prod_imagem = lista_produtos("imagem")
		prod_descricaop = lista_produtos("descricaop")
		prod_preco = lista_produtos("preco")
		%>            
        <div class="details_big_box">
		<tr width=100% valign=top class=<%=malha1%>>
		<td background="imagens/fundo1.jpg" width=20% valign=center align=center>
		<img src=./imagens/<%=prod_imagem%> width="70" border=0>
		</td>
		<td background="imagens/fundo2.jpg" width=60% valign=center>
		<font size="2">
		<b>
		<%=prod_descricaop%>
		<td background="imagens/fundo3.jpg">
		</td>
		<td background="imagens/fundo4.jpg" width=20% valign=center align=center>
		<font color="white">
		<b><%=(prod_preco)%>
		</font>
		<br><br><p>
		<b><center>
		<a href="./detalheprod.asp?prod_id=<%=prod_id%>&url_comp=<%=Server.UrlEncode(Request.ServerVariables("QUERY_STRING"))%>" title="Ver descrição completa">
		<br><img src="./imagens/search.gif" border=0 ></a>
		</b>
		</td>
		</tr>
		</div>

		<%
		if colu=col then
		response.write "</td><tr><td>"
		colu=1
		else
		response.write "</td><td>"
		colu=colu+1
		end if
		rs_produtos.movenext
		wend
		response.write "</td></tr></table>"
		end if
		rs_produtos.close
		set rs_produtos=nothing
		
		lista_produtos.movenext
		If malha1 = "sim" Then malha1 = "nao" Else malha1 = "sim" End If
	wend
End If
lista_produtos.Close
set lista_produtos = Nothing
%>
</table>

Se alguém puder se habilitar a me ajudar agradeço!

Abraço a todos.

 

Legionario

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho que o problema está na variave 'lista'

 

se ela não tem o valor 'categoria' ou 'busca' cai no ELSE do CASE. Nesse ELSE tem um javascript. Você tem que colocar response.end se não o script continua sendo executado até a ultima linha da página. Como você faz 'If lista_produtos.Eof Then' ele não setou o objeto recordset. Faça assim:

%>
<script>window.location="./index.asp"</script>
<%
Response.End

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Jonathandj,

 

Agora o problema é este:

 

Erro de compilação do Microsoft VBScript (0x800A0400)

Instrução esperada

/Projetos/listaprod.inc, line 90

wend

 

É justamente a linha do final do script que tem o "wend"

Compartilhar este post


Link para o post
Compartilhar em outros sites

hum

 

não vi que tinha um While

 

no lugar de Response.End

coloque:

Exit Wend

ou

Exit Do

(não lembro quel o correto, mas acho que é o primeiro)

 

possivelmente dê erro aqui

lista_produtos.Close
set lista_produtos = Nothing
Se der erro coloque

If lista_produtos.State <> 0 Then
lista_produtos.Close
set lista_produtos = Nothing
End If

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, o comando Exit Wend ou Exit Do não está sendo reconhecido mas com o:

 

If lista_produtos.State <> 0 Then

lista_produtos.Close

set lista_produtos = Nothing

End If

 

Dá o seguinte erro:

 

Erro de tempo de execução do Microsoft VBScript (0x800A01A8)

Objeto necessário: ''

/Projetos/listaprod.inc, line 23

 

A linha 23 é --> If lista_produtos.EOF Then

 

To quebrando a cabeça faz tempo e nada de conseguir fazer funcionar isso, valeu pela ajuda.

 

Legionario

 

Desculpe cara,

 

O erro é outro eu me perdi aqui.

 

Erro de tempo de execução do Microsoft VBScript (0x800A01A8)

Objeto necessário: ''

/Projetos/listaprod.inc, line 35

 

A linha é --> If lista_produtos.EOF Then

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso geralmente é porque você já tentou fechar ou definir nothing a um objeto que não foi definido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

onde abriu o recordset?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você esta usando o método Execute do objeto Connection para executar as SQL,

tente ao inves de setar toda vez o lista_produtos no SELECT CASE, apenas passe a string SQL, e eu

consegui resolver certa vez um caso parecido, apenas usando o recordset,tipo:

 

<!--#include file="conn/conexao1.asp"-->

<% call abreconexao

 

'crio o rs

set rs=Server.CreateObject("ADODB.Recordset")

'crio o SQL

SQL="SELECT * FROM login ORDER BY login"

rs.open SQL,conexao,1,3

 

set lista_produtos = lojaDB.Execute

 

você esta abrindo o rs_produtos e naun facha ele e depois ja abre em seguida o lista_produtos

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.