Código
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
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009