Ir para conteúdo

POWERED BY:

Arquivado

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

Felipe Delgado

Busca detalhada com vários campos

Recommended Posts

Tá dando erro. Eu fiz o seguinte:

 

 

<%@LANGUAGE="VBSCRIPT"%><!--#include file="Connections/custommercado.asp" --><% auxsql = "SELECT * FROM listamaquinas WHERE "if (request.QueryString("tipomaq") <> "") thenauxsql = auxsql & "TIPOMAQ = '" & request.QueryString("tipomaq") & "' AND "end ifif (request.QueryString("fabricante") <> "Todos") thenauxsql = auxsql & "FABRICANTE = '" & request.QueryString("fabricante") & "' AND "end ifif (request.QueryString("modelo") <> "") thenauxsql = auxsql & "MODELO = '" & replace(request.QueryString("modelo"),"'","''") & "' AND "end ifif (right(auxsql,6) = "WHERE ") thenauxsql = "SELECT * FROM listamaquinas ORDER BY TIPO, TIPOSUB, CODIGOMAQ"elseauxsql = left(auxsql,len(auxsql) - 4) & "ORDER BY TIPO, TIPOSUB, CODIGOMAQ"end ifSet rsBusca_Avancada = Server.CreateObject("ADODB.Recordset")rsBusca_Avancada.ActiveConnection = MM_custommercado_STRINGrsBusca_Avancada.Source = auxsqlrsBusca_Avancada.CursorType = 3rsBusca_Avancada.CursorLocation = 2rsBusca_Avancada.LockType = 1rsBusca_Avancada.Open()rsBusca_Avancada_numRows = 0%><%Dim Repeat1__numRowsDim Repeat1__indexRepeat1__numRows = -1Repeat1__index = 0rsBusca_Avancada_numRows = rsBusca_Avancada_numRows + Repeat1__numRows%>

e tá dando o seguinte erro:

 

Tipo de erro:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)

[Microsoft][Driver ODBC para Microsoft Access] Parâmetros insuficientes. Eram esperados 1.

/mercadotiti/busca_avancada_maqs_circulares_resultado.asp, line 27

 

a linha 27 é: rsBusca_Avancada.Open()

E ae?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem algum campo que não ta recebendo valor ou algum campo com o nome erradoprinta na tela sua SQL e posta aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bereuza, consegui.

 

COmo eu faço pra aparecer somente "SUA BUSCA NAO RETORNOU NENHUM RESULTADO" ao invés de aparecer isso + os campos das tabelas vazios?????

 

 

<table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#7A96DF">		<!--DWLayoutTable-->		<tr>		  <td width="896" height="194" bgcolor="#FFFFFF"><br>		  <table width="100%" height="72"  border="0" align="center" cellpadding="3" cellspacing="0" bgcolor="#F3F3F3">			<tr bgcolor="#C3CDDE">			  <td height="36" colspan="12" bgcolor="#FFFFFF" class="print_esq">  RESULTADOS DA BUSCA:</td>			  </tr>			<tr bgcolor="#C3CDDE">			  <td width="3%" height="150" class="dados_inserir"><div align="center"></div></td>			  <td width="6%" height="150" class="dados_inserir"><div align="center">CÓD</div></td>			  <td width="8%" height="150" class="dados_inserir"><div align="center">Status</div></td>			  <td width="12%" height="150" class="dados_inserir"><div align="left">Categoria</div></td>			  <td width="12%" height="150" class="dados_inserir"><div align="center">Fabricante</div></td>			  <td width="9%" height="150" class="dados_inserir"><div align="center">Modelo</div></td>			  <td width="7%" class="dados_inserir"><div align="center">Diam:</div></td>			  <td width="5%" class="dados_inserir"><div align="center">Fin:</div></td>			  <td width="7%" class="dados_inserir"><div align="center">Alim:</div></td>			  <td width="10%" class="dados_inserir">Ano:</td>			  <td width="8%" class="dados_inserir">Preço:</td>			  <td width="13%" height="150" class="dados_inserir"><div align="center">Foto</div></td>			  </tr>							   <% If rsBusca_avancada.EOF ThenResponse.Write "<div align='center' class='style5'>Sua busca não retornou nenhum resultado. </div>"End IFWhile ((Repeat1__numRows <> 0) AND (NOT rsBusca_avancada.EOF)) %>

Compartilhar este post


Link para o post
Compartilhar em outros sites

IF...   não tem registroELSE   WHILE NOT...   WENDEND IF

poe seu loop no ELSE só isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valew marião.

 

Mais uma cosita,

 

Eu preciso que a pessoa busque no formulário selecionando tanto list menus quanto preenchendo um campo chamado MODELO. só que, se a pessoa buscar no form.campo MODELO por: "JOHN"

deveria listar todos os resultados para:

 

JOHN

JOHN/A

JOHN MAYER

JOHN - C

A/JOHN

 

e não somente listar somente os registros que contém JOHN certinho.

 

JOHN

 

 

 

aqui vai o código.

 

 

<% auxsql = "SELECT * FROM listamaquinas WHERE "if (request.QueryString("tipomaq") <> "TESTE") thenauxsql = auxsql & "TIPO = '" & request.QueryString("tipomaq") & "' AND "ELSEauxsql = auxsql & "TIPO LIKE '%frontura' AND "end ifif (request.QueryString("fabricante") <> "Todos") thenauxsql = auxsql & "FABRICANTE = '" & request.QueryString("fabricante") & "' AND "end ifif (request.QueryString("modelo") <> "") thenauxsql = auxsql & "MODELO = '" & replace(request.QueryString("modelo"),"'", "''") & "' AND "end ifif (request.QueryString("diametro") <> "Todos") thenauxsql = auxsql & "DIAMETRO = '" & request.QueryString("diametro") & "' AND "end ifif (request.QueryString("finura") <> "Todas") thenauxsql = auxsql & "FINURA = '" & request.QueryString("finura") & "' AND "end ifif (request.QueryString("alimentadores") <> "Todos") thenauxsql = auxsql & "ALIMENTADORES = '" & request.QueryString("alimentadores") & "' AND "end ifif (request.QueryString("status") <> "Todas") thenauxsql = auxsql & "COMPRAOUVENDE = '" & request.QueryString("status") & "' AND "end ifif (right(auxsql,6) = "WHERE ") thenauxsql = "SELECT * FROM listamaquinas ORDER BY DIAMETRO DESC, FINURA DESC, PRECO DESC, ANO DESC"elseauxsql = left(auxsql,len(auxsql) - 4) & "ORDER BY DIAMETRO DESC, FINURA DESC, PRECO DESC, ANO DESC"end ifSet rsBusca_Avancada = Server.CreateObject("ADODB.Recordset")rsBusca_Avancada.ActiveConnection = MM_custommercado_STRINGrsBusca_Avancada.Source = auxsqlrsBusca_Avancada.CursorType = 3rsBusca_Avancada.CursorLocation = 2rsBusca_Avancada.LockType = 1rsBusca_Avancada.Open()rsBusca_Avancada_numRows = 0%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

a solução é usar o LIKE mesmo conforme mostrado pelo Adriano

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dúvida-mór,

 

E pra eu fazer uma busca LIKE por diversas palavras?

 

<%

auxsql = "SELECT * FROM listamaquinas WHERE "

if (request.QueryString("tipomaq") <> "TESTE") then

auxsql = auxsql & "TIPO = '" & request.QueryString("tipomaq") & "' AND "

ELSE

auxsql = auxsql & "TIPO LIKE '%frontura','%dupla','%mono' AND "

end if

 

 

??????????? Como fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

use uns OR ali tiozinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao, coloquei os OR, mas não tá rolando, pq se especifico um fabricante, ele deveria mostrar só o que especifiquei, ele tá abrindo tudo.se tiro os OR´s do TIPO, aí rola o fabricante...<% auxsql = "SELECT * FROM listamaquinas WHERE "if (request.QueryString("tipomaq") <> "TESTE") thenauxsql = auxsql & "TIPO = '" & request.QueryString("tipomaq") & "' AND "ELSEauxsql = auxsql & "TIPO LIKE '%frontura' OR 'Dupla Ribana' OR '%mono' AND "end ifif (request.QueryString("fabricante") <> "Todos") thenauxsql = auxsql & "FABRICANTE = '" & request.QueryString("fabricante") & "' AND "end ifEu queria que funcasse colocando os OR´s no TIPO.....understood?

Compartilhar este post


Link para o post
Compartilhar em outros sites

precisa dos LIKES tambem e do nome do campo para cada LIKEauxsql = auxsql & "TIPO LIKE '%frontura' OR TIPO LIKE 'Dupla Ribana' OR TIPO LIKE '%mono' AND "

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora sim:

 

<% auxsql = "SELECT * FROM listamaquinas WHERE "if (request.QueryString("tipomaq") <> "Todas") thenauxsql = auxsql & "TIPO = '" & request.QueryString("tipomaq") & "' AND "ELSEauxsql = auxsql & "TIPO <> 'FORA DO AR' AND TIPO <> 'Máquinas de Bordar' AND TIPO <> 'Retilínea' AND TIPO <> 'Máquinas de Meia'  AND TIPO <> 'FORADOAR' AND TIPO <> 'Outras Máquinas' AND TIPO <> 'Acessórios' AND TIPO <> 'Fiação' AND TIPO <> 'Máquinas de Tricô' AND "end if

Compartilhar este post


Link para o post
Compartilhar em outros sites

boa tiozinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na minha dúvida que o AAlves respondeu alguns posts acima, reparei somente agora que ele não tá filtrando a busca:if (request.QueryString("modelo") <> "") thenauxsql = auxsql & "MODELO like '%" & replace(request.QueryString("modelo"),"'", "''") & "%' AND "end ifestá aparecendo todos os registros.como faço pra aparecer só o que o cara digitar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

printa sua sql pra ver o que o codigo a tentando realmente fazer...

Compartilhar este post


Link para o post
Compartilhar em outros sites

O negócio é complicado, o aspzinho duca.Veja bem,Qdo faço uma busca:<% auxsql = "SELECT * FROM listamaquinas WHERE "if (request.QueryString("tipomaq") <> "Todas") thenauxsql = auxsql & "TIPO LIKE '" & request.QueryString("tipomaq") & "' AND "ELSEauxsql = auxsql & "TIPO LIKE 'Mono%' OR TIPO LIKE 'Dupla%' AND TIPO NOT LIKE 'FORA%' AND "end ifif (request.QueryString("fabricante") <> "Todos") thenauxsql = auxsql & "FABRICANTE LIKE '" & request.QueryString("fabricante") & "' AND "end ifCASO 1)Se o tipo da máquina for <> de Todas, ele vai selecionar certinho a que eu quero, E, POR CONSEQUENCIA, se eu selecionar um determinado FABRICANTE, vai funcionar...CASO 2)Agora , se o tipo da máquina for = TODAS (no caso ELSE)... eu quero que ele puxe somente TODAS que tem a palavra MONO%, DUPLA% ou <> de FORA%.Até aí tudo bem... porém se faço essa seleção, o FABRICANTE perde a validade... tipo, ele busca de todos os fabricantes, nao importa se eu seleciono só o fabricante X.COMO ARRUMO ESSA PORCARIA? já tentei de tudo, todos os esquemas, com AND´s, OR´s, LIKES, NOT LIKE´S, <> etc. etc. etc.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente assim

 

<% auxsql = "SELECT * FROM listamaquinas WHERE 1 = 1"if (request.QueryString("tipomaq") <> "Todas") thenauxsql = auxsql & " AND TIPO LIKE '" & request.QueryString("tipomaq") & "'"ELSEauxsql = auxsql & " AND (TIPO LIKE 'Mono%' OR TIPO LIKE 'Dupla%' AND TIPO NOT LIKE 'FORA%')"end ifif (request.QueryString("fabricante") <> "Todos") thenauxsql = auxsql & " AND FABRICANTE LIKE '" & request.QueryString("fabricante") & "'"end if%>

veja se é isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dúvida-mór,E pra eu fazer uma busca LIKE por diversas palavras?<%auxsql = "SELECT * FROM listamaquinas WHERE "if (request.QueryString("tipomaq") <> "TESTE") thenauxsql = auxsql & "TIPO = '" & request.QueryString("tipomaq") & "' AND "ELSEauxsql = auxsql & "TIPO LIKE '%frontura','%dupla','%mono' AND "end if

Acho que o IN te auxiliaria.auxsql = auxsql & "TIPO IN('%frontura','%dupla','%mono') AND ".Testa aí...

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.