Buscar

Pesquisa avançada para caracteres

Código

{Utilizo o Delphi 7 e MS SQL Server 2000, usando o BDE.
Essa dica é utilizada para uma pesquisa em que se deseja incluir
algumas partes e excluir outras de um conjunto string.
Ex: quero pesquisar os produtos que contenham na descrição: "PARAF" e "ALLEN". Mas
não preciso de itens com "INOX" e "SEXT".
O digito separador será ";" e para excluir utilizaremos o "-".
Através de maskedit podemos passar então: Paraf;Allen;-INOX;-SEXT
Abaixo temos a pesquisa padrão. Estou usando um DataModule onde inseri um
componente Query chamado PRODUTOS.}


With FDATA.PRODUTOS do begin
   SQL.Clear ;
   SQL.Add( 'Select * from Produtos ' ) ;
   SQL.Add( 'Where Descricao like ' + Form1.PesqRefinada( 'Descricao', mkPesquisa.Text ) ) ;
End ;

function TForm1.PesqRefinada(Campo, Texto: String): String;
var i : Integer ;
    s : string ;
begin

   s := '"%' ; i := 1 ;

   While i <= Length( Texto ) do begin

      If Copy( Texto, i, 1 ) = ';' then begin

         If i <> Length( Texto ) then begin

            If Copy( Texto, i + 1, 1 ) = '-' then begin
               s := s + '%" and ' + Campo + ' not like "%' ;
               Inc( i ) ;
            End

            Else
               s := s + '%" and ' + Campo + ' like "%' ;

         End ;

      End

      Else
         s := s + Copy( Texto, i, 1 ) ;

      Inc( i ) ;

   End ;

   s := s + '%"' ;

   Result := s ;

end;

//Espero que ajude. Até mais

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Banco de dados
Adicionada dia: 26/03/07
Por: Marcio
Visualizada: 6392 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009