Ir para conteúdo

POWERED BY:

Arquivado

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

Profhel

[Resolvido] Problemas com Busca + Paginação. Como resolver?

Recommended Posts

Olá amigos,

 

estou desenvolvendo um projeto que consiste em buscar determinados registros num banco de dados Access e listá-los utilizando ASP + SQL.

 

Pois bem...

 

...recebi uma grande ajuda aqui no fórum quando fui orientado a utilizar ARRAYS para quebrar os elementos da pesquisa a fim de aumentar a eficiência da minha busca. Funcionou perfeitamente.

 

Só que agora, preciso que os registros retornados para o cliente sejam "paginados", ou seja, apaceçam separados por páginas (por exemplo, de 15 em 15 registros por página).

 

Eu até consegui pegar uns tutoriais de paginação aqui no fórum e implantar em meu projeto. A PRIMEIRA PÁGINA funciona numa boa - se eu definir na instrução rsBuscaFilme.PageSize = 15 ele obedece direitinho -, agora... as demais páginas... dá o seguinte erro:

 

"Erro de sintaxe na cláusula WHERE."

 

Peço encarecidamente a todos que me ajudem na resolução deste problema.

 

Necessito de urgência para a finalização do projeto. As demais fases do mesmo já foram concluídas com êxito (graças a ajuda de vocês - obrigado!).

 

Obs.: reescrevam, por favor, o código da maneira que vocês acharem conveniente para que o mesmo se torne funcional, ok?

 

Segue abaixo o código referente à busca e à paginação utilizadas:

 

CODE

 

'************************************************************

'* INÍCIO *

'************************************************************

 

'************************************************************

'* Trecho que analisa o que foi digitado no campo de busca *

'* Para buscar registros ele funciona perfeitamente... *

'* ... mas quando utilizado para paginação, dá erro! *

'************************************************************

 

<%

varBuscaFilme = Request.Form("formBuscaFilme")

 

buscaFilmeArray = Split(varBuscaFilme, " ", -1, 1)

 

strBuscaFilme = "SELECT * FROM Locadora WHERE "

For i = 0 to Ubound(buscaFilmeArray)

IF i > 0 THEN

strBuscaFilme = strBuscaFilme & "OR "

END IF

strBuscaFilme = strBuscaFilme & "codBarrasFilme LIKE '%" & buscaFilmeArray(i) & "%' "

strBuscaFilme = strBuscaFilme & "OR tipoMidiaFilme LIKE '%" & buscaFilmeArray(i) & "%' "

strBuscaFilme = strBuscaFilme & "OR tituloFilme LIKE '%" & buscaFilmeArray(i) & "%' "

strBuscaFilme = strBuscaFilme & "OR tituloOrigFilme LIKE '%" & buscaFilmeArray(i) & "%' "

strBuscaFilme = strBuscaFilme & "OR AnoLancFilme LIKE '%" & buscaFilmeArray(i) & "%' "

strBuscaFilme = strBuscaFilme & "OR sinopseFilme LIKE '%" & buscaFilmeArray(i) & "%' "

strBuscaFilme = strBuscaFilme & "OR elencoFilme LIKE '%" & buscaFilmeArray(i) & "%' "

strBuscaFilme = strBuscaFilme & "OR direcaoFilme LIKE '%" & buscaFilmeArray(i) & "%' "

strBuscaFilme = strBuscaFilme & "OR generoFilme LIKE '%" & buscaFilmeArray(i) & "%' "

strBuscaFilme = strBuscaFilme & "OR extrasFilme LIKE '%" & buscaFilmeArray(i) & "%' "

Next

strBuscaFilme = strBuscaFilme & "ORDER BY tituloFilme ASC"

Set rsBuscaFilme = Conexaodb.Execute(strBuscaFilme)

%>

 

 

'**************************************************

'* Trecho que inicia a Paginação *

'**************************************************

 

<%

Registros = 15

Pagina = Request.QueryString("pagina")

IF Pagina = "" THEN

Pagina = 1

END IF

 

rsBuscaFilme.PageSize = Registros

%>

 

 

'**************************************************

'* Trecho que exibe o que foi encontrado no banco *

'**************************************************

 

<%

IF Not rsBuscaFilme.EOF THEN

rsBuscaFilme.AbsolutePage = Pagina

While Not rsBuscaFilme.EOF AND x < rsBuscaFilme.PageSize

x = x + 1

%>

 

'***** Trecho em HTML totalmente dispensável neste tópico

 

<%

rsBuscaFilme.MoveNext

WEND

%>

 

 

'**************************************************

'* Trecho que constrói os links de paginação *

'**************************************************

 

Anterior = Pagina - 1

Proxima = Pagina + 1

Ultima = rsBuscaFilme.PageCount

Primeira = 1

ultm2 = FormatNumber(rsBuscaFilme.PageCount - 1,0)

IF Pagina <> 1 THEN

Response.Write "<b>« <a href=busca_filme.asp?pagina="&Primeira&">Primeira Página</a></b> "

END IF

IF Pagina > 1 AND Pagina <> 2 THEN

Response.Write "<b>[ <a href=busca_filme.asp?pagina="&Anterior - 1&">"&Anterior - 1&"</a> ]</b> "

END IF

IF Pagina > 1 THEN

Response.Write "<b>[ <a href=busca_filme.asp?pagina="&Anterior&">"&Anterior&"</a> ]</b> "

END IF

Response.Write "<b>[ "&Pagina&" ]</b> "

IF Not rsBuscaFilme.EOF THEN

Response.Write "<b>[ <a href=busca_filme.asp?pagina="&Proxima&">"&Proxima&"</a> ]</b> "

END IF

IF Not rsBuscaFilme.EOF AND Pagina <> Ultima AND Pagina <> ultm2 THEN

Response.Write "<b>[ <a href=busca_filme.asp?pagina="&Proxima + 1&">"&Proxima + 1&"</a> ]</b> "

END IF

IF Not rsBuscaFilme.EOF THEN

Response.Write "<b><a href=busca_filme.asp?pagina="&Ultima&">Última Página</a> »</b> "

END IF

 

ELSE

%>

 

'***** Trecho em HTML totalmente dispensável neste tópico

 

<%

END IF

%>

 

 

'**************************************************

'* FIM *

'**************************************************

 

Obrigado a todos que se propuseram a examinar meu código e tentar me ajudar!

 

 

.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, olhando por cima, observei no seu código que você recupera o que foi digitado na cx. de busca apenas na primeira página. No caso da paginação, você deve passar essa variável no link, e recuperar utilizando apenas: Request("blablabla") - É porque a primeira requisição é feita através do Request.Form, mas na segunda será por Request.QueryString, então resuma tudo utilizando apenas "Request", que terá o mesmo efeito.

 

Abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Public2004,

 

fiz o que você sugeriu - retirei dos Request as denominações ".Form" e ".QueryString" deixando apenas Request("algumaCoisa"), porém não surtiu efeito algum.

 

A página se comporta estável durante as buscas e continua exibindo o mesmo erro "Erro de sintaxe na cláusula WHERE." na paginação...

 

Continuo no aguardo.

 

Obrigado pela boa vontade.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você também alterou os links da paginação incluido o valor da variável como mencionei? Ex:

<a href=busca_filme.asp?formBuscaFilme="& varBuscaFilme &"&pagina="&Proxima&">"&Proxima&"</a>

Abs.

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.