Pesquisar somente nos registros que aparecem no dbgrid

Delphi

09/01/2009

Olá Pessoal,

Como faço para ao clicar numa coluna do dbgrid, ter como fazer uma consulta somente sobre os dados que estão aparecendo no dbgrid e nessa coluna? Por exemplo, tenho uma coluna onde aparece o campo USUARIO de uma tabela, e no grid está aparecendo digamos 30 registros (30 linhas). Como faço para ao clicar em uma das linhas na coluna USUARIO aparecer uma janela onde o usuario pode fazer uma consulta pelo nome do usuario somente ness30 registros (30 linhas que estão aparecendo no grid)? Não sei se deu para entender.

Luiz


L_carlos

L_carlos

Curtidas 0

Respostas

Woinch

Woinch

09/01/2009

Não está muito claro. Você quer clicar no título de alguma coluna? Onde especificamente? Um clique? Dois cliques? Você quer filtrar o resultado daquele grid ou quer montar o resultado da busca em um outro grid?

Pode explicar melhor?


GOSTEI 0
L_carlos

L_carlos

09/01/2009

Pode ser um clique na coluna (não seria no titulo da coluna, seria direto na coluna no grid), e abriria uma janela para pesquisar nos registros dessa coluna que estão no grid (somente os que estão no grid), e o resultado apareceria no mesmo grid.

Luiz


GOSTEI 0
Woinch

Woinch

09/01/2009

Se seu Grid estiver vinculado a um DataSource, então tente colocar o código a seguir no evento OnCellClick do DBGrid:

with DBGrid1.DataSource.DataSet do
begin
  Filter   := Column.FieldName + ´ like ´´¬´ +
    InputBox(´Filtrar pela coluna ´ + Column.Title.Caption, ´Digite algo:´, ´´) + ´¬´´´;
  Filtered := True;
end; //with


Para remover o filtro basta utilizar o seguinte código:

Filtered := True;


Se não for bem isso que você queria basta postar novamente, espero que sirva pelo menos como exemplo.


Abraços...


GOSTEI 0
L_carlos

L_carlos

09/01/2009

Olá Woinch. tentei usar o seu codigo mas está dando erro ao compilar:

UNDECLARED IDENTIFIER COLUMN

Tem certeza que esse codigo é valido?

Grato

Luiz


GOSTEI 0
L_carlos

L_carlos

09/01/2009

Woinch, consegui usar o codigo, só que ele retorna no grid os mesmos registros que estavam antes da pesquisa.

Luiz


GOSTEI 0
Woinch

Woinch

09/01/2009

Amigo, o que esse código faz é filtrar com o que foi digitado tudo o que você tiver no DataSet pela coluna que ele capturar ao efetuar o clique no Grid. Quando você clica no Grid e aparece uma janela de Dialogo, você digitou o que?


GOSTEI 0
Pestana_

Pestana_

09/01/2009

Não sei se entendi, mas você não esta querendo um relacionamento mestre-detalhe?

Ao clicar no registro no dbGrid retornar todos os detalhes?


GOSTEI 0
L_carlos

L_carlos

09/01/2009

Não consegui, tentei fazer como o cologa Woinch colocou abaixo mas apos digitar a que desejo pesquisar o grid mostra exatamente o que estava mostrando antes, não filtra pelo que pedi.

with gridagenda.DataSource.DataSet do
begin
Filter := Column.FieldName + ´ =´ +
InputBox(´Filtrar pela coluna ´ + Column.Title.Caption, ´Digite algo:´, ´´) + ´¬´´´;
Filtered := True;
end; //with

o meu grid está com uma query ligada ao datasource, não sei se isso pode impedir que o filtro acima funcione.

Luiz

Luiz


GOSTEI 0
Leonardo_age

Leonardo_age

09/01/2009

Amigo, tá difícil de entender.. rs

Vamos fazer o seguinte, informa quais os dados e tabelas que você está manipulando para que possamos tentar trocar experiência.


Abraços


GOSTEI 0
POSTAR