Consulta em um campo MEMO
Tenho um banco de dados(paradox) com varios registros , em cada um destes registros existe um campo MEMO onde tem várias linhas de comentário ..
Quero colocar um edit onde o cliente vai digitar algumas palavras e o sistema vai ter que procurar nesse campo MEMO, me listando depois todos os registros que possuem essas palavras ...
Tem como fazer isso ???
Abraço
Quero colocar um edit onde o cliente vai digitar algumas palavras e o sistema vai ter que procurar nesse campo MEMO, me listando depois todos os registros que possuem essas palavras ...
Tem como fazer isso ???
Abraço
Arc
Curtidas 0
Respostas
Arc
08/10/2003
Me ajudem galera, :D :D
GOSTEI 0
Machado
08/10/2003
Ei pessoal estamos precisando que algum fera responda a pergunta, ei moderadores que tal??
GOSTEI 0
Imoreira
08/10/2003
procedure TForm1.QuebraPalavras(Str, DeleteCaracter: string; var Palavras: TStringList);
begin
Palavras.Clear;
if Pos(DeleteCaracter, Str) = 0 then begin
Palavras.Add(Str);
Exit;
end;
while Pos(DeleteCaracter, Str) <> 0 do begin
Palavras.Add(Copy(Str, 1, Pos(DeleteCaracter, Str) - 1));
Str:= Copy(Str, Pos(DeleteCaracter, Str) + 1, Length(Str));
end;
Palavras.Add(Str);
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
Palavras,lista: TStringList;
x,y:integer;
begin
Palavras:= TStringList.Create;
Lista:=TStringList.Create;
for x:=0 to length(edit.text)-1 do begin
QuebraPalavras(edit.text,´ ´,Palavras);
for y:=0 to palavras.Count-1 do begin
lista.Add(palavras[y]);
end;
end;
with qry do begin
close;
with sql do begin
CLEAR;
add(´select mensagem from mensagemrecibos where ´);
for x:=0 to lista.Count-1 do begin
add(´ mensagem LIKE ´+quotedstr(´¬´+lista.Strings[x]+´¬´));
add(´ OR ´);
end;
delete(sql.Count-1);
end;
open;
end;
end;
begin
Palavras.Clear;
if Pos(DeleteCaracter, Str) = 0 then begin
Palavras.Add(Str);
Exit;
end;
while Pos(DeleteCaracter, Str) <> 0 do begin
Palavras.Add(Copy(Str, 1, Pos(DeleteCaracter, Str) - 1));
Str:= Copy(Str, Pos(DeleteCaracter, Str) + 1, Length(Str));
end;
Palavras.Add(Str);
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
Palavras,lista: TStringList;
x,y:integer;
begin
Palavras:= TStringList.Create;
Lista:=TStringList.Create;
for x:=0 to length(edit.text)-1 do begin
QuebraPalavras(edit.text,´ ´,Palavras);
for y:=0 to palavras.Count-1 do begin
lista.Add(palavras[y]);
end;
end;
with qry do begin
close;
with sql do begin
CLEAR;
add(´select mensagem from mensagemrecibos where ´);
for x:=0 to lista.Count-1 do begin
add(´ mensagem LIKE ´+quotedstr(´¬´+lista.Strings[x]+´¬´));
add(´ OR ´);
end;
delete(sql.Count-1);
end;
open;
end;
end;
GOSTEI 0
Valdir.santos
08/10/2003
Cara, fiz estes dias uma pesquisa assim. No meu caso, os usuários digitam as palavras ou frases, separando-as por ponto-e-vírgula e têm a opção de escolher se quer pesquisar todas as palavras ou frases da lista ou qualquer uma delas. Dá uma olhadinha no código e vê se consegue entender.
cboTexto1: ComboBox. Opções: 1-Em qualquer posição 2-No início do campo
cboTexto2: ComboBox. Opções: 1-Todas as palavras 2- Qualquer palavra
sTexto:=Trim(edtTexto.Text);
if sTexto <> ´´ then begin
if RightStr(sTexto,1) <> ´;´ then
sTexto:=sTexto+´;´;
iPalavras:=1;
while Pos(´;´,sTexto) > 0 do begin
sPalavra:=LeftStr(sTexto,Pos(´;´,sTexto)-1);
if sPalavra <> ´´ then begin
if sWhere <> ´´ then
sWhere:=sWhere+
Iif((cboTexto2.ItemIndex=0)
or (iPalavras=1),´ AND ´,´ OR ´);
if iPalavras = 1 then
sWhere:=sWhere+´( ´;
sWhere:=sWhere+
´P.Mem_Texto LIKE ´+QuotedStr(
Iif(cboTexto1.ItemIndex=0,´¬´,´´)+
sPalavra+´¬´);
Inc(iPalavras);
end;
sTexto:=Trim(RightStr(sTexto,Length(sTexto)-Pos(´;´,sTexto)));
end;
sWhere:=sWhere+´ )´;
end;
qry.SQL.Text:=´SELECT * FROM Cadastro WHERE ´+sWhere;
cboTexto1: ComboBox. Opções: 1-Em qualquer posição 2-No início do campo
cboTexto2: ComboBox. Opções: 1-Todas as palavras 2- Qualquer palavra
sTexto:=Trim(edtTexto.Text);
if sTexto <> ´´ then begin
if RightStr(sTexto,1) <> ´;´ then
sTexto:=sTexto+´;´;
iPalavras:=1;
while Pos(´;´,sTexto) > 0 do begin
sPalavra:=LeftStr(sTexto,Pos(´;´,sTexto)-1);
if sPalavra <> ´´ then begin
if sWhere <> ´´ then
sWhere:=sWhere+
Iif((cboTexto2.ItemIndex=0)
or (iPalavras=1),´ AND ´,´ OR ´);
if iPalavras = 1 then
sWhere:=sWhere+´( ´;
sWhere:=sWhere+
´P.Mem_Texto LIKE ´+QuotedStr(
Iif(cboTexto1.ItemIndex=0,´¬´,´´)+
sPalavra+´¬´);
Inc(iPalavras);
end;
sTexto:=Trim(RightStr(sTexto,Length(sTexto)-Pos(´;´,sTexto)));
end;
sWhere:=sWhere+´ )´;
end;
qry.SQL.Text:=´SELECT * FROM Cadastro WHERE ´+sWhere;
GOSTEI 0