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

(Resolvido) busca de string


ranilson

Pergunta

bom dia pessoal....uma pequena dúvida.....

tenho um programinha em delphi que é um livro de receitas....gostaria que ele fizesse uma busca de palavra chave.

ex: se eu digitar 'abacaxi' ele vai buscar todas as receitas que tem no título a palavra abacaxi (como na internet) então ele apresentaria no dbgrid: bolo de abacaxi, abacaxi em calda, doce de abacaxi, abacaxi com farofa...... e aí por diante.

não sei se fui claro.....será que é facil fazer isso????

os títulos das receitas estão numa table do interbase.

obrigado pela atenção e ajuda.

delphi 7 e interbase6.5

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Ola ranilson!

Isso não é dificil de fazer não... é uma pesquisa até que simples.

Vai depender da estrutura do form que você vai usar pra fazer a pesquisa. se for usar apenas um campo (Tedit) para colocar a palavra chave ficaria assim: um exemplo bem simples:

eu uso os componentes da aba inerbase. você precisa adequar o código ao componente que você usa.

procedure TFrmpccl.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
     if Key = Chr(13) then
     begin
       qrReceita.DisableControls;
       qrReceita.close;
       qrReceita.sql.clear;
       qrReceita.sql.add('Select * from receita where titulo like '+''''+'%'+Edit1.text+'%'+''' ');
       qrReceita.open;
       qrReceita.EnableControls;
     end;
esse código eu uso no onKeyPress do edit1, por exemplo, quando se aperta o ENTER; neste caso trará tudo que tenha 'abacaxi', por exemplo, no meio do titulo, caso você queira que traga os que comecem com oque você irá digitar no edit, troque a linha que tem qrReceita.sql.add por isso:
qrReceita.sql.add('Select * from receita where titulo like '+''''+Edit1.text+'%'+''' ');

titulo = o nome do campo referente ao titulo da receita na tabela de receitas.

qrReceita = o componente que você deve estar usando para trazer os dados do grid.

espero ter ajudado.

abraço :D

Editado por K!ko
Link para o comentário
Compartilhar em outros sites

  • 0

Oi, K!ko!

Este tipo de busca deteriora exponencialmente conforme cresce a base de dados, pois o tipo de pesquisa apresentado resulta em TABLE SCAN.

Existe no Interbase/Firebird algum tipo de indexação por FULLTEXT ?

Este tipo de indexação retornaria o que você deseja e evitaria o TABLE SCAN.

Link para o comentário
Compartilhar em outros sites

  • 0
Oi, K!ko!

Este tipo de busca deteriora esponencialmente conforme cresce abase de dados, pois o tipo de pesquisa apresentado resulta em TABLE SCAN.

como eu disse é uma forma bem simples de fazer a pesquisa. Na verdade da forma que uso é um tanto que diferente, pois utilizo mais recursos e mais opções de filtro. Como não sei que componentes nosso amigo ranilson está usando para fazer a pesquisa, dei este exemplo simplificado. Da forma que uso o código ficaria muito mais estenço.

Mas se existe essa possibilidade de deteriorização, é bom revermos isto. Obrigado pela dica Denys.

Existe no Interbase/Firebird algum tipo de indexação por FULLTEXT ?
Creio que exista sim, mas a duvida é se nosso amigo ranilson está utilizando isto.

Retiro oque disse acima.

Após ler os artigos que Jhonas postou...

Digo que não, o interbase não possui full text.

abraço :D

Editado por K!ko
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...