Jump to content

POWERED BY:

Archived

This topic is now archived and is closed to further replies.

hargon

[Resolvido] Fazer busca pela letra inicial

Recommended Posts

Não salvou conteúdo do post, mas pelo título imagino que o que você quer seja:

SELECT nmcampo FROM tabela WHERE nmcampo LIKE '"& letra & "%'"

Share this post


Link to post
Share on other sites

Putz !!! O que houve com o conteudo. sumiu ???!!!!

 

Bom, Hargon você ja deu um ideia do select usando like, beleza...mas tem um problema. O sistema de busca por letra é igual a este site

 

http://www.letrasdasmusicas.com.br/search.php

 

Clico na letra A, ele filtra resultados como que começam com a letra A. Para ficar mais claro a ideia de como fazer:

 

- Na primeira pagina fica todo o alfabeto a b c d e f g h i j k l m n o p q r s t u v w x y z 0-9, ok. Mas como faço para criar os os links de cada letra e como direciona para pagina de resultados.

 

Os links ficaram tipo assim: search?letra=A??? Pode parecer que estou pedindo um cod pronto, mas se me mostrarem o caminho como deve ser feito, ja esta de bom tamanho.

Share this post


Link to post
Share on other sites

Putz !!! O que houve com o conteudo. sumiu ???!!!!

 

Bom, Hargon você ja deu um ideia do select usando like, beleza...mas tem um problema. O sistema de busca por letra é igual a este site

 

http://www.letrasdasmusicas.com.br/search.php

 

Clico na letra A, ele filtra resultados como que começam com a letra A. Para ficar mais claro a ideia de como fazer:

 

- Na primeira pagina fica todo o alfabeto a b c d e f g h i j k l m n o p q r s t u v w x y z 0-9, ok. Mas como faço para criar os os links de cada letra e como direciona para pagina de resultados.

 

Os links ficaram tipo assim: search?letra=A??? Pode parecer que estou pedindo um cod pronto, mas se me mostrarem o caminho como deve ser feito, ja esta de bom tamanho.

Pode parecer que não, mas o hargon já deu a resposta ... quem sabe trocar "& letra &" por "& Request.QueryString("letra") &" ?

Share this post


Link to post
Share on other sites

Para buscar por ex. a letra A

SELECT cod, nome FROM assine WHERE nome LIKE 'A%' ORDER BY nome ASC

Lembrando que você pode trocra pela variavel que recebe o valor da busca

Share this post


Link to post
Share on other sites

Bleza ....

 

Mas, eu teria que criar um select pra cada letra, é isso ???? Se for como faço ???? A minha select que utilizo é assim:

 

<%
PagAtual = Request.QueryString("PagAtual")

Set Conn= server.createobject("adodb.connection")
DSNtest = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("db/filmes.mdb")
Conn.Open DSNtest


Set RS= Server.CreateObject("ADODB.Recordset")
sql = "SELECT * FROM fotos WHERE idcat=" & idcat & " ORDER BY id desc"
RS.Open SQL, conn, 3

If RS.EOF Then
Response.Redirect ("nenhumregistro.asp")
end if


Const NumPorPage = 9

   Dim PagAtual

   IF Request.QueryString("PagAtual") = "" Then
			   PagAtual = 1 
		 Else
				PagAtual = Request.QueryString("PagAtual")
   End If

   RS.CacheSize = NumPorPage

   
	RS.MoveFirst				
	RS.PageSize = NumPorPage	

	Dim TotalPages			  
	TotalPages = RS.PageCount

	RS.AbsolutePage = PagAtual  

%>

Share this post


Link to post
Share on other sites

Bleza ....

 

Mas, eu teria que criar um select pra cada letra, é isso ? Se for como faço ? Ou usaria o OR ? A select ficaria assim:

 

sql = "[code]SELECT FROM filmes WHERE nome LIKE 'A%' OR LIKE 'B%' OR LIKE 'C%' e assim por diante ORDER BY nome ASC"

 

Não tem necessidade de fazer um select tão grande. Faça assim:

 

Na letra a coloque o link "search?letra=a", na b coloque o link "search?letra=b" e assim por diante.

No código ASP voce coloca o Request.QueryString("letra") e o select ficará assim:

 

"

SELECT FROM filmes WHERE nome LIKE '"&letra&"%' ORDER BY nome ASC"

 

Pronto. Entendeu?

Share this post


Link to post
Share on other sites

Bleza ....

 

Mas, eu teria que criar um select pra cada letra, é isso ? Se for como faço ? Ou usaria o OR ? A select ficaria assim:

 

sql = "[code]SELECT FROM filmes WHERE nome LIKE 'A%' OR LIKE 'B%' OR LIKE 'C%' e assim por diante ORDER BY nome ASC"

 

Não tem necessidade de fazer um select tão grande. Faça assim:

 

Na letra a coloque o link "search?letra=a", na b coloque o link "search?letra=b" e assim por diante.

No código ASP voce coloca o Request.QueryString("letra") e o select ficará assim:

 

"

SELECT FROM filmes WHERE nome LIKE '"&letra&"%' ORDER BY nome ASC"

 

Pronto. Entendeu?

 

 

Agora sim.... deu pra entender !!!!! Vou testar o cod, não fechem o topico ainda. Vou dar retorno pra ver se deu certo !!!!

Share this post


Link to post
Share on other sites

isso já foi discutido no fórum

 

é tipo isso

 

select Nome from filmes Where Left(Nome, 1) = '"&Request.QueryString("letra")&"'

 

com base na query do Rodrigo Loures

Share this post


Link to post
Share on other sites

Bleza ....

 

Mas, eu teria que criar um select pra cada letra, é isso ? Se for como faço ? Ou usaria o OR ? A select ficaria assim:

 

sql = "[code]SELECT FROM filmes WHERE nome LIKE 'A%' OR LIKE 'B%' OR LIKE 'C%' e assim por diante ORDER BY nome ASC"

 

Não tem necessidade de fazer um select tão grande. Faça assim:

 

Na letra a coloque o link "search?letra=a", na b coloque o link "search?letra=b" e assim por diante.

No código ASP voce coloca o Request.QueryString("letra") e o select ficará assim:

 

"

SELECT FROM filmes WHERE nome LIKE '"&letra&"%' ORDER BY nome ASC"

 

Pronto. Entendeu?

 

Bah... ta quase pronto, ele acha os resultados certinho !!!! Porem um erro persiste, nao consigo visualiza os resultados.

 

ADODB.Recordset error '800a0cc1' 

Item cannot be found in the collection corresponding to the requested name or ordinal.

Muito esquisito isso, a linha que ele acusa é essa:

 

<td valign="top" width="80"><a href="ver_filme.asp?idcat=<%=RS("idcat")%>&idfoto=<%=RS("id")%>"><img 
border="0" src="<%=rs("thumb")%>"></a></td>

Mas eu declarei a querystring da idcat,... o que pode ser ????

Share this post


Link to post
Share on other sites

do jeito que você está buscando vai pegar todos que tem a letra A ou B, o que você deve querer foi o que passei ele lista doso os filmes que COMEÇEM e não que TEM NO MEIO a letra A ou B...

Share this post


Link to post
Share on other sites

Da forma que passei no primeiro post funciona perfeitamente... basta fazer a adaptação que o nagaozen disse, pois quando postei não tinha referência exata do que se tratava e apenas exemplifiquei a consulta.

 

Poste como sua consulta está agora, pois o erro gerado diz que você está tentando utilizar um campo que não foi informado na consulta SQL. Se você tiver apenas copiado algum dos exemplos, sem alterar, pode ser o motivo do erro.

Share this post


Link to post
Share on other sites

Agora deu certo... Como você disse hargon, o erro era que faltava um campo que nao foi informado na sql. Esta praticamente pronto. Só que ele filtra todos os cadastros daquela tabela. Mas, eu não sei se tem como fazer, mas eu queria que ele filtrasse por categoria.

 

Por exemplo, existem varias categorias, clico em uma categoria, ele me informa todos os cadastros daquela categoria, certo. Eu quero que esse filtro de letra seja apenas na categoria que estou. Não sei se fui muito claro. Mas, isso teria que utilizar duas where ou dois sets ????

 

A where que utilizo pra pegar todos os cadastros da categoria corresponte:

 

WHERE idcat=" & idcat & "

Tem como fazer isso ?????

 

Lembrando que o sistema que 100%, só falta esse detalhe !!!!!

 

E mais uma coisa, e pra buscar os que começam com numeros ??????

Share this post


Link to post
Share on other sites

tenta assim:

 

SELECT FROM filmes WHERE nome LIKE '"&letra&"%' WHERE idcat=" & idcat & " ORDER BY nome ASC"

lembrando que seu campo idcat esta como numérico.

Share this post


Link to post
Share on other sites

Corrigindo a sugestão do xan...

"SELECT FROM filmes WHERE nome LIKE '" & letra & "%' AND idcat=" & idcat & " ORDER BY nome ASC"

 

O segundo WHERE foi substituído por AND.

Share this post


Link to post
Share on other sites

Testei os dois, porem deu o mesmo erro nos dois:

 

Microsoft JET Database Engine error '80040e14'

The SELECT statement includes a reserved word or an argument name that is misspelled or missing, or the punctuation is incorrect.

Share this post


Link to post
Share on other sites

imprime na tela esta instruçao

 

nao fez snetido este erro ainda

 

ted encontrou o provavel erro

Share this post


Link to post
Share on other sites

É a mesma coisa... isso é regra de SQL. Apenas informe em letra o valor 0.

 

% após a palavra, retorna registros que iniciam com a palavra buscada.

'" & letra & "%'

 

% antes da palavra, retorna registros que terminam com a palavra buscada.

'%" & letra & "'

 

% no inicio e no fim da palavra, retorna registros que possuem no meio a palavra buscada.

'%" & letra & "%'

 

No seu caso, você está buscando por um caracter, mas se informasse uma palavra inteira ou uma frase também funcionaria.

Share this post


Link to post
Share on other sites

É a mesma coisa... isso é regra de SQL. Apenas informe em letra o valor 0.

 

% após a palavra, retorna registros que iniciam com a palavra buscada.

'" & letra & "%'

 

% antes da palavra, retorna registros que terminam com a palavra buscada.

'%" & letra & "'

 

% no inicio e no fim da palavra, retorna registros que possuem no meio a palavra buscada.

'%" & letra & "%'

 

No seu caso, você está buscando por um caracter, mas se informasse uma palavra inteira ou uma frase também funcionaria.

 

Bah !!! Hargon, desculpa a minha ignorancia... em relação a %, deu pra entender o fundamento de cada um. O problema foi essa

 

É a mesma coisa... isso é regra de SQL. Apenas informe em letra o valor 0.
No seu caso, você está buscando por um caracter, mas se informasse uma palavra inteira ou uma frase também funcionaria.

Não sei como aplicar na sql.

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.