Ir para conteúdo

POWERED BY:

Arquivado

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

MaiconCarlos

Será que tem solução

Recommended Posts

Quando você está a procura de um produto nessas listas telefônicas on-line

elas agem da seguinte forma:

 

Se você digitar no campo nome da empresa: (world) o normal seria a busca aparecer: world informática, world equipamentos, world tintas.

 

Oque deixaria a pesquisa meia que falha. Para resolver isso ao digitar (world), o

sistema abre "antes" as categorias que contenha world. Ex:

 

Informática - Equipamentos para carros - Loja de Tintas, sendo assim você

irá diretamente à categoria que estava procurando.

 

Bom, após essa redação aí vai um estudo que estou desenvolvendo com asp:

 

Primeiramente fiz o código "manual" o mesmo funcionou:

 

ASP

[*]strSQLdat "SELECT * FROM empresas WHERE (empresa LIKE '%" & 

 

[*]strBuscainteligente(Replace(strQuery, "'""''")) & "%')"

 

[*] Set objRS Server.CreateObject("ADODB.Recordset")

 

[*] objRS.Open strSQLdat, objConexao

 

[*]

 

[*] idcategoria= 22

 

[*] idcategoria2= 23

 

[*] idcategoria3= 24

 

[*] strSQL "SELECT * FROM categorias Where idcategoria="&idcategoria&" or 

 

[*]idcategoria="&idcategoria2&" or idcategoria="&idcategoria3&""

 

[*] strSQL = strSQL & " order by idcategoria ASC"

 

Tem como eu fazer o código acima de forma automática, ou seja, dinâmica, tentei usar o for, mas acho que to viajando! vejam um exemplo que dá erro:

 

ASP

[*]strSQLdat "SELECT * FROM empresa WHERE (empresa LIKE '%" & 

 

[*]busca_inteligente(Replace(strQuery, "'""''")) & "%')"

 

[*] Set objRS Server.CreateObject("ADODB.Recordset")

 

[*] objRS.Open strSQLdat, objConexao

 

[*]

 

[*] strSQL "SELECT * FROM categorias Where"

 

[*]

 

[*] x=24

 

[*] for i=22 to x

 

[*] strSQL = StrSQL & " idcategoria = "&i&"" 

 

[*] Next

 

[*]

 

[*] strSQL = strSQL & " order by idcategoria ASC"

 

[*]Set objRSO Server.CreateObject("ADODB.Recordset")

 

o erro que dá é:

 

Erro de sintaxe (operador faltando) na expressão de consulta 'idcategoria =

22 idcategoria = 23 idcategoria = 24'.

 

Lembrando que esse x=24 e i que vai de 22 a 24 é o idcategoria da busca da

tabela empresa. E que no caso teria que ser dinâmico tmb.

 

Se alguém souber a forma de fazer isso me avisa, ou talvez não tenha uma

solução, mas se alguém souber fico grato em compartilhar mais esse

conhecimento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara usa a expressão IN

 

Select * from nomeDatabela where id_categoria in (23,24,25,26,28)

<{POST_SNAPBACK}>

Cara agora que eu fui lembrar da bendita..rsrs

 

ASP

[*] strSQLdat "SELECT * FROM empresa WHERE (empresa LIKE '%" & strBuscainteligente(Replace(strQuery, "'""''")) & "%')"

 

[*] Set objRS Server.CreateObject("ADODB.Recordset")

 

[*] objRS.Open strSQLdat, objConexao

 

[*]

 

[*]

 

[*] idcategoria "22,23,24"

 

[*] strSQL "SELECT * FROM categorias Where idcategoria IN ("&idcategoria&")"

 

[*] strSQL = strSQL & " order by idcategoria ASC"

 

[*]Set objRSO Server.CreateObject("ADODB.Recordset")

 

[*] objRSO.Open strSQL, objConexao

 

Valew pela dica, eu já tava viajando demais, tava até criando uma classe..rs

 

Vou terminando aqui e qualquer coisa eu posto mais dúvidas..kkk

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

vou resuscitar isso denovo: Mesmo eu usando o IN ainda to perdido.

 

 

ASP

[*][strSQLdat "SELECT * FROM Empresas WHERE (empresa LIKE '%" & busca(Replace(strQuery, "'""''")) & "%')"

 

[*]Set objRS Server.CreateObject("ADODB.Recordset")

 

[*] objRS.Open strSQLdat, objConexao

 

[*]

 

[*] idcategoria "22,23,24"

 

[*] strSQL "SELECT * FROM categorias Where idcategoria IN ("&idcategoria&")"

 

[*] strSQL = strSQL & " order by idcategoria ASC"

 

O sistema achou na instrução strSQLdat tres registros diferentes cada um com um idcategoria diferente= 22,23,24, fazendo assim "manual" vai bem, mas e fazer com que ele liste os idcategorias de forma dinâmica? alguém tem alguma idéia?

 

eu tentei assim: idcategoria = objRS("idcategoria") mas ele só lista o primeiro idcategoria do resultado (22), pelo que eu to imaginando aqui o sistema tem que fazer tipo um WHILE e depois quebrar SPLIT os id estou certo? Alguém tem uma idéia de como fazer?

 

Grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

aramzena os ids em uma variavel e separa-os por virgula ai depois é so jogar seu valo ali dentro do IN

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troca isso

idcategoria = "22,23,24"

Por Isso

While Not ObjRs.eofif idcategoria = "" then  idCategoria = ObjRs("idCategoria")  else  idCategoria = idCategoria & "," & ObjRs("idCategoria")End ifObjRs.moveNextWend

Compartilhar este post


Link para o post
Compartilhar em outros sites

marioufpa - Obrigado........ http://forum.imasters.com.br/public/style_emoticons/default/joia.gif :D

 

 

Marcelo Barcellos - Obrigado........ http://forum.imasters.com.br/public/style_emoticons/default/joia.gif :D

 

Grato

 

 

Troca isso

 

idcategoria = "22,23,24"

Por Isso

 

While Not ObjRs.eof

 

if idcategoria = "" then

   idCategoria = ObjRs("idCategoria")

   else

   idCategoria = idCategoria & "," & ObjRs("idCategoria")

End if

 

ObjRs.moveNext

Wend

<{POST_SNAPBACK}>

Compartilhar este post


Link para o post
Compartilhar em outros sites

marioufpa - Obrigado........ http://forum.imasters.com.br/public/style_emoticons/default/joia.gif   :D Marcelo Barcellos - Obrigado........ http://forum.imasters.com.br/public/style_emoticons/default/joia.gif   :D Grato

beleza tiozinho

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.