Ir para conteúdo
Fórum Script Brasil
  • 0

Busca Por Palavras


Nesh

Pergunta

1 resposta a esta questão

Posts Recomendados

  • 0

tenta isso aqui, achei na net. não sei se funciona!

A rotina é bastante simples. O exemplo a seguir procura as palavras "carro" e "rádio" em uma tabela que possui um campo denominado "DESCRICAO".

Em primeiro lugar, vamos tratar os dados recebidos do formulário:

'Codifica os dados recebidos formatando os caracteres especiais, neste caso,

'o espaço é substituído pelo sinal (+)

strProcura = Server.URLEncode(request("campo_do_formulario_postado"))

'Como nossa pesquisa será por "múltiplas palavras" (aqui você pode alterar ao seu gosto)

'é necessário trocar o sinal de (=) pelo (%) que é usado com o LIKE na string SQL

strProcura = replace(strProcura,"+","%")

Teremos com resultado: carro%radio

Agora com a string de procura tratada, vamos criar o ARRAY que conterá as palavras para "comparação" com as encontradas.

Veja que neste ponto não utilizaremos os sinais de (%), pois vamos procurar a palavra INTEIRA dentro do resultado vindo do Banco de Dados:

'Atribui o valor postado à variável string_procurada

string_procurada = request("nome")

'Aqui colocamos "cada" palavra em uma posição do vetor. Veja que a função Split tem como parâmetros

'Split(string,separdor), onde o separador é o "espaço": "carro radio". Neste caso o VetorResultado conterá

' duas palavras: carro e radio

VetorResultado = Split(string_procurada," ")

Agora já está tudo pronto. Então vamos atribuir à variável "campo" o resultado do Recordset:

campo = rstTemp.Fields.Item("DESCRICAO").Value

A seguir, temos o laço For..Next que substitui o(s) valore(s) procurado(s) pelo(s) encontrado(s).

Esse laço é o responsável pelas substituições. Nele é usada a função replace que tem como parâmetros:

Replace(string_completa,palavra_procurada,palavra_substituida)

For I = 0 to Ubound(VetorResultado)

campo = REPLACE(campo, VetorResultado(I),"<b>" & ucase(VetorResultado(I)) & "</b>",1,1,1)

Next

Obs: 1,1,1 no Replace é para que a palavra substituída independente da formatação, pois o Replace é "Case Sensitive".

Para mais informações, veja o detalhamento da função Replace no site da Microsoft®.

Veja que o laço é necessário para efetuar a procura de "cada" palavra contida no ARRAY. Para isso usamos a função Ubound(parametro) que conta a quantidade de elementos contido no ARRAY ou VETOR.

O funcionamento é simples, para cada passagem, a variável I é incrementada e a posição do ARRAY é lida.

Note que o importante é atribuir a variável "campo" ao Replace para que possa ser feita a atribuição; vamos dizer "recursiva".

Espero que esta pequena contribuição possa tirar a dúvida sobre as funções Replace() e Split(), e que o código acima possa ser útil em seus sistemas.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...