Ir para conteúdo

POWERED BY:

Arquivado

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

hargon

[Resolvido] Fazer busca pela letra inicial

Recommended Posts

Sem problemas... só expliquei o funcionamento para você não fica perdido no que está sendo feito, caso você ainda não soubesse...

 

 

Coloca acima da consulta que você criou, a linha abaixo:

letra = "0"
E manda executar. Posta o resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sem problemas... só expliquei o funcionamento para você não fica perdido no que está sendo feito, caso você ainda não soubesse...

 

 

Coloca acima da consulta que você criou, a linha abaixo:

letra = "0"
E manda executar. Posta o resultado.

 

Hargon assim, não consegui ainda.

 

na primeira pagina esta os links do alfabeto, no link do numero fiz

 

<a href="buscar_letra_resultado.asp?letra=0&idcat=<%=RS("idcat")%>">0-9

 

Dessa forma ele esta listando todos os filmes que começam com 0, eu quero que ele lista todos os filmes que começam com numeros.

 

na pagina dos resultados, os select esta assim

 

Set RS= Server.CreateObject("ADODB.Recordset")
sql = "SELECT * FROM fotos WHERE nome LIKE '" & letra & "%' AND idcat=" & idcat & " ORDER BY nome ASC"
RS.Open SQL, conn, 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

A sim... agora acho que entendi. Você quer que liste todos os filmes de 0 a 9 em uma única consulta, correto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A sim... agora acho que entendi. Você quer que liste todos os filmes de 0 a 9 em uma única consulta, correto?

 

Exatamento isso, não sei se tem como fazer isso ??????!!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Logo após a variável LETRA receber o parâmetro, coloque o IF abaixo.

If isNumeric(letra) Then
	 letra = "[0-9]"
End If

No Access tenho certeza que funciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Logo após a variável LETRA receber o parâmetro, coloque o IF abaixo.

If isNumeric(letra) Then
	 letra = "[0-9]"
End If

No Access tenho certeza que funciona.

Putz...hoje o meu raciocinio esta pessima, mas eu nao tenho ideia daonde colocar esse if, tentei colocar assim:

 

Set RS= Server.CreateObject("ADODB.Recordset")
sql = "SELECT * FROM fotos Where Left(Nome, 1) = '"&Request.QueryString("letra")&"'
If isNumeric(letra) Then
	 letra = "[0-9]"
End If
 AND idcat=" & idcat & " ORDER BY nome 

ASC"
RS.Open SQL, conn, 3

Set RS= Server.CreateObject("ADODB.Recordset")
sql = "SELECT * FROM fotos Where Left(Nome, 1) = '"&Request.QueryString("letra")&"' AND idcat=" & idcat & " ORDER BY nome 

ASC"
RS.Open SQL, conn, 3

If isNumeric(letra) Then
	 letra = "[0-9]"
End If

Acho que não estou certo daonde aplicar!!!! http://forum.imasters.com.br/public/style_emoticons/default/cry.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dim letra

letra = Request.QueryString("letra")

 

If isNumeric(letra) Then

letra = "[0-9]"

End If

 

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

sql = "SELECT * FROM fotos Where Left(Nome, 1) = '"& letra&"' AND idcat=" & idcat & " ORDER BY nome ASC"

RS.Open SQL, conn, 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dim letra
letra = Request.QueryString("letra")

If isNumeric(letra) Then
	 letra = "[0-9]"
End If

Set RS= Server.CreateObject("ADODB.Recordset")
sql = "SELECT * FROM fotos Where Left(Nome, 1) = '"& letra&"' AND idcat=" & idcat & " ORDER BY nome ASC"
RS.Open SQL, conn, 3

Nao deu certo, nao da nenhum erro, apenas nao acha nada !!!!

 

busca_letra.asp

<a href="buscar_letra_resultado.asp?letra=0-9&idcat=<%=RS("idcat")%>">0-9</a>

 

busca_letra_resultado.asp

<%
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

Dim letra
letra = Request.QueryString("letra")

If isNumeric(letra) Then
	 letra = "[0-9]"
End If

Set RS= Server.CreateObject("ADODB.Recordset")
sql = "SELECT * FROM fotos Where Left(Nome, 1) = '"& letra&"' AND idcat=" & idcat & " ORDER BY nome ASC"
RS.Open SQL, conn, 3

If RS.EOF Then
Response.Redirect ("erro03.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  

%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não foi isso que eu falei para fazer...

 

Você passa somente 1 número normalmente.

 

Quando chegar no IF, aí se for número, entrará nele e substituíra pelo valor. Se não for, buscará pela letra. Como você está passando 0-9 como parâmetro, então não está entrando no IF, pois isso não é numerico.

 

Tente novamente apenas passando um número por parâmetro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não foi isso que eu falei para fazer...

 

Você passa somente 1 número normalmente.

 

Quando chegar no IF, aí se for número, entrará nele e substituíra pelo valor. Se não for, buscará pela letra. Como você está passando 0-9 como parâmetro, então não está entrando no IF, pois isso não é numerico.

 

Tente novamente apenas passando um número por parâmetro.

 

devo criar um link pra cada numero, tipo assim:

 

<a href="buscar_letra_resultado.asp?letra=0&idcat=<%=RS("idcat")%>">0

<a href="buscar_letra_resultado.asp?letra=1&idcat=<%=RS("idcat")%>">1

<a href="buscar_letra_resultado.asp?letra=2&idcat=<%=RS("idcat")%>">2

 

e assim por diante !!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não há necessidade de criar vários links.

 

Você pode criar apenas

<a href="buscar_letra_resultado.asp?letra=0&idcat=<%=RS("idcat")%>">#</a>

 

Pois independente do número passado, sempre vai retornar o mesmo resultado, que é listar todos os filmes iniciados por números.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não há necessidade de criar vários links.

 

Você pode criar apenas

<a href="buscar_letra_resultado.asp?letra=0&idcat=<%=RS("idcat")%>">#</a>

 

Pois independente do número passado, sempre vai retornar o mesmo resultado, que é listar todos os filmes iniciados por números.

Hargon, nao deu certo... mas deixa pra la !!!! Vou criar um link pra cada numero, assim deu certo. Vcs me ajudaram um monte, e ja estou enchendo a paciencia de vcs. kkkk Muito obrigado a todos !!!!!!!! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que isso... se quiser chegar há uma solução mais adequada, pode continuar o tópico.

 

Apenas poste como está o seu código neste momento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que isso... se quiser chegar há uma solução mais adequada, pode continuar o tópico.

 

Apenas poste como está o seu código neste momento.

Ok, hargon... vamos solucionar isso de uma vez.

 

busca_letra

 

<a href="buscar_letra_resultado.asp?letra=0&idcat=<%=RS("idcat")%>">#</a>

 

busca_letra_resultado

 

<%
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

Dim letra
letra = Request.QueryString("letra")

If isNumeric(letra) Then
	 letra = "[0-9]"
End If

Set RS= Server.CreateObject("ADODB.Recordset")
sql = "SELECT * FROM fotos Where Left(Nome, 1) = '"& letra&"' AND idcat=" & idcat & " ORDER BY nome ASC"
RS.Open SQL, conn, 3

If RS.EOF Then
Response.Redirect ("erro03.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  

%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilize dessa forma e poste o resultado:

sql = "SELECT * FROM fotos Where nome LIKE '"& letra&"%' AND idcat=" & idcat & " ORDER BY nome ASC"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilize dessa forma e poste o resultado:

sql = "SELECT * FROM fotos Where nome LIKE '"& letra&"%' AND idcat=" & idcat & " ORDER BY nome ASC"

 

hargon, imprimiu esse erro: :blink:

 

ADODB.Recordset error '800a0bb9'

Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

<%
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

Dim letra
letra = Request.QueryString("letra")

If isNumeric(letra) Then
	 letra = "[0-9]"
End If

Set RS= Server.CreateObject("ADODB.Recordset")
sql = sql = "SELECT * FROM fotos Where nome LIKE '"& letra&"%' AND idcat=" & idcat & " ORDER BY nome ASC"
RS.Open SQL, conn, 3

If RS.EOF Then
Response.Redirect ("erro03.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  

%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

sql = sql = "SELECT * FROM fotos Where nome LIKE '"& letra&"%' AND idcat=" & idcat & " ORDER BY nome ASC"

Você repetiu o SQL.

 

Ficou sql = sql =

 

O correto é:

sql = "SELECT * FROM fotos Where nome LIKE '"& letra&"%' AND idcat=" & idcat & " ORDER BY nome ASC"

Compartilhar este post


Link para o post
Compartilhar em outros sites

sql = sql = "SELECT * FROM fotos Where nome LIKE '"& letra&"%' AND idcat=" & idcat & " ORDER BY nome ASC"

Você repetiu o SQL.

 

Ficou sql = sql =

 

O correto é:

sql = "SELECT * FROM fotos Where nome LIKE '"& letra&"%' AND idcat=" & idcat & " ORDER BY nome ASC"

hargon vou te contar uma coisa, estes seus olhos clinicos, hein !!!! http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif Agora sim deu certo, estava desistindo, mas você quis continuar, programador é assim, né, só sofrimento, mas a gente chega la! Cara agradeço muito pela sua ajuda, 5 estrelas pra ti !!!! Quando precisar é só falar !!!!! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

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.