Fórum Filtro de Filtro #397886

23/03/2011

0

Galera, boa tarde! A minha dúvida é a seguinte! É possível fazer um filtro dentro do outro no clientdataset. Explicando melhor através de um exemplo: Tenho um banco com 3 fields: Nome, Idade e Telefone. Aí eu aplico um filtro no field Idade buscando todo mundo que é maior de 18 anos e depois com os dados já filtrados, eu quero filtrar novamente todo mundo que o Nome Rafael. É possível fazer isso? Grato!
Rafael Ribeiro

Rafael Ribeiro

Responder

Posts

23/03/2011

Marco Salles

Utilize o clone Cursor

Talves te ajude

http://marcosalles.wordpress.com/2011/02/17/clonecursor-como-definir-os-parametros-reset-keepsettings/


Responder

Gostei + 0

23/03/2011

André Silveira

cds.Filtered := False;
cds.Filter := 'IDADE > 18 and NOME like '''RAFAEL%'''';
cds.Filtered := True;


Taí uma forma de fazer simples e direta.
Responder

Gostei + 0

23/03/2011

Rafael Ribeiro

André, boa tarde! Eu havia feito assim, mas não funciona de jeito nenhum!
Responder

Gostei + 0

23/03/2011

Rafael Ribeiro

A verdade é que eu coloquei uma situação simples demais para a minha necessidade real. Tentando equivaler... pense o seguinte... e se eu precisa achar todos que chamam Rafael, Rodrigo e Roberto. Como ficaria?
Responder

Gostei + 0

23/03/2011

João Sobrinho

Colega, de uma pesquisada sobre o evento OnFilterRecord do DataSet deve resolver seu problema.    
Responder

Gostei + 0

23/03/2011

Marco Salles

Amigo , uma coisa é vc fazer um filtro mais sofisticado . Outra coisa é fazer o filtro de um filtro . Neste ultimo caso
é o clone Mesmo . 
Responder

Gostei + 0

23/03/2011

Rafael Ribeiro

Cara de verdade. Eu uso clone cursor e não vejo utilidade neste caso. Vou te explicar o que eu estou fazendo na realidade para ver se você me entende. Eu tenho duas combos que possuem como ítens os fields do meu clientdataset. Tenho 10 edits onde coloco as variáveis de pesquisa. Os 9 primeiros edits usam o field do texto da combo 1 e o 10º utiliza o field da combo2. O que deveria gerar de resultado? Todas as linhas que apresentam pelo menos 1 dos textos dos 9 primeiros edits, mas que numa segunda coluna a string seja de valor igual a "N". Eu penso que seria um filtro dentro do outro, mas estou aberto a novas idéias. Se você enxerga como usar o clone cursor neste fato, por favor me oriente. O que preciso é de uma solução.
Grato pela atenção!
Responder

Gostei + 0

23/03/2011

Marco Salles

Talves vc precise de um filtro mais sofisticado.

Porém , não deu para entender o que vc precisa. Pelo menos eu não consegui mentalizar
Responder

Gostei + 0

24/03/2011

André Silveira

Porque não faz a consulta usando o sql da query relacionada ao clientdataset, ao invés de filtrar pelo mesmo.

Mas se for filtrar mesmo pelo clientdataset, pode usar assim:

  ClientDataSet1.Filtered := False;
  ClientDataSet1.Filter   := 'LAST_NAME like ''Davis%'' and STATE = ''MA''';
  ClientDataSet1.Filtered := True;

Conforme já tinha mandado em outra mensagem e você disse que não funciona, porque não funciona ? Alguma mensagem de erro ?

O único jeito de fazer filtro no clientdataset é usando a propriedade filter do mesmo.
Responder

Gostei + 0

24/03/2011

André Silveira

Indo mais diretamente no seu problema:
  ClientDataSet1.Filtered := False;
  ClientDataSet1.Filter   := '((fieldcombo1 = CONDICAO1) OR (fieldcombo1 = CONDICAO2) OR (fieldcombo1 = CONDICAO3) or (fieldcombo1 = CONDICAO4) or (fieldcombo1 = CONDICAO5) or (fieldcombo1 = CONDICAO6) or (fieldcombo1 = CONDICAO7) or (fieldcombo1 = CONDICAO8) or (fieldcombo1 = CONDICAO9) or (fieldcombo1 = CONDICAO10)) and (fieldcombo2 = condicao);
  ClientDataSet1.Filtered := True;


Para saber quais condições são usadas, pode colocar um procedimento que monte a string de acordo com os edits que estão preenchidos.

Espero ter ajudado.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar