Problema com pesquisa usando memo
Ola, estou tentando montar um filtro, quando usuario digitira um problema tem que filtrar uma coluna para sabe que o mesmo problema trazido pelo cliente já existe.
O que acontece que ao digitar fica apresendo letrinha por letrinho num intervalo de 30 segundos;
Vai aparecendo lentamente o que esta digitando.
fiz um select e coloquei o mesmo no evento onchange do Memo1.
Estou usando delphi 2007 e win7.
obrigado
"Deus abençoe"
O que acontece que ao digitar fica apresendo letrinha por letrinho num intervalo de 30 segundos;
Vai aparecendo lentamente o que esta digitando.
fiz um select e coloquei o mesmo no evento onchange do Memo1.
Estou usando delphi 2007 e win7.
obrigado
"Deus abençoe"
Wilton Júnior
Curtidas 0
Respostas
Joel Rodrigues
22/03/2013
Você está fazendo esse filtro realizando uma nova consulta ao banco a cada caractere digitado? Se for, é de se esperar a 'lentidão'. Experimente trabalhar com a propriedade Filter do dataset.
GOSTEI 0
Bruno Leandro
22/03/2013
Qual forma de filtrar voce esta se referindo, mudando o where ou um parametro da query e dando close,open
usando locate, filter ?
se voce tiver usando locate muito provavelmente sera lento,
caso esta usando close/open e o campo tiver um indice correto para essa pesquisa pode nao ficar lento
talvez uma melhor solução seria utilizar o filter ou clientdataset, para nao ficar consultado o banco de dados
usando locate, filter ?
se voce tiver usando locate muito provavelmente sera lento,
caso esta usando close/open e o campo tiver um indice correto para essa pesquisa pode nao ficar lento
talvez uma melhor solução seria utilizar o filter ou clientdataset, para nao ficar consultado o banco de dados
GOSTEI 0
Wilton Júnior
22/03/2013
Joel Rodrigues se souber outra forma para realizar uma pesquisa me fala pois estou horas pesquisando na net eu não acho nada.
O que precisa ser feito é um filtro de informação no momento que o usuário tiver digitando.
Bruno Leando estou fazendo o seguinte:
with MIC010 do
begin
close;
sql.clear;
sql.add('select numjan, datcad, soluca from mic010 where datcad is not null');
if Edit4.text <> '' then
sql.add('and numjan like ' + QuotedStr('%' + Edit4.text + '%'));
if Memo1.text <> '' then
sql.add('and solici like ' + QuotedStr('%' + Memo1.text + '%'));
Open;
end;
Eu nem lembrei da existencia do código locate para te falar a verdade de tão acostumado a fazer esse tipo de codigo de pesquisa.
obrigado a todos
O que precisa ser feito é um filtro de informação no momento que o usuário tiver digitando.
Bruno Leando estou fazendo o seguinte:
with MIC010 do
begin
close;
sql.clear;
sql.add('select numjan, datcad, soluca from mic010 where datcad is not null');
if Edit4.text <> '' then
sql.add('and numjan like ' + QuotedStr('%' + Edit4.text + '%'));
if Memo1.text <> '' then
sql.add('and solici like ' + QuotedStr('%' + Memo1.text + '%'));
Open;
end;
Eu nem lembrei da existencia do código locate para te falar a verdade de tão acostumado a fazer esse tipo de codigo de pesquisa.
obrigado a todos
GOSTEI 0
Bruno Leandro
22/03/2013
da uma testada usando filter conforme exemplo abaixo
var
Filtro: string;
begin
with MIC010 do
begin
Filtro := '';
if (Edit4.text <> '') then
Filtro := 'and numjan like ' + QuotedStr('%' + Edit4.text + '%');
if (Memo1.text <> '') then
Filtro := 'and solici like ' + QuotedStr('%' + Memo1.text + '%');
Filtered := False;
Filter := Filtro;
Filtered := True;
end;
end;
var
Filtro: string;
begin
with MIC010 do
begin
Filtro := '';
if (Edit4.text <> '') then
Filtro := 'and numjan like ' + QuotedStr('%' + Edit4.text + '%');
if (Memo1.text <> '') then
Filtro := 'and solici like ' + QuotedStr('%' + Memo1.text + '%');
Filtered := False;
Filter := Filtro;
Filtered := True;
end;
end;
GOSTEI 0
Bruno Leandro
22/03/2013
pequena correção para nao perder o filtro
var
Filtro: string;
begin
with MIC010 do
begin
Filtro := '';
if (Edit4.text <> '') then
Filtro := Filtro +' and numjan like ' + QuotedStr('%' + Edit4.text + '%');
if (Memo1.text <> '') then
Filtro := Filtro +' and solici like ' + QuotedStr('%' + Memo1.text + '%');
Filtered := False;
Filter := Filtro;
Filtered := True;
end;
end;
var
Filtro: string;
begin
with MIC010 do
begin
Filtro := '';
if (Edit4.text <> '') then
Filtro := Filtro +' and numjan like ' + QuotedStr('%' + Edit4.text + '%');
if (Memo1.text <> '') then
Filtro := Filtro +' and solici like ' + QuotedStr('%' + Memo1.text + '%');
Filtered := False;
Filter := Filtro;
Filtered := True;
end;
end;
GOSTEI 0
Wilton Júnior
22/03/2013
Nada Bruno Leandro, obrigado pela sua ajuda.
GOSTEI 0