Ir para conteúdo

Arquivado

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

Carcleo

Problemas com paginação

Recommended Posts

Porque o código abaixo, quando chega na linha

onde = left(onde,len(onde) - 4)

da o seguinte erro?

Chamada de procedimento ou argumento inválido: 'left'

/host/meta/admin/ibusca.asp, line 81

 

A ídéia é uma busca onde o campo de pesquiza recebe "n" palavras.

Primeiramente faço um filtro para separar somente as palavras sem repetição, ou seja caso uma mesma palavra tenha sido digitada mais de uma vez no campo de pesquiza ela só é computada uma como por exemplo: "Quando é que o homen é homen" no caso vai "Quando é que o homen"

Depois jogo cada uma dessas palavras numa variavel "onde" para depois jogar numa sql.

Depois faço a paginação.

Quando faço a pesquiza pela primeira vez, a consulta retorna a paginação certinha, ou seja com os numeros das paginas la em baixo"[1],2,3...", só que quando cliko no indice da pagina 2 por exemplo ou na própria 1, ta dando esse erro.

O que pode ser?

 

Pelos testes que fiz, se eu pegar o resultado da variavel onde que esta dentro do for each e por no fim da sql aí da certo, ou seja o script num quer rodar o o comando left.

ASP

[*]

[*]<%

[*] Dim busca, onde, pesq, x, bg, DfId, DesenharTabela, cor, ModuloNome 'Declara as variaveis.

[*] Dim laco, buscadas, considera, palavra, palavra2, pergunta, registro

[*] Dim NomeAutor, objRecordSetNomeAutor, objRecordSetNomeModulo

[*] Dim faq_id, faq_modulo, faq_autor, faq_pergunta, faq_resposta, faq_versao

[*] Dim pagina, paginas, registros, total, inicio, fim, nomes, cont, mostra

[*]

[*]If REQUEST.QUERYSTRING("action") = "consultar" then

[*]

[*] pagina = request("pagina")

[*] if pagina = "" then

[*] pagina = 1

[*] else

[*] pagina = cint(pagina)

[*] end if

[*]

[*]

[*] busca=trim(request.form("chave"))

[*] laco=split(busca,chr(32))

[*] x = 0

[*] considera = true

[*] buscadas = array()

[*] for each palavra in laco

[*] if x > 0 then

[*] for each palavra2 in buscadas

[*] if palavra = palavra2 then

[*] considera = false

[*] end if

[*] next

[*] if considera = true then

[*] redim preserve buscadas(Ubound(buscadas)+1)

[*] buscadas(Ubound(buscadas)) = palavra

[*] end if

[*] else

[*] redim preserve buscadas(Ubound(buscadas)+1)

[*] buscadas(Ubound(buscadas)) = palavra

[*] x = x + 1

[*] end if

[*] considera = true

[*] next

[*] for each palavra in buscadas

[*] palavra = replace(palavra,"a","[a,á,à,ã,â,ä,A]") 'Trata as palavras acentuadas como que sem acento ou com acenmto

[*] palavra = replace(palavra,"e","[e,é,è,ê,ë,E]")

[*] palavra = replace(palavra,"i","[i,í,ì,î,ï,I]")

[*] palavra = replace(palavra,"o","[o,ó,ò,õ,ô,ö,O]")

[*] palavra = replace(palavra,"u","[u,ú,ù,û,ü,U]")

[*] palavra = replace(palavra,"c","[c,ç]")

[*]

[*] onde="tbModulo.DfNomeModulo like '%"&palavra&"%' or tbfaq.DfPergunta like '%"&palavra&"%' or tbfaq.DfResposta like '%"&palavra&"%' or " & onde 'String Sql busca letra por letra

[*] next

[*] 'on error resume next

[*] onde = left(onde,len(onde) - 4)

[*] DesenharTabela = False

[*]

[*] Conectar objConecta, objRecordSet, "SELECT tbFaq.DfIdFaq, tbModulo.DfNomeModulo, tbFaq.DfIdUsuario, tbFaq.DfPergunta, tbFaq.DfResposta, tbFaq.DfVersao FROM tbFaq INNER JOIN tbModulo ON tbfaq.DfidModulo = tbModulo.DfIdModulo where " & onde

[*] if not objRecordSet.eof = true then 'Tem registros, cria o laço para impressão no laço for

[*] nomes = objRecordSet.getrows()

[*]

[*] total = ubound(nomes,2)

[*] registros = 10

[*] paginas = total / 10

[*]

[*] if cint(paginas) * registros < total then

[*] paginas = cint(paginas) + 1

[*] end if

[*]

[*] if pagina = 1 then

[*] inicio = 0

[*] else

[*] inicio = cint(registros) * (pagina) - 10

[*] end if

[*]

[*] fim = cint(inicio) + 9

[*] if cint(fim) > cint(total) then

[*] fim = cint(total)

[*] end if

[*]

[*] if DesenharTabela = False then

[*] 'Criando desenho tabela

[*] response.Write "<br><p>"

[*] response.Write "<table border='0' width=95% align=center cellspacing='1', cellpading='2'>"

[*] response.Write "<tr bgcolor=#8193A7>"

[*] response.Write "<td width=50 align=center height=20><font color=#FFFFFF><b>ID</b></fonte></td>"

[*] response.Write "<td width=70 align=center height=20><font color=#FFFFFF><b>Modulo</b></fonte></td>"

[*] response.Write "<td width=320 align=center height=20><font color=#FFFFFF><b>Pergunta</b></fonte></td>"

[*] response.Write "<td width=100 align=center height=20><font color=#FFFFFF><b>Autor</b></fonte></td>"

[*] response.Write "<td width=100 align=center height=20><font color=#FFFFFF><b>Versao</b></fonte></td>"

[*] response.Write "<td width=100 align=center height=20><font color=#FFFFFF><b>Visualizar</b></fonte></td>"

[*] response.Write "</tr>"

[*] DesenharTabela = True

[*] End if

[*]

[*] if (cor = 1) then

[*] bg = "#E8ECEE"

[*] cor = 2

[*] else

[*] bg = "#d3dbde"

[*] cor = 1

[*] end if

[*]

[*] FOR Cont=inicio TO fim

[*]

[*] if (cor = 1) then

[*] bg = "#E8ECEE"

[*] cor = 2

[*] else

[*] bg = "#D3DBDE"

[*] cor = 1

[*] end if

[*]

[*] response.Write "<tr bgcolor="&bg&">"

[*] response.Write "<td width=50 height=20>"&nomes(0,Cont) &"</td>"

[*] response.Write "<td width=70 height=20>"&nomes(1,Cont) &"</td>"

[*] response.Write "<td width=320 height=20>"&nomes(3,Cont) &"</td>"

[*] response.Write "<td width=100 height=20>"&nomes(4,Cont) &"</td>"

[*] response.Write "<td width=100 height=20>"&nomes(5,Cont) &"</td>"

[*] response.Write "<td width=100 height=20 align=center><a href=verfaq.asp?action=1&id="&nomes(0,Cont) &"><img src=../imagens/ver.ico width=25 border=0></a></td>"

[*] response.Write "</tr>"

[*] next

[*] end if

[*]

[*] if DesenharTabela = False then

[*] response.Write "<table align=center width=200 height=50 border=2><tr><td>"

[*] response.Write "<center>Não há resultados</center>"

[*] response.Write "</td></tr></table>"

[*] else

[*] response.Write "</table>"

[*] FOR Cont = 1 TO cint(paginas)

[*] if cint(pagina) = Cont then

[*] mostra = "[" & Cont & ]"

[*] else

[*] mostra = Cont

[*] end if

[*] response.write "<center><a href=ibusca.asp?action=consultar&pagina=" & Cont & ">" & mostra & "</a></center>"

[*] next

[*] END IF

[*]END IF

[*]%>

[*]

[*]

Compartilhar este post


Link para o post
Compartilhar em outros sites

se onde não tiver quatro caracters você esta pegando os os primeiro menos 2 ou menos 1 caracters...verifica se sempre terão pelo menos 4 caracteres ai...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Kara, observa bem, a variavel onde é parte de umna sql num tem como ter menos de 4 caracters nunca....O que eu preciso é de uma forma de retirar os 4 ultimos caracters da string que no caso serao um espaço + or + um espaço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

então antes da linha do erro poe response.write onderesponse.ende posta aqui o que pintar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Taí o que deu colando as palavras data e dados na fonte de pesquisa

tbModulo.DfNomeModulo like '%d[a,á,à,ã,â,ä,A]d[o,ó,ò,õ,ô,ö,O]s%' or tbfaq.DfPergunta like '%d[a,á,à,ã,â,ä,A]d[o,ó,ò,õ,ô,ö,O]s%' or tbfaq.DfResposta like '%d[a,á,à,ã,â,ä,A]d[o,ó,ò,õ,ô,ö,O]s%' or tbModulo.DfNomeModulo like '%d[a,á,à,ã,â,ä,A]t[a,á,à,ã,â,ä,A]%' or tbfaq.DfPergunta like '%d[a,á,à,ã,â,ä,A]t[a,á,à,ã,â,ä,A]%' or tbfaq.DfResposta like '%d[a,á,à,ã,â,ä,A]t[a,á,à,ã,â,ä,A]%'

Detalhe, se eu por esse resultado no final da sql onde concatena no lugar da variavel onde, aí da certo

Compartilhar este post


Link para o post
Compartilhar em outros sites

como você está passando?? e como está tentenado recuperar??

Compartilhar este post


Link para o post
Compartilhar em outros sites

você ta passando pelo link?da uma olhada nos seus outros topicos lah..o link nao pode conter espaços.. por isso nao ta dando certo..

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.