Ir para conteúdo

POWERED BY:

Arquivado

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

Felipe Delgado

busca simples asp em todos os campos

Recommended Posts

Olá , eu preciso fazer uma busca interna no site por palavras por exemplo: TENIS ADIDAS.ou seja, essas duas palavras tem que varrer todos os campos de uma tabela. No caso TIPO (tenis) Marca (adidas).Eu só consegui fazer uma busca simples, escolhendo o campo FABRICANTE, de uma olhada:Como colocar para varrer mais campos, e pegando 2 ou mais palavras?????

<%@LANGUAGE="VBSCRIPT"%><!--#include file="Connections/custommercado.asp" --><%Dim rsBusca_palavrachave__MMColParamrsBusca_palavrachave__MMColParam = "1"If (Request.QueryString("palavrachave") <> "") Then rsBusca_palavrachave__MMColParam = Request.QueryString("palavrachave")End If%><%Dim rsBusca_palavrachaveDim rsBusca_palavrachave_numRowsSet rsBusca_palavrachave = Server.CreateObject("ADODB.Recordset")rsBusca_palavrachave.ActiveConnection = MM_custommercado_STRINGrsBusca_palavrachave.Source = "SELECT * FROM listamaquinas WHERE TIPO NOT LIKE 'FORA DO AR' AND FABRICANTE LIKE '%" + Replace(rsBusca_palavrachave__MMColParam, "'", "''") + "%' ORDER BY TIPO ASC"rsBusca_palavrachave.CursorType = 0rsBusca_palavrachave.CursorLocation = 2rsBusca_palavrachave.LockType = 1rsBusca_palavrachave.Open()rsBusca_palavrachave_numRows = 0%><%Dim Repeat1__numRowsDim Repeat1__indexRepeat1__numRows = -1Repeat1__index = 0rsBusca_palavrachave_numRows = rsBusca_palavrachave_numRows + Repeat1__numRows%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usa o OROR campo2 Like '% Adidas %'OR campo3 Like '% Adidas %'OR campo4 Like '% Adidas %'OR campo5 Like '% Adidas %'OR campo6 Like '% Adidas %'OR campo7 Like '% Adidas %'OR campo8 Like '% Adidas %'OR campo9 Like '% Adidas %'

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://forum.imasters.com.br/public/style_emoticons/default/excl.gif Arr , valew cara, funcionou , PORÉM, como no formulário de busca eu só tenho um formbox "palavrachave" eu gostaria que se a pessoa digitasse CALÇA AZUL (por exemplo) varresse todos os campos.

 

 

 

Por exemplo

PALAVRA BUSCADA: "calça azul"

eu tenho o seguinte registro:

 

campo Roupa: Calça

campo Cor: Azul

campo Obs: A pessoa estava usando calça azul.

 

(ISSO RETORNA RESULTADO) agora,

 

Se nao houvesse o campo OBS contendo as duas palavras juntas, ele nao acharia nada:

Ex:

campo Roupa: Calça

campo Cor: Azul

campo Obs: A pessoa andava a noite.

 

 

Não sei se alguem entendeu, mas a busca precisa procurar cada palavra individualmente em cada campo.

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

antes substitua o espaço por % que se aparecer na mesma ordem em algum registro achaficaria tipo assimOR campo2 Like '%Calça%Azul%'OR campo3 Like '%Calça%Azul%'OR campo4 Like '%Calça%Azul%'OR campo5 Like '%Calça%Azul%'OR campo6 Like '%Calça%Azul%'OR campo7 Like '%Calça%Azul%'OR campo8 Like '%Calça%Azul%'OR campo9 Like '%Calça%Azul%'se quiser que pegue em qualquer ordem ai aumenta um pouco a complexidade pois teria que montar a query dentro de um laço de repetição...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mario, veja o código, como eu insiro % nessa porcaria??? sendo que o box do form. de busca chama-se "palavrachave"

 

<%

Dim rsBusca_palavrachave

Dim rsBusca_palavrachave_numRows

 

Set rsBusca_palavrachave = Server.CreateObject("ADODB.Recordset")

rsBusca_palavrachave.ActiveConnection = MM_custommercado_STRING

rsBusca_palavrachave.Source = "SELECT * FROM listamaquinas WHERE TIPO NOT LIKE 'FORA DO AR' AND FABRICANTE LIKE '%" + Replace(rsBusca_palavrachave__MMColParam, "'", "''") + "%' OR TIPO LIKE '%" + Replace(rsBusca_palavrachave__MMColParam, "'", "''") + "%' OR TIPOSUB LIKE '%" + Replace(rsBusca_palavrachave__MMColParam, "'", "''") + "%' OR MODELO LIKE '%" + Replace(rsBusca_palavrachave__MMColParam, "'", "''") + "%' OR OBSWEB LIKE '%" + Replace(rsBusca_palavrachave__MMColParam, "'", "''") + "%' ORDER BY TIPO ASC"

rsBusca_palavrachave.CursorType = 0

rsBusca_palavrachave.CursorLocation = 2

rsBusca_palavrachave.LockType = 1

rsBusca_palavrachave.Open()

 

rsBusca_palavrachave_numRows = 0

%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

tiozinho tive olhando seu codigo é melhor voce fazer assim

 

rsBusca_palavrachave__MMColParam = Replace(rsBusca_palavrachave__MMColParam, "'", "''")Palavras = SPLIT(rsBusca_palavrachave__MMColParam," ")STRSQL = "SELECT * FROM listamaquinas WHERE TIPO <> 'FORA DO AR' AND ("FOR I = LBOUND(Palavras) TO UBOUND(Palavras)   STRSQL = STRSQL  & FABRICANTE LIKE '%" & Palavras(I) & "%' OR TIPO LIKE '%" & Palavras(I) & "%' OR TIPOSUB LIKE '%" & Palavras(I) & "%' OR MODELO LIKE '%" & Palavras(I) & "%' OR OBSWEB LIKE '%" & Palavras(I) & "%' "   IF I <> UBOUND(Palavras) THEN	  STRSQL = STRSQL  & " OR "   END IFNEXTSTRSQL = STRSQL  & ") ORDER BY TIPO ASC"

la em baixo voce poe

 

rsBusca_palavrachave.Source = STRSQL

 

não testei mas ve ai se isso serve se da erro ou outra coisa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marião, seguinte fi ,

 

É assim que devo colocar o seu código?

A parte em negrito está aparecendo em cinza no dreamweaver, como se tivesse um erro.

Posta o código em cima do meu, pra eu nao ter que deduzir!!! mãe dina é cara...

 

 

 

<%@LANGUAGE="VBSCRIPT"%>

<!--#include file="Connections/custommercado.asp" -->

<%

Dim rsBusca_palavrachave__MMColParam

rsBusca_palavrachave__MMColParam = "1"

If (Request.QueryString("palavrachave") <> "") Then

rsBusca_palavrachave__MMColParam = Request.QueryString("palavrachave")

End If

%>

<%

Dim rsBusca_palavrachave

Dim rsBusca_palavrachave_numRows

 

rsBusca_palavrachave__MMColParam = Replace(rsBusca_palavrachave__MMColParam, "'", "''")

Palavras = SPLIT(rsBusca_palavrachave__MMColParam," ")

 

STRSQL = "SELECT * FROM listamaquinas WHERE TIPO <> 'FORA DO AR' AND ("

FOR I = LBOUND(Palavras) TO UBOUND(Palavras)

STRSQL = STRSQL & FABRICANTE LIKE '%" & Palavras(I) & "%' OR TIPO LIKE '%" & Palavras(I) & "%' OR TIPOSUB LIKE '%" & Palavras(I) & "%' OR MODELO LIKE '%" & Palavras(I) & "%' OR OBSWEB LIKE '%" & Palavras(I) & "%' "

IF I <> UBOUND(Palavras) THEN

STRSQL = STRSQL & " OR "

END IF

NEXT

 

STRSQL = STRSQL & ") ORDER BY TIPO ASC"

 

Set rsBusca_palavrachave = Server.CreateObject("ADODB.Recordset")

rsBusca_palavrachave.ActiveConnection = MM_custommercado_STRING

rsBusca_palavrachave.Source = STRSQL

rsBusca_palavrachave.CursorType = 0

rsBusca_palavrachave.CursorLocation = 2

rsBusca_palavrachave.LockType = 1

rsBusca_palavrachave.Open()

 

rsBusca_palavrachave_numRows = 0

%>

 

<%

Dim Repeat1__numRows

Dim Repeat1__index

 

Repeat1__numRows = -1

Repeat1__index = 0

rsBusca_palavrachave_numRows = rsBusca_palavrachave_numRows + Repeat1__numRows

%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem erro mesmo ficou faltando uma aspa tente assim e vamo ve no que daSTRSQL = "SELECT * FROM listamaquinas WHERE TIPO <> 'FORA DO AR' AND ( "FOR I = LBOUND(Palavras) TO UBOUND(Palavras)STRSQL = STRSQL & "FABRICANTE LIKE '%" & Palavras(I) & "%' OR TIPO LIKE '%" & Palavras(I) & "%' OR TIPOSUB LIKE '%" & Palavras(I) & "%' OR MODELO LIKE '%" & Palavras(I) & "%' OR OBSWEB LIKE '%" & Palavras(I) & "%' "IF I <> UBOUND(Palavras) THENSTRSQL = STRSQL & " OR "END IFNEXTSTRSQL = STRSQL & ") ORDER BY TIPO ASC"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, deu certo, porém numa busca digitada "calça azul" a busca tá procurando tudo que tem por CALÇA, (lista os registros) e tudo que tem por AZUL...

 

Calça Azul

Calça Verde

Meia Azul

 

Eu queria que só achasse Calça Azul .

 

todas as palavras digitadas tem que estar no registro.

 

Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ah entendi agora...assim a historia é outra tem que por uns ANDs ai agora...STRSQL = "SELECT * FROM listamaquinas WHERE TIPO <> 'FORA DO AR' AND "FOR I = LBOUND(Palavras) TO UBOUND(Palavras)STRSQL = STRSQL & "(FABRICANTE LIKE '%" & Palavras(I) & "%' OR TIPO LIKE '%" & Palavras(I) & "%' OR TIPOSUB LIKE '%" & Palavras(I) & "%' OR MODELO LIKE '%" & Palavras(I) & "%' OR OBSWEB LIKE '%" & Palavras(I) & "%') "IF I <> UBOUND(Palavras) THENSTRSQL = STRSQL & " AND "END IFNEXTSTRSQL = STRSQL & " ORDER BY TIPO ASC"tente assim e ve no que dá

Compartilhar este post


Link para o post
Compartilhar em outros sites

deixa disso cara...parabens ai por ter conseguido tudo que queria...

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.