Filtrar duas palavras separadas no mesmo campo com o edit?

Delphi

10/04/2007

Olah pessoal

Tenho no dbgrid dados gravados assim:

[campo=noCNAE]
cultivo de milho
cultivo de trigo
cultivo de soja
...
...


Estou querendo digitar duas palavras separadas no mesmo campo em um edit e filtrar, mais nao estou obtendo resultado

Fiz um SQL assim:
if radiobutton3.checked = true then begin
  if edit1.text = ´´ then exit;
     texto := edit1.text;

     sql := ´SELECT * FROM TB8cnae WHERE UPPER(noCnae) LIKE ´+´ ´´ ´;
     while pos(´ ´,texto) > 0 do begin
         sql := sql + (copy(texto,1,pos(´ ´,texto)-1)+´¬´);
         Delete(texto,1,pos(´ ´,texto));
     end;
     sql := sql+texto+´¬´´´;
     sql := UpperCase(sql);
     query1.Close;
     query1.SQL.Clear;
     query1.SQL.Add(sql);
     query1.Open;
  end;


O objetivo deste filtro com este fileds eh escrever no edit assim
[b:83f33b1611]culti sojal[/b:83f33b1611] fazer o filtro sobre essas duas palavras que estao no mesmo campo do fields.

Estou usando firebird 2.0

Grato Adriano


Adriano_servitec

Adriano_servitec

Curtidas 0

Respostas

Edvilson.chaves

Edvilson.chaves

10/04/2007

Dá uma olhada nisso!!!!

[b:ddfaedf8b5]function RetornaPalavraSel(const pFrase: String; const pPosicao: Integer): String;
var
lNomes: array[1..20] of string;
Nome: String;
i, TotalNomes: Integer;
begin
Nome := pFrase + #32;
i := Pos(32, Nome);
if i > 0 then
begin
TotalNomes := 0;
while i > 0 do
begin
Inc(TotalNomes);
lNomes[TotalNomes] := Copy(Nome, 1, i - 1);
Delete(Nome, 1, i);
i := Pos(32, Nome);
end;
if pPosicao <= TotalNomes then
Result := lNomes[pPosicao]
else
Result := cStringBranco;
end
else
Result := cStringBranco;
end;[/b:ddfaedf8b5]


GOSTEI 0
Adriano_servitec

Adriano_servitec

10/04/2007

Dá uma olhada nisso!!!! [b:13448e6717]function RetornaPalavraSel(const pFrase: String; const pPosicao: Integer): String; var lNomes: array[1..20] of string; Nome: String; i, TotalNomes: Integer; begin Nome := pFrase + #32; i := Pos(32, Nome); if i > 0 then begin TotalNomes := 0; while i > 0 do begin Inc(TotalNomes); lNomes[TotalNomes] := Copy(Nome, 1, i - 1); Delete(Nome, 1, i); i := Pos(32, Nome); end; if pPosicao <= TotalNomes then Result := lNomes[pPosicao] else Result := cStringBranco; end else Result := cStringBranco; end;[/b:13448e6717]
Olah amigo, vc sabe como faço para chamar essa funçao? Gostaria de fazer um teste com um edit e mostrar no grid.

Obrigado pela atençao
Adriano.


GOSTEI 0
Adriano_servitec

Adriano_servitec

10/04/2007

sobe


GOSTEI 0
Adriano_servitec

Adriano_servitec

10/04/2007

sobe



GOSTEI 0
POSTAR