Ir para conteúdo

POWERED BY:

Arquivado

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

Eduardo Fonseca

[Resolvido] Busca ASP+ACCESS - Erro quando não há registros!

Recommended Posts

Boa tarde galera,

 

Estou com um irritante probleminha e pressinto que seja algo simples para corrigir. Não sou um expert em ASP, sou apenas um curioso.

 

O problema: Existe um form com um campo "Busca" que dá erro quando o valor digitado no campo não existe... Ele simplesmente "mata" a execução do resto do corpo da página... Queria que ele continuasse a exibir o restante da página de maneira que não quebrasse o lay-out e respondesse algo como "Não existe registros para o termo pesquisado"

 

Segue Código:

<table width="0" border="0" cellpadding="2" cellspacing="1" bgcolor="#FFFFFF">
				<tr></tr>
				<tr>
				  <%
Session.LCID = 1046
Set vBusca = Server.CreateObject("ADODB.Recordset")
vBusca.CursorLocation = 3
vBusca.CursorType = 0
vBusca.LockType = 1
strSQL = "SELECT * FROM tbProdutos WHERE " & Request.Form("Campo") & " LIKE '%" & Request.Form("Busca") & "%'" & "ORDER BY id DESC" 
vBusca.Open strSQL, db
'Definimos o Numero de Paginas com a propriedade "PageSize" do objeto Recordset
vBusca.PageSize = 12
'Criamos as Validações
if vBusca.eof then
   Mensagem = "Nenhum Registro Encontrado"
   Response.End
else
   'Definimos em qual pagina o visitante está
   if Request.QueryString("pagina")="" then
	  intpagina = 1
   else
	  if cint(Request.QueryString("pagina"))<1 then
intpagina = 1
	  else
if cint(Request.QueryString("pagina"))>vBusca.PageCount then  
	intpagina = vBusca.PageCount
		 else
	intpagina = Request.QueryString("pagina")
end if
	  end if   
   end if   
		end if


%>
<%
   'Iniciamos o Loop
   	i = 1
	vBusca.AbsolutePage = intpagina
	intrec = 0
	While intrec<vBusca.PageSize and not vBusca.eof  
%>
				  <td width="125" align="center" valign="top" class="texto" style="padding-bottom:15px;"><a  href="detalhes_produto.asp"><img src="<%=vBusca("fotoPQ")%>" border="0" width="101"height="92"></a><br />
							<span class="texto_noticia"><%=vBusca("nome")%></span></td>
				 
				 <%
				  
'Define quantidade de colunas
If i = 4 Then
i = 0
Response.Write "</TR><TR>"
End If
i = i + 1
vBusca.MoveNext
intrec = intrec + 1
	if vBusca.eof then
	   response.write " "
	end if   
	Wend	

%><div align="center" style=" padding-right:18px; padding-bottom:10px; padding-top:5px;"><%
	'Criamos as Validações para a navegação "Anterior" e "Próximo"  
	if intpagina>1 then
%>
				<a href="mostra_busca_interna.asp?pagina=<%=intpagina-1%>" class="categorias" style="font-family:Arial, Helvetica, sans-serif;"><img src="images/left.png" border="0" width="9"height="17">  Anterior</a>
				<%
	end if
	if StrComp(intpagina,vBusca.PageCount)<>0 then  
	%>
				    <a href="mostra_busca_interna.asp?pagina=<%=intpagina + 1%>" class="categorias" style="font-family:Arial, Helvetica, sans-serif;">Próxima  <img src="images/right.png" border="0" width="9"height="17"></a>
				<%
	end if
	vBusca.close
	Set vBusca = Nothing
	%></div>
				</tr>
				<tr></tr>
			</table><br></td>
					</tr>
				</table></td>
				<td width="431" valign="top" style="padding-left:17px;">
<!--#include file="produtos_coluna_direita.asp"-->
				</td>
			  </tr>
		  </table>
		</td>
	</tr>
	</table>	</td>
  </tr>
  
  <tr>
	<td valign="top" background="images/barra_servicos.jpg"><table width="100%" border="0" cellspacing="0" cellpadding="0">
	  <tr>
		<td width="1%" align="left" valign="top"><img src="images/blanck.png" width="20" height="183"></td>
		<td width="99%" valign="top" style="padding-right:25px; padding-top:20px;">
<!--#include file="atalhos_rodape.asp"-->
		</td>
	  </tr>
	</table></td>
  </tr>
  <tr>
	<td valign="top"><img src="images/barra_bottom.png" width="960" height="19"></td>
  </tr>
</table>
<!--#include file="rodape.html"-->
</body></html>

 

Aí com o erro, ou seja, quando o registro não existe, ele retorna apenas até essa parte:

<table width="0" border="0" cellpadding="2" cellspacing="1" bgcolor="#FFFFFF">
				<tr></tr>
				<tr>

Compartilhar este post


Link para o post
Compartilhar em outros sites

na verdade, você faz assim, segue o exemplo, na lógica:

 

<!--#include file="conn/conexao1.asp"-->
<%
' faz conexao no bd
 constring="provider=microsoft.JET.OLEDB.4.0;Data Source=" & Server.MapPath("db/quaddra.mdb")
Set conexao=Server.CreateObject("ADODB.Connection")
conexao.open constring
'cria o recordset
Set rs=Server.CreateObject("ADODB.Recordset")
' faz a consulta
SQL="SELECT * FROM login WHERE login='"&varlogin&"'"
rs.open SQL,conexao,1,3
	if rs.eof then
' se nao encontrar, registros
' aqui eu redireciono, para outra pagina
' mas você poderia apenas apresentar uma mensagem
	   response.redirect("logincli_form_treina.asp?msgeof=3")
	else
' aki você continua seu codigo

lembrando , você pode exibir , dentro uma tabela,frame...

Compartilhar este post


Link para o post
Compartilhar em outros sites

na verdade, você faz assim, segue o exemplo, na lógica:

 

<!--#include file="conn/conexao1.asp"-->
<%
' faz conexao no bd
 constring="provider=microsoft.JET.OLEDB.4.0;Data Source=" & Server.MapPath("db/quaddra.mdb")
Set conexao=Server.CreateObject("ADODB.Connection")
conexao.open constring
'cria o recordset
Set rs=Server.CreateObject("ADODB.Recordset")
' faz a consulta
SQL="SELECT * FROM login WHERE login='"&varlogin&"'"
rs.open SQL,conexao,1,3
	if rs.eof then
' se nao encontrar, registros
' aqui eu redireciono, para outra pagina
' mas você poderia apenas apresentar uma mensagem
	   response.redirect("logincli_form_treina.asp?msgeof=3")
	else
' aki você continua seu codigo

lembrando , você pode exibir , dentro uma tabela,frame...

Maravilha... eu fiz ele redirecionar para um outra página e tá tudo ok!! Muito obrigado xanburzum!

 

Mas agora tenho outro problema em outra parte do site... mas vou ter que criar outro tópico pois não está relacionado... mas de qualquer forma segue o link: http://forum.imasters.com.br/index.php?showtopic=344059

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.